From ce73f7a06d75b0daf5b6d9d8beb8ab95b6409a63 Mon Sep 17 00:00:00 2001 From: iTzMiNOS Date: Fri, 29 Aug 2025 09:44:53 +0300 Subject: [PATCH 1/3] user documentation added for dip --- RoboticsInfrastructure | 1 + .../digital_image_processing.md | 124 ++ academy/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 129 bytes academy/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 159 bytes .../context_processors.cpython-310.pyc | Bin 0 -> 321 bytes academy/__pycache__/settings.cpython-310.pyc | Bin 0 -> 3282 bytes academy/__pycache__/settings.cpython-312.pyc | Bin 0 -> 3877 bytes academy/__pycache__/urls.cpython-310.pyc | Bin 0 -> 1241 bytes academy/__pycache__/urls.cpython-312.pyc | Bin 0 -> 1475 bytes academy/__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 532 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 146 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes .../__pycache__/admin.cpython-310.pyc | Bin 0 -> 187 bytes .../__pycache__/admin.cpython-312.pyc | Bin 0 -> 220 bytes .../__pycache__/apps.cpython-310.pyc | Bin 0 -> 394 bytes .../__pycache__/apps.cpython-312.pyc | Bin 0 -> 447 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 244 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 278 bytes .../__pycache__/urls.cpython-310.pyc | Bin 0 -> 406 bytes .../__pycache__/urls.cpython-312.pyc | Bin 0 -> 549 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 157 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 187 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 158 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 188 bytes .../__pycache__/exercises.cpython-310.pyc | Bin 0 -> 689 bytes .../__pycache__/exercises.cpython-312.pyc | Bin 0 -> 789 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 152 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 182 bytes .../__pycache__/exercises.cpython-310.pyc | Bin 0 -> 684 bytes .../__pycache__/exercises.cpython-312.pyc | Bin 0 -> 861 bytes .../digital_image_processing.png | Bin 0 -> 636290 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 131 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 161 bytes exercises/__pycache__/admin.cpython-310.pyc | Bin 0 -> 368 bytes exercises/__pycache__/admin.cpython-312.pyc | Bin 0 -> 697 bytes exercises/__pycache__/apps.cpython-310.pyc | Bin 0 -> 416 bytes exercises/__pycache__/apps.cpython-312.pyc | Bin 0 -> 473 bytes exercises/__pycache__/models.cpython-310.pyc | Bin 0 -> 5135 bytes exercises/__pycache__/models.cpython-312.pyc | Bin 0 -> 8416 bytes exercises/__pycache__/urls.cpython-310.pyc | Bin 0 -> 416 bytes exercises/__pycache__/urls.cpython-312.pyc | Bin 0 -> 579 bytes exercises/__pycache__/views.cpython-310.pyc | Bin 0 -> 1643 bytes exercises/__pycache__/views.cpython-312.pyc | Bin 0 -> 2533 bytes .../__pycache__/0001_initial.cpython-310.pyc | Bin 0 -> 2457 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 0 -> 4446 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 142 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 172 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 136 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 166 bytes .../__pycache__/admin.cpython-310.pyc | Bin 0 -> 177 bytes .../__pycache__/admin.cpython-312.pyc | Bin 0 -> 210 bytes .../__pycache__/apps.cpython-310.pyc | Bin 0 -> 373 bytes .../__pycache__/apps.cpython-312.pyc | Bin 0 -> 426 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 174 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 207 bytes .../__pycache__/urls.cpython-310.pyc | Bin 0 -> 277 bytes .../__pycache__/urls.cpython-312.pyc | Bin 0 -> 358 bytes .../__pycache__/views.cpython-310.pyc | Bin 0 -> 426 bytes .../__pycache__/views.cpython-312.pyc | Bin 0 -> 488 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 147 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 177 bytes react_frontend/src/common.zip | Bin 0 -> 25280 bytes .../react_frontend/07a88875353ecc692463.svg | 29 + .../react_frontend/0bc351912833f3417a22.png | Bin 0 -> 8720 bytes .../react_frontend/103b475b789b8718d2b0.png | Bin 0 -> 3499 bytes .../react_frontend/1dcd3b9fbf544c35da90.png | Bin 0 -> 3254 bytes .../react_frontend/3eeb5833a38a58e883f3.png | Bin 0 -> 10361 bytes .../react_frontend/47349ce9cf823aa676a1.png | Bin 0 -> 9876 bytes .../react_frontend/4bda41d8cb629c0f2675.png | Bin 0 -> 65274 bytes .../react_frontend/4c3c9ff3e5e41de1a959.svg | 31 + .../react_frontend/4d659b97d7e33af80d11.png | Bin 0 -> 9876 bytes .../react_frontend/593a5090ab1a572e0c2f.png | Bin 0 -> 9878 bytes .../react_frontend/6307e69c307fde0efc6a.png | Bin 0 -> 9592 bytes .../react_frontend/716ddc926982c9ed9955.svg | 105 ++ .../react_frontend/730897011f0108f00b00.png | Bin 0 -> 10361 bytes .../react_frontend/90999a7c98c1d14e2348.png | Bin 0 -> 83767 bytes .../react_frontend/a3dd51f21f0fe7b075fb.png | Bin 0 -> 40551 bytes .../react_frontend/b5c6f9dd7b4e71f2532b.svg | 136 ++ .../react_frontend/b978997e7f65a543a8bd.svg | 51 + .../react_frontend/bc1a91558ccad4d10db3.png | Bin 0 -> 7287 bytes .../react_frontend/c0453f604892db7d1b12.svg | 51 + .../react_frontend/c40fbd6953e072ad5339.svg | 51 + .../react_frontend/ced0b01fc91e7c893441.svg | 65 + .../static/react_frontend/css/1159.css | 3 + .../static/react_frontend/css/1172.css | 3 + .../static/react_frontend/css/1195.css | 3 + .../static/react_frontend/css/1289.css | 3 + .../static/react_frontend/css/1475.css | 6 + .../static/react_frontend/css/1497.css | 3 + .../static/react_frontend/css/1530.css | 3 + .../static/react_frontend/css/1629.css | 3 + .../static/react_frontend/css/1750.css | 3 + .../static/react_frontend/css/1792.css | 3 + .../static/react_frontend/css/180.css | 3 + .../static/react_frontend/css/1837.css | 3 + .../static/react_frontend/css/1838.css | 3 + .../static/react_frontend/css/1938.css | 3 + .../static/react_frontend/css/2018.css | 3 + .../static/react_frontend/css/2038.css | 3 + .../static/react_frontend/css/2040.css | 3 + .../static/react_frontend/css/225.css | 3 + .../static/react_frontend/css/2287.css | 3 + .../static/react_frontend/css/233.css | 3 + .../static/react_frontend/css/2394.css | 3 + .../static/react_frontend/css/2493.css | 3 + .../static/react_frontend/css/2973.css | 3 + .../static/react_frontend/css/3093.css | 4 + .../static/react_frontend/css/3152.css | 3 + .../static/react_frontend/css/3238.css | 3 + .../static/react_frontend/css/349.css | 3 + .../static/react_frontend/css/3576.css | 3 + .../static/react_frontend/css/3898.css | 3 + .../static/react_frontend/css/392.css | 3 + .../static/react_frontend/css/4035.css | 3 + .../static/react_frontend/css/4078.css | 4 + .../static/react_frontend/css/4088.css | 3 + .../static/react_frontend/css/4104.css | 1 + .../static/react_frontend/css/4147.css | 3 + .../static/react_frontend/css/4241.css | 3 + .../static/react_frontend/css/4313.css | 3 + .../static/react_frontend/css/4399.css | 3 + .../static/react_frontend/css/4411.css | 3 + .../static/react_frontend/css/4566.css | 3 + .../static/react_frontend/css/4582.css | 3 + .../static/react_frontend/css/4707.css | 6 + .../static/react_frontend/css/4800.css | 3 + .../static/react_frontend/css/5008.css | 3 + .../static/react_frontend/css/5009.css | 3 + .../static/react_frontend/css/5451.css | 5 + .../static/react_frontend/css/5452.css | 3 + .../static/react_frontend/css/5530.css | 3 + .../static/react_frontend/css/5665.css | 3 + .../static/react_frontend/css/5781.css | 4 + .../static/react_frontend/css/5801.css | 3 + .../static/react_frontend/css/581.css | 3 + .../static/react_frontend/css/5860.css | 3 + .../static/react_frontend/css/6049.css | 3 + .../static/react_frontend/css/6160.css | 3 + .../static/react_frontend/css/6377.css | 5 + .../static/react_frontend/css/6762.css | 3 + .../static/react_frontend/css/6780.css | 3 + .../static/react_frontend/css/6824.css | 3 + .../static/react_frontend/css/6925.css | 3 + .../static/react_frontend/css/6962.css | 4 + .../static/react_frontend/css/732.css | 3 + .../static/react_frontend/css/7480.css | 3 + .../static/react_frontend/css/7596.css | 6 + .../static/react_frontend/css/7658.css | 3 + .../static/react_frontend/css/7820.css | 3 + .../static/react_frontend/css/7826.css | 3 + .../static/react_frontend/css/7841.css | 3 + .../static/react_frontend/css/7903.css | 3 + .../static/react_frontend/css/8038.css | 3 + .../static/react_frontend/css/8160.css | 3 + .../static/react_frontend/css/8198.css | 3 + .../static/react_frontend/css/8201.css | 3 + .../static/react_frontend/css/8256.css | 3 + .../static/react_frontend/css/8496.css | 3 + .../static/react_frontend/css/8590.css | 3 + .../static/react_frontend/css/8724.css | 3 + .../static/react_frontend/css/8725.css | 3 + .../static/react_frontend/css/8732.css | 3 + .../static/react_frontend/css/879.css | 3 + .../static/react_frontend/css/9294.css | 3 + .../static/react_frontend/css/9359.css | 3 + .../static/react_frontend/css/9390.css | 3 + .../static/react_frontend/css/945.css | 3 + .../static/react_frontend/css/9516.css | 3 + .../static/react_frontend/css/9612.css | 3 + .../static/react_frontend/css/9617.css | 3 + .../static/react_frontend/css/9848.css | 3 + .../static/react_frontend/css/exercise.css | 4 + .../static/react_frontend/css/index.css | 6 + .../react_frontend/d11c46b809e74e2f83fe.png | Bin 0 -> 71162 bytes .../react_frontend/d4f97e68c0637ce53256.png | Bin 0 -> 47332 bytes .../react_frontend/df2d975eff24335477f0.svg | 65 + .../react_frontend/e0742232b0207d6b3b58.png | Bin 0 -> 65166 bytes .../react_frontend/f1161e013312668b9ed4.png | Bin 0 -> 335927 bytes .../react_frontend/fbd2a40c78e5112b66a9.png | Bin 0 -> 9369 bytes .../static/react_frontend/js/1052.33ba00a0.js | 2 + .../static/react_frontend/js/1159.bfcc3761.js | 1 + .../static/react_frontend/js/1166.89a454fc.js | 2 + .../static/react_frontend/js/1167.1062705c.js | 76 + .../js/1167.1062705c.js.LICENSE.txt | 8 + .../static/react_frontend/js/1172.178b359c.js | 1 + .../static/react_frontend/js/1195.4089d01b.js | 3 + .../js/1195.4089d01b.js.LICENSE.txt | 9 + .../static/react_frontend/js/1259.1625d44a.js | 29 + .../static/react_frontend/js/1261.01296c0f.js | 30 + .../js/1261.01296c0f.js.LICENSE.txt | 8 + .../static/react_frontend/js/1279.dcda7626.js | 3 + .../js/1279.dcda7626.js.LICENSE.txt | 1 + .../static/react_frontend/js/1289.5e2d750d.js | 3 + .../js/1289.5e2d750d.js.LICENSE.txt | 9 + .../static/react_frontend/js/1381.1e5ca14d.js | 2 + .../static/react_frontend/js/1475.e9dfcf38.js | 2 + .../static/react_frontend/js/1497.9cc132bc.js | 1 + .../static/react_frontend/js/1512.c7915f21.js | 30 + .../js/1512.c7915f21.js.LICENSE.txt | 8 + .../static/react_frontend/js/1530.963cc910.js | 1 + .../static/react_frontend/js/1629.97ea6021.js | 3 + .../js/1629.97ea6021.js.LICENSE.txt | 9 + .../static/react_frontend/js/1644.a52b5796.js | 2 + .../static/react_frontend/js/1653.6a994e92.js | 2 + .../static/react_frontend/js/1696.83822dbb.js | 3 + .../js/1696.83822dbb.js.LICENSE.txt | 9 + .../static/react_frontend/js/1750.7b6aec76.js | 3 + .../js/1750.7b6aec76.js.LICENSE.txt | 9 + .../static/react_frontend/js/1792.7cf38f76.js | 3 + .../js/1792.7cf38f76.js.LICENSE.txt | 9 + .../static/react_frontend/js/180.8e129a9c.js | 3 + .../js/180.8e129a9c.js.LICENSE.txt | 9 + .../static/react_frontend/js/1837.9bf454e2.js | 3 + .../js/1837.9bf454e2.js.LICENSE.txt | 9 + .../static/react_frontend/js/1838.f2f98d55.js | 1 + .../static/react_frontend/js/1938.609d7715.js | 1 + .../static/react_frontend/js/1941.df2dd1d9.js | 2 + .../static/react_frontend/js/2018.aa8145d8.js | 3 + .../js/2018.aa8145d8.js.LICENSE.txt | 9 + .../static/react_frontend/js/2022.dd01bfaa.js | 2 + .../static/react_frontend/js/2038.fe0e81f1.js | 3 + .../js/2038.fe0e81f1.js.LICENSE.txt | 9 + .../static/react_frontend/js/2040.8dbf4362.js | 3 + .../js/2040.8dbf4362.js.LICENSE.txt | 9 + .../static/react_frontend/js/2078.f0720009.js | 3 + .../js/2078.f0720009.js.LICENSE.txt | 9 + .../static/react_frontend/js/2230.e2f1289e.js | 2 + .../static/react_frontend/js/225.4ac3eafe.js | 3 + .../js/225.4ac3eafe.js.LICENSE.txt | 9 + .../static/react_frontend/js/2287.cd34a443.js | 2 + .../static/react_frontend/js/233.f454c433.js | 3 + .../js/233.f454c433.js.LICENSE.txt | 9 + .../static/react_frontend/js/2341.b6a761a2.js | 3 + .../js/2341.b6a761a2.js.LICENSE.txt | 9 + .../static/react_frontend/js/2342.7859f7fb.js | 2 + .../static/react_frontend/js/2394.545b018d.js | 1 + .../static/react_frontend/js/2425.cd2eccbc.js | 3 + .../js/2425.cd2eccbc.js.LICENSE.txt | 9 + .../static/react_frontend/js/2493.bb1f90d1.js | 3 + .../js/2493.bb1f90d1.js.LICENSE.txt | 9 + .../static/react_frontend/js/2543.8e5565ae.js | 3 + .../js/2543.8e5565ae.js.LICENSE.txt | 8 + .../static/react_frontend/js/2578.f529be22.js | 3 + .../js/2578.f529be22.js.LICENSE.txt | 9 + .../static/react_frontend/js/2718.72e8f286.js | 2 + .../static/react_frontend/js/2725.65d4176a.js | 2 + .../static/react_frontend/js/2745.33d54ad3.js | 3 + .../js/2745.33d54ad3.js.LICENSE.txt | 8 + .../static/react_frontend/js/2973.c84ba46a.js | 1 + .../static/react_frontend/js/302.612c9575.js | 3 + .../js/302.612c9575.js.LICENSE.txt | 9 + .../static/react_frontend/js/3093.f3c3e376.js | 2 + .../static/react_frontend/js/3147.06fb6a5f.js | 3 + .../js/3147.06fb6a5f.js.LICENSE.txt | 7 + .../static/react_frontend/js/3152.ddefd0ee.js | 3 + .../js/3152.ddefd0ee.js.LICENSE.txt | 9 + .../static/react_frontend/js/3169.5cab53af.js | 2 + .../static/react_frontend/js/3238.8714d27c.js | 1 + .../static/react_frontend/js/3322.2eb10ef8.js | 2 + .../static/react_frontend/js/3344.f9c384fc.js | 2 + .../static/react_frontend/js/349.fb67d334.js | 3 + .../js/349.fb67d334.js.LICENSE.txt | 9 + .../static/react_frontend/js/3576.23b22782.js | 3 + .../js/3576.23b22782.js.LICENSE.txt | 15 + .../static/react_frontend/js/3721.49623697.js | 3 + .../js/3721.49623697.js.LICENSE.txt | 1 + .../static/react_frontend/js/3774.66290313.js | 2 + .../static/react_frontend/js/3798.51632ace.js | 2 + .../static/react_frontend/js/3898.b7d238e3.js | 1 + .../static/react_frontend/js/3915.018529c2.js | 2 + .../static/react_frontend/js/392.32fe2203.js | 3 + .../js/392.32fe2203.js.LICENSE.txt | 9 + .../static/react_frontend/js/3985.8fdaeb6d.js | 3 + .../js/3985.8fdaeb6d.js.LICENSE.txt | 11 + .../static/react_frontend/js/4035.2de1261e.js | 2 + .../static/react_frontend/js/4055.b48c7765.js | 2 + .../static/react_frontend/js/4075.9c40cac3.js | 3 + .../js/4075.9c40cac3.js.LICENSE.txt | 9 + .../static/react_frontend/js/4078.620631cc.js | 3 + .../js/4078.620631cc.js.LICENSE.txt | 11 + .../static/react_frontend/js/4088.a4f56783.js | 3 + .../js/4088.a4f56783.js.LICENSE.txt | 9 + .../static/react_frontend/js/4104.03a2f66a.js | 2 + .../static/react_frontend/js/4147.ac682216.js | 3 + .../js/4147.ac682216.js.LICENSE.txt | 9 + .../static/react_frontend/js/4222.0f349960.js | 2 + .../static/react_frontend/js/4241.1932f39d.js | 1 + .../static/react_frontend/js/4300.763d0006.js | 3 + .../js/4300.763d0006.js.LICENSE.txt | 9 + .../static/react_frontend/js/4313.ba7a0c5a.js | 3 + .../js/4313.ba7a0c5a.js.LICENSE.txt | 7 + .../static/react_frontend/js/4345.75f74348.js | 2 + .../static/react_frontend/js/4363.53fc5a8b.js | 2 + .../static/react_frontend/js/4399.11b72ac2.js | 2 + .../static/react_frontend/js/4404.8a39fd42.js | 2 + .../static/react_frontend/js/4411.38c0bb0b.js | 1 + .../static/react_frontend/js/4471.2cc9991d.js | 2 + .../static/react_frontend/js/4481.c24392f1.js | 3 + .../js/4481.c24392f1.js.LICENSE.txt | 9 + .../static/react_frontend/js/4517.d8886e91.js | 2 + .../static/react_frontend/js/4566.bf37125f.js | 3 + .../js/4566.bf37125f.js.LICENSE.txt | 9 + .../static/react_frontend/js/4582.e9e4b09b.js | 3 + .../js/4582.e9e4b09b.js.LICENSE.txt | 9 + .../static/react_frontend/js/4668.1221dcf8.js | 2 + .../static/react_frontend/js/4669.2e8a05f6.js | 2 + .../static/react_frontend/js/4707.c0883594.js | 2 + .../static/react_frontend/js/4800.c605bd0d.js | 3 + .../js/4800.c605bd0d.js.LICENSE.txt | 9 + .../static/react_frontend/js/4996.a7388d59.js | 3 + .../js/4996.a7388d59.js.LICENSE.txt | 9 + .../static/react_frontend/js/5008.47835eed.js | 3 + .../js/5008.47835eed.js.LICENSE.txt | 9 + .../static/react_frontend/js/5009.d97ecfc0.js | 1 + .../static/react_frontend/js/5285.dd6ee246.js | 2 + .../static/react_frontend/js/5342.dce1814e.js | 3 + .../js/5342.dce1814e.js.LICENSE.txt | 9 + .../static/react_frontend/js/5418.63ba6f04.js | 2 + .../static/react_frontend/js/5451.360eff43.js | 3 + .../js/5451.360eff43.js.LICENSE.txt | 9 + .../static/react_frontend/js/5452.451dffff.js | 3 + .../js/5452.451dffff.js.LICENSE.txt | 9 + .../static/react_frontend/js/5530.bc3a6f36.js | 1 + .../static/react_frontend/js/5582.be2135f5.js | 3 + .../js/5582.be2135f5.js.LICENSE.txt | 9 + .../static/react_frontend/js/5627.e0ae30ef.js | 3 + .../js/5627.e0ae30ef.js.LICENSE.txt | 1 + .../static/react_frontend/js/5665.d3dbd657.js | 1 + .../static/react_frontend/js/5688.5e92c592.js | 2 + .../static/react_frontend/js/5781.dc82f179.js | 29 + .../static/react_frontend/js/5801.e8465e70.js | 2 + .../static/react_frontend/js/581.de1f5559.js | 3 + .../js/581.de1f5559.js.LICENSE.txt | 9 + .../static/react_frontend/js/5860.a6bde3f1.js | 3 + .../js/5860.a6bde3f1.js.LICENSE.txt | 9 + .../static/react_frontend/js/5923.036ae385.js | 2 + .../static/react_frontend/js/6049.62ab636c.js | 3 + .../js/6049.62ab636c.js.LICENSE.txt | 9 + .../static/react_frontend/js/6160.59062f08.js | 1 + .../static/react_frontend/js/6162.e507dc26.js | 2 + .../static/react_frontend/js/6354.7c788f98.js | 3 + .../js/6354.7c788f98.js.LICENSE.txt | 9 + .../static/react_frontend/js/6357.b5a601fb.js | 2 + .../static/react_frontend/js/6440.e840f4fe.js | 3 + .../js/6440.e840f4fe.js.LICENSE.txt | 1 + .../static/react_frontend/js/6762.0e67b0aa.js | 3 + .../js/6762.0e67b0aa.js.LICENSE.txt | 9 + .../static/react_frontend/js/6780.355a652d.js | 3 + .../js/6780.355a652d.js.LICENSE.txt | 9 + .../static/react_frontend/js/6802.a47c0c25.js | 3 + .../js/6802.a47c0c25.js.LICENSE.txt | 7 + .../static/react_frontend/js/6824.cb5bffe4.js | 3 + .../js/6824.cb5bffe4.js.LICENSE.txt | 9 + .../static/react_frontend/js/6885.ca00900b.js | 2 + .../static/react_frontend/js/6925.bfa19e5a.js | 3 + .../js/6925.bfa19e5a.js.LICENSE.txt | 9 + .../static/react_frontend/js/6962.c7e27a0a.js | 2 + .../static/react_frontend/js/7113.bf301aeb.js | 2 + .../static/react_frontend/js/7115.e34bdb96.js | 2 + .../static/react_frontend/js/7144.8a23c76e.js | 2 + .../static/react_frontend/js/718.0bc4fcbb.js | 2 + .../static/react_frontend/js/7222.b6759e0a.js | 3 + .../js/7222.b6759e0a.js.LICENSE.txt | 9 + .../static/react_frontend/js/7234.d1fa472a.js | 2 + .../static/react_frontend/js/732.e0fd0af8.js | 3 + .../js/732.e0fd0af8.js.LICENSE.txt | 9 + .../static/react_frontend/js/7336.122ec891.js | 3 + .../js/7336.122ec891.js.LICENSE.txt | 9 + .../static/react_frontend/js/7385.39f52dcd.js | 2 + .../static/react_frontend/js/7398.b01ad35c.js | 2 + .../static/react_frontend/js/7480.5d49a080.js | 3 + .../js/7480.5d49a080.js.LICENSE.txt | 9 + .../static/react_frontend/js/7551.85496cda.js | 2 + .../static/react_frontend/js/7596.c395ef9a.js | 2 + .../static/react_frontend/js/7658.8bd9ca04.js | 2 + .../static/react_frontend/js/7664.ebb488dc.js | 2 + .../static/react_frontend/js/7748.8add31d8.js | 2 + .../static/react_frontend/js/7786.1bdfce60.js | 2 + .../static/react_frontend/js/7820.5d3bd8cb.js | 2 + .../static/react_frontend/js/7823.99385b7d.js | 2 + .../static/react_frontend/js/7826.84dc4072.js | 3 + .../js/7826.84dc4072.js.LICENSE.txt | 9 + .../static/react_frontend/js/7839.1c037679.js | 2 + .../static/react_frontend/js/7841.1ad28ecf.js | 3 + .../js/7841.1ad28ecf.js.LICENSE.txt | 9 + .../static/react_frontend/js/7903.fc3fb7a9.js | 3 + .../js/7903.fc3fb7a9.js.LICENSE.txt | 9 + .../static/react_frontend/js/8038.e967ed72.js | 3 + .../js/8038.e967ed72.js.LICENSE.txt | 9 + .../static/react_frontend/js/8160.f121db9a.js | 2 + .../static/react_frontend/js/8198.52b16bf6.js | 1 + .../static/react_frontend/js/8201.3c0ded6a.js | 1 + .../static/react_frontend/js/8256.cc033cf0.js | 3 + .../js/8256.cc033cf0.js.LICENSE.txt | 9 + .../static/react_frontend/js/8359.bd3f54be.js | 3 + .../js/8359.bd3f54be.js.LICENSE.txt | 9 + .../static/react_frontend/js/8496.0d006ad5.js | 3 + .../js/8496.0d006ad5.js.LICENSE.txt | 9 + .../static/react_frontend/js/855.5dd0595f.js | 2 + .../static/react_frontend/js/8573.db2d6479.js | 2 + .../static/react_frontend/js/8590.f8ab7c05.js | 3 + .../js/8590.f8ab7c05.js.LICENSE.txt | 9 + .../static/react_frontend/js/8591.7a0cb90e.js | 2 + .../static/react_frontend/js/8724.d9519918.js | 1 + .../static/react_frontend/js/8725.585c887e.js | 3 + .../js/8725.585c887e.js.LICENSE.txt | 9 + .../static/react_frontend/js/8732.22af5ac7.js | 1 + .../static/react_frontend/js/879.3e9e021f.js | 3 + .../js/879.3e9e021f.js.LICENSE.txt | 7 + .../static/react_frontend/js/8793.dd5e3f75.js | 3 + .../js/8793.dd5e3f75.js.LICENSE.txt | 9 + .../static/react_frontend/js/8832.bbf99698.js | 2 + .../static/react_frontend/js/9011.768beba0.js | 2 + .../static/react_frontend/js/917.89d51636.js | 2 + .../static/react_frontend/js/9294.a25ad635.js | 1 + .../static/react_frontend/js/9359.cd3b2c55.js | 3 + .../js/9359.cd3b2c55.js.LICENSE.txt | 9 + .../static/react_frontend/js/9390.22d1890d.js | 1 + .../static/react_frontend/js/945.b4c3c33f.js | 3 + .../js/945.b4c3c33f.js.LICENSE.txt | 9 + .../static/react_frontend/js/9516.386bb506.js | 2 + .../static/react_frontend/js/9536.1daf38e9.js | 2 + .../static/react_frontend/js/958.d9fd8a9f.js | 3 + .../js/958.d9fd8a9f.js.LICENSE.txt | 1 + .../static/react_frontend/js/9612.5d4557c4.js | 3 + .../js/9612.5d4557c4.js.LICENSE.txt | 9 + .../static/react_frontend/js/9617.bb943284.js | 1 + .../static/react_frontend/js/978.1cbb7f53.js | 3 + .../js/978.1cbb7f53.js.LICENSE.txt | 9 + .../static/react_frontend/js/9820.e55ef154.js | 29 + .../static/react_frontend/js/9848.0be66c9a.js | 1 + .../static/react_frontend/js/9981.6c108cef.js | 2 + .../react_frontend/js/exercise.12d27afb.js | 3 + .../js/exercise.12d27afb.js.LICENSE.txt | 31 + .../react_frontend/js/index.323abd0d.js | 76 + .../js/index.323abd0d.js.LICENSE.txt | 66 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 149 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 179 bytes .../react_component.cpython-310.pyc | Bin 0 -> 2797 bytes .../react_component.cpython-312.pyc | Bin 0 -> 4463 bytes react_frontend/webpack-stats.json | 1511 +++++++++++++++++ src | 1 + 442 files changed, 3965 insertions(+) create mode 160000 RoboticsInfrastructure create mode 100644 _pages/exercises/ComputerVision/digital_image_processing.md create mode 100644 academy/__pycache__/__init__.cpython-310.pyc create mode 100644 academy/__pycache__/__init__.cpython-312.pyc create mode 100644 academy/__pycache__/context_processors.cpython-310.pyc create mode 100644 academy/__pycache__/settings.cpython-310.pyc create mode 100644 academy/__pycache__/settings.cpython-312.pyc create mode 100644 academy/__pycache__/urls.cpython-310.pyc create mode 100644 academy/__pycache__/urls.cpython-312.pyc create mode 100644 academy/__pycache__/wsgi.cpython-310.pyc create mode 100644 academy/academy_rest_api/__pycache__/__init__.cpython-310.pyc create mode 100644 academy/academy_rest_api/__pycache__/__init__.cpython-312.pyc create mode 100644 academy/academy_rest_api/__pycache__/admin.cpython-310.pyc create mode 100644 academy/academy_rest_api/__pycache__/admin.cpython-312.pyc create mode 100644 academy/academy_rest_api/__pycache__/apps.cpython-310.pyc create mode 100644 academy/academy_rest_api/__pycache__/apps.cpython-312.pyc create mode 100644 academy/academy_rest_api/__pycache__/models.cpython-310.pyc create mode 100644 academy/academy_rest_api/__pycache__/models.cpython-312.pyc create mode 100644 academy/academy_rest_api/__pycache__/urls.cpython-310.pyc create mode 100644 academy/academy_rest_api/__pycache__/urls.cpython-312.pyc create mode 100644 academy/academy_rest_api/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 academy/academy_rest_api/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 academy/academy_rest_api/serializers/__pycache__/__init__.cpython-310.pyc create mode 100644 academy/academy_rest_api/serializers/__pycache__/__init__.cpython-312.pyc create mode 100644 academy/academy_rest_api/serializers/__pycache__/exercises.cpython-310.pyc create mode 100644 academy/academy_rest_api/serializers/__pycache__/exercises.cpython-312.pyc create mode 100644 academy/academy_rest_api/views/__pycache__/__init__.cpython-310.pyc create mode 100644 academy/academy_rest_api/views/__pycache__/__init__.cpython-312.pyc create mode 100644 academy/academy_rest_api/views/__pycache__/exercises.cpython-310.pyc create mode 100644 academy/academy_rest_api/views/__pycache__/exercises.cpython-312.pyc create mode 100644 assets/images/exercises/digital_image_processing/digital_image_processing.png create mode 100644 exercises/__pycache__/__init__.cpython-310.pyc create mode 100644 exercises/__pycache__/__init__.cpython-312.pyc create mode 100644 exercises/__pycache__/admin.cpython-310.pyc create mode 100644 exercises/__pycache__/admin.cpython-312.pyc create mode 100644 exercises/__pycache__/apps.cpython-310.pyc create mode 100644 exercises/__pycache__/apps.cpython-312.pyc create mode 100644 exercises/__pycache__/models.cpython-310.pyc create mode 100644 exercises/__pycache__/models.cpython-312.pyc create mode 100644 exercises/__pycache__/urls.cpython-310.pyc create mode 100644 exercises/__pycache__/urls.cpython-312.pyc create mode 100644 exercises/__pycache__/views.cpython-310.pyc create mode 100644 exercises/__pycache__/views.cpython-312.pyc create mode 100644 exercises/migrations/__pycache__/0001_initial.cpython-310.pyc create mode 100644 exercises/migrations/__pycache__/0001_initial.cpython-312.pyc create mode 100644 exercises/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 exercises/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 react_frontend/__pycache__/__init__.cpython-310.pyc create mode 100644 react_frontend/__pycache__/__init__.cpython-312.pyc create mode 100644 react_frontend/__pycache__/admin.cpython-310.pyc create mode 100644 react_frontend/__pycache__/admin.cpython-312.pyc create mode 100644 react_frontend/__pycache__/apps.cpython-310.pyc create mode 100644 react_frontend/__pycache__/apps.cpython-312.pyc create mode 100644 react_frontend/__pycache__/models.cpython-310.pyc create mode 100644 react_frontend/__pycache__/models.cpython-312.pyc create mode 100644 react_frontend/__pycache__/urls.cpython-310.pyc create mode 100644 react_frontend/__pycache__/urls.cpython-312.pyc create mode 100644 react_frontend/__pycache__/views.cpython-310.pyc create mode 100644 react_frontend/__pycache__/views.cpython-312.pyc create mode 100644 react_frontend/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 react_frontend/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 react_frontend/src/common.zip create mode 100644 react_frontend/static/react_frontend/07a88875353ecc692463.svg create mode 100644 react_frontend/static/react_frontend/0bc351912833f3417a22.png create mode 100644 react_frontend/static/react_frontend/103b475b789b8718d2b0.png create mode 100644 react_frontend/static/react_frontend/1dcd3b9fbf544c35da90.png create mode 100644 react_frontend/static/react_frontend/3eeb5833a38a58e883f3.png create mode 100644 react_frontend/static/react_frontend/47349ce9cf823aa676a1.png create mode 100644 react_frontend/static/react_frontend/4bda41d8cb629c0f2675.png create mode 100644 react_frontend/static/react_frontend/4c3c9ff3e5e41de1a959.svg create mode 100644 react_frontend/static/react_frontend/4d659b97d7e33af80d11.png create mode 100644 react_frontend/static/react_frontend/593a5090ab1a572e0c2f.png create mode 100644 react_frontend/static/react_frontend/6307e69c307fde0efc6a.png create mode 100644 react_frontend/static/react_frontend/716ddc926982c9ed9955.svg create mode 100644 react_frontend/static/react_frontend/730897011f0108f00b00.png create mode 100644 react_frontend/static/react_frontend/90999a7c98c1d14e2348.png create mode 100644 react_frontend/static/react_frontend/a3dd51f21f0fe7b075fb.png create mode 100644 react_frontend/static/react_frontend/b5c6f9dd7b4e71f2532b.svg create mode 100644 react_frontend/static/react_frontend/b978997e7f65a543a8bd.svg create mode 100644 react_frontend/static/react_frontend/bc1a91558ccad4d10db3.png create mode 100644 react_frontend/static/react_frontend/c0453f604892db7d1b12.svg create mode 100644 react_frontend/static/react_frontend/c40fbd6953e072ad5339.svg create mode 100644 react_frontend/static/react_frontend/ced0b01fc91e7c893441.svg create mode 100644 react_frontend/static/react_frontend/css/1159.css create mode 100644 react_frontend/static/react_frontend/css/1172.css create mode 100644 react_frontend/static/react_frontend/css/1195.css create mode 100644 react_frontend/static/react_frontend/css/1289.css create mode 100644 react_frontend/static/react_frontend/css/1475.css create mode 100644 react_frontend/static/react_frontend/css/1497.css create mode 100644 react_frontend/static/react_frontend/css/1530.css create mode 100644 react_frontend/static/react_frontend/css/1629.css create mode 100644 react_frontend/static/react_frontend/css/1750.css create mode 100644 react_frontend/static/react_frontend/css/1792.css create mode 100644 react_frontend/static/react_frontend/css/180.css create mode 100644 react_frontend/static/react_frontend/css/1837.css create mode 100644 react_frontend/static/react_frontend/css/1838.css create mode 100644 react_frontend/static/react_frontend/css/1938.css create mode 100644 react_frontend/static/react_frontend/css/2018.css create mode 100644 react_frontend/static/react_frontend/css/2038.css create mode 100644 react_frontend/static/react_frontend/css/2040.css create mode 100644 react_frontend/static/react_frontend/css/225.css create mode 100644 react_frontend/static/react_frontend/css/2287.css create mode 100644 react_frontend/static/react_frontend/css/233.css create mode 100644 react_frontend/static/react_frontend/css/2394.css create mode 100644 react_frontend/static/react_frontend/css/2493.css create mode 100644 react_frontend/static/react_frontend/css/2973.css create mode 100644 react_frontend/static/react_frontend/css/3093.css create mode 100644 react_frontend/static/react_frontend/css/3152.css create mode 100644 react_frontend/static/react_frontend/css/3238.css create mode 100644 react_frontend/static/react_frontend/css/349.css create mode 100644 react_frontend/static/react_frontend/css/3576.css create mode 100644 react_frontend/static/react_frontend/css/3898.css create mode 100644 react_frontend/static/react_frontend/css/392.css create mode 100644 react_frontend/static/react_frontend/css/4035.css create mode 100644 react_frontend/static/react_frontend/css/4078.css create mode 100644 react_frontend/static/react_frontend/css/4088.css create mode 100644 react_frontend/static/react_frontend/css/4104.css create mode 100644 react_frontend/static/react_frontend/css/4147.css create mode 100644 react_frontend/static/react_frontend/css/4241.css create mode 100644 react_frontend/static/react_frontend/css/4313.css create mode 100644 react_frontend/static/react_frontend/css/4399.css create mode 100644 react_frontend/static/react_frontend/css/4411.css create mode 100644 react_frontend/static/react_frontend/css/4566.css create mode 100644 react_frontend/static/react_frontend/css/4582.css create mode 100644 react_frontend/static/react_frontend/css/4707.css create mode 100644 react_frontend/static/react_frontend/css/4800.css create mode 100644 react_frontend/static/react_frontend/css/5008.css create mode 100644 react_frontend/static/react_frontend/css/5009.css create mode 100644 react_frontend/static/react_frontend/css/5451.css create mode 100644 react_frontend/static/react_frontend/css/5452.css create mode 100644 react_frontend/static/react_frontend/css/5530.css create mode 100644 react_frontend/static/react_frontend/css/5665.css create mode 100644 react_frontend/static/react_frontend/css/5781.css create mode 100644 react_frontend/static/react_frontend/css/5801.css create mode 100644 react_frontend/static/react_frontend/css/581.css create mode 100644 react_frontend/static/react_frontend/css/5860.css create mode 100644 react_frontend/static/react_frontend/css/6049.css create mode 100644 react_frontend/static/react_frontend/css/6160.css create mode 100644 react_frontend/static/react_frontend/css/6377.css create mode 100644 react_frontend/static/react_frontend/css/6762.css create mode 100644 react_frontend/static/react_frontend/css/6780.css create mode 100644 react_frontend/static/react_frontend/css/6824.css create mode 100644 react_frontend/static/react_frontend/css/6925.css create mode 100644 react_frontend/static/react_frontend/css/6962.css create mode 100644 react_frontend/static/react_frontend/css/732.css create mode 100644 react_frontend/static/react_frontend/css/7480.css create mode 100644 react_frontend/static/react_frontend/css/7596.css create mode 100644 react_frontend/static/react_frontend/css/7658.css create mode 100644 react_frontend/static/react_frontend/css/7820.css create mode 100644 react_frontend/static/react_frontend/css/7826.css create mode 100644 react_frontend/static/react_frontend/css/7841.css create mode 100644 react_frontend/static/react_frontend/css/7903.css create mode 100644 react_frontend/static/react_frontend/css/8038.css create mode 100644 react_frontend/static/react_frontend/css/8160.css create mode 100644 react_frontend/static/react_frontend/css/8198.css create mode 100644 react_frontend/static/react_frontend/css/8201.css create mode 100644 react_frontend/static/react_frontend/css/8256.css create mode 100644 react_frontend/static/react_frontend/css/8496.css create mode 100644 react_frontend/static/react_frontend/css/8590.css create mode 100644 react_frontend/static/react_frontend/css/8724.css create mode 100644 react_frontend/static/react_frontend/css/8725.css create mode 100644 react_frontend/static/react_frontend/css/8732.css create mode 100644 react_frontend/static/react_frontend/css/879.css create mode 100644 react_frontend/static/react_frontend/css/9294.css create mode 100644 react_frontend/static/react_frontend/css/9359.css create mode 100644 react_frontend/static/react_frontend/css/9390.css create mode 100644 react_frontend/static/react_frontend/css/945.css create mode 100644 react_frontend/static/react_frontend/css/9516.css create mode 100644 react_frontend/static/react_frontend/css/9612.css create mode 100644 react_frontend/static/react_frontend/css/9617.css create mode 100644 react_frontend/static/react_frontend/css/9848.css create mode 100644 react_frontend/static/react_frontend/css/exercise.css create mode 100644 react_frontend/static/react_frontend/css/index.css create mode 100644 react_frontend/static/react_frontend/d11c46b809e74e2f83fe.png create mode 100644 react_frontend/static/react_frontend/d4f97e68c0637ce53256.png create mode 100644 react_frontend/static/react_frontend/df2d975eff24335477f0.svg create mode 100644 react_frontend/static/react_frontend/e0742232b0207d6b3b58.png create mode 100644 react_frontend/static/react_frontend/f1161e013312668b9ed4.png create mode 100644 react_frontend/static/react_frontend/fbd2a40c78e5112b66a9.png create mode 100644 react_frontend/static/react_frontend/js/1052.33ba00a0.js create mode 100644 react_frontend/static/react_frontend/js/1159.bfcc3761.js create mode 100644 react_frontend/static/react_frontend/js/1166.89a454fc.js create mode 100644 react_frontend/static/react_frontend/js/1167.1062705c.js create mode 100644 react_frontend/static/react_frontend/js/1167.1062705c.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1172.178b359c.js create mode 100644 react_frontend/static/react_frontend/js/1195.4089d01b.js create mode 100644 react_frontend/static/react_frontend/js/1195.4089d01b.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1259.1625d44a.js create mode 100644 react_frontend/static/react_frontend/js/1261.01296c0f.js create mode 100644 react_frontend/static/react_frontend/js/1261.01296c0f.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1279.dcda7626.js create mode 100644 react_frontend/static/react_frontend/js/1279.dcda7626.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1289.5e2d750d.js create mode 100644 react_frontend/static/react_frontend/js/1289.5e2d750d.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1381.1e5ca14d.js create mode 100644 react_frontend/static/react_frontend/js/1475.e9dfcf38.js create mode 100644 react_frontend/static/react_frontend/js/1497.9cc132bc.js create mode 100644 react_frontend/static/react_frontend/js/1512.c7915f21.js create mode 100644 react_frontend/static/react_frontend/js/1512.c7915f21.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1530.963cc910.js create mode 100644 react_frontend/static/react_frontend/js/1629.97ea6021.js create mode 100644 react_frontend/static/react_frontend/js/1629.97ea6021.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1644.a52b5796.js create mode 100644 react_frontend/static/react_frontend/js/1653.6a994e92.js create mode 100644 react_frontend/static/react_frontend/js/1696.83822dbb.js create mode 100644 react_frontend/static/react_frontend/js/1696.83822dbb.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1750.7b6aec76.js create mode 100644 react_frontend/static/react_frontend/js/1750.7b6aec76.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1792.7cf38f76.js create mode 100644 react_frontend/static/react_frontend/js/1792.7cf38f76.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/180.8e129a9c.js create mode 100644 react_frontend/static/react_frontend/js/180.8e129a9c.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1837.9bf454e2.js create mode 100644 react_frontend/static/react_frontend/js/1837.9bf454e2.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/1838.f2f98d55.js create mode 100644 react_frontend/static/react_frontend/js/1938.609d7715.js create mode 100644 react_frontend/static/react_frontend/js/1941.df2dd1d9.js create mode 100644 react_frontend/static/react_frontend/js/2018.aa8145d8.js create mode 100644 react_frontend/static/react_frontend/js/2018.aa8145d8.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2022.dd01bfaa.js create mode 100644 react_frontend/static/react_frontend/js/2038.fe0e81f1.js create mode 100644 react_frontend/static/react_frontend/js/2038.fe0e81f1.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2040.8dbf4362.js create mode 100644 react_frontend/static/react_frontend/js/2040.8dbf4362.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2078.f0720009.js create mode 100644 react_frontend/static/react_frontend/js/2078.f0720009.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2230.e2f1289e.js create mode 100644 react_frontend/static/react_frontend/js/225.4ac3eafe.js create mode 100644 react_frontend/static/react_frontend/js/225.4ac3eafe.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2287.cd34a443.js create mode 100644 react_frontend/static/react_frontend/js/233.f454c433.js create mode 100644 react_frontend/static/react_frontend/js/233.f454c433.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2341.b6a761a2.js create mode 100644 react_frontend/static/react_frontend/js/2341.b6a761a2.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2342.7859f7fb.js create mode 100644 react_frontend/static/react_frontend/js/2394.545b018d.js create mode 100644 react_frontend/static/react_frontend/js/2425.cd2eccbc.js create mode 100644 react_frontend/static/react_frontend/js/2425.cd2eccbc.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2493.bb1f90d1.js create mode 100644 react_frontend/static/react_frontend/js/2493.bb1f90d1.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2543.8e5565ae.js create mode 100644 react_frontend/static/react_frontend/js/2543.8e5565ae.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2578.f529be22.js create mode 100644 react_frontend/static/react_frontend/js/2578.f529be22.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2718.72e8f286.js create mode 100644 react_frontend/static/react_frontend/js/2725.65d4176a.js create mode 100644 react_frontend/static/react_frontend/js/2745.33d54ad3.js create mode 100644 react_frontend/static/react_frontend/js/2745.33d54ad3.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/2973.c84ba46a.js create mode 100644 react_frontend/static/react_frontend/js/302.612c9575.js create mode 100644 react_frontend/static/react_frontend/js/302.612c9575.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3093.f3c3e376.js create mode 100644 react_frontend/static/react_frontend/js/3147.06fb6a5f.js create mode 100644 react_frontend/static/react_frontend/js/3147.06fb6a5f.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3152.ddefd0ee.js create mode 100644 react_frontend/static/react_frontend/js/3152.ddefd0ee.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3169.5cab53af.js create mode 100644 react_frontend/static/react_frontend/js/3238.8714d27c.js create mode 100644 react_frontend/static/react_frontend/js/3322.2eb10ef8.js create mode 100644 react_frontend/static/react_frontend/js/3344.f9c384fc.js create mode 100644 react_frontend/static/react_frontend/js/349.fb67d334.js create mode 100644 react_frontend/static/react_frontend/js/349.fb67d334.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3576.23b22782.js create mode 100644 react_frontend/static/react_frontend/js/3576.23b22782.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3721.49623697.js create mode 100644 react_frontend/static/react_frontend/js/3721.49623697.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3774.66290313.js create mode 100644 react_frontend/static/react_frontend/js/3798.51632ace.js create mode 100644 react_frontend/static/react_frontend/js/3898.b7d238e3.js create mode 100644 react_frontend/static/react_frontend/js/3915.018529c2.js create mode 100644 react_frontend/static/react_frontend/js/392.32fe2203.js create mode 100644 react_frontend/static/react_frontend/js/392.32fe2203.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/3985.8fdaeb6d.js create mode 100644 react_frontend/static/react_frontend/js/3985.8fdaeb6d.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4035.2de1261e.js create mode 100644 react_frontend/static/react_frontend/js/4055.b48c7765.js create mode 100644 react_frontend/static/react_frontend/js/4075.9c40cac3.js create mode 100644 react_frontend/static/react_frontend/js/4075.9c40cac3.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4078.620631cc.js create mode 100644 react_frontend/static/react_frontend/js/4078.620631cc.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4088.a4f56783.js create mode 100644 react_frontend/static/react_frontend/js/4088.a4f56783.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4104.03a2f66a.js create mode 100644 react_frontend/static/react_frontend/js/4147.ac682216.js create mode 100644 react_frontend/static/react_frontend/js/4147.ac682216.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4222.0f349960.js create mode 100644 react_frontend/static/react_frontend/js/4241.1932f39d.js create mode 100644 react_frontend/static/react_frontend/js/4300.763d0006.js create mode 100644 react_frontend/static/react_frontend/js/4300.763d0006.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4313.ba7a0c5a.js create mode 100644 react_frontend/static/react_frontend/js/4313.ba7a0c5a.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4345.75f74348.js create mode 100644 react_frontend/static/react_frontend/js/4363.53fc5a8b.js create mode 100644 react_frontend/static/react_frontend/js/4399.11b72ac2.js create mode 100644 react_frontend/static/react_frontend/js/4404.8a39fd42.js create mode 100644 react_frontend/static/react_frontend/js/4411.38c0bb0b.js create mode 100644 react_frontend/static/react_frontend/js/4471.2cc9991d.js create mode 100644 react_frontend/static/react_frontend/js/4481.c24392f1.js create mode 100644 react_frontend/static/react_frontend/js/4481.c24392f1.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4517.d8886e91.js create mode 100644 react_frontend/static/react_frontend/js/4566.bf37125f.js create mode 100644 react_frontend/static/react_frontend/js/4566.bf37125f.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4582.e9e4b09b.js create mode 100644 react_frontend/static/react_frontend/js/4582.e9e4b09b.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4668.1221dcf8.js create mode 100644 react_frontend/static/react_frontend/js/4669.2e8a05f6.js create mode 100644 react_frontend/static/react_frontend/js/4707.c0883594.js create mode 100644 react_frontend/static/react_frontend/js/4800.c605bd0d.js create mode 100644 react_frontend/static/react_frontend/js/4800.c605bd0d.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/4996.a7388d59.js create mode 100644 react_frontend/static/react_frontend/js/4996.a7388d59.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5008.47835eed.js create mode 100644 react_frontend/static/react_frontend/js/5008.47835eed.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5009.d97ecfc0.js create mode 100644 react_frontend/static/react_frontend/js/5285.dd6ee246.js create mode 100644 react_frontend/static/react_frontend/js/5342.dce1814e.js create mode 100644 react_frontend/static/react_frontend/js/5342.dce1814e.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5418.63ba6f04.js create mode 100644 react_frontend/static/react_frontend/js/5451.360eff43.js create mode 100644 react_frontend/static/react_frontend/js/5451.360eff43.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5452.451dffff.js create mode 100644 react_frontend/static/react_frontend/js/5452.451dffff.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5530.bc3a6f36.js create mode 100644 react_frontend/static/react_frontend/js/5582.be2135f5.js create mode 100644 react_frontend/static/react_frontend/js/5582.be2135f5.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5627.e0ae30ef.js create mode 100644 react_frontend/static/react_frontend/js/5627.e0ae30ef.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5665.d3dbd657.js create mode 100644 react_frontend/static/react_frontend/js/5688.5e92c592.js create mode 100644 react_frontend/static/react_frontend/js/5781.dc82f179.js create mode 100644 react_frontend/static/react_frontend/js/5801.e8465e70.js create mode 100644 react_frontend/static/react_frontend/js/581.de1f5559.js create mode 100644 react_frontend/static/react_frontend/js/581.de1f5559.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5860.a6bde3f1.js create mode 100644 react_frontend/static/react_frontend/js/5860.a6bde3f1.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/5923.036ae385.js create mode 100644 react_frontend/static/react_frontend/js/6049.62ab636c.js create mode 100644 react_frontend/static/react_frontend/js/6049.62ab636c.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6160.59062f08.js create mode 100644 react_frontend/static/react_frontend/js/6162.e507dc26.js create mode 100644 react_frontend/static/react_frontend/js/6354.7c788f98.js create mode 100644 react_frontend/static/react_frontend/js/6354.7c788f98.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6357.b5a601fb.js create mode 100644 react_frontend/static/react_frontend/js/6440.e840f4fe.js create mode 100644 react_frontend/static/react_frontend/js/6440.e840f4fe.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6762.0e67b0aa.js create mode 100644 react_frontend/static/react_frontend/js/6762.0e67b0aa.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6780.355a652d.js create mode 100644 react_frontend/static/react_frontend/js/6780.355a652d.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6802.a47c0c25.js create mode 100644 react_frontend/static/react_frontend/js/6802.a47c0c25.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6824.cb5bffe4.js create mode 100644 react_frontend/static/react_frontend/js/6824.cb5bffe4.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6885.ca00900b.js create mode 100644 react_frontend/static/react_frontend/js/6925.bfa19e5a.js create mode 100644 react_frontend/static/react_frontend/js/6925.bfa19e5a.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/6962.c7e27a0a.js create mode 100644 react_frontend/static/react_frontend/js/7113.bf301aeb.js create mode 100644 react_frontend/static/react_frontend/js/7115.e34bdb96.js create mode 100644 react_frontend/static/react_frontend/js/7144.8a23c76e.js create mode 100644 react_frontend/static/react_frontend/js/718.0bc4fcbb.js create mode 100644 react_frontend/static/react_frontend/js/7222.b6759e0a.js create mode 100644 react_frontend/static/react_frontend/js/7222.b6759e0a.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/7234.d1fa472a.js create mode 100644 react_frontend/static/react_frontend/js/732.e0fd0af8.js create mode 100644 react_frontend/static/react_frontend/js/732.e0fd0af8.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/7336.122ec891.js create mode 100644 react_frontend/static/react_frontend/js/7336.122ec891.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/7385.39f52dcd.js create mode 100644 react_frontend/static/react_frontend/js/7398.b01ad35c.js create mode 100644 react_frontend/static/react_frontend/js/7480.5d49a080.js create mode 100644 react_frontend/static/react_frontend/js/7480.5d49a080.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/7551.85496cda.js create mode 100644 react_frontend/static/react_frontend/js/7596.c395ef9a.js create mode 100644 react_frontend/static/react_frontend/js/7658.8bd9ca04.js create mode 100644 react_frontend/static/react_frontend/js/7664.ebb488dc.js create mode 100644 react_frontend/static/react_frontend/js/7748.8add31d8.js create mode 100644 react_frontend/static/react_frontend/js/7786.1bdfce60.js create mode 100644 react_frontend/static/react_frontend/js/7820.5d3bd8cb.js create mode 100644 react_frontend/static/react_frontend/js/7823.99385b7d.js create mode 100644 react_frontend/static/react_frontend/js/7826.84dc4072.js create mode 100644 react_frontend/static/react_frontend/js/7826.84dc4072.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/7839.1c037679.js create mode 100644 react_frontend/static/react_frontend/js/7841.1ad28ecf.js create mode 100644 react_frontend/static/react_frontend/js/7841.1ad28ecf.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/7903.fc3fb7a9.js create mode 100644 react_frontend/static/react_frontend/js/7903.fc3fb7a9.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8038.e967ed72.js create mode 100644 react_frontend/static/react_frontend/js/8038.e967ed72.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8160.f121db9a.js create mode 100644 react_frontend/static/react_frontend/js/8198.52b16bf6.js create mode 100644 react_frontend/static/react_frontend/js/8201.3c0ded6a.js create mode 100644 react_frontend/static/react_frontend/js/8256.cc033cf0.js create mode 100644 react_frontend/static/react_frontend/js/8256.cc033cf0.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8359.bd3f54be.js create mode 100644 react_frontend/static/react_frontend/js/8359.bd3f54be.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8496.0d006ad5.js create mode 100644 react_frontend/static/react_frontend/js/8496.0d006ad5.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/855.5dd0595f.js create mode 100644 react_frontend/static/react_frontend/js/8573.db2d6479.js create mode 100644 react_frontend/static/react_frontend/js/8590.f8ab7c05.js create mode 100644 react_frontend/static/react_frontend/js/8590.f8ab7c05.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8591.7a0cb90e.js create mode 100644 react_frontend/static/react_frontend/js/8724.d9519918.js create mode 100644 react_frontend/static/react_frontend/js/8725.585c887e.js create mode 100644 react_frontend/static/react_frontend/js/8725.585c887e.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8732.22af5ac7.js create mode 100644 react_frontend/static/react_frontend/js/879.3e9e021f.js create mode 100644 react_frontend/static/react_frontend/js/879.3e9e021f.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8793.dd5e3f75.js create mode 100644 react_frontend/static/react_frontend/js/8793.dd5e3f75.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/8832.bbf99698.js create mode 100644 react_frontend/static/react_frontend/js/9011.768beba0.js create mode 100644 react_frontend/static/react_frontend/js/917.89d51636.js create mode 100644 react_frontend/static/react_frontend/js/9294.a25ad635.js create mode 100644 react_frontend/static/react_frontend/js/9359.cd3b2c55.js create mode 100644 react_frontend/static/react_frontend/js/9359.cd3b2c55.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/9390.22d1890d.js create mode 100644 react_frontend/static/react_frontend/js/945.b4c3c33f.js create mode 100644 react_frontend/static/react_frontend/js/945.b4c3c33f.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/9516.386bb506.js create mode 100644 react_frontend/static/react_frontend/js/9536.1daf38e9.js create mode 100644 react_frontend/static/react_frontend/js/958.d9fd8a9f.js create mode 100644 react_frontend/static/react_frontend/js/958.d9fd8a9f.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/9612.5d4557c4.js create mode 100644 react_frontend/static/react_frontend/js/9612.5d4557c4.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/9617.bb943284.js create mode 100644 react_frontend/static/react_frontend/js/978.1cbb7f53.js create mode 100644 react_frontend/static/react_frontend/js/978.1cbb7f53.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/9820.e55ef154.js create mode 100644 react_frontend/static/react_frontend/js/9848.0be66c9a.js create mode 100644 react_frontend/static/react_frontend/js/9981.6c108cef.js create mode 100644 react_frontend/static/react_frontend/js/exercise.12d27afb.js create mode 100644 react_frontend/static/react_frontend/js/exercise.12d27afb.js.LICENSE.txt create mode 100644 react_frontend/static/react_frontend/js/index.323abd0d.js create mode 100644 react_frontend/static/react_frontend/js/index.323abd0d.js.LICENSE.txt create mode 100644 react_frontend/templatetags/__pycache__/__init__.cpython-310.pyc create mode 100644 react_frontend/templatetags/__pycache__/__init__.cpython-312.pyc create mode 100644 react_frontend/templatetags/__pycache__/react_component.cpython-310.pyc create mode 100644 react_frontend/templatetags/__pycache__/react_component.cpython-312.pyc create mode 100644 react_frontend/webpack-stats.json create mode 160000 src diff --git a/RoboticsInfrastructure b/RoboticsInfrastructure new file mode 160000 index 000000000..e64cc1a75 --- /dev/null +++ b/RoboticsInfrastructure @@ -0,0 +1 @@ +Subproject commit e64cc1a7571389f4eef259703e39711397719b65 diff --git a/_pages/exercises/ComputerVision/digital_image_processing.md b/_pages/exercises/ComputerVision/digital_image_processing.md new file mode 100644 index 000000000..63b26edcb --- /dev/null +++ b/_pages/exercises/ComputerVision/digital_image_processing.md @@ -0,0 +1,124 @@ +--- +permalink: /exercises/ComputerVision/digital_image_processing +title: "Digital Image Processing" + +sidebar: + nav: "docs" + +toc: true +toc_label: "Digital Image Processing" +toc_icon: "cog" + +gallery: + - url: /assets/images/exercises/digital_image_processing/digital_image_processing.png + image_path: /assets/images/exercises/digital_image_processing/digital_image_processing.png + alt: "Digital Image Processing" + title: "Digital Image Processing" + +youtubeId1: bUAcQUONyjk +youtubeId2: bUAcQUONyjk +youtubeId3: bUAcQUONyjk +youtubeId4: bUAcQUONyjk +youtubeId5: bUAcQUONyjk +youtubeId6: bUAcQUONyjk +youtubeId7: bUAcQUONyjk +youtubeId8: bUAcQUONyjk +--- + +## Goal + +This series of exercises introduces Digital Image Processing concepts through interactive, hands-on tasks. The goal is to build a robust intuition in vision processing, mathematical reasoning, and algorithmic implementation within a robotics context. Each exercise presents a clear visual goal and provides boilerplate code, challenging you to implement the core function required to achieve the visual result. This methodology ensures a direct connection between theory and application. + +{% include gallery caption="Image Operations Example" %} + +**Note**: If you haven't, take a look at the [user guide](https://jderobot.github.io/RoboticsAcademy/user_guide/#installation) to understand how the installation is done, how to launch a RoboticsBackend and how to access the exercises. + +## Exercise API + +* `import WebGUI` - to import the WebGUI (Web Graphical User Interface) library class. This class contains functions to view debugging information. +* `WebGUI.getSpecificImage(url)` - to get a specific image from a given URL. It can be `None`. +* `WebGUI.showImage(image)` - allows you to view a single debug image. +* `WebGUI.showTwoImages(image1, image2)` - allows you to view two images side-by-side for comparison. + +## Theory +In this exercise, different computer vision functionalities are proposed for implementation: +* Histogram Equalization +* Selective Contrast and Brightness Adjustment +* Median Filtering +* Bit-Plane Decomposition +* Mean Squared Error (MSE) +* Image Rotation and Padding +* Convolution + +### Exercise 1: Histogram Equalization +**Objective:** To understand how histogram equalization can dramatically improve the contrast of a low-light or washed-out image. + +**Task:** You are presented with a low-contrast image. Your task is to implement the histogram equalization function. Upon successful implementation, the output panel will display the high-contrast, equalized version of the image, providing instant visual feedback. + +{% include youtubePlayer.html id=page.youtubeId1 %} + +### Exercise 2: Selective Contrast and Brightness Adjustment +**Objective:** To understand how pixel-wise transformations can selectively enhance or suppress regions based on brightness levels, introducing the concept of contrast stretching. + +**Task:** You are provided with an image and must implement a function that selectively applies a linear transformation to pixel values that exceed a defined brightness threshold. Specifically, the transformation $g(x)=\alpha\cdot f(x)+\beta$ should be applied only when $f(x)>T$, where T is the brightness threshold. Pixel values below the threshold should remain unchanged. + +{% include youtubePlayer.html id=page.youtubeId2 %} + +### Exercise 3: Median Filtering for Image Denoising +**Objective:** To understand how a median filter works as a non-linear denoising technique, particularly effective against salt-and-pepper noise, while preserving important image details like edges. + +**Task:** You will be shown an image corrupted by noise. Your task is to implement a function that applies a median filter, which iterates over the image, computes the median value within each kernel neighborhood, and reconstructs the denoised output image. + +{% include youtubePlayer.html id=page.youtubeId3 %} + +### Exercise 4: Bit-Plane Decomposition +**Objective:** To understand how an 8-bit grayscale pixel value is composed of 8 individual binary planes and to appreciate how different bits contribute to the overall image information. + +**Task:** Given a grayscale image, you must implement a function that performs bitwise operations on the image matrix to isolate and return a selected binary bit-plane image (from 0 to 7). The result will show coarse structure for high-order bits and fine detail or noise for low-order bits. + +{% include youtubePlayer.html id=page.youtubeId4 %} + +### Exercise 5: Mean Squared Error (MSE) for Image Comparison +**Objective:** To learn a fundamental method for quantitatively measuring the difference or "error" between two images. + +**Task:** You are presented with a reference image and a distorted version. You are tasked with implementing the Mean Squared Error formula: +$$MSE=\frac{1}{m\times n}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}[I(i,j)-K(i,j)]^{2} \text{}$$ +The function will take both images as input, and the calculated MSE value will be displayed. + +{% include youtubePlayer.html id=page.youtubeId5 %} + +### Exercise 6: Image Rotation, Interpolation, and Padding +**Objective:** To understand how image rotation is performed at the pixel level using geometric transformations and how interpolation and padding methods affect the visual quality of the output. + +**Task:** You will implement an image rotation function that applies a rotation matrix to pixel coordinates based on a specified angle. It must perform interpolation (e.g., nearest-neighbor, bilinear) to estimate pixel values at the new positions and support different padding strategies (zero, mirror, reflect, wrap-around) for out-of-bounds pixels. + +{% include youtubePlayer.html id=page.youtubeId6 %} + +### Exercise 7: Convolution Operation and Visualization +**Objective:** To understand convolution as a fundamental image filtering operation, grasp its mathematical basis using kernel matrices, and observe its visual effects. + +**Task:** You will implement a basic 2D convolution function. You will be provided with several predefined kernels (e.g., for blurring, sharpening, edge detection). Upon applying a kernel, you will see the original image alongside the filtered output, allowing you to compare the effect of each kernel. + +{% include youtubePlayer.html id=page.youtubeId7 %} + +## Hints + +[Color space conversion](https://opencv24-python-tutorials.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_colorspaces/py_colorspaces.html) + +[Histogram Equalization](https://docs.opencv.org/4.x/d5/daf/tutorial_py_histogram_equalization.html) + +[Smoothing and Filtering Images](https://opencv24-python-tutorials.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_filtering/py_filtering.html) + +[Image Geometric Transformations](https://docs.opencv.org/4.x/da/d6e/tutorial_py_geometric_transformations.html) + +## Demonstrative video of the solution + +{% include youtubePlayer.html id=page.youtubeId8 %} + +## Contributors + +- Contributor: [Amirmohammad Erfan](https://github.com/amirmerfan) + +## References + +1. Erfan, Amirmohammad. "Proposal for New Computer Vision Exercises in Robotics-Academy." June 18, 2025. \ No newline at end of file diff --git a/academy/__pycache__/__init__.cpython-310.pyc b/academy/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b6685d787aef7101767f2eba04b5d93ecf7fe298 GIT binary patch literal 129 zcmd1j<>g`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdTlq~=z}Btq%<_{_Y_lK6PNg34bUHo5sJ br8%i~MXW&M7=gGL#Q4a}$jDg43}gWSBv~hM literal 0 HcmV?d00001 diff --git a/academy/__pycache__/context_processors.cpython-310.pyc b/academy/__pycache__/context_processors.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b15b19158cc0f3953849ad6ffd67a07fea0a8d6 GIT binary patch literal 321 zcmYjMOHRWu5S?)fiTc@dg>2FbAOu1zx(QMvA<<10VpCk2xOiMd_iQ){SMrt>S76nd zs7QU%e4gLTJlRbqLtxCl?8__HA0ekuOs+ZTf|CY~8)$KX2wLgn6BbGjD#*`%S%n;9 zMkWN?t*AkHIYN3lbjv~Fr!l}9E%K@=>>!g`BF+@TVClJXYNUOzUf&sBhaw!l% z0ML@~ny37PcKi_Ktv{iEWncT$KhT-FGfB^apv2Ici31Xg-96`g=j^!w&eBpY0axt@ zG6>fbiGQ)h?3IPZOSt{}Tq1!IS^{y1x403n@f@2ct)!O3JQlv^eoUPwhUsBi%it^$ zaOQi)k7Z zQ?vhuEf!F{( zG6Le*1^5R80_uo`KLzbLHwXgP|Ds$*j_HdN4O9K5Gb&@d3~=SZaf#`dr{dvtlYH>2p^EZK@26`DpcsMGAOq{@1=)(UrH zcM#jh=Geof(v#<(oxbS((HQKUkUyW6PR8Du7h2zb^6=Q(L_{Ax*fL(09z44D+`$gU=ZG!+hiix4uUfm`{B(w zqK|za-2X0N1O%fG61V3i0tlGN!sOEhe2P7j00><^!Cludk9Es|T=D3#hy6hBdBzBz zINou%9p{i3KlO-ixI{Eu*B7NphP6OQa!JLpd!!#e_OM|xkmv+x!r5Ybd-2wUkuI8! z=MOMb>=zf_KAKsIBZ82HPYe%>72rC&ScaweWHTI5z({Z=sw{FanPGoE?}*rSvl`UN z-i%c7T_upcBgY17*yA@?eXl20V0cCF$qegfbG8@|_*pw7SVPQ-85P%z;QS$`VV)H} zoP>Tx>ctg@u!wm)gn&bNi+|Z;ac;P*l4m^Zu?8LHr;#6fmLHa5r~r>#3mS;n1q^JX zX^D%~sF$>3G9=colfX*@CS8k?`ZUm?BbZ<=1h$wCpUh*w%OxV*9rweh@4@Ne@1Q>f z;bzRsz@pM)zPx8c-?cl4jAf}Vsf;*I65m$MXB(I=R4cQG)>F({aRh7 zLR~t9v7^c@nr%v|demrvPH!_&&53q(d_&C^~@H0b8Vi zg=!pNm5hjGuu6V4;c&e0%lAb(BsLk1M+&z4!QfKcS#@Gg|kPng=nTK?@1k{ z9j?rYhxg_-;(lLZI(>2IJ9hu?e`D7_zY4F3o8O27Cn$|w2nq&jm|qRYktzo=&8cmvt?GLPnhrh(cgc9@H@6<%(35H6mUOlYrx13f5Q zJuSsWk5TD_1cTxOn$dOm0MT`tap5&@k*>$H2E;o)&FVUHHKRdEIM!=S(=NPcpiLwh zPs;TOsLiQzr6srZujRkeR8`*X?9(MlQ5r{bRcA>KRryM8sZf@5xmE`sC<;)ZWL26w ztX08NM^a0s`BtOR);lew(x~rIfmuU^p+juC(3TIIiqw`>x_YGU*O;tQt4OTU=|WX% zOYGA`rMIL``#_&om=1oe0kHvXVM&qd`yFXt)+>#w41l#mS=Sm+oLMMKy|(o^eBZE{ zvh}P^(`?q(Ch@9Om`!w%#SZ4oNV+;%ut2JlzOxpml@2B}Ai}azrOQY1ZWH>Ht~8`7 z)c!^VOwk*y8gvCcau6HoTC_b`AIOYTr8j2wz_(So-mXcC`j3RS4~~z9w-3v$xD`p0 zZ;Nu=kuE;rME8tl{{&Sqw(ytm>6`FF7=%PVpXFAQIZnt3$uut{v#IQgkmuo_=lGv_ zA2>%s+5jOY?&t3k6x3G5&Xu{0>A7NeK<6lbP@`CU)00=w>bC6AQ!v8>O5wzt0 E52cA_0RR91 literal 0 HcmV?d00001 diff --git a/academy/__pycache__/settings.cpython-312.pyc b/academy/__pycache__/settings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59d3791ddcf976b5e4b730900c386655cc016195 GIT binary patch literal 3877 zcmb7HOK;oQ6{g;AS$-+9on+*A@{kkJv7O1J(>61-L@PpMNh8TgD;Onc-D{aPMQTVY zwz<-*20<5-S*0zq7|g0genB_=1Kl`CfvC5e09|#bWYA4kJ(rSVMKREXu#Z-4P~)Xp%E8N^f>WJ7k@*05LYHoA7mj;h1XU^{j` zwe`670t4}r`DuT-7d)X2R;SUb9>DY>C-yuA&GZ3nuBs2YtA6CE+o}QNtp@81^8IA1 zhG6!?97cia7z$#?UfdFSXV_bKXKQV+2ZaXsA0-tYNY(AgjmAKKt(Y{6wOZNf9+9C9WHyX7o8P$6Gp}#QUJD>I>X*p)z?B;#wK z9s73;qp5$fw1m`}&h|76^w-qJ5>}P~Zpl!aQcYhPn7h=2H+FG+rzOjAS<;QTx^r?J zQ9+;xOIrMaD7UcwF}gIoGojkO-4tv4f~-QWXe6v*-4J#(v4Ia%ZQoq!=MdYU z1?yaFO03vy>MYmGuo4JyO(~@+J5t@etYNW6L982~9%qTt*88L$BMH=0P2a^-v7Yd~ zxj3|C8xle?J`gp`rhseX?bb~8Z#KkX1xzxI*fNbAEQZ)`j5?z4x?v6F9&Jb}@xBts z-iE4xHFWwvth%5Z;MDLp&>sx*YM+;a zS*1sPeF`#-fw?-u{MNsx2n^25L5{rj$tldxRUw?_g@H3qVR-=A4*^IxiD!*V-R1LX z;)H%wCSI;sq@AfuJcVKt6+JpTwxC>P8(Z z_Zyk``v?NsHoYw!Ye|G3m{Xd%t%9L?vVUw*1C68PK$JK?yRo{Ga1%G5&t&sFapt)V z7&ps&iFk`#xqQD+0?Y3d$`$CXg;GU}(loj=;#n)@o1(5mdqDy;a|u}&U^l@Q&Y+=c z8MrJpBw3`De6Po$YUb?^McR-QsnKfWuu?a6PvpP+Q2Abk7yCAz0DSeK0Qpt}Yf|lf z1Q%A4EuAcAL;YgFU@iG>K41J8p&1@f`Z}H^iWbmY$jY}Y;7~2 z&ROqD!HT^r#ij1>#9yv(m9ns&&G95uEaY-RHecaO_qZH!XEXUiiBI^5TddV^(=f++ za}p~x6+sUoA({}XCYe?im_e&R6eCIBd&GehgSg?eE-9wp%2s%}DTWz1OxB>i8Y=W4 zGjf>h7d=MF1IgG;ED(<%zz2vR5Kj|c^Rl$9IcNj2t2*%t0(CV#gOX6?2bj2<@ScG- z;iNpSrY3<}f0<8}_=<3s|1EK)`L)dq330hx;Xa=hXp%!!-s4MUC`%H~=D`QK9GpPO zmWh8On+8wa=Sn;YmI{T6uvyBb3i);7q}CAUo+>HCSK&8`Ij+K&N#uSxlcln`Y>K0m zPJC&u!qHEYGKq1Ul{>v6A@Iti!#p#8z6tc^= z;QNNIa?98A#7$R~YA;^d6t#&2XzXB3jUpK(uv=YFC0z{b4rAhcczgC1k zCFBZR8ft$!1*QmvQWm;`U^$46WWpl%_IG&7StijT8u&KN=POw*SN;q0Gx(i(b366L z7VQH17T1uptu)s6;WKe7Q&v-3rG9_ndLJBH{Wi5V_<&@aM{m5pg3@To__lTz;OKut z`rlyeI&3!EE4$z3{BMl0&HRh;y>c_b$RqFXZ@&o4KMTx14=lV0EItb?z6dNo3oN(2 z|72Y4y+>F6!OV5TOt@rg`@3$&7izm+j!!*uwL`EAOt(F+{hBnC_4=#0Gj&VQmPtUvz#$Pj@g>cv5 zoASRJ8+W<8j>(X{?dvWwQ|vJl0Xtmb&ct#ja<&th?My9pBIi1h=&O(?0<1oZ^#bD? zJC0Pl4m*f@txa)w^Y!qi)Z0vl&f1TeSoab$9&3kQ2FKgJmw~aiw>Q9*-CaKujzwXSO?Mz<&^X&1&jaLCTHQ!6U*o`tX=Z=}_uG=34xCwCQ?D=O* JRLepf{|5t_<4gbm literal 0 HcmV?d00001 diff --git a/academy/__pycache__/urls.cpython-310.pyc b/academy/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..be867afcf9e05ef5683c1a849964b7b8cbeb34d1 GIT binary patch literal 1241 zcma)5L2uJA6n4_I>C$#gf)f&wZ(XF3XyaDF#56H63GFc8(o5&YZtE(JgYAs1*Ky&% z57}SJl@mXKop^RrR3RbFQ5@&f^LyX>-g|N|h!Cvv?|i`ngnrte?bU^!xA5u`Hj2iG zdeqN7;g5aKo?CfK1mnP+gS;&|3=aBi!?sCVSE#7VL9U9Tz zH{|d>-~)@#+vAAtenjyTQu+vyj8GCN>+wxdqHC(@ik{(b%M{N!a^#Bc`=hpI2X9g8PN=D#zql_wJ@gCqco*5(+ORY zVlGQ1mn<_$CPm7M^i^_{8d>s8r`9-y@H&m&-4Fr3^e8&3ip;WGhjmU56MRA`CI#lA zl*)`So+&A?xSf!)Y``u1qsHE)3<+#y2v;H5#r|-3(B!p{f*s(32=-=Z&%-!6&5718 zr;r%k^7=m((kz&=L=q>|hR%EN<=8)xjkQmRo>(XQ@jr~ti!84wFXkYEi)T~IpqLwd z&YdtAs6ctFE!&UrtdVlGmTO&(#0tJ4+1MU9Q69~9n#*|#0&XG=E#UkP<2d>St&U=^ zZWAhaaqrb##VA+M0yVCdv!ROz=%vH^=?xYD5g<-s;s|yuL1P}x;?9mRyMo3w^c#a21Io%9B6J> t9oV|oy{%q%32kjw7+^0Xt#Wp3HPg>v3s8Tr@9la0R^Nli@B7`~e*m`%Z(INX literal 0 HcmV?d00001 diff --git a/academy/__pycache__/urls.cpython-312.pyc b/academy/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07e8d589dec8d04911ed98e10cae7e9f0c7836b2 GIT binary patch literal 1475 zcma)5&5zqe6dyZIoOMXHDoAb7Rt!Q_*3x3Lh4$cnX|>xeE1@1*DxoM+>e#c1w;qp~ znY7)Uio~JZ*wbD(aIMN8!2iId5OKf~LWmQ$Rx2)h;?3Bp(h8)Gqp$`O+t#9Q^{~5XGp6Vk0(FgPJ|lQ2Sb1qgKz-dn>KeMz2Bbo^2o# z5j(DfY{ZSHMhW=TEdTnJW2!+{`755!blFFvY8}VtnsD|4dPEbFCDeLKv6Yx zdW2xGQ4PMM6%dC=zC2Uo{6lR%GPjXy-Q-R1*#>?~Ie{+DNG7?u4;Gt~FDFDuq3+}3 zU^D375rm8W22FT>i->#BxcwWq*=GM18!`z!yipEUzZ$Z>O0JjhA2%2Gwb!BcX6rDG~!fj=?L?TIHDYivxVLYB7zO0%b^3$NIoQQiMp4SY+cwu%7>mQ7a_kTy{{y^tmG*Er%@yfx2XYYM7J9S}ZUHr{z zK0f{Jg~Q+=IJ|anZDxI-EZW1Lo%(2It^W!7$)DR>GwZtAo;kSjY~|AIoy#-p%Jb#s KviVg@lld2=f29Th literal 0 HcmV?d00001 diff --git a/academy/__pycache__/wsgi.cpython-310.pyc b/academy/__pycache__/wsgi.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5533a6aeaa0dbe6048a78224db9d7788d7769aaf GIT binary patch literal 532 zcmYjO!EO^V5cN7~Qx=MPKt0bj608y25JFUH8wHhAB1K5KY~1x^FPKUA1$^BkJ6;$*$sK*5AE(NWYB-Lnz43bO|$RKo(MAwSu~# z1r|O_)1e3aUXw!yevYtdkjBVMgCHG9s7PHId}VNn29~nX>ynifDws}XT^n6UugOlQ zao%ZUsi;BFHWF6r0+5ZvwS$>9_!1mqI`_VI?}SiPxJ)giE$P3ef+~Slyv^Q-IbC}a z3Ts2F3auB{uGAv^6YXH5eiB}k==1h1-;xmyk3Sua2Iu+snLmC?u&g7Nx;prCRJ!{%U suG3!-U+9v&F5J<^Z1G6D7N6Ctu=jpr>4&&;=Gx9K+k5hiKj$g`2V*s(j{pDw literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/__pycache__/__init__.cpython-310.pyc b/academy/academy_rest_api/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..11578bf938a9423bb44c2cf2b1f7c7f05079bb35 GIT binary patch literal 146 zcmd1j<>g`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdc_`t=4F<|$LkeT-r}&y%}*)KNwotRSIh(?SQr3- C@F3^_ literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/__pycache__/__init__.cpython-312.pyc b/academy/academy_rest_api/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d8402a5d5c988d2c0a84003a99f508a3f90f5b70 GIT binary patch literal 176 zcmX@j%ge<81fHFl86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJV`8!+1gche36~{Q{ zW){V`q!wqFTlq~=z}B%;#sMXALl@rebQG4b)4d6^~g l@p=W7zc_4i^HWN5QtgUZf#x#;aWRPTk(rT^v4|PS0sx8RE@%J% literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/__pycache__/admin.cpython-310.pyc b/academy/academy_rest_api/__pycache__/admin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19c0874c0dc5cf8259879c40a1e7985e03658e13 GIT binary patch literal 187 zcmd1j<>g`k0?*FO3@0G{7{oyaOhAqU5Elyoi4=wu#vF!R#wbQch7_h?22JLdKv4!w z##^k3DY=<>ews|T_)@YG^V0M6lJoOQiZYXmKnAR2C}IIpVB(jNeo%f=eo1C>v14*# tN@{MUej+LzUzA#05}#O*sSh?(ub}c4hfQvNN@-529V5_~Vvvyn3;=^JEW-c* literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/__pycache__/admin.cpython-312.pyc b/academy/academy_rest_api/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35278204d0cb98cdcd0f7a92ffc7e97853ef38b1 GIT binary patch literal 220 zcmX@j%ge<81fHFl8BRd@F^B^LOi;#W0U%>KLkdF*V-7mQTYM>5iFxVyddc~DB}JJ@Ma)12D;Yk6)cx{twu%WYPAw{qam>vuig8IT z&MwI>h;a|jca90lPs%UJOfGgzPE1M7t&B-TrQ?fIi%a4Y3o>KCHt7{q{^GF7%}*)K cNwq8D02uIlvNh@48p^KlOeg*NP z_yy#^$;nNqE}cx8s~LWO^4`mPd2jW41JP7iRm^-L?uQ%7h7(NiPiYG9hD{azgS7A*o=~k<~Rq?x%EAL;}k%u(aJ* z=j~&BskzcPN)v@UT;ENE#N7+g#(i-mCdoh-W8k9UhW{I5Dy448OxY!^AuvL38<@j; z_3*Kys+&m9{Hw}t>3AqwwoKWDxk9^qmsm4uRX%a^pQ>GB?XGmgz_*VO`hbIg`k0?*FOj6xv&7{oyaOhAqU5EqL8i4=w?h7`sWrX0pxrYI&xh7{&t22GYK zZQuNq)SP04wEQB4l8jV^#N@=3)ZEJWqSWG&_{4%t1(&SEy!3p9#DW67mq23}G#PKP z<%0G2X)@npkB?8uPmYhj#hC(DrqBjU h(Qw=JAtvh;RNmsS0kTVTQtcRl<`lC42^IzcCIBHLK%M{q literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/__pycache__/models.cpython-312.pyc b/academy/academy_rest_api/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..72c3ebd91ffba746816bf5b1bfbf1dc8dac279e2 GIT binary patch literal 278 zcmX@j%ge<81fHFl8HGUlF^B^LOi;#W5g=naLkdF_LkeRGQx0P;Qxp>;LnX5&OO>{7 zeoAUiu|isYkwQsEszPFNVoGXmWqeU;aY=k)L8gLBR$^XyzCvO_f!<4yd76y3*mA*o z{4|+wvB$@!}aeo}r(W^%D3#L5_`)i4_Fgcyi*dIgogIBbCI(wtPgB2J*`j6ht>4J1A= SGcq#XWH5ZjAXCH+iNC-C zmo!wI&9;1ygfrLSPn{ZPVyo5rey4Yp%)ob8)&s|KpSk`x@Z>2XLs+Q=fc2~ zfXx&dJAhs=kK@QD8cZ{L(S?MK(yyAKk&XDWSd}VW>&j@SRW6Eo!9i}*o@d=!QH%5q zZB2Ue)b0OlJQcF8VA7?r{xOveHI%|&KI^v5HbTUdD6GsU(FtyL@O_z0)U#^D+}s|| kX8qYeKAq26qqN@I@JcGauHc%Yi-{3p64RK4ET#$j1uUL*CIA2c literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/__pycache__/urls.cpython-312.pyc b/academy/academy_rest_api/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d45a913013495365ad3e69891dd933a0331e3b9f GIT binary patch literal 549 zcmYLFO-sW-5Z!H()|h^%2wtp$Cws{cC?eEWLq$>42zt}M zApR6jqM$4Yf_U&Ica=1U)nH%NXnE z1QKJirxcRkVYz@siqTF$7zZl*R?q;K!jFV8en(61X#NXTKGgih+^d>@QuEL1 k;%V{?CC_tbxtsJIeL?z1cJ{h;*}7YM$}XH~YzoHz0kg`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdgQ&r7bTWt=I0gb$H!;pWtPOp>lIYq;;_lhPbtkw NwF8-4%mgG@7yvo8C0_sl literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/migrations/__pycache__/__init__.cpython-312.pyc b/academy/academy_rest_api/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9043ac23fda3fffddecd072518dad18072d2bcb GIT binary patch literal 187 zcmX@j%ge<81fHFl86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJVMLAo=gche36~{Q{ zW){V`q!wqFTlq~=z}B%;#sMXALl@rebQF}a!PMTsSu w`FX`L@$s2?nI-Y@dIgogIBatBQ%ZAE?TT1|Rxtu`F^KVznURsPh#ANN00Uw(3;+NC literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/serializers/__pycache__/__init__.cpython-310.pyc b/academy/academy_rest_api/serializers/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b34e6a503f0e2e2672f3ae8a2e5833282901dc19 GIT binary patch literal 158 zcmd1j<>g`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdKCULWhUliR;3md>&M4u=4F<|$LkeT-r}&y%}*)K ONwotRUCaa|SQr3hktNUo literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/serializers/__pycache__/__init__.cpython-312.pyc b/academy/academy_rest_api/serializers/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c42bd40a3cb30f56d5555f258a87ba9eab1f9fe1 GIT binary patch literal 188 zcmX@j%ge<81fHFl86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJVMLS!?gche36~{Q{ zW){V`q!wqFTlq~=z}B%;#sMXALl@rebQF+ly9i8+~7 uAY$R41ma>4<0CU8BV!RWkOcrhk~4h( literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/serializers/__pycache__/exercises.cpython-310.pyc b/academy/academy_rest_api/serializers/__pycache__/exercises.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf2de5806aa413fc4cbd11582025b7f977336f5f GIT binary patch literal 689 zcmZvay;9sT5Xbd(j)yZJp&$%z;O6cHG8tfoArw$R=SHJg3n=H>=NJ9}`qTb!{!l&qV=$stH-Pl=0ai;Z;nW_32 zPb%X8C!vbTwS&rrC+4@Y+PUZB@n!R^X ziUfQ>WJu7ZO!18Sj~HI$%F~tmA-Rkkl~>#M(GJz<@@aXXAZ5F}tB}mCu7hijQhzr7 x&eKuHomB^&xX>#-_&T40uiWGg>^X^EU0KKb-_|kx+#lW-e3ZS0jAdd^z5p$`r~Lo` literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/serializers/__pycache__/exercises.cpython-312.pyc b/academy/academy_rest_api/serializers/__pycache__/exercises.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..40acf4818321d4619a4104b53af9be74f908746d GIT binary patch literal 789 zcmZWnO>fjN5FN)!SasWF%V%2-Z~-Zo{s2@_RRu~bwFfFLQ6wv@-QsSt33gTx&U>K0 zpq#m({uEA}K$bWm4%`q6LfR9aWW%z;lE-iCnem%vzh7Ef06TV1<+Ba}_<~L|yeSwz zwBQUlaFReuLP8KbiIdWh5^!J#I2{3Z1vzOo$+PvG);RP^FYv#i6A;tZLdiIhuY}Up zZ9RA?R8MNrn&bd=ZgtVlAYc4fa4*wRPt2d2?@yc91 zK|}Z0cK4Q8j!r-)*Z;4xzAuV6@Jw4wi89HJJBU+Z+Fa!vygnW6y_iQlBX7(|Gn!B*s6IBH{WSjIp&zw0$>vVztuIRw`9= zU+8|3<8)POMOsGj{K}Nj1&ebT{iAi%@Ym~kXXGa}cg`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdX&7vmKW>C$7kkcmc+;F6;$5hu*uC&Da}c>0~uP( I1SD7(0BQmwO8@`> literal 0 HcmV?d00001 diff --git a/academy/academy_rest_api/views/__pycache__/__init__.cpython-312.pyc b/academy/academy_rest_api/views/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe579ee40a6f5a2d2bb31a9887b7af48d905bf75 GIT binary patch literal 182 zcmX@j%ge<81fHFl86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJVg*scsgche36~{Q{ zW){V`q!wqFTlq~=z}B%;#sMXALl@rebQF=d&l<;5}a r@tJv1jS5Vm*s_I#HOgcL}$bl2>?K!lP4P>Li{PNHyQIqQM=@ZMfLdxWEfCT{^1 z;+5P|@d{Lockd^RG~;h<&CmDA&Eesgk)1!-+n=1V-!XY?86~IW_=bXEhC5bs$$7*H z;Y21KPF-4OGV5^W26ZlT&fYRJF!?uTa^Umf*Hj8KoUw`cL%rC92l2_mJwl6w50>C- zi)fogOpjlG247i(8F;Im{Q^D~Y;UXB;jtx@oRZ^93cw^cOeT=dv+si+Oy)3@0!H)k z2QCi`ryY{;bldA4Eir@ka#94L)I!&wR2VB&H)iD`E|j`kY1hB_0SySl=4K96iy_s{ z1#!0mza}C+$`y`qx3j98M)YaCesPXxtM(Qat*vwm=E`4#HdhO`4##`)eFfkz=8veV z3x7|h*Ue2sb$C{31NC~U|38%nY?WTxX(#CvHtJ!yT>G5*jL1|@=wMk`uKgfR?Kr)2C}v{l z!p6p*fKdMwmPQPTEOlaHLn>W5apxZis5iX(zURAl-+k}=eSLimv9bTj8-B$I{p6$= zr5s$pX5b5Qk&As4U;|^01%?GfNU`XPfn-Q2mi$s68!|=$+Cy&X9Jw;!(MC~pHD8Ds zHk7!mDZe<;aH72P;EX~<8Lm!%1RkYcIOeqe{5=rIqc8yC*}nGy2;Wd-omFYX4$nre z9gu-tWC$RRlz*3HcvQWcyU0_93}r)s%4qZMnzz`f##j>)wa{?H#1A0qYqdnNtg#({ zWhHBt6@>28=eTBBr&HU{z7Uz!Ov>T$2%Lx}qV4;MaykVPGXn^>KeaXFgy-fG1_x%7lPQd|DP=aG_vf8XQurzA#VlMCo$ocrlGk`uz;NOomC zS5(YPMf%DjsxNir_AR;2S^z%HEU&%fByUzGzs?UzrSL}IDvz_4Jt0j-*`I;vLl%CE i7~?C{zCsUfWQ6++cmBvC?%~hFd80dPbZ-!6X{EpBcH+DM literal 0 HcmV?d00001 diff --git a/assets/images/exercises/digital_image_processing/digital_image_processing.png b/assets/images/exercises/digital_image_processing/digital_image_processing.png new file mode 100644 index 0000000000000000000000000000000000000000..c70b043477d7b4828675263b07cf9c8c11c04e4e GIT binary patch literal 636290 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

`~d_VG_i{C(RTfQw%*cr0;_ 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

JkP9e5 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

4y>Vw-n3X1W4l%R7P3 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

bTni5%B6-1S|ntntfCx#U5u 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 literal 0 HcmV?d00001 diff --git a/exercises/__pycache__/__init__.cpython-310.pyc b/exercises/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..587528677b8e96d04275d45332f4c8a54d4443f3 GIT binary patch literal 131 zcmd1j<>g`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdTlq~=z}q*kOBC1)0=7RSWLXXa&=#K-Fu iRQ}?y$<0qG%}KQ@Vg(w=2*kx8#z$sGM#ds$APWGDt|)2% literal 0 HcmV?d00001 diff --git a/exercises/__pycache__/admin.cpython-310.pyc b/exercises/__pycache__/admin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12d34056bd9c3a304d718fad66a14b6e55f6840d GIT binary patch literal 368 zcmYk0zfQw25XR4motP@AkXYH6vNSJ%5Dcsg{81%uX>7Hw>=@Yr(Kp~RfQ@(HNxU-k z6__|z9ded``aYj^_qn>B0oK>g`{s-Q{3bK49L+V}ut7+W#DFD&5RjS7O=feETPmn! zg4se8wiG1+MYjCoMCG6O@2HE3rW4I3x=dQq2WZ$Hw?RW9>!j7g9+Tl?7wuuV?!!&rNo9AfI;IKjA?4zE7x^WwcrofKB@S~$1?Qw< J6-nom`~$o$Sgrs7 literal 0 HcmV?d00001 diff --git a/exercises/__pycache__/admin.cpython-312.pyc b/exercises/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2f196c304d30645f05805d84adb9eaab9e7f3cb GIT binary patch literal 697 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 literal 0 HcmV?d00001 diff --git a/exercises/__pycache__/urls.cpython-310.pyc b/exercises/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25810becb744341e88d78da0e995d02fb2a7c0e7 GIT binary patch literal 416 zcmZvXu};G<5J2rXY11}gVr5~=((I_JVC}$Awk}b~omy8(T-gn@{R0L*gkSQ?)L%fV z#GOPWkT}ave!kQBY|?ZrC>C#evy?)7viy!A$vthiAbEBBi-Ja2Tr$T zgQpujpsln+m(N_?t?zm-G|Y3K)~1A_zdL39>A&L6p)D!{Se*3Er+@S@i~R()WxF=h z&eqNbG?tARA!ERZ86$$9Pz_DLN87p&VG~X;zHalSc{Y1pxreF*Y>s(9k;}R7ba(Xe btTE8lIOngsYeFKD;7VP|fL6%+5?{Un-%xLW literal 0 HcmV?d00001 diff --git a/exercises/__pycache__/urls.cpython-312.pyc b/exercises/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28fe10080f8e79f321e420a6bf6518cb4c800a60 GIT binary patch literal 579 zcmZvYJ4*vW5XX1#k=x`v6)laWXe_j_lOzxn1d9l2n&cpy*(ILdBkbnPqqEb>(tHF( zKZL!Ffk5Jcl~~wCw6bzHdIZHOX6HZq+nL$9H;e?}wta3N?m_^bg@{c13En$AxC9tr z=l~ZMAp}^$vLm^2QHDSQ1Y(8AM<{wYKCyZmyOF>3h|@SX>NsXZgwY=^&bf)-%!o^j zxvE^$T6${YRa~TCsMM_b;Vb`y5bB9d8Y~2%YI~S8#kFU-q&-iXgjQ@u*lLR22OO2aM2i#mA)FwripBOXgE3)bWw!RsEHKI*f`P(3o(laALJI zE}U3KsB?x-UnkUK*WjI}z-M}6-7N4H%*?qqH8%-6uKP7}YtP>>cl`suZdX{YVqxO8 z%xFwzie@Xd)+b84J`Nm`rPI8aSPIK?Hg8h7`7cxlKJd(+NB`MasUpw%q*}+gy_wsNWO&V#_ZiLi><)A#$8@#?EyZ;Y?XChpi@Bp zI>UYBt-XdjqFoPbTkwo=0jTj) z=R{cr_^}|T7Tn$1)m6Ajsb0?RU&G#BeweE`l3P*8czV(usx@!XqJ>H&lI1kS4ebV|IY_+D(u}HWo(t*@rka);Js-J_|k@{MqJ#$ zVjW;)4q1*nHhu_FW8;VvVByOf`|t*2$ObCNh?bU86QKI?)F5WF+Hxa%v)1)}7M4~@ zONF_Mwgz04R*F^FdX{LzBJP<_?ovf*FUlj;$s!(nJ_WY79_W57_|O)fB$Ll@WF%N(bjgbxAX0HJNDi^YAT9tqXjTSC>M?i%KM*?DUoQog3H%wttSKBFAk;p}x*m#2s+p--l zyxF?@wRCJ*>t$_}hTU?MX(FPmEcY`wW0LUCP1`G5oQoRJC+7fK6rR~#uh)NB8xjH`lpv>RUD^b~U&T*K{zyO&0!i9p1-Zt%N!F~r?#!h5 zkyGWsfl3@2sZx+ir5r)wkg8J4p@$ZZy~Ik@gl%$aFWdr2iv*XxS$hMdy_9Ep=DnFW zZ{EE3&71ut6!IgWGhY}(D;|XY;DSq1iCMb~%rw%FhD{XbyNPZ5a?SKNQD2|C(ukI25phjg3G<=(_DKKxhI>z8qQ+_PYBHGs^lRTd102@ z2kJpFvCH)YLpX(R#GMkLrZ>H)jme-=@>6%*yq5^jNL^oA&D8 z@S>jwk=EzNY>xqH86_29tqlHjA2gHb&+zuea7`gxvly-|gliYVb(5!;)T*1O=gaCQ zJC*~HFW;KqdFM&|62ntKUh_}$2jikHv`jv~fE;7~0h`zK^p>B^eScDQ_Ac2A&rZwai*9Zy%g+>8FM z;`)^mE`gU5^5=3-sUN{3sJL^?*EPP=MICM6rO!xh02@$V-H;n&LsmAypst!prZ*6a zHYSFKGgnMKCfHIonbB>pQ(3aC7e>5vIF-^VwLJrdsnb(2fz*Iowl@QV$w8e2L5iui zU{PDjCE1WIr7a^%_`SE4mgb)JMBC|$w%0T$(+pxuR!+~_axw>r*KpHQ5oR5g zRS|93yRM*c^=)ZxxKMp!L2a5>nx1-Hh3D&j6s&lHMA%rZT-v_tZuE9?wyqG||6|?a z(Z0gbzI9Ou`~O0M&;NW?1hr@MFr4oDX57+*em)XyY4qH$ss#Riqo?JV@BR@l=bL=3 z?~4z-b*%@)2k&9dAMijMs~}NWY=^aUGCOG1(;E$f4g$|xVt@b&M=Wx+{)Hyt#od-OkTsJQ-^j{M z${;#l5=H!!y*lea$$8wIYV2hF4svR#gNkR$aj-pX>P_T0?8HkJy#URsh%x>h`BqSL z1=X&gniX`=Vd_^<^$L1-1?_pFNca?fQYK+}wG0WNhuC-h@b$MB@Ycsd1pC)SB$V?e K^jHGX+43KKcSB47 literal 0 HcmV?d00001 diff --git a/exercises/migrations/__pycache__/0001_initial.cpython-310.pyc b/exercises/migrations/__pycache__/0001_initial.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80eb8f309968f4809840777f0f1755a81111f68d GIT binary patch literal 2457 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 literal 0 HcmV?d00001 diff --git a/exercises/migrations/__pycache__/__init__.cpython-310.pyc b/exercises/migrations/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d7c50450a00bbfd02a30be60b7f21a3de47c960f GIT binary patch literal 142 zcmd1j<>g`k0?*FO3=sVoL?8o3AjbiSi&=m~3PUi1CZpdAwl9``ZtREkrnU`4-AFo$Xd5gm)H$SB`C)EyQ LR525fU||3N`!XMn literal 0 HcmV?d00001 diff --git a/exercises/migrations/__pycache__/__init__.cpython-312.pyc b/exercises/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07ea63627d04aea2de407f838e32837c102e4f4d GIT binary patch literal 172 zcmX@j%ge<81fHFl86f&Gh(HIQS%4zb87dhx8U0o=6fpsLpFwJVc{^Lhgche36~{Q{ zW){V`q!wqFTlq~=z}q*kOBC1)0=7RTgfrWYlaWaj4; t$Hd2H=4F<|$LkeT{^GF7%}*)KNwq6t1)9wW#Kj=SM`lJw#v*1Q3jo88Ee-$x literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/__init__.cpython-310.pyc b/react_frontend/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..677f32ad2a03e60c13cdac01981d2f01f0de7985 GIT binary patch literal 136 zcmd1j<>g`k0Tlq~=z}6s0C6m&B(P<>!^8=B32M$7kkc nmc+;F6;%G>u*uC&Da}c>D`Ewj$_T{8AjU^#Mn=XWW*`dygmfx% literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/admin.cpython-310.pyc b/react_frontend/__pycache__/admin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c49759e17403c3c7163c4c2e84d8444696caeae7 GIT binary patch literal 177 zcmd1j<>g`k0ews|T_)@YG^V0M6lJoOQiZYXmKnAR2C}IIpVB(jCeo%f=eo1C>v14*# uN@{MUeo<;-a!Gtz5l}~JUWz{0D7}KpTO2mI`6;D2sdkJ&&BY*t1Q-CcJSh7B literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/admin.cpython-312.pyc b/react_frontend/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23cd9dd1c989eb48656c06200b3b3a98e9f7fd24 GIT binary patch literal 210 zcmX@j%ge<81YVt)8BRd@F^B^LOi;#W0U%>KLkdF*V-7mQTYM>5iFxVyddc~DB}JJ@Ma)12D;Yk6)ctaDwu%WYPAw{qam>vuig8IT z&MwI>h;a|jca90lPs%UJOfGgzPE1M7t&Ay3O-wF{Pb&f%lbV+j12$i;pz;@oO>TZl dX-=wL5eLvnMj$Q*F+MOeGBVy{P$*&pasX!RH$wmb literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/apps.cpython-310.pyc b/react_frontend/__pycache__/apps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd5e6f05d62ebd1f55e5fa042c7b59133216c826 GIT binary patch literal 373 zcmY*Vy-veG4EE)Ml$I7D!2__NEX@lb)CvhCh7M)RaysH`2_$z%k`A3=;Zb;{TbXzT zChVjV#gae&oc-B8H=T}w%TKM>uA%R5nnI$cFjL+I`+>9%mh?%+eZ^q#9w}#|uSnQgQ?wKZVE`I?! ComF4} literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/apps.cpython-312.pyc b/react_frontend/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49504b020f4d206a08fa0cc719ec51bf045a0ca7 GIT binary patch literal 426 zcmY*Vy-ve05WY)NDE$E>*kEBn%F+iw2q|hsC58?~ERiKE#BK>~;$WvkMx-u0L3stl zqwoSK5)%^}Qeo+Y-J}CIeD{6#Yu{VD-2iP@Ptn~(`%fb_R;$SJRFefTU^s;seMGRJ z56qeavpK%nWu0&3j$8XO!o_08OVh4MM$tGd((yhZ85ESOdq$M_dmnw2ZBdq!>) zmx_3CBuS5}NhVU#zZP9G6t^OaLgj@4<8e;@uOmU4s!p0qbB{GRny76Jb9iqaJ@#a4 zlNsnQG}(QSj77(^NpqXBv1!=4u&vpueqO%%Lhfm4&Y})AeA|fl0Vh9Oh{wg`k0zT*7{oyaOhAqU5Elyoi4=wu#vF!R#wbQch7_h?22JLdKv4!w z##?N;`6;P6#eSMhw>VR>67$mY^-_|GK$=%F6tMs)F!4)MKPW#bza%rc*fBXVB{jEF qzbG{^xgKLkdF*V-7l;iCMK7}rxoSrm89mS#6Zl}E2#X%VFP5B=A_yc ZaRAL^1ma>4;{!7zBjY^=nIbkI2LP2eHUR(t literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/urls.cpython-310.pyc b/react_frontend/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..119ad4582835d88b517448648ed0e2a86f9a729e GIT binary patch literal 277 zcmY*UJ5Izf5S@vWC9t1spft$^5Q3J10=hKFWQN_WVtZwKfjt5R2jLK0#4Qz9pg@eN zV5E8TeNQuPxjX@}tCw-}F7YE5f31?@LOiqr1cVb9>=AQbOodUsLSQ7tYFkoC)vH=# zU(xIqnxjwQK!d5=>9~;Ic>FFyLRuV;0vLqm1jM~ zy9e)VWJ_L2)8~`YT$V&NvbW(4e175=zD~Ovckkjjgv&t_n?v_sqs!{;?vUy;<7hwe QISMz_0t;9atFr$70kpM8i~s-t literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/urls.cpython-312.pyc b/react_frontend/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d1582b91292aee107ebda2fcceb67cffb47e1f6 GIT binary patch literal 358 zcmX@j%ge<81YVt)8GC{BV-N=hSfPy19ze!)h7^Vr#vF!R#wbQc5SuB7DVI5lnUR5s zA(b(OIh8q!1Evu{r?9MHUCj*Pr!z*eR%^B$i|VY1XpL)biq647WH_ zD^iP+GmBG;L9%&?xv74dY`3^mvJ&&s^Yu!La*B&UM&05oN=-~IiBBua&nrpIODSRj z3Kp?}WVnHffTotD7UdPMWcUmeV)*6gY!wq)oLW>IQe}emf@`Tc{suxcLd{*>OWskdP^1@$Sp=~`qPAdYelhQXe zvI&AlXzn`W{8nH{o6r69%wAew74Epm!8Dun58}Qu4=%ag^i#7YGnF%L!s5)ENsOud zbI2|ShngA?(~M^ttI literal 0 HcmV?d00001 diff --git a/react_frontend/__pycache__/views.cpython-312.pyc b/react_frontend/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c37abade214d0f9eb985ca64902f9f82f1d527bd GIT binary patch literal 488 zcmY*VJxc>Y5Z%4I=*1X}c77Csgk2Q~p4Ikd8}6R%6?6qp8n)#g%3&9XY&D{Z^Sl7n=Mfe-FJmzPSk+=GfJ zxkutuDBqJsuf})~x|7`Qwa;&4z7CoN@1Zy|=F3e#~|At&Z_%g`k0Tlq~=z}6s0C6m&B(P<>!^8=B32sW~LV< ymSpDV701NKXXa&=#K-FuRQ}?y$<0qG%}KQ@Vg*{j2*kx8#z$sGM#ds$APWG|?k^Vr literal 0 HcmV?d00001 diff --git a/react_frontend/src/common.zip b/react_frontend/src/common.zip new file mode 100644 index 0000000000000000000000000000000000000000..94a29d4b73f7a896686a78a7afd8331eae5cdd92 GIT binary patch literal 25280 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 Yf~cI!3S48sz@P|(?ZEZ<%Ap`007%jYBme*a literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/07a88875353ecc692463.svg b/react_frontend/static/react_frontend/07a88875353ecc692463.svg new file mode 100644 index 000000000..711337acc --- /dev/null +++ b/react_frontend/static/react_frontend/07a88875353ecc692463.svg @@ -0,0 +1,29 @@ + + + + + + + + + + diff --git a/react_frontend/static/react_frontend/0bc351912833f3417a22.png b/react_frontend/static/react_frontend/0bc351912833f3417a22.png new file mode 100644 index 0000000000000000000000000000000000000000..339875fedaa69b05f9a237389b4234975ff1fc7d GIT binary patch literal 8720 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 Vx;=eM!BQ3+ea5WxosSnU`Zs9)Lrwqy literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/4bda41d8cb629c0f2675.png b/react_frontend/static/react_frontend/4bda41d8cb629c0f2675.png new file mode 100644 index 0000000000000000000000000000000000000000..37b10977bbc1cebef85675ba03e0086ca2f18c4a GIT binary patch literal 65274 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 literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/4c3c9ff3e5e41de1a959.svg b/react_frontend/static/react_frontend/4c3c9ff3e5e41de1a959.svg new file mode 100644 index 000000000..839df7396 --- /dev/null +++ b/react_frontend/static/react_frontend/4c3c9ff3e5e41de1a959.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/react_frontend/static/react_frontend/4d659b97d7e33af80d11.png b/react_frontend/static/react_frontend/4d659b97d7e33af80d11.png new file mode 100644 index 0000000000000000000000000000000000000000..88cf9982d53241130489612642dd4db4b708fffa GIT binary patch literal 9876 zcmeHN3se(V8Xg|in3V;kzFm#Mw@i}B%OoZW1%#}`QXazEZe=nvfl-nSNgzSDlw-?U zm7{fAUsaEG+k-AXs%~|473FlbMM`^YySueoAJz4-)@ro$xZ9Ow|Cs<8vZ*01Zfy_A znarJg@BiQb|Nh7Q@4(Wm+37LD;X(vKVvHH7*$5KV!d`+t&=Wn*ZHC)Ps=#P58Yd$H zcz~G^(MSZeTB4xIYez;zA<%{V8m@uRX6LZi@QBB_dkwTlw6|Y{_Qdu%kB9R!l zZ-h$@?Z@F>2N%7>x7HD8vmXKXZA(OuLU`)9ryEUKBDn;UNfa8Om&uhnOs2zBB21}M z$aP8;tRJz(FA>WrBi4NfcmNy##%q=*=Y-9nd82;$lJ+$uxHpOQu%pO=$1Y4uOb z;|83_+H~W$;uZUZY1`uFSI_xbrlfW8_!#4|S(FtV4}Bq+xichCpOcpLLSR6e-czxRz;fT_?W!Z^j@r=J;8eQHx@ZjT)yoSa-Rl}8yyGGxOt#mIK zv~_&_o6Nv#&y{XmiEXhDDOQcV`ma-^b0;KuhaLEM+P~+DkEvAY>?_j~siu!$bOTR_P-)(P+VHiQp+KG$KUOn4- zw!U>y?b-9OnYSEky)BiWf(v@++yYmDDN{$-trDEHn<`K*k|)XCoFY)1j`ka}=Nib-Trt5wRUaJtgUfl0eSK`ETM6$~ZKrkwUN z2SKHkQ#Mxup9M*D(lcd_5>6eGkWwX-6{b32RjkXBY`}F=un-i{R)(Vju)EB3(H1{g zU1VcNICc1f0C^|hF0(sy=O)7}lS!9qC(2myjHw1OyS|RJ6EvygnhIPYQ>&FYYLRIa zsFETvRHN0X(5Z4QfyvA`K`OO8Rz{oCh1&>pHw&F#Ul(7|Y11#XWESLCJ<$AJ8aF+!L4B|}MR_5_f z&84kWjtghe#HPwMTCGZ@R;y%crApzSG>39H!4p}YT+yLFcg!an5qLXbvt0vc7>&E&gjrsFa0k}^xOnqk^wqjA0#ixh0@Ms z*p3;Sb{^uV-4+jV1z_E~NLcvx!qp2`SO|nQx!1dT;R*|ZuqO9NJURv+`M^i-sc{cfq>`U>>)V={i>ghRcHy&}$8Mth*Mughpk>w8TY+g~Ih z3%=ZgAcN(`)Z|>x>95Y7nSZ7*uKFp{`n%6x-t>O$xH0<&&1%DUewp2N^eV33N+tK;I5^&+U%ljPS-c}QGL%ehV>q>$(in^xdk0A)NIQ=HL%p)OSQ2at^#rb|9 z=;0D2+j}D{&;@*s-*XY>cgMh$0v($h|KY}6j|8hf78ZdRJ`6tF@JUr0}Wp}QxA|l>ig1#%KCR=pUQjo#EG#O>>v&O zKACszxE|#8>m82Uuw@(%%z!xWUYQp_#9N+cfk5%To5*_xvd`;vH4Uqd!QZvK;vsC+ z$;sF-NbiV67_9BGpz8dECxVrn-_16tU-@L^h@Pn}YK!=dXV4d>x+YjxHqpN>Pot1= z7yxL{x_QmV>N^BcV2JUc@GHsFJScuV13x%XTnoVQF!z{0 z%#R2D`nSNRc0R)%R|0hpRD%~0K@G@_cZ;Yn$r_1FpJk3ls`~YGale+1N6s68H8S*7 zZYT7c;DG}7frtV<ajDCQ5VBZ zeN6TSuS6+jWrE# z^Kw|ex6y#~Z%o+#*6nMF$h6WB)w)+R@9DmXY+ccj{U`Ik`7Hj_+MtPJ4%WKlqT%Z? z6Tl;P3%j)uuK6qAIds;*gj4Ys(k1MRqi*F#UMBXR)~eja@v>#$>F`eIgP|LZA)>J1 z(rHNT#O-~DxfgHyudGdIXkrVXZsxdmxhkU+s(bG^zX^RcRMef9P{bSW@8;#5aCecQ zJLDr{pwLHGI90a4-{g60n7c@~ypV@+V1)DhB+RmH_a5Df1Pf?Tb+G5^i^4ghGxyM~ Usax}wvEUffW~c6YqHytl03AO=y#N3J literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/593a5090ab1a572e0c2f.png b/react_frontend/static/react_frontend/593a5090ab1a572e0c2f.png new file mode 100644 index 0000000000000000000000000000000000000000..9c001a4c00ba2022a24f286c3cd2ba9d72ec28f3 GIT binary patch literal 9878 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 YQQ04`57KuOuI9keXXK>so?Nv2U(IJdu>b%7 literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/6307e69c307fde0efc6a.png b/react_frontend/static/react_frontend/6307e69c307fde0efc6a.png new file mode 100644 index 0000000000000000000000000000000000000000..961f6a6f3983253ba2505368bc0e336e9ccfa53e GIT binary patch literal 9592 zcmeHNdr(tn7XJcjK$M_X1VVX;TYN-bB8CPMO0bA5Le&CR5Fw3-yagmIkN~Lzx6A#72 zQ2|(AlwIVx;|DLxj)*-MH?Bq#eq!5_)9MON<9jx~_qF%s)t{v~-Fjujab36Bft45A z*2eDmj#+S{+PFH;MvWSFz;C#{BY)n1>EiCA?tE*sl5{jYdA2a6EiyOy#KY7h6?h+<>4%|X2ZLR=4#y0i`flti$Irup z-4m00?r-h6ZO@2ws;a@ITo_ruGPHf=x>G?xWJBuS6&F9X@9;jYlv=%w6gU?7+lCmP zu{65u#hg&L%}df7g6T)P0+#Y~Wo!E1n(6B`dfiCq9~9I-^+0Kayt86uhy`!Ler%@R z)Lm~$eQv>c{iO+1DZxv9@5_L`B8}_uEGru6o5cHi%m%MPPXGQ`>ne;F=k`u9K%eB% za_dB%;-}qx{jJfT&CP*~s-suxo{^$qSe8Wj`}%-+-F+QG}kP660sgbGF&u!9UQV-ks`UM1q z+q4NB96`Gy{FXDVT|nZu7tNMs>2trIBl>i zkHIuBPD|ayHN2SG;*GXnGqe-^$9?57o29Sf$BUZ|ym8N(O)43kv+Q)` zpF=}a07!}m{;T#4Pz5Gww{mhM#@ZcJ+xyy8FOQ&I7cENHt_B7&?P_8&fI{Bb*l_ic z)yqrw13Dk*aG=Wt9Utg8QCAlb9?;=H=K~!M-kCn}`XN0KN@NpXKc{IFg5@YV0gXmW zM=Kd_ivYkB!p7JCdDlgM>9q#2MYpTDzJ!r5z;$*w(1cg2RD~$OBinNIc`Kjv^_dGj zRpk<6IiVrpsYProeHZ|_Tzz68JLQ~JhaW>Te@5DHiO=~t!vn8Y-sSID_OIJ`k%Ws& zNMJpB^hnc^E*mh9?ksn90zmaM7MVO$PQn{20N~m$*nDyox-E3cvWHRj{TI=duc2yGRf{u~!c(aoyPx`jdv$M0W*3@L?pg_*5kKi;^ za%X60h&Df`5{M!g+24+fL?VHGWtK|?{q-1{u1sv5JJvL(?3XqS(g|HNHO(7sav^CxD@)lI?R%R}rBbuxZD?uXHnAMQINImIaN~|=R0zakG56TylcH)8bX0cp z`wWt4K?gTk%2z7{*6h@|0>>8oNCtgN8Xbi*_F z?LOdf3_%XnDWE$vJpBD=VTEVc3>J&U%xJ0tD~VHmA;G~`FJyrpiuR(;q!&MJz&Jq0 z_y<%ac)O7=ylhs9X{x8`>@4<$3l~lvRZfoz*^Vvh;kzQz)LlDDTG~u*WhUp6Vx%mQ z6%vs>b5})saiz+m2@+F2cy{qYf1u@jynxRo}vu5jTxmB?CJbO?okjbh^ zhv5NlqoDh7UlY=0XXfUz$w`50VXSyeskWE^@D9pY2Oq&YZ|S=&QEWNLm~Xa?5)$7` z;8RA<*uu(>LF6|}0xS?UEw7J+HPMoBrbbL3SZVpC5%diZzr1kmA^S5kGxIWMrIGRR z52xb{V8t{VTyTZ12das@p;?kpq^lwj2q$33tjrePQk|L!{FFX9XsZ4@%qG8AmY1|n4%GU^ee&LkA5(rrZLv!!&KJ1g63^+y`Iua7OR$uA z)}Ur`v&_PJHV(1fBCcyA36uAaqw3vB%>h{Hb39*bG?t?A$0oHf;>jr~6v(A&qyy*4 z9=Z$0$H(!NLP}@Mmv@Jf%t{|nE!n;l2#GbwRU8}pTQjSnp`kXu%y}&agQ0|nAOPB? zS#ToOo;|kT&F+hl@{i#~SZgn(d0z?DgGgkRmad_+H;M-bv3dZsAWhG8|G>aNY3hgO zYwK|ZaJ-UWk;H8Li?KdT<$IWgPQ>2}Qk}r|Ujmz?2lfqb>f`%EMQOMPQOnfF)4~Pi z-H@O(A{Ty=yB?V6ot~b?Td_~%L~v4ADwRs1P((r+rmy=|7~tt5{ih-@-Mw1y|9iiB w^7?Mr2kHAD{{_&Y@=w-U=rZ$vn3=hZJ|kxr&;7?^Ac}zB_FX>J-Usvk1^ + + + + + diff --git a/react_frontend/static/react_frontend/730897011f0108f00b00.png b/react_frontend/static/react_frontend/730897011f0108f00b00.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac47bcb57643f6c8e78a3beaf04b6796fbd0b81 GIT binary patch literal 10361 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

1lt1 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 l*gIAk4;N`zwpTWk#0v}-ofFBa@ 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 + + + diff --git a/react_frontend/static/react_frontend/b978997e7f65a543a8bd.svg b/react_frontend/static/react_frontend/b978997e7f65a543a8bd.svg new file mode 100644 index 000000000..649af6e7b --- /dev/null +++ b/react_frontend/static/react_frontend/b978997e7f65a543a8bd.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + diff --git a/react_frontend/static/react_frontend/bc1a91558ccad4d10db3.png b/react_frontend/static/react_frontend/bc1a91558ccad4d10db3.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe37125e674b84eba8a1e771d8185e8273303df GIT binary patch literal 7287 zcmeHMe{2)y84jB;wiAdGAJ~|zaqPr#8c0|YLfBl=yTm3Y2{C~|)8@y#-bxSw(sYA( zjZBO0g5oW$FW!g(U68B5RE>qm8*Kv&)ax`|w1`A#B1ElVr`?Js*swflwY3cP-DjV3 zK5NrpMbidb~3Ww}zPOiN2!Zm+9tPD@+j%_c zm%PJ#B|v?k^jPu{*U&Vno-|g3cR78>2t(7*WVhikVY~TkM%d@z>}8s5+*`BEOCM4zD?+0BuA%JFyuoSmLH>XI*?U)M1@SzvhhfU|E4>wEn)`kZCKD`1_TnWAg;UF% z{vSH<-R5gdYouu?R*P{5pP4wOxGmv^_}nn6El_7%ye5%Z0U)tL9wH4OAps>~4+2y~ z@dp-_@PMU<8Z5SsF$!-hjk=Ar;au!WQ z`Q$2z-&68EJ?oHInG=X^7<1K29^R?TKLJdoa^c4tK!_ye%tI^@>lgxd8%i0U)&AwWO_N5%BO!W-QH zNQpit9XMJ=A<0MRpR}b2Y)MLXj&71{S+`)BN5oc+hJKIl5ErAE ze%t?CfH@6^3s1t=iCoj`7!`vsFEQ3CtLy(tcv=8S`X z?}py&QsgpZ!qg}t`y;LY4UHZmGC54V`#VnGcLU7v(3{hX7#Uk%r;)X2ymuA3Q;YBh zrorarPG2Kid%r_sgI^9%B?*uglIVr?O#gajd;%4QzTN37$q43U1dF?T!q{roj-`9L zKsJeVZ1q z(Q;=(t5f{$XHN*-lGxY6ruz6r=*^UUud;ff`(S0~RWes=m7onQMH$yfw30waHGC*n zx&B$kgHf+6rJ^ZT|;IBmOejS=Q_^rt8jbB~(%SrA1Xk*5M1ylbK zxBBDiD+BDQTfh3(k87{2U4m`%jtWNe6yT*bF&aZe6?kvZM%yO*^BLMjLUFCl&BMm`^^XO}T~Ie1GI(*Tg#TRMrj-^c+F4?Kqd z`T1YK>hEC28M#%ri7>3esF7J-$m|1?^+{O$1UFRxkrqAygns};NzI3iuV6+XHO?u3d>gbFk-ePifIqcV|J>XRwVeH%-FU3~USD;>MJQ)pb@^09kK9^G7?PfQyX00Fm~bAMS9z1{ zn}c}>Oh@qVz-!E9YTdkQ6y)={-v+)2>36^)ShiFW_X-CEtnt{`02FY58gYQp2!cx( zN88mvq3K2x;0@65^uS}TQkyxB&IVre0aUm*xf*->rwId4RRFHT{yAa~^WS_}slBjF*40xWaC{ufZ_UDJsjsSB3 z3?H8EMBE|@d{DrAB1yz$1q_#JLl|HpM2ai;^Z=~%7f~g?(Se|k4a>#5EQhKBdm6Mbi@+ zrb#)turxsJi4Ckm(suu7eBOg!dobe>w3Ay6yNa_1s4M#T+&72EW| + + + + + + + + + + + + + + + diff --git a/react_frontend/static/react_frontend/c40fbd6953e072ad5339.svg b/react_frontend/static/react_frontend/c40fbd6953e072ad5339.svg new file mode 100644 index 000000000..3bac62063 --- /dev/null +++ b/react_frontend/static/react_frontend/c40fbd6953e072ad5339.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + diff --git a/react_frontend/static/react_frontend/ced0b01fc91e7c893441.svg b/react_frontend/static/react_frontend/ced0b01fc91e7c893441.svg new file mode 100644 index 000000000..2fe58ca92 --- /dev/null +++ b/react_frontend/static/react_frontend/ced0b01fc91e7c893441.svg @@ -0,0 +1,65 @@ + + + + + + diff --git a/react_frontend/static/react_frontend/css/1159.css b/react_frontend/static/react_frontend/css/1159.css new file mode 100644 index 000000000..50a062562 --- /dev/null +++ b/react_frontend/static/react_frontend/css/1159.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzExNTkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21hcmtlcl92aXN1YWxfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL3Zpc3VhbExvYy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1172.css b/react_frontend/static/react_frontend/css/1172.css new file mode 100644 index 000000000..0967312e3 --- /dev/null +++ b/react_frontend/static/react_frontend/css/1172.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzExNzIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhc2VyX21hcHBpbmcvcmVhY3QtY29tcG9uZW50cy9jc3MvTGFzZXJNYXBwaW5nLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1195.css b/react_frontend/static/react_frontend/css/1195.css new file mode 100644 index 000000000..86dfaae4d --- /dev/null +++ b/react_frontend/static/react_frontend/css/1195.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzExOTUuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21hcmtlcl92aXN1YWxfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL3Zpc3VhbExvYy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1289.css b/react_frontend/static/react_frontend/css/1289.css new file mode 100644 index 000000000..44b3bd9f7 --- /dev/null +++ b/react_frontend/static/react_frontend/css/1289.css @@ -0,0 +1,3 @@ +.image{position:absolute;width:fit-content;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzEyODkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0Usa0JBQ0Esa0JBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2RpZ2l0YWxfaW1hZ2VfcHJvY2Vzc2luZy9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5pbWFnZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiBmaXQtY29udGVudDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1475.css b/react_frontend/static/react_frontend/css/1475.css new file mode 100644 index 000000000..30184bea0 --- /dev/null +++ b/react_frontend/static/react_frontend/css/1475.css @@ -0,0 +1,6 @@ +@import url(https://fonts.googleapis.com/css2?family=Quicksand&display=swap); +body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.app{margin-bottom:28px} +.app{margin-bottom:28px}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media(prefers-reduced-motion: no-preference){.App-logo{animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}} +:root{--background-color: black}.loading-list-message{max-width:1200px;margin:0 auto}.exercise-list{max-width:1200px;margin:0 auto;display:grid;grid-gap:1rem;padding:8px;grid-auto-rows:1fr}.loading-list-message{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Quicksand",sans-serif;font-size:5rem;font-weight:800;background-image:linear-gradient(-225deg, #231557 0%, #44107a 29%, #ff1361 67%, #fff800 100%);background-size:auto auto;background-clip:border-box;background-size:200% auto;color:#fff;background-clip:text;text-fill-color:rgba(0,0,0,0);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);animation:textclip 2s linear infinite}@keyframes textclip{to{background-position:200% center}}@media(min-width: 600px){.exercise-list{grid-template-columns:repeat(3, 1fr)}}@media(min-width: 900px){.exercise-list{grid-template-columns:repeat(4, 1fr)}}.exercise-tag-list{padding:4px}.exercise-card{display:flex;flex-direction:column;justify-content:spacebetween;background-color:#000;border-radius:20px;border:5px solid;position:relative;overflow:hidden;width:100%;aspect-ratio:9/10}.exercise-card-container{flex-grow:1;display:flex;flex-direction:column;align-items:flex-start}.exercise-info-container{width:100%;height:15%;position:absolute;background:rgba(0,0,0,.68);animation:position;transition:height .8s ease;bottom:0;padding:8px;display:inline-flex;flex-direction:column;flex-grow:1}.exercise-info-container #exercise-info,.exercise-info-container .exercise-tag-list{opacity:0%;transition:opacity 1s ease}.exercise-info-container:hover{height:100%}.exercise-info-container:hover #exercise-info,.exercise-info-container:hover .exercise-tag-list{opacity:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE0NzUuY3NzIiwibWFwcGluZ3MiOiI7QUFBQSxLQUNFLFNBQ0Esb0pBR0EsbUNBQ0Esa0NBR0YsS0FDRSwwRUFJRixLQUNFLG1CO0FDZkYsS0FDRSxtQkFHRixLQUNFLGtCQUdGLFVBQ0UsY0FDQSxvQkFHRiw4Q0FDRSxVQUNFLDZDQUlKLFlBQ0UseUJBQ0EsaUJBQ0EsYUFDQSxzQkFDQSxtQkFDQSx1QkFDQSw2QkFDQSxXQUdGLFVBQ0UsY0FHRix5QkFDRSxLQUNFLHVCQUVGLEdBQ0UsMEI7QUNyQ0osTUFDSSwwQkFHSixzQkFDSSxpQkFDQSxjQUlKLGVBQ0ksaUJBQ0EsY0FDQSxhQUNBLGNBQ0EsWUFDQSxtQkF1Q0osc0JBQ0ksa0JBQ0EsT0FDQSxRQUNBLFNBQ0EsTUFDQSxhQUNBLHNCQUNBLHVCQUNBLG1CQUNBLG1DQUNBLGVBQ0EsZ0JBQ0EsOEZBQ0EsMEJBQ0EsMkJBQ0EsMEJBQ0EsV0FDQSxxQkFDQSw4QkFDQSw2QkFDQSxzQ0FDQSxzQ0FHSixvQkFDSSxHQUNJLGlDQUlSLHlCQTBCSSxlQUNJLHNDQUlSLHlCQUNJLGVBQ0ksc0NBSVIsbUJBQ0ksWUFHSixlQUNJLGFBQ0Esc0JBQ0EsNkJBQ0Esc0JBQ0EsbUJBQ0EsaUJBQ0Esa0JBQ0EsZ0JBQ0EsV0FDQSxrQkFHSix5QkFDSSxZQUNBLGFBQ0Esc0JBQ0EsdUJBR0oseUJBQ0ksV0FDQSxXQUNBLGtCQUNBLDJCQUNBLG1CQUNBLDJCQUNBLFNBQ0EsWUFDQSxvQkFDQSxzQkFDQSxZQUVBLG9GQUVJLFdBQ0EsMkJBR0osK0JBQ0ksWUFFQSxnR0FFSSxhIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvaW5kZXguY3NzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9BcHAuY3NzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9FeGVyY2lzZUxpc3QuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbImJvZHkge1xyXG4gIG1hcmdpbjogMDtcclxuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCAnUm9ib3RvJywgJ094eWdlbicsXHJcbiAgICAnVWJ1bnR1JywgJ0NhbnRhcmVsbCcsICdGaXJhIFNhbnMnLCAnRHJvaWQgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsXHJcbiAgICBzYW5zLXNlcmlmO1xyXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XHJcbn1cclxuXHJcbmNvZGUge1xyXG4gIGZvbnQtZmFtaWx5OiBzb3VyY2UtY29kZS1wcm8sIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnQ291cmllciBOZXcnLFxyXG4gICAgbW9ub3NwYWNlO1xyXG59XHJcblxyXG4uYXBwIHtcclxuICBtYXJnaW4tYm90dG9tOiAyOHB4O1xyXG59IiwiLmFwcCB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMjhweDtcclxufVxyXG5cclxuLkFwcCB7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcblxyXG4uQXBwLWxvZ28ge1xyXG4gIGhlaWdodDogNDB2bWluO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG59XHJcblxyXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IG5vLXByZWZlcmVuY2UpIHtcclxuICAuQXBwLWxvZ28ge1xyXG4gICAgYW5pbWF0aW9uOiBBcHAtbG9nby1zcGluIGluZmluaXRlIDIwcyBsaW5lYXI7XHJcbiAgfVxyXG59XHJcblxyXG4uQXBwLWhlYWRlciB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI4MmMzNDtcclxuICBtaW4taGVpZ2h0OiAxMDB2aDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBmb250LXNpemU6IGNhbGMoMTBweCArIDJ2bWluKTtcclxuICBjb2xvcjogd2hpdGU7XHJcbn1cclxuXHJcbi5BcHAtbGluayB7XHJcbiAgY29sb3I6ICM2MWRhZmI7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgQXBwLWxvZ28tc3BpbiB7XHJcbiAgZnJvbSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcclxuICB9XHJcbn1cclxuIiwiQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9UXVpY2tzYW5kJmRpc3BsYXk9c3dhcCcpO1xyXG5cclxuOnJvb3Qge1xyXG4gICAgLS1iYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxufVxyXG5cclxuLmxvYWRpbmctbGlzdC1tZXNzYWdlIHtcclxuICAgIG1heC13aWR0aDogMTIwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcblxyXG59XHJcblxyXG4uZXhlcmNpc2UtbGlzdCB7XHJcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGdyaWQtZ2FwOiAxcmVtO1xyXG4gICAgcGFkZGluZzogOHB4O1xyXG4gICAgZ3JpZC1hdXRvLXJvd3M6IDFmcjtcclxufVxyXG5cclxuLyogLmV4ZXJjaXNlLWNhcmQge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZGlzcGxheTogZ3JpZDtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLmNhcmQtaW1nIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZD5kaXYge1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgZm9udC1mYW1pbHk6ICdRdWlja3NhbmQnLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCAubmFtZSB7XHJcbiAgICBmb250LXNpemU6IDEuOHJlbTtcclxuICAgIG1hcmdpbi1ib3R0b206IDAuNnJlbTtcclxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIC5kZXNjcmlwdGlvbiB7XHJcbiAgICBoZWlnaHQ6IDVyZW07XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIC50YWdzIHtcclxuICAgIGhlaWdodDogNXJlbTtcclxufSAqL1xyXG5cclxuLmxvYWRpbmctbGlzdC1tZXNzYWdlIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICByaWdodDogMDtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHRvcDogMDtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgZm9udC1mYW1pbHk6ICdRdWlja3NhbmQnLCBzYW5zLXNlcmlmO1xyXG4gICAgZm9udC1zaXplOiA1cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDgwMDtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMjI1ZGVnLCAjMjMxNTU3IDAlLCAjNDQxMDdhIDI5JSwgI2ZmMTM2MSA2NyUsICNmZmY4MDAgMTAwJSk7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gYXV0bztcclxuICAgIGJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveDtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSBhdXRvO1xyXG4gICAgY29sb3I6ICNmZmY7XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XHJcbiAgICB0ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XHJcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBhbmltYXRpb246IHRleHRjbGlwIDJzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuQGtleWZyYW1lcyB0ZXh0Y2xpcCB7XHJcbiAgICB0byB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSBjZW50ZXI7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkge1xyXG4gICAgLyogLmV4ZXJjaXNlLWNhcmQ6aG92ZXIge1xyXG4gICAgICAgIG1hcmdpbjogLTNweDtcclxuICAgIH1cclxuXHJcbiAgICAuZXhlcmNpc2UtY2FyZDpob3Zlcjo6YmVmb3JlIHtcclxuICAgICAgICBib3R0b206IDA7XHJcbiAgICAgICAgY29udGVudDogXCJTdGFydCBtZSFcIjtcclxuXHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg1NSwgNTUsIDU1LCAuOCk7XHJcbiAgICAgICAgY29sb3I6ICMwMDdiZmY7XHJcbiAgICAgICAgZm9udC1zaXplOiAzcmVtO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XHJcbiAgICB9ICovXHJcblxyXG4gICAgLmV4ZXJjaXNlLWxpc3Qge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkge1xyXG4gICAgLmV4ZXJjaXNlLWxpc3Qge1xyXG4gICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5leGVyY2lzZS10YWctbGlzdCB7XHJcbiAgICBwYWRkaW5nOiA0cHg7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZWJldHdlZW47XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICBib3JkZXI6IDVweCBzb2xpZDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGFzcGVjdC1yYXRpbzogOS8xMDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQtY29udGFpbmVyIHtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1pbmZvLWNvbnRhaW5lciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTUlO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjY4KTtcclxuICAgIGFuaW1hdGlvbjogcG9zaXRpb247XHJcbiAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMC44cyBlYXNlO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgcGFkZGluZzogOHB4O1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG5cclxuICAgICYgI2V4ZXJjaXNlLWluZm8sXHJcbiAgICAuZXhlcmNpc2UtdGFnLWxpc3Qge1xyXG4gICAgICAgIG9wYWNpdHk6IDAlO1xyXG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMXMgZWFzZTtcclxuICAgIH1cclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcblxyXG4gICAgICAgICYgI2V4ZXJjaXNlLWluZm8sXHJcbiAgICAgICAgLmV4ZXJjaXNlLXRhZy1saXN0IHtcclxuICAgICAgICAgICAgb3BhY2l0eTogMTAwJTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1497.css b/react_frontend/static/react_frontend/css/1497.css new file mode 100644 index 000000000..c4656f97a --- /dev/null +++ b/react_frontend/static/react_frontend/css/1497.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE0OTcuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Jhc2ljX2NvbXB1dGVyX3Zpc2lvbi9yZWFjdC1jb21wb25lbnRzL2Nzcy9CYXNpY0NvbXB1dGVyVmlzaW9uUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1530.css b/react_frontend/static/react_frontend/css/1530.css new file mode 100644 index 000000000..cfa0dd78a --- /dev/null +++ b/react_frontend/static/react_frontend/css/1530.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE1MzAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhYnlyaW50aF9lc2NhcGVfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9MYWJ5cmludGhFc2NhcGUuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1629.css b/react_frontend/static/react_frontend/css/1629.css new file mode 100644 index 000000000..53f270649 --- /dev/null +++ b/react_frontend/static/react_frontend/css/1629.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE2MjkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL2Nzcy9Nb250ZWNhcmxvVmlzdWFsTG9jLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1750.css b/react_frontend/static/react_frontend/css/1750.css new file mode 100644 index 000000000..0307bc84c --- /dev/null +++ b/react_frontend/static/react_frontend/css/1750.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE3NTAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL29ic3RhY2xlX2F2b2lkYW5jZS9yZWFjdC1jb21wb25lbnRzL2Nzcy9PYnN0YWNsZUF2b2lkYW5jZVJSLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1792.css b/react_frontend/static/react_frontend/css/1792.css new file mode 100644 index 000000000..2b0fc6428 --- /dev/null +++ b/react_frontend/static/react_frontend/css/1792.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%}.overlay{position:absolute;width:100%;height:100%;max-height:100%;margin:0 0 0 0;background:rgba(0,0,0,0) !important;z-index:1}#vacuum-pos{position:absolute;width:30px;height:30px;border-radius:30px;background-color:#353535;transition:left .1s ease-out,top .1s ease-out;opacity:50%}.particle{position:absolute;width:10px;height:10px;border-radius:10px;background-color:blue;transition:left .1s ease-out,top .1s ease-out}.particle-arrow{position:relative;width:15px;height:10px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:2;margin-left:-8px}.particle-arrow:after{position:absolute;display:block;content:"";width:10px;height:6px;color:#7d7dff;top:0px;border-bottom:solid 2px;transform:translatex(4px)}.particle-arrow:before{position:absolute;display:block;content:"";width:8px;height:8px;color:#7d7dff;border-top:solid 2px;border-left:solid 2px;top:50%;left:2px;transform-origin:0% 0%;transform:rotatez(-45deg)}#user-pos{position:absolute;width:30px;height:30px;border-radius:30px;background-color:#353535;transition:left .1s ease-out,top .1s ease-out}#map-img{width:100%;height:100%}.arrow{position:relative;width:30px;height:30px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:2;margin-left:-15px}.arrow:after{position:absolute;display:block;content:"";width:30px;height:20px;top:-4px;border-bottom:solid 2px;transform:translatex(4px)}.arrow:before{position:absolute;display:block;content:"";width:8px;height:8px;border-top:solid 2px;border-left:solid 2px;top:50%;left:2px;transform-origin:0% 0%;transform:rotatez(-45deg)}.arrow-real:after{color:red;opacity:50%}.arrow-real:before{color:red;opacity:50%}.arrow-user:after{color:lime}.arrow-user:before{color:lime} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE3OTIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FFQSxXQUNBLFlBQ0EsZ0JBR0YsU0FDRSxrQkFDQSxXQUNBLFlBQ0EsZ0JBQ0EsZUFDQSxvQ0FDQSxVQUdGLFlBQ0Usa0JBQ0EsV0FDQSxZQUNBLG1CQUNBLHlCQUNBLDhDQUNBLFlBR0YsVUFDRSxrQkFDQSxXQUNBLFlBQ0EsbUJBQ0Esc0JBQ0EsOENBR0YsZ0JBQ0Usa0JBQ0EsV0FDQSxZQUNBLGVBQ0EsOENBQ0EsZ0JBQ0EsVUFDQSxpQkFHRixzQkFDRSxrQkFDQSxjQUNBLFdBQ0EsV0FDQSxXQUNBLGNBRUEsUUFDQSx3QkFDQSwwQkFHRix1QkFDRSxrQkFDQSxjQUNBLFdBQ0EsVUFDQSxXQUNBLGNBRUEscUJBQ0Esc0JBQ0EsUUFDQSxTQUNBLHVCQUNBLDBCQUdGLFVBQ0Usa0JBQ0EsV0FDQSxZQUNBLG1CQUNBLHlCQUNBLDhDQUdGLFNBQ0UsV0FDQSxZQUdGLE9BQ0Usa0JBQ0EsV0FDQSxZQUNBLGVBRUEsOENBQ0EsZ0JBQ0EsVUFDQSxrQkFHRixhQUNFLGtCQUNBLGNBQ0EsV0FDQSxXQUNBLFlBRUEsU0FDQSx3QkFDQSwwQkFHRixjQUNFLGtCQUNBLGNBQ0EsV0FDQSxVQUNBLFdBRUEscUJBQ0Esc0JBQ0EsUUFDQSxTQUNBLHVCQUNBLDBCQUdGLGtCQUNFLFVBQ0EsWUFHRixtQkFDRSxVQUNBLFlBR0Ysa0JBQ0UsV0FHRixtQkFDRSxXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvbW9udGVjYXJsb19sYXNlcl9sb2MvcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuZXhlcmNpc2UtY2FudmFzIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgLyogYm9yZGVyOiAycHggc29saWQgI2QzZDNkMzsgKi9cclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIG1hcmdpbjogMCAwIDAgMDtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIHotaW5kZXg6IDE7XHJcbn1cclxuXHJcbiN2YWN1dW0tcG9zIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDMwcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDUzLCA1MywgNTMpO1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXQ7XHJcbiAgb3BhY2l0eTogNTAlO1xyXG59XHJcblxyXG4ucGFydGljbGUge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTBweDtcclxuICBoZWlnaHQ6IDEwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMjU1KTtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbi5wYXJ0aWNsZS1hcnJvdyB7XHJcbiAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgd2lkdGg6ICAxNXB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dDtcclxuICBvdmVyZmxvdzpoaWRkZW47XHJcbiAgei1pbmRleDogMjtcclxuICBtYXJnaW4tbGVmdDogLThweDtcclxufVxyXG5cclxuLnBhcnRpY2xlLWFycm93OmFmdGVye1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogNnB4O1xyXG4gIGNvbG9yOiByZ2IoMTI1LCAxMjUsIDI1NSk7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweDsgICovXHJcbiAgdG9wOjBweDtcclxuICBib3JkZXItYm90dG9tOnNvbGlkIDJweDtcclxuICB0cmFuc2Zvcm06dHJhbnNsYXRleCg0cHgpO1xyXG59XHJcblxyXG4ucGFydGljbGUtYXJyb3c6YmVmb3Jle1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIHdpZHRoOiA4cHg7XHJcbiAgaGVpZ2h0OiA4cHg7XHJcbiAgY29sb3I6IHJnYigxMjUsIDEyNSwgMjU1KTtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICBib3JkZXItdG9wOnNvbGlkIDJweDtcclxuICBib3JkZXItbGVmdDpzb2xpZCAycHg7XHJcbiAgdG9wOjUwJTtcclxuICBsZWZ0OjJweDtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOjAlIDAlO1xyXG4gIHRyYW5zZm9ybTpyb3RhdGV6KC00NWRlZyk7XHJcbn1cclxuXHJcbiN1c2VyLXBvcyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBib3JkZXItcmFkaXVzOiAzMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1MywgNTMsIDUzKTtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbiNtYXAtaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5hcnJvd3tcclxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICB3aWR0aDozMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBjdXJzb3I6cG9pbnRlcjtcclxuLyogICBib3JkZXI6c29saWQgMXB4IHdoaXRlOyAqL1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXQ7XHJcbiAgb3ZlcmZsb3c6aGlkZGVuO1xyXG4gIHotaW5kZXg6IDI7XHJcbiAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xyXG59XHJcblxyXG4uYXJyb3c6YWZ0ZXJ7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4vKiAgIGJvcmRlcjpzb2xpZCAxcHg7ICAqL1xyXG4gIHRvcDotNHB4O1xyXG4gIGJvcmRlci1ib3R0b206c29saWQgMnB4O1xyXG4gIHRyYW5zZm9ybTp0cmFuc2xhdGV4KDRweCk7XHJcbn1cclxuXHJcbi5hcnJvdzpiZWZvcmV7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgd2lkdGg6IDhweDtcclxuICBoZWlnaHQ6IDhweDtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICBib3JkZXItdG9wOnNvbGlkIDJweDtcclxuICBib3JkZXItbGVmdDpzb2xpZCAycHg7XHJcbiAgdG9wOjUwJTtcclxuICBsZWZ0OjJweDtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOjAlIDAlO1xyXG4gIHRyYW5zZm9ybTpyb3RhdGV6KC00NWRlZyk7XHJcbn1cclxuXHJcbi5hcnJvdy1yZWFsOmFmdGVyIHtcclxuICBjb2xvcjpyZ2IoMjU1LCAwLCAwKTtcclxuICBvcGFjaXR5OiA1MCU7XHJcbn1cclxuXHJcbi5hcnJvdy1yZWFsOmJlZm9yZSB7XHJcbiAgY29sb3I6cmdiKDI1NSwgMCwgMCk7XHJcbiAgb3BhY2l0eTogNTAlO1xyXG59XHJcblxyXG4uYXJyb3ctdXNlcjphZnRlciB7XHJcbiAgY29sb3I6cmdiKDAsIDI1NSwgMCk7XHJcbn1cclxuXHJcbi5hcnJvdy11c2VyOmJlZm9yZSB7XHJcbiAgY29sb3I6cmdiKDAsIDI1NSwgMCk7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/180.css b/react_frontend/static/react_frontend/css/180.css new file mode 100644 index 000000000..345a2a5cd --- /dev/null +++ b/react_frontend/static/react_frontend/css/180.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE4MC5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsRUFDSSxzQkFHSixVQUNJLHVCQUdKLG9CQUNJLGtCQUNBLDhCQUNBLGdCQUNBLGFBQ0Esc0JBR0osNkJBQ0ksV0FDQSxZQUNBLGdCQUdKLCtDQUNJLGFBQ0Esc0JBQ0EsV0FDQSxZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvcGlja19wbGFjZS9yZWFjdC1jb21wb25lbnRzL2Nzcy9QaWNrUGxhY2UuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1837.css b/react_frontend/static/react_frontend/css/1837.css new file mode 100644 index 000000000..60c8f08af --- /dev/null +++ b/react_frontend/static/react_frontend/css/1837.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE4MzcuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvd2VyX3Rvd2VyX2luc3BlY3Rpb25fbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9Qb3dlclRvd2VySW5zcGVjdGlvbi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1838.css b/react_frontend/static/react_frontend/css/1838.css new file mode 100644 index 000000000..0c97a6bdc --- /dev/null +++ b/react_frontend/static/react_frontend/css/1838.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE4MzguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzLzNkX3JlY29uc3RydWN0aW9uL3JlYWN0LWNvbXBvbmVudHMvY3NzL1JlY29uc3RydWN0aW9uM0RSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/1938.css b/react_frontend/static/react_frontend/css/1938.css new file mode 100644 index 000000000..bed29f04f --- /dev/null +++ b/react_frontend/static/react_frontend/css/1938.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzE5MzguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19wZXJzb24vcmVhY3QtY29tcG9uZW50cy9jc3MvRm9sbG93UGVyc29uUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2018.css b/react_frontend/static/react_frontend/css/2018.css new file mode 100644 index 000000000..e8d1de4cb --- /dev/null +++ b/react_frontend/static/react_frontend/css/2018.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIwMTguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2dsb2JhbF9uYXZpZ2F0aW9uL3JlYWN0LWNvbXBvbmVudHMvY3NzL0dsb2JhbE5hdmlnYXRpb25SUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2038.css b/react_frontend/static/react_frontend/css/2038.css new file mode 100644 index 000000000..64c1ae64a --- /dev/null +++ b/react_frontend/static/react_frontend/css/2038.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIwMzguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2d5bWtoYW5hX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9jc3MvRHJvbmVHeW1raGFuYS5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2040.css b/react_frontend/static/react_frontend/css/2040.css new file mode 100644 index 000000000..b90646968 --- /dev/null +++ b/react_frontend/static/react_frontend/css/2040.css @@ -0,0 +1,3 @@ +.image{position:absolute;width:50%;height:100%;border:4px #000 solid} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIwNDAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0Usa0JBQ0EsVUFDQSxZQUNBLHNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvcGlja19wbGFjZS9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5pbWFnZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiA1MCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGJvcmRlcjogNHB4IGJsYWNrIHNvbGlkO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/225.css b/react_frontend/static/react_frontend/css/225.css new file mode 100644 index 000000000..281686fd6 --- /dev/null +++ b/react_frontend/static/react_frontend/css/225.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIyNS5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsRUFDSSxzQkFHSixVQUNJLHVCQUdKLG9CQUNJLGtCQUNBLDhCQUNBLGdCQUNBLGFBQ0Esc0JBR0osNkJBQ0ksV0FDQSxZQUNBLGdCQUdKLCtDQUNJLGFBQ0Esc0JBQ0EsV0FDQSxZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmFjdXVtX2NsZWFuZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL0Jhc2ljVmFjdXVtQ2xlYW5lci5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2287.css b/react_frontend/static/react_frontend/css/2287.css new file mode 100644 index 000000000..462c71d24 --- /dev/null +++ b/react_frontend/static/react_frontend/css/2287.css @@ -0,0 +1,3 @@ +.ready{color:#000;background-color:#4caf50;box-shadow:0px 2px 3px -1px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 1px 8px 0px rgba(0,0,0,.12);padding:10px 30px;text-align:center;min-width:64px;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-radius:5px;letter-spacing:.02857em;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000}.waiting{color:#000;background-color:#f57f51;min-width:64px;padding:10px 30px;text-align:center;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000;border-radius:5px;letter-spacing:.02857em}.word{display:block;margin:0;padding:0;line-height:1;text-transform:uppercase}.title{position:relative;font-size:.8rem;text-align:start;top:-20px;height:0px;left:-15px;right:0;margin:0} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIyODcuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0UsV0FDQSx5QkFDQSwyR0FFQSxrQkFDQSxrQkFDQSxlQUNBLHlFQUNBLGlCQUNBLGdCQUNBLGtCQUNBLHdCQUNBLDZCQUNBLG1CQUNBLGtCQUdGLFNBQ0UsV0FDQSx5QkFFQSxlQUNBLGtCQUNBLGtCQUNBLHlFQUNBLGlCQUNBLGdCQUNBLDZCQUNBLG1CQUNBLGtCQUNBLGtCQUNBLHdCQUdGLE1BQ0UsY0FDQSxTQUNBLFVBQ0EsY0FDQSx5QkFHRixPQUNFLGtCQUNBLGdCQUNBLGlCQUNBLFVBQ0EsV0FDQSxXQUNBLFFBQ0EsUyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9JbmRpY2F0b3IuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5yZWFkeSB7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTA7XHJcbiAgYm94LXNoYWRvdzogMHB4IDJweCAzcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksXHJcbiAgICAwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XHJcbiAgcGFkZGluZzogMTBweCAzMHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtaW4td2lkdGg6IDY0cHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlLCBib3JkZXIgMC4zcyBlYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XHJcbiAgYm9yZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItY29sb3I6ICMwMDAwMDA7XHJcbn1cclxuXHJcbi53YWl0aW5nIHtcclxuICBjb2xvcjogYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2Y1MTtcclxuXHJcbiAgbWluLXdpZHRoOiA2NHB4O1xyXG4gIHBhZGRpbmc6IDEwcHggMzBweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlLCBib3JkZXIgMC4zcyBlYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItY29sb3I6ICMwMDAwMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XHJcbn1cclxuXHJcbi53b3JkIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG4udGl0bGUge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmb250LXNpemU6IDAuOHJlbTtcclxuICB0ZXh0LWFsaWduOiBzdGFydDtcclxuICB0b3A6IC0yMHB4O1xyXG4gIGhlaWdodDogMHB4O1xyXG4gIGxlZnQ6IC0xNXB4O1xyXG4gIHJpZ2h0OiAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/233.css b/react_frontend/static/react_frontend/css/233.css new file mode 100644 index 000000000..c17ff47c9 --- /dev/null +++ b/react_frontend/static/react_frontend/css/233.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%}#vehic-pos{position:absolute;width:20px;height:20px;border-radius:5px;background-color:#c80000;border:1px solid #000;z-index:4;transition:left .1s ease-out,top .1s ease-out}.lifting{border:2px solid lime !important}.lifting-ack{border:4px solid lime !important}#vehic-pos-ack{position:absolute;width:20px;height:50px;border-radius:5px;background-color:#817f7c;border:3px solid #ff9800;z-index:4;transition:left .1s ease-out,top .1s ease-out}.arrow{position:relative;width:20px;height:20px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:4;margin-left:-10px}.arrow:after{position:absolute;display:block;content:"";color:#000;width:20px;height:15px;top:-5px;border-bottom:solid 2px;transform:translatex(4px)}.arrow:before{position:absolute;display:block;content:"";color:#000;width:8px;height:8px;border-top:solid 2px;border-left:solid 2px;top:9px;left:1px;transform-origin:0% 0%;transform:rotatez(-45deg)}.target{position:absolute;height:20px;width:20px;z-index:3}.target::before,.target::after{position:absolute;content:"";width:100%;height:2px;border-radius:6px;background-color:blue}.target::before{transform:rotate(45deg)}.target::after{transform:rotate(-45deg)}.arrow-ack{margin-top:40px;margin-left:-2px;transform:rotate(-90deg)} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIzMy5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQ0Usa0JBQ0EsTUFDQSxPQUVBLFdBQ0EsWUFDQSxnQkFHRixXQUNFLGtCQUNBLFdBQ0EsWUFDQSxrQkFDQSx5QkFDQSxzQkFDQSxVQUNBLDhDQUdGLFNBQ0UsaUNBR0YsYUFDRSxpQ0FHRixlQUNFLGtCQUNBLFdBQ0EsWUFDQSxrQkFDQSx5QkFDQSx5QkFDQSxVQUNBLDhDQUdGLE9BQ0Usa0JBQ0EsV0FDQSxZQUNBLGVBRUEsOENBQ0EsZ0JBQ0EsVUFDQSxrQkFHRixhQUNFLGtCQUNBLGNBQ0EsV0FDQSxXQUNBLFdBQ0EsWUFFQSxTQUNBLHdCQUNBLDBCQUdGLGNBQ0Usa0JBQ0EsY0FDQSxXQUNBLFdBQ0EsVUFDQSxXQUVBLHFCQUNBLHNCQUNBLFFBQ0EsU0FDQSx1QkFDQSwwQkFHRixRQUNFLGtCQUNBLFlBQ0EsV0FDQSxVQUdGLCtCQUVJLGtCQUNBLFdBQ0EsV0FDQSxXQUNBLGtCQUNBLHNCQUdKLGdCQUNJLHdCQUdKLGVBQ0kseUJBR0osV0FDSSxnQkFDQSxpQkFDQSx5QiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2FtYXpvbl93YXJlaG91c2UvcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuZXhlcmNpc2UtY2FudmFzIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgLyogYm9yZGVyOiAycHggc29saWQgI2QzZDNkMzsgKi9cclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI3ZlaGljLXBvcyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIwMCwgMCwgMCk7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcbiAgei1pbmRleDogNDtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbi5saWZ0aW5nIHtcclxuICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMCwgMjU1LCAwKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ubGlmdGluZy1hY2sge1xyXG4gIGJvcmRlcjogNHB4IHNvbGlkIHJnYigwLCAyNTUsIDApICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbiN2ZWhpYy1wb3MtYWNrIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiA1MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODE3ZjdjO1xyXG4gIGJvcmRlcjogM3B4IHNvbGlkIHJnYigyNTUgMTUyIDApO1xyXG4gIHotaW5kZXg6IDQ7XHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dFxyXG59XHJcblxyXG4uYXJyb3d7XHJcbiAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgd2lkdGg6MjBweDtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgY3Vyc29yOnBvaW50ZXI7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweCB3aGl0ZTsgKi9cclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0O1xyXG4gIG92ZXJmbG93OmhpZGRlbjtcclxuICB6LWluZGV4OiA0O1xyXG4gIG1hcmdpbi1sZWZ0OiAtMTBweDtcclxufVxyXG5cclxuLmFycm93OmFmdGVye1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIGNvbG9yOnJnYigwLCAwLCAwKTtcclxuICB3aWR0aDogMjBweDtcclxuICBoZWlnaHQ6IDE1cHg7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweDsgICovXHJcbiAgdG9wOi01cHg7XHJcbiAgYm9yZGVyLWJvdHRvbTpzb2xpZCAycHg7XHJcbiAgdHJhbnNmb3JtOnRyYW5zbGF0ZXgoNHB4KTtcclxufVxyXG5cclxuLmFycm93OmJlZm9yZXtcclxuICBwb3NpdGlvbjphYnNvbHV0ZTtcclxuICBkaXNwbGF5OmJsb2NrO1xyXG4gIGNvbnRlbnQ6XCJcIjtcclxuICBjb2xvcjpyZ2IoMCwgMCwgMCk7XHJcbiAgd2lkdGg6IDhweDtcclxuICBoZWlnaHQ6IDhweDtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICBib3JkZXItdG9wOnNvbGlkIDJweDtcclxuICBib3JkZXItbGVmdDpzb2xpZCAycHg7XHJcbiAgdG9wOjlweDtcclxuICBsZWZ0OjFweDtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOjAlIDAlO1xyXG4gIHRyYW5zZm9ybTpyb3RhdGV6KC00NWRlZyk7XHJcbn1cclxuXHJcbi50YXJnZXQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgei1pbmRleDogMztcclxufVxyXG5cclxuLnRhcmdldDo6YmVmb3JlLFxyXG4udGFyZ2V0OjphZnRlciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBjb250ZW50OiAnJztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAycHg7IC8qIGNyb3NzIHRoaWNrbmVzcyAqL1xyXG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTtcclxufVxyXG5cclxuLnRhcmdldDo6YmVmb3JlIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcclxufVxyXG5cclxuLnRhcmdldDo6YWZ0ZXIge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTtcclxufVxyXG5cclxuLmFycm93LWFja3tcclxuICAgIG1hcmdpbi10b3A6IDQwcHg7XHJcbiAgICBtYXJnaW4tbGVmdDogLTJweDtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2394.css b/react_frontend/static/react_frontend/css/2394.css new file mode 100644 index 000000000..056a5ad00 --- /dev/null +++ b/react_frontend/static/react_frontend/css/2394.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzIzOTQuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19saW5lL3JlYWN0LWNvbXBvbmVudHMvY3NzL0ZvbGxvd0xpbmVSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2493.css b/react_frontend/static/react_frontend/css/2493.css new file mode 100644 index 000000000..2107161d9 --- /dev/null +++ b/react_frontend/static/react_frontend/css/2493.css @@ -0,0 +1,3 @@ +.image{position:absolute;width:fit-content;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzI0OTMuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0Usa0JBQ0Esa0JBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Jhc2ljX2NvbXB1dGVyX3Zpc2lvbi9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5pbWFnZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiBmaXQtY29udGVudDtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/2973.css b/react_frontend/static/react_frontend/css/2973.css new file mode 100644 index 000000000..cae920c5e --- /dev/null +++ b/react_frontend/static/react_frontend/css/2973.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzI5NzMuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fbGFzZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL01vbnRlY2FybG9MYXNlckxvYy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/3093.css b/react_frontend/static/react_frontend/css/3093.css new file mode 100644 index 000000000..18bcc16aa --- /dev/null +++ b/react_frontend/static/react_frontend/css/3093.css @@ -0,0 +1,4 @@ +@import url(https://fonts.googleapis.com/css2?family=Quicksand&display=swap); +:root{--background-color: black}.loading-list-message{max-width:1200px;margin:0 auto}.exercise-list{max-width:1200px;margin:0 auto;display:grid;grid-gap:1rem;padding:8px;grid-auto-rows:1fr}.loading-list-message{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Quicksand",sans-serif;font-size:5rem;font-weight:800;background-image:linear-gradient(-225deg, #231557 0%, #44107a 29%, #ff1361 67%, #fff800 100%);background-size:auto auto;background-clip:border-box;background-size:200% auto;color:#fff;background-clip:text;text-fill-color:rgba(0,0,0,0);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);animation:textclip 2s linear infinite}@keyframes textclip{to{background-position:200% center}}@media(min-width: 600px){.exercise-list{grid-template-columns:repeat(3, 1fr)}}@media(min-width: 900px){.exercise-list{grid-template-columns:repeat(4, 1fr)}}.exercise-tag-list{padding:4px}.exercise-card{display:flex;flex-direction:column;justify-content:spacebetween;background-color:#000;border-radius:20px;border:5px solid;position:relative;overflow:hidden;width:100%;aspect-ratio:9/10}.exercise-card-container{flex-grow:1;display:flex;flex-direction:column;align-items:flex-start}.exercise-info-container{width:100%;height:15%;position:absolute;background:rgba(0,0,0,.68);animation:position;transition:height .8s ease;bottom:0;padding:8px;display:inline-flex;flex-direction:column;flex-grow:1}.exercise-info-container #exercise-info,.exercise-info-container .exercise-tag-list{opacity:0%;transition:opacity 1s ease}.exercise-info-container:hover{height:100%}.exercise-info-container:hover #exercise-info,.exercise-info-container:hover .exercise-tag-list{opacity:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzMwOTMuY3NzIiwibWFwcGluZ3MiOiI7QUFFQSxNQUNJLDBCQUdKLHNCQUNJLGlCQUNBLGNBSUosZUFDSSxpQkFDQSxjQUNBLGFBQ0EsY0FDQSxZQUNBLG1CQXVDSixzQkFDSSxrQkFDQSxPQUNBLFFBQ0EsU0FDQSxNQUNBLGFBQ0Esc0JBQ0EsdUJBQ0EsbUJBQ0EsbUNBQ0EsZUFDQSxnQkFDQSw4RkFDQSwwQkFDQSwyQkFDQSwwQkFDQSxXQUNBLHFCQUNBLDhCQUNBLDZCQUNBLHNDQUNBLHNDQUdKLG9CQUNJLEdBQ0ksaUNBSVIseUJBMEJJLGVBQ0ksc0NBSVIseUJBQ0ksZUFDSSxzQ0FJUixtQkFDSSxZQUdKLGVBQ0ksYUFDQSxzQkFDQSw2QkFDQSxzQkFDQSxtQkFDQSxpQkFDQSxrQkFDQSxnQkFDQSxXQUNBLGtCQUdKLHlCQUNJLFlBQ0EsYUFDQSxzQkFDQSx1QkFHSix5QkFDSSxXQUNBLFdBQ0Esa0JBQ0EsMkJBQ0EsbUJBQ0EsMkJBQ0EsU0FDQSxZQUNBLG9CQUNBLHNCQUNBLFlBRUEsb0ZBRUksV0FDQSwyQkFHSiwrQkFDSSxZQUVBLGdHQUVJLGEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvRXhlcmNpc2VMaXN0LmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1RdWlja3NhbmQmZGlzcGxheT1zd2FwJyk7XHJcblxyXG46cm9vdCB7XHJcbiAgICAtLWJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4ubG9hZGluZy1saXN0LW1lc3NhZ2Uge1xyXG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuXHJcbn1cclxuXHJcbi5leGVyY2lzZS1saXN0IHtcclxuICAgIG1heC13aWR0aDogMTIwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgZ3JpZC1nYXA6IDFyZW07XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICBncmlkLWF1dG8tcm93czogMWZyO1xyXG59XHJcblxyXG4vKiAuZXhlcmNpc2UtY2FyZCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCAuY2FyZC1pbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkPmRpdiB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBmb250LWZhbWlseTogJ1F1aWNrc2FuZCcsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIC5uYW1lIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLmRlc2NyaXB0aW9uIHtcclxuICAgIGhlaWdodDogNXJlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLnRhZ3Mge1xyXG4gICAgaGVpZ2h0OiA1cmVtO1xyXG59ICovXHJcblxyXG4ubG9hZGluZy1saXN0LW1lc3NhZ2Uge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LWZhbWlseTogJ1F1aWNrc2FuZCcsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXNpemU6IDVyZW07XHJcbiAgICBmb250LXdlaWdodDogODAwO1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0yMjVkZWcsICMyMzE1NTcgMCUsICM0NDEwN2EgMjklLCAjZmYxMzYxIDY3JSwgI2ZmZjgwMCAxMDAlKTtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byBhdXRvO1xyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIGF1dG87XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDtcclxuICAgIHRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcclxuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGFuaW1hdGlvbjogdGV4dGNsaXAgMnMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIHRleHRjbGlwIHtcclxuICAgIHRvIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIGNlbnRlcjtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7XHJcbiAgICAvKiAuZXhlcmNpc2UtY2FyZDpob3ZlciB7XHJcbiAgICAgICAgbWFyZ2luOiAtM3B4O1xyXG4gICAgfVxyXG5cclxuICAgIC5leGVyY2lzZS1jYXJkOmhvdmVyOjpiZWZvcmUge1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBjb250ZW50OiBcIlN0YXJ0IG1lIVwiO1xyXG5cclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU1LCA1NSwgNTUsIC44KTtcclxuICAgICAgICBjb2xvcjogIzAwN2JmZjtcclxuICAgICAgICBmb250LXNpemU6IDNyZW07XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcclxuICAgIH0gKi9cclxuXHJcbiAgICAuZXhlcmNpc2UtbGlzdCB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDkwMHB4KSB7XHJcbiAgICAuZXhlcmNpc2UtbGlzdCB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcclxuICAgIH1cclxufVxyXG5cclxuLmV4ZXJjaXNlLXRhZy1saXN0IHtcclxuICAgIHBhZGRpbmc6IDRweDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlYmV0d2VlbjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgIGJvcmRlcjogNXB4IHNvbGlkO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYXNwZWN0LXJhdGlvOiA5LzEwO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZC1jb250YWluZXIge1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWluZm8tY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxNSU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNjgpO1xyXG4gICAgYW5pbWF0aW9uOiBwb3NpdGlvbjtcclxuICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjhzIGVhc2U7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgJiAjZXhlcmNpc2UtaW5mbyxcclxuICAgIC5leGVyY2lzZS10YWctbGlzdCB7XHJcbiAgICAgICAgb3BhY2l0eTogMCU7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcyBlYXNlO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAgICAgJiAjZXhlcmNpc2UtaW5mbyxcclxuICAgICAgICAuZXhlcmNpc2UtdGFnLWxpc3Qge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/3152.css b/react_frontend/static/react_frontend/css/3152.css new file mode 100644 index 000000000..e81f4e72f --- /dev/null +++ b/react_frontend/static/react_frontend/css/3152.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzMxNTIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzLzNkX3JlY29uc3RydWN0aW9uL3JlYWN0LWNvbXBvbmVudHMvY3NzL1JlY29uc3RydWN0aW9uM0RSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/3238.css b/react_frontend/static/react_frontend/css/3238.css new file mode 100644 index 000000000..15c29201b --- /dev/null +++ b/react_frontend/static/react_frontend/css/3238.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzMyMzguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2FtYXpvbl93YXJlaG91c2UvcmVhY3QtY29tcG9uZW50cy9jc3MvQW1hem9uV2FyZWhvdXNlUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/349.css b/react_frontend/static/react_frontend/css/349.css new file mode 100644 index 000000000..acf9103f8 --- /dev/null +++ b/react_frontend/static/react_frontend/css/349.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzM0OS5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsRUFDSSxzQkFHSixVQUNJLHVCQUdKLG9CQUNJLGtCQUNBLDhCQUNBLGdCQUNBLGFBQ0Esc0JBR0osNkJBQ0ksV0FDQSxZQUNBLGdCQUdKLCtDQUNJLGFBQ0Esc0JBQ0EsV0FDQSxZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvYXV0b3BhcmtpbmcvcmVhY3QtY29tcG9uZW50cy9jc3MvQXV0b3BhcmtpbmdSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/3576.css b/react_frontend/static/react_frontend/css/3576.css new file mode 100644 index 000000000..454d3ddf6 --- /dev/null +++ b/react_frontend/static/react_frontend/css/3576.css @@ -0,0 +1,3 @@ +.flex-container{width:100%;height:100%;display:flex;padding:0 8px 8px}.flex-container-column{flex-direction:column}.flex-container-row{flex-direction:row}.flex-container-first,.flex-container-last,.console-on{display:inline;width:100%;height:100%;flex-grow:1;flex-shrink:0}.flex-container-last{flex-shrink:1}.flex-container-first>*,.flex-container-last>*,.console-on>*{margin:0 !important;padding:0 !important}.flex-container-divider{background-color:#f0f0f0;flex-shrink:0;flex-grow:0;display:flex;justify-content:center;align-items:center}.flex-container-column>.flex-container-divider{height:8px;cursor:ns-resize;flex-direction:row}.flex-container-column>.flex-container-first{height:50%}.flex-container-column>.console-on{height:70%}.flex-container-row>.flex-container-divider{width:8px;cursor:ew-resize;flex-direction:column}.flex-container-row>.flex-container-first{width:50%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzM1NzYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGdCQUNFLFdBQ0EsWUFDQSxhQUNBLGtCQUdGLHVCQUNFLHNCQUdGLG9CQUNFLG1CQUdGLHVEQUdFLGVBQ0EsV0FDQSxZQUNBLFlBQ0EsY0FHRixxQkFDRSxjQUdGLDZEQUdFLG9CQUNBLHFCQUdGLHdCQUNFLHlCQUNBLGNBQ0EsWUFDQSxhQUNBLHVCQUNBLG1CQUdGLCtDQUNFLFdBQ0EsaUJBQ0EsbUJBR0YsNkNBQ0UsV0FHRixtQ0FDRSxXQUdGLDRDQUNFLFVBQ0EsaUJBQ0Esc0JBR0YsMENBQ0UsVSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy93cmFwcGVycy9GbGV4Q29udGFpbmVyLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuZmxleC1jb250YWluZXIge1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIHBhZGRpbmc6IDAgOHB4IDhweDtcclxufVxyXG5cclxuLmZsZXgtY29udGFpbmVyLWNvbHVtbiB7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuLmZsZXgtY29udGFpbmVyLXJvdyB7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxufVxyXG5cclxuLmZsZXgtY29udGFpbmVyLWZpcnN0LFxyXG4uZmxleC1jb250YWluZXItbGFzdCxcclxuLmNvbnNvbGUtb24ge1xyXG4gIGRpc3BsYXk6IGlubGluZTtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZmxleC1ncm93OiAxO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uZmxleC1jb250YWluZXItbGFzdCB7XHJcbiAgZmxleC1zaHJpbms6IDE7XHJcbn1cclxuXHJcbi5mbGV4LWNvbnRhaW5lci1maXJzdCA+ICosXHJcbi5mbGV4LWNvbnRhaW5lci1sYXN0ID4gKixcclxuLmNvbnNvbGUtb24gPiAqIHtcclxuICBtYXJnaW46IDAgIWltcG9ydGFudDtcclxuICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5mbGV4LWNvbnRhaW5lci1kaXZpZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmMGYwO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG4gIGZsZXgtZ3JvdzogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5mbGV4LWNvbnRhaW5lci1jb2x1bW4gPiAuZmxleC1jb250YWluZXItZGl2aWRlciB7XHJcbiAgaGVpZ2h0OiA4cHg7XHJcbiAgY3Vyc29yOiBucy1yZXNpemU7XHJcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcclxufVxyXG5cclxuLmZsZXgtY29udGFpbmVyLWNvbHVtbiA+IC5mbGV4LWNvbnRhaW5lci1maXJzdCB7XHJcbiAgaGVpZ2h0OiA1MCU7XHJcbn1cclxuXHJcbi5mbGV4LWNvbnRhaW5lci1jb2x1bW4gPiAuY29uc29sZS1vbiB7XHJcbiAgaGVpZ2h0OiA3MCU7XHJcbn1cclxuXHJcbi5mbGV4LWNvbnRhaW5lci1yb3cgPiAuZmxleC1jb250YWluZXItZGl2aWRlciB7XHJcbiAgd2lkdGg6IDhweDtcclxuICBjdXJzb3I6IGV3LXJlc2l6ZTtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4uZmxleC1jb250YWluZXItcm93ID4gLmZsZXgtY29udGFpbmVyLWZpcnN0IHtcclxuICB3aWR0aDogNTAlO1xyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/3898.css b/react_frontend/static/react_frontend/css/3898.css new file mode 100644 index 000000000..e9c5c9098 --- /dev/null +++ b/react_frontend/static/react_frontend/css/3898.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzM4OTguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3BpY2tfcGxhY2UvcmVhY3QtY29tcG9uZW50cy9jc3MvUGlja1BsYWNlLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/392.css b/react_frontend/static/react_frontend/css/392.css new file mode 100644 index 000000000..b250e7548 --- /dev/null +++ b/react_frontend/static/react_frontend/css/392.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzM5Mi5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsRUFDSSxzQkFHSixVQUNJLHVCQUdKLG9CQUNJLGtCQUNBLDhCQUNBLGdCQUNBLGFBQ0Esc0JBR0osNkJBQ0ksV0FDQSxZQUNBLGdCQUdKLCtDQUNJLGFBQ0Esc0JBQ0EsV0FDQSxZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvM2RfcmVjb25zdHJ1Y3Rpb24vcmVhY3QtY29tcG9uZW50cy9jc3MvUmVjb25zdHJ1Y3Rpb24zRFJSLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4035.css b/react_frontend/static/react_frontend/css/4035.css new file mode 100644 index 000000000..f5af3b0e1 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4035.css @@ -0,0 +1,3 @@ +.view-hidden{display:none !important} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQwMzUuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGFBQ0Usd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvYnV0dG9ucy9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIudmlldy1oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4078.css b/react_frontend/static/react_frontend/css/4078.css new file mode 100644 index 000000000..a0d63c2a9 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4078.css @@ -0,0 +1,4 @@ +.tooltip-container{position:relative;display:inline-block;cursor:pointer}.tooltip-details{visibility:hidden;width:200px;background-color:#333;color:#fff;text-align:center;border-radius:6px;padding:10px;position:absolute;z-index:1;top:100%;left:50%;transform:translateX(-50%);margin-top:10px;opacity:0;transition:opacity .3s,transform .3s}.tooltip-details::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #333 rgba(0,0,0,0)}.tooltip-container:hover .tooltip-details{visibility:visible;opacity:1;transform:translateX(-50%) translateY(0)} +*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.container{width:100%}@media(min-width: 640px){.container{max-width:640px}}@media(min-width: 768px){.container{max-width:768px}}@media(min-width: 1024px){.container{max-width:1024px}}@media(min-width: 1280px){.container{max-width:1280px}}@media(min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-3{bottom:.75rem}.left-0{left:0}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.top-1{top:.25rem}.top-\[50\%\]{top:50%}.z-\[100\]{z-index:100}.z-\[99\]{z-index:99}.m-1{margin:.25rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[20px\]{height:20px}.h-\[250px\]{height:250px}.h-full{height:100%}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[2px\]{width:2px}.w-\[30px\]{width:30px}.w-\[36px\]{width:36px}.w-\[400px\]{width:400px}.w-\[calc\(400px-120px\)\]{width:280px}.w-full{width:100%}.-translate-x-\[50\%\]{--tw-translate-x:-50%}.-translate-x-\[50\%\],.-translate-y-\[50\%\]{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[50\%\]{--tw-translate-y:-50%}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-bl-full{border-bottom-left-radius:9999px}.rounded-br-full{border-bottom-right-radius:9999px}.rounded-tl-full{border-top-left-radius:9999px}.rounded-tr-full{border-top-right-radius:9999px}.border,.border-\[1px\]{border-width:1px}.border-\[\#008D017F\]{border-color:rgba(0,141,1,.4980392157)}.border-\[\#464646\]{--tw-border-opacity:1;border-color:rgb(70 70 70/var(--tw-border-opacity))}.border-\[\#636363\]{--tw-border-opacity:1;border-color:rgb(99 99 99/var(--tw-border-opacity))}.bg-\[\#2D2D2D\]{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-\[\#383838\]{--tw-bg-opacity:1;background-color:rgb(56 56 56/var(--tw-bg-opacity))}.bg-\[\#464646\]{--tw-bg-opacity:1;background-color:rgb(70 70 70/var(--tw-bg-opacity))}.bg-\[\#474747\]{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[2px\]{padding-left:2px;padding-right:2px}.px-\[4px\]{padding-left:4px;padding-right:4px}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-10{padding-top:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.capitalize{text-transform:capitalize}.text-\[\#fcfcfc\]{--tw-text-opacity:1;color:rgb(252 252 252/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.blur{--tw-blur:blur(8px)}.blur,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-\[250ms\]{transition-duration:.25s}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:start-\[2px\]:after{content:var(--tw-content);inset-inline-start:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.hover\:border-\[1\.8px\]:hover{border-width:1.8px}.hover\:border-\[\#008D01\]:hover{--tw-border-opacity:1;border-color:rgb(0 141 1/var(--tw-border-opacity))}.hover\:bg-\[\#393939\]:hover{--tw-bg-opacity:1;background-color:rgb(57 57 57/var(--tw-bg-opacity))}.hover\:bg-\[\#474747\]:hover{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x:100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.peer:focus~.peer-focus\:ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}.peer:focus~.peer-focus\:ring-\[\#636363\]{--tw-ring-opacity:1;--tw-ring-color:rgb(99 99 99/var(--tw-ring-opacity))}.peer:checked~.rtl\:peer-checked\:after\:-translate-x-full:where([dir=rtl],[dir=rtl] *):after{content:var(--tw-content);--tw-translate-x:-100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media(prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQwNzguY3NzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUNFLGtCQUNBLHFCQUNBLGVBR0YsaUJBQ0Usa0JBQ0EsWUFDQSxzQkFDQSxXQUNBLGtCQUNBLGtCQUNBLGFBQ0Esa0JBQ0EsVUFDQSxTQUNBLFNBQ0EsMkJBQ0EsZ0JBQ0EsVUFDQSxxQ0FJRix3QkFDRSxXQUNBLGtCQUNBLFlBQ0EsU0FDQSxpQkFDQSxpQkFDQSxtQkFDQSw0REFJRiwwQ0FDRSxtQkFDQSxVQUNBLHlDO0FDeENGLGd6WCIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9idXR0b25zL0RMTW9kZWxVcGxvYWRCdXR0b24uY3NzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy90YWlsd2luZC5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLnRvb2x0aXAtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnRvb2x0aXAtZGV0YWlscyB7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIHdpZHRoOiAyMDBweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzLCB0cmFuc2Zvcm0gMC4zcztcclxufVxyXG5cclxuLyogVG9vbHRpcCBhcnJvdyAqL1xyXG4udG9vbHRpcC1kZXRhaWxzOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAxMDAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICBtYXJnaW4tbGVmdDogLTVweDtcclxuICBib3JkZXItd2lkdGg6IDVweDtcclxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzMzMyB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuLyogU2hvdyB0b29sdGlwIG9uIGhvdmVyICovXHJcbi50b29sdGlwLWNvbnRhaW5lcjpob3ZlciAudG9vbHRpcC1kZXRhaWxzIHtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XHJcbn1cclxuIiwiKiw6OmJhY2tkcm9wLDphZnRlciw6YmVmb3Jley0tdHctYm9yZGVyLXNwYWNpbmcteDowOy0tdHctYm9yZGVyLXNwYWNpbmcteTowOy0tdHctdHJhbnNsYXRlLXg6MDstLXR3LXRyYW5zbGF0ZS15OjA7LS10dy1yb3RhdGU6MDstLXR3LXNrZXcteDowOy0tdHctc2tldy15OjA7LS10dy1zY2FsZS14OjE7LS10dy1zY2FsZS15OjE7LS10dy1wYW4teDogOy0tdHctcGFuLXk6IDstLXR3LXBpbmNoLXpvb206IDstLXR3LXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1jb2xvcjojM2I4MmY2ODA7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcmVkOjAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0vKiEgdGFpbHdpbmRjc3MgdjMuNC4xMyB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20qLyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkICNlNWU3ZWJ9OmFmdGVyLDpiZWZvcmV7LS10dy1jb250ZW50OlwiXCJ9Omhvc3QsaHRtbHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1vei10YWItc2l6ZTo0Oy1vLXRhYi1zaXplOjQ7dGFiLXNpemU6NDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e21hcmdpbjowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246aW5pdGlhbH1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b306LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjppbml0aWFsfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiw6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRkLGRsLGZpZ3VyZSxoMSxoMixoMyxoNCxoNSxoNixocixwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MH1maWVsZHNldCxsZWdlbmR7cGFkZGluZzowfW1lbnUsb2wsdWx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfVtyb2xlPWJ1dHRvbl0sYnV0dG9ue2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXXtkaXNwbGF5Om5vbmV9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsuY29udGFpbmVye21heC13aWR0aDo2NDBweH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjc2OHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEwMjRweH19QG1lZGlhIChtaW4td2lkdGg6MTI4MHB4KXsuY29udGFpbmVye21heC13aWR0aDoxMjgwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE1MzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTUzNnB4fX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjB9LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5ib3R0b20tM3tib3R0b206Ljc1cmVtfS5sZWZ0LTB7bGVmdDowfS5sZWZ0LVxcWzUwXFwlXFxde2xlZnQ6NTAlfS5yaWdodC0we3JpZ2h0OjB9LnJpZ2h0LTF7cmlnaHQ6LjI1cmVtfS5yaWdodC0ze3JpZ2h0Oi43NXJlbX0udG9wLTF7dG9wOi4yNXJlbX0udG9wLVxcWzUwXFwlXFxde3RvcDo1MCV9LnotXFxbMTAwXFxde3otaW5kZXg6MTAwfS56LVxcWzk5XFxde3otaW5kZXg6OTl9Lm0tMXttYXJnaW46LjI1cmVtfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtM3toZWlnaHQ6Ljc1cmVtfS5oLTV7aGVpZ2h0OjEuMjVyZW19LmgtNntoZWlnaHQ6MS41cmVtfS5oLTd7aGVpZ2h0OjEuNzVyZW19LmgtOXtoZWlnaHQ6Mi4yNXJlbX0uaC1cXFsyMHB4XFxde2hlaWdodDoyMHB4fS5oLVxcWzI1MHB4XFxde2hlaWdodDoyNTBweH0uaC1mdWxse2hlaWdodDoxMDAlfS53LTE2e3dpZHRoOjRyZW19LnctMlxcLzN7d2lkdGg6NjYuNjY2NjY3JX0udy03e3dpZHRoOjEuNzVyZW19LnctOXt3aWR0aDoyLjI1cmVtfS53LVxcWzEwMHB4XFxde3dpZHRoOjEwMHB4fS53LVxcWzEyMHB4XFxde3dpZHRoOjEyMHB4fS53LVxcWzJweFxcXXt3aWR0aDoycHh9LnctXFxbMzBweFxcXXt3aWR0aDozMHB4fS53LVxcWzM2cHhcXF17d2lkdGg6MzZweH0udy1cXFs0MDBweFxcXXt3aWR0aDo0MDBweH0udy1cXFtjYWxjXFwoNDAwcHgtMTIwcHhcXClcXF17d2lkdGg6MjgwcHh9LnctZnVsbHt3aWR0aDoxMDAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF17LS10dy10cmFuc2xhdGUteDotNTAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF0sLi10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9Li10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXstLXR3LXRyYW5zbGF0ZS15Oi01MCV9QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19LmFuaW1hdGUtcHVsc2V7YW5pbWF0aW9uOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uc2VsZWN0LW5vbmV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZ2FwLTBcXC41e2dhcDouMTI1cmVtfS5nYXAtMXtnYXA6LjI1cmVtfS5nYXAtMntnYXA6LjVyZW19LmdhcC00e2dhcDoxcmVtfS5nYXAtNXtnYXA6MS4yNXJlbX0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6LjM3NXJlbX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOi43NXJlbX0ucm91bmRlZC1ibC1mdWxse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLWJyLWZ1bGx7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLXRsLWZ1bGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo5OTk5cHh9LnJvdW5kZWQtdHItZnVsbHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo5OTk5cHh9LmJvcmRlciwuYm9yZGVyLVxcWzFweFxcXXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItXFxbXFwjMDA4RDAxN0ZcXF17Ym9yZGVyLWNvbG9yOiMwMDhkMDE3Zn0uYm9yZGVyLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItXFxbXFwjNjM2MzYzXFxdey0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LmJnLVxcW1xcIzJEMkQyRFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig0NSA0NSA0NS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzM4MzgzOFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NiA1NiA1Ni92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ3NDc0N1xcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MSA3MSA3MS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcI0ZGQTcyNlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMTY3IDM4L3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX0ucHgtXFxbMnB4XFxde3BhZGRpbmctbGVmdDoycHg7cGFkZGluZy1yaWdodDoycHh9LnB4LVxcWzRweFxcXXtwYWRkaW5nLWxlZnQ6NHB4O3BhZGRpbmctcmlnaHQ6NHB4fS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5wdC0xMHtwYWRkaW5nLXRvcDoyLjVyZW19LnRleHQtYmFzZXtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0uY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS50ZXh0LVxcW1xcI2ZjZmNmY1xcXXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTIgMjUyIDI1Mi92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC13aGl0ZXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0uYmx1cnstLXR3LWJsdXI6Ymx1cig4cHgpfS5ibHVyLC5ncmF5c2NhbGV7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmdyYXlzY2FsZXstLXR3LWdyYXlzY2FsZTpncmF5c2NhbGUoMTAwJSl9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmFja2Ryb3AtZmlsdGVyey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLGJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmR1cmF0aW9uLTEwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMzAwe3RyYW5zaXRpb24tZHVyYXRpb246LjNzfS5kdXJhdGlvbi1cXFsyNTBtc1xcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yNXN9LmFmdGVyXFw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcXDpzdGFydC1cXFsycHhcXF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmUtc3RhcnQ6MnB4fS5hZnRlclxcOnRvcC0wXFwuNTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDouMTI1cmVtfS5hZnRlclxcOmgtNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxcmVtfS5hZnRlclxcOnctNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjFyZW19LmFmdGVyXFw6cm91bmRlZC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LmFmdGVyXFw6Ym9yZGVyOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXdpZHRoOjFweH0uYWZ0ZXJcXDpib3JkZXItZ3JheS0zMDA6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5hZnRlclxcOmJnLXdoaXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdHctYmctb3BhY2l0eSkpfS5hZnRlclxcOnRyYW5zaXRpb24tYWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dHJhbnNpdGlvbi1wcm9wZXJ0eTphbGw7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5hZnRlclxcOmNvbnRlbnQtXFxbXFwnXFwnXFxdOmFmdGVyey0tdHctY29udGVudDpcIlwiO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmhvdmVyXFw6Ym9yZGVyLVxcWzFcXC44cHhcXF06aG92ZXJ7Ym9yZGVyLXdpZHRoOjEuOHB4fS5ob3ZlclxcOmJvcmRlci1cXFtcXCMwMDhEMDFcXF06aG92ZXJ7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMCAxNDEgMS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ob3ZlclxcOmJnLVxcW1xcIzM5MzkzOVxcXTpob3ZlcnstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NyA1NyA1Ny92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmhvdmVyXFw6YmctXFxbXFwjNDc0NzQ3XFxdOmhvdmVyey0tdHctYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDcxIDcxIDcxL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDpiZy1cXFtcXCNGRkE3MjZcXF17LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDE2NyAzOC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LnBlZXI6Y2hlY2tlZH4ucGVlci1jaGVja2VkXFw6YWZ0ZXJcXDp0cmFuc2xhdGUteC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy10cmFuc2xhdGUteDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDphZnRlclxcOmJvcmRlci13aGl0ZTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LnBlZXI6Zm9jdXN+LnBlZXItZm9jdXNcXDpyaW5nLTF7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywwIDAgIzAwMDApfS5wZWVyOmZvY3Vzfi5wZWVyLWZvY3VzXFw6cmluZy1cXFtcXCM2MzYzNjNcXF17LS10dy1yaW5nLW9wYWNpdHk6MTstLXR3LXJpbmctY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LXJpbmctb3BhY2l0eSkpfS5wZWVyOmNoZWNrZWR+LnJ0bFxcOnBlZXItY2hlY2tlZFxcOmFmdGVyXFw6LXRyYW5zbGF0ZS14LWZ1bGw6d2hlcmUoW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctdHJhbnNsYXRlLXg6LTEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpib3JkZXItZ3JheS02MDB7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoNzUgODUgOTkvdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKX19Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4088.css b/react_frontend/static/react_frontend/css/4088.css new file mode 100644 index 000000000..e31f612f0 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4088.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQwODguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2FtYXpvbl93YXJlaG91c2UvcmVhY3QtY29tcG9uZW50cy9jc3MvQW1hem9uV2FyZWhvdXNlUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4104.css b/react_frontend/static/react_frontend/css/4104.css new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4104.css @@ -0,0 +1 @@ + diff --git a/react_frontend/static/react_frontend/css/4147.css b/react_frontend/static/react_frontend/css/4147.css new file mode 100644 index 000000000..51dd5f9d5 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4147.css @@ -0,0 +1,3 @@ +.image{position:absolute;width:50%;height:100%;border:4px #000 solid} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQxNDcuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0Usa0JBQ0EsVUFDQSxZQUNBLHNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvcmVzY3VlX3Blb3BsZV9jbGFzc2ljL3JlYWN0LWNvbXBvbmVudHMvY3NzL0dVSUNhbnZhcy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLmltYWdlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYm9yZGVyOiA0cHggYmxhY2sgc29saWQ7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4241.css b/react_frontend/static/react_frontend/css/4241.css new file mode 100644 index 000000000..bf726fd8d --- /dev/null +++ b/react_frontend/static/react_frontend/css/4241.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQyNDEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL2Nzcy9Nb250ZWNhcmxvVmlzdWFsTG9jLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4313.css b/react_frontend/static/react_frontend/css/4313.css new file mode 100644 index 000000000..fce2790c0 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4313.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%;background-color:#303030}.overlay{position:absolute;width:100%;height:100%;max-height:100%;margin:0 0 0 0;background:rgba(0,0,0,0) !important;z-index:1}#lap-time{padding-top:10px;padding-right:10px;text-align:end;color:red}#circuit-aerial{width:300px;height:150px;top:16px;left:16px}#circuit-img{width:100%;height:100%}#circuit-car-pos{position:absolute;width:5px;height:5px;border-radius:5px;background-color:red;transition:all .1s ease-out} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQzMTMuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FDQSxXQUNBLFlBQ0EsZ0JBQ0EseUJBR0YsU0FDRSxrQkFDQSxXQUNBLFlBQ0EsZ0JBQ0EsZUFDQSxvQ0FDQSxVQUdGLFVBQ0UsaUJBQ0EsbUJBQ0EsZUFDQSxVQUdGLGdCQUNFLFlBQ0EsYUFDQSxTQUNBLFVBR0YsYUFDRSxXQUNBLFlBR0YsaUJBQ0Usa0JBQ0EsVUFDQSxXQUNBLGtCQUNBLHFCQUNBLDRCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvZm9sbG93X2xpbmUvcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuZXhlcmNpc2UtY2FudmFzIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzMwMzAzMDtcclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIG1hcmdpbjogMCAwIDAgMDtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIHotaW5kZXg6IDE7XHJcbn1cclxuXHJcbiNsYXAtdGltZSB7XHJcbiAgcGFkZGluZy10b3A6IDEwcHg7XHJcbiAgcGFkZGluZy1yaWdodDogMTBweDtcclxuICB0ZXh0LWFsaWduOiBlbmQ7XHJcbiAgY29sb3I6IHJlZDtcclxufVxyXG5cclxuI2NpcmN1aXQtYWVyaWFsIHtcclxuICB3aWR0aDogMzAwcHg7XHJcbiAgaGVpZ2h0OiAxNTBweDtcclxuICB0b3A6IDE2cHg7XHJcbiAgbGVmdDogMTZweDtcclxufVxyXG5cclxuI2NpcmN1aXQtaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNjaXJjdWl0LWNhci1wb3Mge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogNXB4O1xyXG4gIGhlaWdodDogNXB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMXMgZWFzZS1vdXRcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4399.css b/react_frontend/static/react_frontend/css/4399.css new file mode 100644 index 000000000..87a99b3ce --- /dev/null +++ b/react_frontend/static/react_frontend/css/4399.css @@ -0,0 +1,3 @@ +.ready{color:#000;background-color:#4caf50;box-shadow:0px 2px 3px -1px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 1px 8px 0px rgba(0,0,0,.12);padding:10px 30px;text-align:center;min-width:64px;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-radius:5px;letter-spacing:.02857em;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000}.waiting{color:#000;background-color:#f57f51;min-width:64px;padding:10px 30px;text-align:center;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000;border-radius:5px;letter-spacing:.02857em}.word{display:block;margin:0;padding:0;line-height:1;text-transform:uppercase}.title{position:relative;font-size:.8rem;text-align:start;top:-20px;height:0px;left:-15px;right:0;margin:0} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQzOTkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0UsV0FDQSx5QkFDQSwyR0FFQSxrQkFDQSxrQkFDQSxlQUNBLHlFQUNBLGlCQUNBLGdCQUNBLGtCQUNBLHdCQUNBLDZCQUNBLG1CQUNBLGtCQUdGLFNBQ0UsV0FDQSx5QkFFQSxlQUNBLGtCQUNBLGtCQUNBLHlFQUNBLGlCQUNBLGdCQUNBLDZCQUNBLG1CQUNBLGtCQUNBLGtCQUNBLHdCQUdGLE1BQ0UsY0FDQSxTQUNBLFVBQ0EsY0FDQSx5QkFHRixPQUNFLGtCQUNBLGdCQUNBLGlCQUNBLFVBQ0EsV0FDQSxXQUNBLFFBQ0EsUyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9JbmRpY2F0b3IuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5yZWFkeSB7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTA7XHJcbiAgYm94LXNoYWRvdzogMHB4IDJweCAzcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksXHJcbiAgICAwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XHJcbiAgcGFkZGluZzogMTBweCAzMHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtaW4td2lkdGg6IDY0cHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlLCBib3JkZXIgMC4zcyBlYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XHJcbiAgYm9yZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItY29sb3I6ICMwMDAwMDA7XHJcbn1cclxuXHJcbi53YWl0aW5nIHtcclxuICBjb2xvcjogYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2Y1MTtcclxuXHJcbiAgbWluLXdpZHRoOiA2NHB4O1xyXG4gIHBhZGRpbmc6IDEwcHggMzBweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlLCBib3JkZXIgMC4zcyBlYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItY29sb3I6ICMwMDAwMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XHJcbn1cclxuXHJcbi53b3JkIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG4udGl0bGUge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmb250LXNpemU6IDAuOHJlbTtcclxuICB0ZXh0LWFsaWduOiBzdGFydDtcclxuICB0b3A6IC0yMHB4O1xyXG4gIGhlaWdodDogMHB4O1xyXG4gIGxlZnQ6IC0xNXB4O1xyXG4gIHJpZ2h0OiAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4411.css b/react_frontend/static/react_frontend/css/4411.css new file mode 100644 index 000000000..35dc42c90 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4411.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQ0MTEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Jlc2N1ZV9wZW9wbGVfY2xhc3NpYy9yZWFjdC1jb21wb25lbnRzL2Nzcy9yZXNjdWVQZW9wbGVSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4566.css b/react_frontend/static/react_frontend/css/4566.css new file mode 100644 index 000000000..832505440 --- /dev/null +++ b/react_frontend/static/react_frontend/css/4566.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;border:2px solid #d3d3d3;width:50%;height:100%;max-height:100%}.image{position:absolute;border:2px solid #d3d3d3;width:50%;height:100%}.overlay{position:absolute;width:100%;height:100%;max-height:100%;margin:0 0 0 0;background:rgba(0,0,0,0) !important;z-index:1}#vacuum-pos{position:absolute;width:30px;height:30px;border-radius:30px;background-color:#353535;transition:left .1s ease-out,top .1s ease-out;opacity:50%}.particle{position:absolute;width:10px;height:10px;border-radius:10px;background-color:blue;transition:left .1s ease-out,top .1s ease-out}.particle-arrow{position:relative;width:15px;height:10px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:2;margin-left:-8px}.particle-arrow:after{position:absolute;display:block;content:"";width:10px;height:6px;color:#7d7dff;top:0px;border-bottom:solid 2px;transform:translatex(4px)}.particle-arrow:before{position:absolute;display:block;content:"";width:8px;height:8px;color:#7d7dff;border-top:solid 2px;border-left:solid 2px;top:50%;left:2px;transform-origin:0% 0%;transform:rotatez(-45deg)}#user-pos{position:absolute;width:30px;height:30px;border-radius:30px;background-color:#353535;transition:left .1s ease-out,top .1s ease-out}#map-img{width:100%;height:100%}.arrow{position:relative;width:30px;height:30px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:2;margin-left:-15px}.arrow:after{position:absolute;display:block;content:"";width:30px;height:20px;top:-4px;border-bottom:solid 2px;transform:translatex(4px)}.arrow:before{position:absolute;display:block;content:"";width:8px;height:8px;border-top:solid 2px;border-left:solid 2px;top:50%;left:2px;transform-origin:0% 0%;transform:rotatez(-45deg)}.arrow-real:after{color:red;opacity:50%}.arrow-real:before{color:red;opacity:50%}.arrow-user:after{color:lime}.arrow-user:before{color:lime} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQ1NjYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FDQSx5QkFDQSxVQUNBLFlBQ0EsZ0JBR0YsT0FDRSxrQkFDQSx5QkFDQSxVQUNBLFlBR0YsU0FDRSxrQkFDQSxXQUNBLFlBQ0EsZ0JBQ0EsZUFDQSxvQ0FDQSxVQUdGLFlBQ0Usa0JBQ0EsV0FDQSxZQUNBLG1CQUNBLHlCQUNBLDhDQUNBLFlBR0YsVUFDRSxrQkFDQSxXQUNBLFlBQ0EsbUJBQ0Esc0JBQ0EsOENBR0YsZ0JBQ0Usa0JBQ0EsV0FDQSxZQUNBLGVBQ0EsOENBQ0EsZ0JBQ0EsVUFDQSxpQkFHRixzQkFDRSxrQkFDQSxjQUNBLFdBQ0EsV0FDQSxXQUNBLGNBRUEsUUFDQSx3QkFDQSwwQkFHRix1QkFDRSxrQkFDQSxjQUNBLFdBQ0EsVUFDQSxXQUNBLGNBRUEscUJBQ0Esc0JBQ0EsUUFDQSxTQUNBLHVCQUNBLDBCQUdGLFVBQ0Usa0JBQ0EsV0FDQSxZQUNBLG1CQUNBLHlCQUNBLDhDQUdGLFNBQ0UsV0FDQSxZQUdGLE9BQ0Usa0JBQ0EsV0FDQSxZQUNBLGVBRUEsOENBQ0EsZ0JBQ0EsVUFDQSxrQkFHRixhQUNFLGtCQUNBLGNBQ0EsV0FDQSxXQUNBLFlBRUEsU0FDQSx3QkFDQSwwQkFHRixjQUNFLGtCQUNBLGNBQ0EsV0FDQSxVQUNBLFdBRUEscUJBQ0Esc0JBQ0EsUUFDQSxTQUNBLHVCQUNBLDBCQUdGLGtCQUNFLFVBQ0EsWUFHRixtQkFDRSxVQUNBLFlBR0Ysa0JBQ0UsV0FHRixtQkFDRSxXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvbW9udGVjYXJsb192aXN1YWxfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL0dVSUNhbnZhcy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLmV4ZXJjaXNlLWNhbnZhcyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIGJvcmRlcjogMnB4IHNvbGlkICNkM2QzZDM7XHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLmltYWdlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2QzZDNkMztcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIG1hcmdpbjogMCAwIDAgMDtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIHotaW5kZXg6IDE7XHJcbn1cclxuXHJcbiN2YWN1dW0tcG9zIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDMwcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDUzLCA1MywgNTMpO1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXQ7XHJcbiAgb3BhY2l0eTogNTAlO1xyXG59XHJcblxyXG4ucGFydGljbGUge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTBweDtcclxuICBoZWlnaHQ6IDEwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMCwgMCwgMjU1KTtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbi5wYXJ0aWNsZS1hcnJvdyB7XHJcbiAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgd2lkdGg6ICAxNXB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dDtcclxuICBvdmVyZmxvdzpoaWRkZW47XHJcbiAgei1pbmRleDogMjtcclxuICBtYXJnaW4tbGVmdDogLThweDtcclxufVxyXG5cclxuLnBhcnRpY2xlLWFycm93OmFmdGVye1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogNnB4O1xyXG4gIGNvbG9yOiByZ2IoMTI1LCAxMjUsIDI1NSk7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweDsgICovXHJcbiAgdG9wOjBweDtcclxuICBib3JkZXItYm90dG9tOnNvbGlkIDJweDtcclxuICB0cmFuc2Zvcm06dHJhbnNsYXRleCg0cHgpO1xyXG59XHJcblxyXG4ucGFydGljbGUtYXJyb3c6YmVmb3Jle1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIHdpZHRoOiA4cHg7XHJcbiAgaGVpZ2h0OiA4cHg7XHJcbiAgY29sb3I6IHJnYigxMjUsIDEyNSwgMjU1KTtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICBib3JkZXItdG9wOnNvbGlkIDJweDtcclxuICBib3JkZXItbGVmdDpzb2xpZCAycHg7XHJcbiAgdG9wOjUwJTtcclxuICBsZWZ0OjJweDtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOjAlIDAlO1xyXG4gIHRyYW5zZm9ybTpyb3RhdGV6KC00NWRlZyk7XHJcbn1cclxuXHJcbiN1c2VyLXBvcyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBib3JkZXItcmFkaXVzOiAzMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1MywgNTMsIDUzKTtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbiNtYXAtaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5hcnJvd3tcclxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICB3aWR0aDozMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBjdXJzb3I6cG9pbnRlcjtcclxuLyogICBib3JkZXI6c29saWQgMXB4IHdoaXRlOyAqL1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXQ7XHJcbiAgb3ZlcmZsb3c6aGlkZGVuO1xyXG4gIHotaW5kZXg6IDI7XHJcbiAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xyXG59XHJcblxyXG4uYXJyb3c6YWZ0ZXJ7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4vKiAgIGJvcmRlcjpzb2xpZCAxcHg7ICAqL1xyXG4gIHRvcDotNHB4O1xyXG4gIGJvcmRlci1ib3R0b206c29saWQgMnB4O1xyXG4gIHRyYW5zZm9ybTp0cmFuc2xhdGV4KDRweCk7XHJcbn1cclxuXHJcbi5hcnJvdzpiZWZvcmV7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgd2lkdGg6IDhweDtcclxuICBoZWlnaHQ6IDhweDtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICBib3JkZXItdG9wOnNvbGlkIDJweDtcclxuICBib3JkZXItbGVmdDpzb2xpZCAycHg7XHJcbiAgdG9wOjUwJTtcclxuICBsZWZ0OjJweDtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOjAlIDAlO1xyXG4gIHRyYW5zZm9ybTpyb3RhdGV6KC00NWRlZyk7XHJcbn1cclxuXHJcbi5hcnJvdy1yZWFsOmFmdGVyIHtcclxuICBjb2xvcjpyZ2IoMjU1LCAwLCAwKTtcclxuICBvcGFjaXR5OiA1MCU7XHJcbn1cclxuXHJcbi5hcnJvdy1yZWFsOmJlZm9yZSB7XHJcbiAgY29sb3I6cmdiKDI1NSwgMCwgMCk7XHJcbiAgb3BhY2l0eTogNTAlO1xyXG59XHJcblxyXG4uYXJyb3ctdXNlcjphZnRlciB7XHJcbiAgY29sb3I6cmdiKDAsIDI1NSwgMCk7XHJcbn1cclxuXHJcbi5hcnJvdy11c2VyOmJlZm9yZSB7XHJcbiAgY29sb3I6cmdiKDAsIDI1NSwgMCk7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4582.css b/react_frontend/static/react_frontend/css/4582.css new file mode 100644 index 000000000..12ad11f3a --- /dev/null +++ b/react_frontend/static/react_frontend/css/4582.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%}.overlay{position:absolute;width:100%;height:100%;max-height:100%;margin:0 0 0 0;background:rgba(0,0,0,0) !important;z-index:1}#vacuum-pos{position:absolute;z-index:3;width:30px;height:30px;border-radius:30px;background-color:#353535;transition:left .1s ease-out,top .1s ease-out}#map-img{width:100%;height:100%}.arrow{position:relative;width:30px;height:30px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:4;margin-left:-15px}.arrow:after{position:absolute;display:block;content:"";color:red;width:30px;height:20px;top:-4px;border-bottom:solid 2px;transform:translatex(4px)}.arrow:before{position:absolute;display:block;content:"";color:red;width:8px;height:8px;border-top:solid 2px;border-left:solid 2px;top:50%;left:2px;transform-origin:0% 0%;transform:rotatez(-45deg)} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQ1ODIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FFQSxXQUNBLFlBQ0EsZ0JBR0YsU0FDRSxrQkFDQSxXQUNBLFlBQ0EsZ0JBQ0EsZUFDQSxvQ0FDQSxVQUdGLFlBQ0Usa0JBQ0EsVUFDQSxXQUNBLFlBQ0EsbUJBQ0EseUJBQ0EsOENBR0YsU0FDRSxXQUNBLFlBR0YsT0FDRSxrQkFDQSxXQUNBLFlBQ0EsZUFFQSw4Q0FDQSxnQkFDQSxVQUNBLGtCQUdGLGFBQ0Usa0JBQ0EsY0FDQSxXQUNBLFVBQ0EsV0FDQSxZQUVBLFNBQ0Esd0JBQ0EsMEJBR0YsY0FDRSxrQkFDQSxjQUNBLFdBQ0EsVUFDQSxVQUNBLFdBRUEscUJBQ0Esc0JBQ0EsUUFDQSxTQUNBLHVCQUNBLDBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmFjdXVtX2NsZWFuZXIvcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuZXhlcmNpc2UtY2FudmFzIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgLyogYm9yZGVyOiAycHggc29saWQgI2QzZDNkMzsgKi9cclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG4gIG1hcmdpbjogMCAwIDAgMDtcclxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG4gIHotaW5kZXg6IDE7XHJcbn1cclxuXHJcbiN2YWN1dW0tcG9zIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMztcclxuICB3aWR0aDogMzBweDtcclxuICBoZWlnaHQ6IDMwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMzBweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNTMsIDUzLCA1Myk7XHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dFxyXG59XHJcblxyXG4jbWFwLWltZyB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uYXJyb3d7XHJcbiAgcG9zaXRpb246cmVsYXRpdmU7XHJcbiAgd2lkdGg6MzBweDtcclxuICBoZWlnaHQ6IDMwcHg7XHJcbiAgY3Vyc29yOnBvaW50ZXI7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweCB3aGl0ZTsgKi9cclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0O1xyXG4gIG92ZXJmbG93OmhpZGRlbjtcclxuICB6LWluZGV4OiA0O1xyXG4gIG1hcmdpbi1sZWZ0OiAtMTVweDtcclxufVxyXG5cclxuLmFycm93OmFmdGVye1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIGNvbG9yOnJnYigyNTUsIDAsIDApO1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICB0b3A6LTRweDtcclxuICBib3JkZXItYm90dG9tOnNvbGlkIDJweDtcclxuICB0cmFuc2Zvcm06dHJhbnNsYXRleCg0cHgpO1xyXG59XHJcblxyXG4uYXJyb3c6YmVmb3Jle1xyXG4gIHBvc2l0aW9uOmFic29sdXRlO1xyXG4gIGRpc3BsYXk6YmxvY2s7XHJcbiAgY29udGVudDpcIlwiO1xyXG4gIGNvbG9yOnJnYigyNTUsIDAsIDApO1xyXG4gIHdpZHRoOiA4cHg7XHJcbiAgaGVpZ2h0OiA4cHg7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweDsgICovXHJcbiAgYm9yZGVyLXRvcDpzb2xpZCAycHg7XHJcbiAgYm9yZGVyLWxlZnQ6c29saWQgMnB4O1xyXG4gIHRvcDo1MCU7XHJcbiAgbGVmdDoycHg7XHJcbiAgdHJhbnNmb3JtLW9yaWdpbjowJSAwJTtcclxuICB0cmFuc2Zvcm06cm90YXRleigtNDVkZWcpO1xyXG5cclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4707.css b/react_frontend/static/react_frontend/css/4707.css new file mode 100644 index 000000000..d1a53d37e --- /dev/null +++ b/react_frontend/static/react_frontend/css/4707.css @@ -0,0 +1,6 @@ +.hidden,.visible{transition:opacity .3s ease;display:flex;gap:5px;padding-left:25px;padding-right:5px;color:blue}.hidden{opacity:0;pointer-events:none}.visible{opacity:1} +.MuiToolbar-root.exercise-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;margin:8px;border:2px solid #d3d3d3;padding:0}#editor-control{display:flex}.monitor{height:25px}.button{background:none;border:1px solid #000;border-radius:4px;padding:5px;margin:0;outline:none;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.toggledColor{background-color:#4caf50}.button .monitor{transition:box-shadow .3s ease;box-shadow:none}.button:hover .monitor{box-shadow:0px 0px 10px rgba(0,0,0,.3)}.visible{display:flex}.hidden{display:none} +.tooltip-container{position:relative;display:inline-block;cursor:pointer}.tooltip-details{visibility:hidden;width:200px;background-color:#333;color:#fff;text-align:center;border-radius:6px;padding:10px;position:absolute;z-index:1;top:100%;left:50%;transform:translateX(-50%);margin-top:10px;opacity:0;transition:opacity .3s,transform .3s}.tooltip-details::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #333 rgba(0,0,0,0)}.tooltip-container:hover .tooltip-details{visibility:visible;opacity:1;transform:translateX(-50%) translateY(0)} +*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.container{width:100%}@media(min-width: 640px){.container{max-width:640px}}@media(min-width: 768px){.container{max-width:768px}}@media(min-width: 1024px){.container{max-width:1024px}}@media(min-width: 1280px){.container{max-width:1280px}}@media(min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-3{bottom:.75rem}.left-0{left:0}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.top-1{top:.25rem}.top-\[50\%\]{top:50%}.z-\[100\]{z-index:100}.z-\[99\]{z-index:99}.m-1{margin:.25rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[20px\]{height:20px}.h-\[250px\]{height:250px}.h-full{height:100%}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[2px\]{width:2px}.w-\[30px\]{width:30px}.w-\[36px\]{width:36px}.w-\[400px\]{width:400px}.w-\[calc\(400px-120px\)\]{width:280px}.w-full{width:100%}.-translate-x-\[50\%\]{--tw-translate-x:-50%}.-translate-x-\[50\%\],.-translate-y-\[50\%\]{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[50\%\]{--tw-translate-y:-50%}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-bl-full{border-bottom-left-radius:9999px}.rounded-br-full{border-bottom-right-radius:9999px}.rounded-tl-full{border-top-left-radius:9999px}.rounded-tr-full{border-top-right-radius:9999px}.border,.border-\[1px\]{border-width:1px}.border-\[\#008D017F\]{border-color:rgba(0,141,1,.4980392157)}.border-\[\#464646\]{--tw-border-opacity:1;border-color:rgb(70 70 70/var(--tw-border-opacity))}.border-\[\#636363\]{--tw-border-opacity:1;border-color:rgb(99 99 99/var(--tw-border-opacity))}.bg-\[\#2D2D2D\]{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-\[\#383838\]{--tw-bg-opacity:1;background-color:rgb(56 56 56/var(--tw-bg-opacity))}.bg-\[\#464646\]{--tw-bg-opacity:1;background-color:rgb(70 70 70/var(--tw-bg-opacity))}.bg-\[\#474747\]{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[2px\]{padding-left:2px;padding-right:2px}.px-\[4px\]{padding-left:4px;padding-right:4px}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-10{padding-top:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.capitalize{text-transform:capitalize}.text-\[\#fcfcfc\]{--tw-text-opacity:1;color:rgb(252 252 252/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.blur{--tw-blur:blur(8px)}.blur,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-\[250ms\]{transition-duration:.25s}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:start-\[2px\]:after{content:var(--tw-content);inset-inline-start:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.hover\:border-\[1\.8px\]:hover{border-width:1.8px}.hover\:border-\[\#008D01\]:hover{--tw-border-opacity:1;border-color:rgb(0 141 1/var(--tw-border-opacity))}.hover\:bg-\[\#393939\]:hover{--tw-bg-opacity:1;background-color:rgb(57 57 57/var(--tw-bg-opacity))}.hover\:bg-\[\#474747\]:hover{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x:100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.peer:focus~.peer-focus\:ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}.peer:focus~.peer-focus\:ring-\[\#636363\]{--tw-ring-opacity:1;--tw-ring-color:rgb(99 99 99/var(--tw-ring-opacity))}.peer:checked~.rtl\:peer-checked\:after\:-translate-x-full:where([dir=rtl],[dir=rtl] *):after{content:var(--tw-content);--tw-translate-x:-100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media(prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQ3MDcuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUVFLDRCQUNBLGFBQ0EsUUFDQSxrQkFDQSxrQkFDQSxXQUdGLFFBQ0UsVUFDQSxvQkFHRixTQUNFLFU7QUNoQkYsa0NBQ0UsYUFDQSxlQUNBLDhCQUNBLG1CQUNBLFdBQ0EseUJBQ0EsVUFHRixnQkFDRSxhQUdGLFNBQ0UsWUFHRixRQUNFLGdCQUNBLHNCQUNBLGtCQUNBLFlBQ0EsU0FDQSxhQUNBLGVBQ0EsZ0JBQ0Esd0JBQ0EscUJBR0YsY0FDRSx5QkFFRixpQkFDRSwrQkFDQSxnQkFHRix1QkFDRSx1Q0FHRixTQUNFLGFBRUYsUUFDRSxhO0FDL0NGLG1CQUNFLGtCQUNBLHFCQUNBLGVBR0YsaUJBQ0Usa0JBQ0EsWUFDQSxzQkFDQSxXQUNBLGtCQUNBLGtCQUNBLGFBQ0Esa0JBQ0EsVUFDQSxTQUNBLFNBQ0EsMkJBQ0EsZ0JBQ0EsVUFDQSxxQ0FJRix3QkFDRSxXQUNBLGtCQUNBLFlBQ0EsU0FDQSxpQkFDQSxpQkFDQSxtQkFDQSw0REFJRiwwQ0FDRSxtQkFDQSxVQUNBLHlDO0FDeENGLGd6WCIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy92aXN1YWxpemVycy9GcmVxdWVuY2llcy5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL2xheW91dF9jb21wb25lbnRzL0V4ZXJjaXNlQ29udHJvbC5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL2J1dHRvbnMvRExNb2RlbFVwbG9hZEJ1dHRvbi5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL3RhaWx3aW5kLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuaGlkZGVuLFxyXG4udmlzaWJsZSB7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDVweDtcclxuICBwYWRkaW5nLWxlZnQ6IDI1cHg7XHJcbiAgcGFkZGluZy1yaWdodDogNXB4O1xyXG4gIGNvbG9yOiBibHVlO1xyXG59XHJcblxyXG4uaGlkZGVuIHtcclxuICBvcGFjaXR5OiAwO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG59XHJcblxyXG4udmlzaWJsZSB7XHJcbiAgb3BhY2l0eTogMTtcclxuICBcclxufSIsIi5NdWlUb29sYmFyLXJvb3QuZXhlcmNpc2UtdG9vbGJhciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2QzZDNkMztcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4jZWRpdG9yLWNvbnRyb2wge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbn1cclxuXHJcbi5tb25pdG9yIHtcclxuICBoZWlnaHQ6IDI1cHg7XHJcbn1cclxuXHJcbi5idXR0b24ge1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIHBhZGRpbmc6IDVweDtcclxuICBtYXJnaW46IDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xyXG59XHJcblxyXG4udG9nZ2xlZENvbG9yIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGNhZjUwO1xyXG59XHJcbi5idXR0b24gLm1vbml0b3Ige1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcyBlYXNlO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5idXR0b246aG92ZXIgLm1vbml0b3Ige1xyXG4gIGJveC1zaGFkb3c6IDBweCAwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMyk7XHJcbn1cclxuXHJcbi52aXNpYmxlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG59XHJcbi5oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuIiwiLnRvb2x0aXAtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnRvb2x0aXAtZGV0YWlscyB7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIHdpZHRoOiAyMDBweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzLCB0cmFuc2Zvcm0gMC4zcztcclxufVxyXG5cclxuLyogVG9vbHRpcCBhcnJvdyAqL1xyXG4udG9vbHRpcC1kZXRhaWxzOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAxMDAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICBtYXJnaW4tbGVmdDogLTVweDtcclxuICBib3JkZXItd2lkdGg6IDVweDtcclxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzMzMyB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuLyogU2hvdyB0b29sdGlwIG9uIGhvdmVyICovXHJcbi50b29sdGlwLWNvbnRhaW5lcjpob3ZlciAudG9vbHRpcC1kZXRhaWxzIHtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XHJcbn1cclxuIiwiKiw6OmJhY2tkcm9wLDphZnRlciw6YmVmb3Jley0tdHctYm9yZGVyLXNwYWNpbmcteDowOy0tdHctYm9yZGVyLXNwYWNpbmcteTowOy0tdHctdHJhbnNsYXRlLXg6MDstLXR3LXRyYW5zbGF0ZS15OjA7LS10dy1yb3RhdGU6MDstLXR3LXNrZXcteDowOy0tdHctc2tldy15OjA7LS10dy1zY2FsZS14OjE7LS10dy1zY2FsZS15OjE7LS10dy1wYW4teDogOy0tdHctcGFuLXk6IDstLXR3LXBpbmNoLXpvb206IDstLXR3LXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1jb2xvcjojM2I4MmY2ODA7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcmVkOjAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0vKiEgdGFpbHdpbmRjc3MgdjMuNC4xMyB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20qLyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkICNlNWU3ZWJ9OmFmdGVyLDpiZWZvcmV7LS10dy1jb250ZW50OlwiXCJ9Omhvc3QsaHRtbHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1vei10YWItc2l6ZTo0Oy1vLXRhYi1zaXplOjQ7dGFiLXNpemU6NDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e21hcmdpbjowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246aW5pdGlhbH1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b306LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjppbml0aWFsfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiw6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRkLGRsLGZpZ3VyZSxoMSxoMixoMyxoNCxoNSxoNixocixwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MH1maWVsZHNldCxsZWdlbmR7cGFkZGluZzowfW1lbnUsb2wsdWx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfVtyb2xlPWJ1dHRvbl0sYnV0dG9ue2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXXtkaXNwbGF5Om5vbmV9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsuY29udGFpbmVye21heC13aWR0aDo2NDBweH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjc2OHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEwMjRweH19QG1lZGlhIChtaW4td2lkdGg6MTI4MHB4KXsuY29udGFpbmVye21heC13aWR0aDoxMjgwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE1MzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTUzNnB4fX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjB9LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5ib3R0b20tM3tib3R0b206Ljc1cmVtfS5sZWZ0LTB7bGVmdDowfS5sZWZ0LVxcWzUwXFwlXFxde2xlZnQ6NTAlfS5yaWdodC0we3JpZ2h0OjB9LnJpZ2h0LTF7cmlnaHQ6LjI1cmVtfS5yaWdodC0ze3JpZ2h0Oi43NXJlbX0udG9wLTF7dG9wOi4yNXJlbX0udG9wLVxcWzUwXFwlXFxde3RvcDo1MCV9LnotXFxbMTAwXFxde3otaW5kZXg6MTAwfS56LVxcWzk5XFxde3otaW5kZXg6OTl9Lm0tMXttYXJnaW46LjI1cmVtfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtM3toZWlnaHQ6Ljc1cmVtfS5oLTV7aGVpZ2h0OjEuMjVyZW19LmgtNntoZWlnaHQ6MS41cmVtfS5oLTd7aGVpZ2h0OjEuNzVyZW19LmgtOXtoZWlnaHQ6Mi4yNXJlbX0uaC1cXFsyMHB4XFxde2hlaWdodDoyMHB4fS5oLVxcWzI1MHB4XFxde2hlaWdodDoyNTBweH0uaC1mdWxse2hlaWdodDoxMDAlfS53LTE2e3dpZHRoOjRyZW19LnctMlxcLzN7d2lkdGg6NjYuNjY2NjY3JX0udy03e3dpZHRoOjEuNzVyZW19LnctOXt3aWR0aDoyLjI1cmVtfS53LVxcWzEwMHB4XFxde3dpZHRoOjEwMHB4fS53LVxcWzEyMHB4XFxde3dpZHRoOjEyMHB4fS53LVxcWzJweFxcXXt3aWR0aDoycHh9LnctXFxbMzBweFxcXXt3aWR0aDozMHB4fS53LVxcWzM2cHhcXF17d2lkdGg6MzZweH0udy1cXFs0MDBweFxcXXt3aWR0aDo0MDBweH0udy1cXFtjYWxjXFwoNDAwcHgtMTIwcHhcXClcXF17d2lkdGg6MjgwcHh9LnctZnVsbHt3aWR0aDoxMDAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF17LS10dy10cmFuc2xhdGUteDotNTAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF0sLi10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9Li10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXstLXR3LXRyYW5zbGF0ZS15Oi01MCV9QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19LmFuaW1hdGUtcHVsc2V7YW5pbWF0aW9uOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uc2VsZWN0LW5vbmV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZ2FwLTBcXC41e2dhcDouMTI1cmVtfS5nYXAtMXtnYXA6LjI1cmVtfS5nYXAtMntnYXA6LjVyZW19LmdhcC00e2dhcDoxcmVtfS5nYXAtNXtnYXA6MS4yNXJlbX0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6LjM3NXJlbX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOi43NXJlbX0ucm91bmRlZC1ibC1mdWxse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLWJyLWZ1bGx7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLXRsLWZ1bGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo5OTk5cHh9LnJvdW5kZWQtdHItZnVsbHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo5OTk5cHh9LmJvcmRlciwuYm9yZGVyLVxcWzFweFxcXXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItXFxbXFwjMDA4RDAxN0ZcXF17Ym9yZGVyLWNvbG9yOiMwMDhkMDE3Zn0uYm9yZGVyLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItXFxbXFwjNjM2MzYzXFxdey0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LmJnLVxcW1xcIzJEMkQyRFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig0NSA0NSA0NS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzM4MzgzOFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NiA1NiA1Ni92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ3NDc0N1xcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MSA3MSA3MS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcI0ZGQTcyNlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMTY3IDM4L3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX0ucHgtXFxbMnB4XFxde3BhZGRpbmctbGVmdDoycHg7cGFkZGluZy1yaWdodDoycHh9LnB4LVxcWzRweFxcXXtwYWRkaW5nLWxlZnQ6NHB4O3BhZGRpbmctcmlnaHQ6NHB4fS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5wdC0xMHtwYWRkaW5nLXRvcDoyLjVyZW19LnRleHQtYmFzZXtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0uY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS50ZXh0LVxcW1xcI2ZjZmNmY1xcXXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTIgMjUyIDI1Mi92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC13aGl0ZXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0uYmx1cnstLXR3LWJsdXI6Ymx1cig4cHgpfS5ibHVyLC5ncmF5c2NhbGV7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmdyYXlzY2FsZXstLXR3LWdyYXlzY2FsZTpncmF5c2NhbGUoMTAwJSl9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmFja2Ryb3AtZmlsdGVyey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLGJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmR1cmF0aW9uLTEwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMzAwe3RyYW5zaXRpb24tZHVyYXRpb246LjNzfS5kdXJhdGlvbi1cXFsyNTBtc1xcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yNXN9LmFmdGVyXFw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcXDpzdGFydC1cXFsycHhcXF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmUtc3RhcnQ6MnB4fS5hZnRlclxcOnRvcC0wXFwuNTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDouMTI1cmVtfS5hZnRlclxcOmgtNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxcmVtfS5hZnRlclxcOnctNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjFyZW19LmFmdGVyXFw6cm91bmRlZC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LmFmdGVyXFw6Ym9yZGVyOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXdpZHRoOjFweH0uYWZ0ZXJcXDpib3JkZXItZ3JheS0zMDA6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5hZnRlclxcOmJnLXdoaXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdHctYmctb3BhY2l0eSkpfS5hZnRlclxcOnRyYW5zaXRpb24tYWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dHJhbnNpdGlvbi1wcm9wZXJ0eTphbGw7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5hZnRlclxcOmNvbnRlbnQtXFxbXFwnXFwnXFxdOmFmdGVyey0tdHctY29udGVudDpcIlwiO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmhvdmVyXFw6Ym9yZGVyLVxcWzFcXC44cHhcXF06aG92ZXJ7Ym9yZGVyLXdpZHRoOjEuOHB4fS5ob3ZlclxcOmJvcmRlci1cXFtcXCMwMDhEMDFcXF06aG92ZXJ7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMCAxNDEgMS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ob3ZlclxcOmJnLVxcW1xcIzM5MzkzOVxcXTpob3ZlcnstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NyA1NyA1Ny92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmhvdmVyXFw6YmctXFxbXFwjNDc0NzQ3XFxdOmhvdmVyey0tdHctYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDcxIDcxIDcxL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDpiZy1cXFtcXCNGRkE3MjZcXF17LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDE2NyAzOC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LnBlZXI6Y2hlY2tlZH4ucGVlci1jaGVja2VkXFw6YWZ0ZXJcXDp0cmFuc2xhdGUteC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy10cmFuc2xhdGUteDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDphZnRlclxcOmJvcmRlci13aGl0ZTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LnBlZXI6Zm9jdXN+LnBlZXItZm9jdXNcXDpyaW5nLTF7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywwIDAgIzAwMDApfS5wZWVyOmZvY3Vzfi5wZWVyLWZvY3VzXFw6cmluZy1cXFtcXCM2MzYzNjNcXF17LS10dy1yaW5nLW9wYWNpdHk6MTstLXR3LXJpbmctY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LXJpbmctb3BhY2l0eSkpfS5wZWVyOmNoZWNrZWR+LnJ0bFxcOnBlZXItY2hlY2tlZFxcOmFmdGVyXFw6LXRyYW5zbGF0ZS14LWZ1bGw6d2hlcmUoW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctdHJhbnNsYXRlLXg6LTEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpib3JkZXItZ3JheS02MDB7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoNzUgODUgOTkvdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKX19Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/4800.css b/react_frontend/static/react_frontend/css/4800.css new file mode 100644 index 000000000..54004644c --- /dev/null +++ b/react_frontend/static/react_frontend/css/4800.css @@ -0,0 +1,3 @@ +.image{position:absolute;width:50%;height:100%;border:4px #000 solid} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzQ4MDAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0Usa0JBQ0EsVUFDQSxZQUNBLHNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvZm9sbG93X3JvYWQvcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuaW1hZ2Uge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBib3JkZXI6IDRweCBibGFjayBzb2xpZDtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5008.css b/react_frontend/static/react_frontend/css/5008.css new file mode 100644 index 000000000..de84e95aa --- /dev/null +++ b/react_frontend/static/react_frontend/css/5008.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:50%;height:100%;max-height:100%}.image{position:absolute;width:50%;height:100%}#real-pos{position:absolute;z-index:3;width:20px;height:20px;border-radius:10px;transition:left .1s ease-out,top .1s ease-out}#noisy-pos{position:absolute;z-index:3;width:20px;height:20px;border-radius:10px;transition:left .1s ease-out,top .1s ease-out} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzUwMDguY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FDQSxVQUNBLFlBQ0EsZ0JBR0YsT0FDRSxrQkFDQSxVQUNBLFlBR0YsVUFDRSxrQkFDQSxVQUNBLFdBQ0EsWUFDQSxtQkFDQSw4Q0FHRixXQUNFLGtCQUNBLFVBQ0EsV0FDQSxZQUNBLG1CQUNBLDhDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvbGFzZXJfbWFwcGluZy9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5leGVyY2lzZS1jYW52YXMge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uaW1hZ2Uge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI3JlYWwtcG9zIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMztcclxuICB3aWR0aDogMjBweDtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbiNub2lzeS1wb3Mge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB6LWluZGV4OiAzO1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXRcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5009.css b/react_frontend/static/react_frontend/css/5009.css new file mode 100644 index 000000000..44055a3b5 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5009.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzUwMDkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3ZhY3V1bV9jbGVhbmVyX2xvYy9yZWFjdC1jb21wb25lbnRzL2Nzcy9CYXNpY1ZhY3V1bUNsZWFuZXIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5451.css b/react_frontend/static/react_frontend/css/5451.css new file mode 100644 index 000000000..9e30165f0 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5451.css @@ -0,0 +1,5 @@ +#code-container{display:flex;flex-direction:column;padding:0 8px 8px;position:relative;width:100%;height:100%}#code-container .MuiButtonGroup-root{position:absolute;right:12px;bottom:12px} +*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.container{width:100%}@media(min-width: 640px){.container{max-width:640px}}@media(min-width: 768px){.container{max-width:768px}}@media(min-width: 1024px){.container{max-width:1024px}}@media(min-width: 1280px){.container{max-width:1280px}}@media(min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-3{bottom:.75rem}.left-0{left:0}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.top-1{top:.25rem}.top-\[50\%\]{top:50%}.z-\[100\]{z-index:100}.z-\[99\]{z-index:99}.m-1{margin:.25rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[20px\]{height:20px}.h-\[250px\]{height:250px}.h-full{height:100%}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[2px\]{width:2px}.w-\[30px\]{width:30px}.w-\[36px\]{width:36px}.w-\[400px\]{width:400px}.w-\[calc\(400px-120px\)\]{width:280px}.w-full{width:100%}.-translate-x-\[50\%\]{--tw-translate-x:-50%}.-translate-x-\[50\%\],.-translate-y-\[50\%\]{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[50\%\]{--tw-translate-y:-50%}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-bl-full{border-bottom-left-radius:9999px}.rounded-br-full{border-bottom-right-radius:9999px}.rounded-tl-full{border-top-left-radius:9999px}.rounded-tr-full{border-top-right-radius:9999px}.border,.border-\[1px\]{border-width:1px}.border-\[\#008D017F\]{border-color:rgba(0,141,1,.4980392157)}.border-\[\#464646\]{--tw-border-opacity:1;border-color:rgb(70 70 70/var(--tw-border-opacity))}.border-\[\#636363\]{--tw-border-opacity:1;border-color:rgb(99 99 99/var(--tw-border-opacity))}.bg-\[\#2D2D2D\]{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-\[\#383838\]{--tw-bg-opacity:1;background-color:rgb(56 56 56/var(--tw-bg-opacity))}.bg-\[\#464646\]{--tw-bg-opacity:1;background-color:rgb(70 70 70/var(--tw-bg-opacity))}.bg-\[\#474747\]{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[2px\]{padding-left:2px;padding-right:2px}.px-\[4px\]{padding-left:4px;padding-right:4px}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-10{padding-top:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.capitalize{text-transform:capitalize}.text-\[\#fcfcfc\]{--tw-text-opacity:1;color:rgb(252 252 252/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.blur{--tw-blur:blur(8px)}.blur,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-\[250ms\]{transition-duration:.25s}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:start-\[2px\]:after{content:var(--tw-content);inset-inline-start:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.hover\:border-\[1\.8px\]:hover{border-width:1.8px}.hover\:border-\[\#008D01\]:hover{--tw-border-opacity:1;border-color:rgb(0 141 1/var(--tw-border-opacity))}.hover\:bg-\[\#393939\]:hover{--tw-bg-opacity:1;background-color:rgb(57 57 57/var(--tw-bg-opacity))}.hover\:bg-\[\#474747\]:hover{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x:100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.peer:focus~.peer-focus\:ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}.peer:focus~.peer-focus\:ring-\[\#636363\]{--tw-ring-opacity:1;--tw-ring-color:rgb(99 99 99/var(--tw-ring-opacity))}.peer:checked~.rtl\:peer-checked\:after\:-translate-x-full:where([dir=rtl],[dir=rtl] *):after{content:var(--tw-content);--tw-translate-x:-100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media(prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}} +.monaco-editor .scrollbar{padding:0 !important}.glyph-indicator{background:red;width:8px !important;height:8px !important;border-radius:20px !important;padding-left:8px !important}.overlayWidgets .editor-widget{display:flex !important;flex-direction:column !important} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU0NTEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGdCQUNFLGFBQ0Esc0JBQ0Esa0JBQ0Esa0JBQ0EsV0FDQSxZQUdGLHFDQUNFLGtCQUNBLFdBQ0EsWTtBQ1pGLGd6WDtBQ0FBLDBCQUNFLHFCQUdGLGlCQUNFLGVBQ0EscUJBQ0Esc0JBQ0EsOEJBQ0EsNEJBR0YsK0JBQ0Usd0JBQ0EsaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvZWRpdG9ycy9FZGl0b3JSb2JvdC5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL3RhaWx3aW5kLmNzcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvZWRpdG9ycy9Nb25hY29FZGl0b3IuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIiNjb2RlLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIHBhZGRpbmc6IDAgOHB4IDhweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jY29kZS1jb250YWluZXIgLk11aUJ1dHRvbkdyb3VwLXJvb3Qge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICByaWdodDogMTJweDtcclxuICBib3R0b206IDEycHg7XHJcbn1cclxuIiwiKiw6OmJhY2tkcm9wLDphZnRlciw6YmVmb3Jley0tdHctYm9yZGVyLXNwYWNpbmcteDowOy0tdHctYm9yZGVyLXNwYWNpbmcteTowOy0tdHctdHJhbnNsYXRlLXg6MDstLXR3LXRyYW5zbGF0ZS15OjA7LS10dy1yb3RhdGU6MDstLXR3LXNrZXcteDowOy0tdHctc2tldy15OjA7LS10dy1zY2FsZS14OjE7LS10dy1zY2FsZS15OjE7LS10dy1wYW4teDogOy0tdHctcGFuLXk6IDstLXR3LXBpbmNoLXpvb206IDstLXR3LXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1jb2xvcjojM2I4MmY2ODA7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcmVkOjAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0vKiEgdGFpbHdpbmRjc3MgdjMuNC4xMyB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20qLyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkICNlNWU3ZWJ9OmFmdGVyLDpiZWZvcmV7LS10dy1jb250ZW50OlwiXCJ9Omhvc3QsaHRtbHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1vei10YWItc2l6ZTo0Oy1vLXRhYi1zaXplOjQ7dGFiLXNpemU6NDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e21hcmdpbjowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246aW5pdGlhbH1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b306LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjppbml0aWFsfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiw6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRkLGRsLGZpZ3VyZSxoMSxoMixoMyxoNCxoNSxoNixocixwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MH1maWVsZHNldCxsZWdlbmR7cGFkZGluZzowfW1lbnUsb2wsdWx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfVtyb2xlPWJ1dHRvbl0sYnV0dG9ue2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXXtkaXNwbGF5Om5vbmV9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsuY29udGFpbmVye21heC13aWR0aDo2NDBweH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjc2OHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEwMjRweH19QG1lZGlhIChtaW4td2lkdGg6MTI4MHB4KXsuY29udGFpbmVye21heC13aWR0aDoxMjgwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE1MzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTUzNnB4fX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjB9LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5ib3R0b20tM3tib3R0b206Ljc1cmVtfS5sZWZ0LTB7bGVmdDowfS5sZWZ0LVxcWzUwXFwlXFxde2xlZnQ6NTAlfS5yaWdodC0we3JpZ2h0OjB9LnJpZ2h0LTF7cmlnaHQ6LjI1cmVtfS5yaWdodC0ze3JpZ2h0Oi43NXJlbX0udG9wLTF7dG9wOi4yNXJlbX0udG9wLVxcWzUwXFwlXFxde3RvcDo1MCV9LnotXFxbMTAwXFxde3otaW5kZXg6MTAwfS56LVxcWzk5XFxde3otaW5kZXg6OTl9Lm0tMXttYXJnaW46LjI1cmVtfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtM3toZWlnaHQ6Ljc1cmVtfS5oLTV7aGVpZ2h0OjEuMjVyZW19LmgtNntoZWlnaHQ6MS41cmVtfS5oLTd7aGVpZ2h0OjEuNzVyZW19LmgtOXtoZWlnaHQ6Mi4yNXJlbX0uaC1cXFsyMHB4XFxde2hlaWdodDoyMHB4fS5oLVxcWzI1MHB4XFxde2hlaWdodDoyNTBweH0uaC1mdWxse2hlaWdodDoxMDAlfS53LTE2e3dpZHRoOjRyZW19LnctMlxcLzN7d2lkdGg6NjYuNjY2NjY3JX0udy03e3dpZHRoOjEuNzVyZW19LnctOXt3aWR0aDoyLjI1cmVtfS53LVxcWzEwMHB4XFxde3dpZHRoOjEwMHB4fS53LVxcWzEyMHB4XFxde3dpZHRoOjEyMHB4fS53LVxcWzJweFxcXXt3aWR0aDoycHh9LnctXFxbMzBweFxcXXt3aWR0aDozMHB4fS53LVxcWzM2cHhcXF17d2lkdGg6MzZweH0udy1cXFs0MDBweFxcXXt3aWR0aDo0MDBweH0udy1cXFtjYWxjXFwoNDAwcHgtMTIwcHhcXClcXF17d2lkdGg6MjgwcHh9LnctZnVsbHt3aWR0aDoxMDAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF17LS10dy10cmFuc2xhdGUteDotNTAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF0sLi10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9Li10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXstLXR3LXRyYW5zbGF0ZS15Oi01MCV9QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19LmFuaW1hdGUtcHVsc2V7YW5pbWF0aW9uOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uc2VsZWN0LW5vbmV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZ2FwLTBcXC41e2dhcDouMTI1cmVtfS5nYXAtMXtnYXA6LjI1cmVtfS5nYXAtMntnYXA6LjVyZW19LmdhcC00e2dhcDoxcmVtfS5nYXAtNXtnYXA6MS4yNXJlbX0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6LjM3NXJlbX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOi43NXJlbX0ucm91bmRlZC1ibC1mdWxse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLWJyLWZ1bGx7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLXRsLWZ1bGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo5OTk5cHh9LnJvdW5kZWQtdHItZnVsbHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo5OTk5cHh9LmJvcmRlciwuYm9yZGVyLVxcWzFweFxcXXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItXFxbXFwjMDA4RDAxN0ZcXF17Ym9yZGVyLWNvbG9yOiMwMDhkMDE3Zn0uYm9yZGVyLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItXFxbXFwjNjM2MzYzXFxdey0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LmJnLVxcW1xcIzJEMkQyRFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig0NSA0NSA0NS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzM4MzgzOFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NiA1NiA1Ni92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ3NDc0N1xcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MSA3MSA3MS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcI0ZGQTcyNlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMTY3IDM4L3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX0ucHgtXFxbMnB4XFxde3BhZGRpbmctbGVmdDoycHg7cGFkZGluZy1yaWdodDoycHh9LnB4LVxcWzRweFxcXXtwYWRkaW5nLWxlZnQ6NHB4O3BhZGRpbmctcmlnaHQ6NHB4fS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5wdC0xMHtwYWRkaW5nLXRvcDoyLjVyZW19LnRleHQtYmFzZXtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0uY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS50ZXh0LVxcW1xcI2ZjZmNmY1xcXXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTIgMjUyIDI1Mi92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC13aGl0ZXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0uYmx1cnstLXR3LWJsdXI6Ymx1cig4cHgpfS5ibHVyLC5ncmF5c2NhbGV7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmdyYXlzY2FsZXstLXR3LWdyYXlzY2FsZTpncmF5c2NhbGUoMTAwJSl9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmFja2Ryb3AtZmlsdGVyey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLGJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmR1cmF0aW9uLTEwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMzAwe3RyYW5zaXRpb24tZHVyYXRpb246LjNzfS5kdXJhdGlvbi1cXFsyNTBtc1xcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yNXN9LmFmdGVyXFw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcXDpzdGFydC1cXFsycHhcXF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmUtc3RhcnQ6MnB4fS5hZnRlclxcOnRvcC0wXFwuNTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDouMTI1cmVtfS5hZnRlclxcOmgtNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxcmVtfS5hZnRlclxcOnctNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjFyZW19LmFmdGVyXFw6cm91bmRlZC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LmFmdGVyXFw6Ym9yZGVyOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXdpZHRoOjFweH0uYWZ0ZXJcXDpib3JkZXItZ3JheS0zMDA6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5hZnRlclxcOmJnLXdoaXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdHctYmctb3BhY2l0eSkpfS5hZnRlclxcOnRyYW5zaXRpb24tYWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dHJhbnNpdGlvbi1wcm9wZXJ0eTphbGw7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5hZnRlclxcOmNvbnRlbnQtXFxbXFwnXFwnXFxdOmFmdGVyey0tdHctY29udGVudDpcIlwiO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmhvdmVyXFw6Ym9yZGVyLVxcWzFcXC44cHhcXF06aG92ZXJ7Ym9yZGVyLXdpZHRoOjEuOHB4fS5ob3ZlclxcOmJvcmRlci1cXFtcXCMwMDhEMDFcXF06aG92ZXJ7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMCAxNDEgMS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ob3ZlclxcOmJnLVxcW1xcIzM5MzkzOVxcXTpob3ZlcnstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NyA1NyA1Ny92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmhvdmVyXFw6YmctXFxbXFwjNDc0NzQ3XFxdOmhvdmVyey0tdHctYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDcxIDcxIDcxL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDpiZy1cXFtcXCNGRkE3MjZcXF17LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDE2NyAzOC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LnBlZXI6Y2hlY2tlZH4ucGVlci1jaGVja2VkXFw6YWZ0ZXJcXDp0cmFuc2xhdGUteC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy10cmFuc2xhdGUteDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDphZnRlclxcOmJvcmRlci13aGl0ZTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LnBlZXI6Zm9jdXN+LnBlZXItZm9jdXNcXDpyaW5nLTF7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywwIDAgIzAwMDApfS5wZWVyOmZvY3Vzfi5wZWVyLWZvY3VzXFw6cmluZy1cXFtcXCM2MzYzNjNcXF17LS10dy1yaW5nLW9wYWNpdHk6MTstLXR3LXJpbmctY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LXJpbmctb3BhY2l0eSkpfS5wZWVyOmNoZWNrZWR+LnJ0bFxcOnBlZXItY2hlY2tlZFxcOmFmdGVyXFw6LXRyYW5zbGF0ZS14LWZ1bGw6d2hlcmUoW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctdHJhbnNsYXRlLXg6LTEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpib3JkZXItZ3JheS02MDB7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoNzUgODUgOTkvdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKX19IiwiLm1vbmFjby1lZGl0b3IgLnNjcm9sbGJhciB7XHJcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZ2x5cGgtaW5kaWNhdG9yIHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMSk7XHJcbiAgd2lkdGg6IDhweCAhaW1wb3J0YW50O1xyXG4gIGhlaWdodDogOHB4ICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmctbGVmdDogOHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5vdmVybGF5V2lkZ2V0cyAuZWRpdG9yLXdpZGdldCB7XHJcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5452.css b/react_frontend/static/react_frontend/css/5452.css new file mode 100644 index 000000000..2629fb249 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5452.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU0NTIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhYnlyaW50aF9lc2NhcGVfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9MYWJ5cmludGhFc2NhcGUuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5530.css b/react_frontend/static/react_frontend/css/5530.css new file mode 100644 index 000000000..57b5a8452 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5530.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU1MzAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2dsb2JhbF9uYXZpZ2F0aW9uL3JlYWN0LWNvbXBvbmVudHMvY3NzL0dsb2JhbE5hdmlnYXRpb25SUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5665.css b/react_frontend/static/react_frontend/css/5665.css new file mode 100644 index 000000000..15eb003b5 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5665.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU2NjUuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvd2VyX3Rvd2VyX2luc3BlY3Rpb25fbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9Qb3dlclRvd2VySW5zcGVjdGlvbi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5781.css b/react_frontend/static/react_frontend/css/5781.css new file mode 100644 index 000000000..5c0466dd5 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5781.css @@ -0,0 +1,4 @@ +.view-hidden{display:none !important} +.ready{color:#000;background-color:#4caf50;box-shadow:0px 2px 3px -1px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 1px 8px 0px rgba(0,0,0,.12);padding:10px 30px;text-align:center;min-width:64px;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-radius:5px;letter-spacing:.02857em;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000}.waiting{color:#000;background-color:#f57f51;min-width:64px;padding:10px 30px;text-align:center;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000;border-radius:5px;letter-spacing:.02857em}.word{display:block;margin:0;padding:0;line-height:1;text-transform:uppercase}.title{position:relative;font-size:.8rem;text-align:start;top:-20px;height:0px;left:-15px;right:0;margin:0} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU3ODEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGFBQ0Usd0I7QUNERixPQUNFLFdBQ0EseUJBQ0EsMkdBRUEsa0JBQ0Esa0JBQ0EsZUFDQSx5RUFDQSxpQkFDQSxnQkFDQSxrQkFDQSx3QkFDQSw2QkFDQSxtQkFDQSxrQkFHRixTQUNFLFdBQ0EseUJBRUEsZUFDQSxrQkFDQSxrQkFDQSx5RUFDQSxpQkFDQSxnQkFDQSw2QkFDQSxtQkFDQSxrQkFDQSxrQkFDQSx3QkFHRixNQUNFLGNBQ0EsU0FDQSxVQUNBLGNBQ0EseUJBR0YsT0FDRSxrQkFDQSxnQkFDQSxpQkFDQSxVQUNBLFdBQ0EsV0FDQSxRQUNBLFMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvYnV0dG9ucy9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uLmNzcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvSW5kaWNhdG9yLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIudmlldy1oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG4iLCIucmVhZHkge1xyXG4gIGNvbG9yOiBibGFjaztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGNhZjUwO1xyXG4gIGJveC1zaGFkb3c6IDBweCAycHggM3B4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjIpLFxyXG4gICAgMHB4IDNweCA0cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAxcHggOHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xyXG4gIHBhZGRpbmc6IDEwcHggMzBweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWluLXdpZHRoOiA2NHB4O1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZSwgYm9yZGVyIDAuM3MgZWFzZTtcclxuICBsaW5lLWhlaWdodDogMS43NTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBsZXR0ZXItc3BhY2luZzogMC4wMjg1N2VtO1xyXG4gIGJvcmRlci13aWR0aDogMHB4IDFweCAxcHggMXB4O1xyXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgYm9yZGVyLWNvbG9yOiAjMDAwMDAwO1xyXG59XHJcblxyXG4ud2FpdGluZyB7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTdmNTE7XHJcblxyXG4gIG1pbi13aWR0aDogNjRweDtcclxuICBwYWRkaW5nOiAxMHB4IDMwcHg7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBib3gtc2hhZG93IDAuM3MgZWFzZSwgYm9yZGVyIDAuM3MgZWFzZTtcclxuICBsaW5lLWhlaWdodDogMS43NTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGJvcmRlci13aWR0aDogMHB4IDFweCAxcHggMXB4O1xyXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgYm9yZGVyLWNvbG9yOiAjMDAwMDAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICBsZXR0ZXItc3BhY2luZzogMC4wMjg1N2VtO1xyXG59XHJcblxyXG4ud29yZCB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxufVxyXG5cclxuLnRpdGxlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZm9udC1zaXplOiAwLjhyZW07XHJcbiAgdGV4dC1hbGlnbjogc3RhcnQ7XHJcbiAgdG9wOiAtMjBweDtcclxuICBoZWlnaHQ6IDBweDtcclxuICBsZWZ0OiAtMTVweDtcclxuICByaWdodDogMDtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5801.css b/react_frontend/static/react_frontend/css/5801.css new file mode 100644 index 000000000..608eb8b93 --- /dev/null +++ b/react_frontend/static/react_frontend/css/5801.css @@ -0,0 +1,3 @@ +.view-hidden{display:none !important} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU4MDEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGFBQ0Usd0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvYnV0dG9ucy9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIudmlldy1oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/581.css b/react_frontend/static/react_frontend/css/581.css new file mode 100644 index 000000000..f244d91f0 --- /dev/null +++ b/react_frontend/static/react_frontend/css/581.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU4MS5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsRUFDSSxzQkFHSixVQUNJLHVCQUdKLG9CQUNJLGtCQUNBLDhCQUNBLGdCQUNBLGFBQ0Esc0JBR0osNkJBQ0ksV0FDQSxZQUNBLGdCQUdKLCtDQUNJLGFBQ0Esc0JBQ0EsV0FDQSxZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvYmFzaWNfY29tcHV0ZXJfdmlzaW9uL3JlYWN0LWNvbXBvbmVudHMvY3NzL0Jhc2ljQ29tcHV0ZXJWaXNpb25SUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/5860.css b/react_frontend/static/react_frontend/css/5860.css new file mode 100644 index 000000000..ac5aec28b --- /dev/null +++ b/react_frontend/static/react_frontend/css/5860.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzU4NjAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19wZXJzb24vcmVhY3QtY29tcG9uZW50cy9jc3MvRm9sbG93UGVyc29uUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6049.css b/react_frontend/static/react_frontend/css/6049.css new file mode 100644 index 000000000..99b3d6077 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6049.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzYwNDkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fbGFzZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL01vbnRlY2FybG9MYXNlckxvYy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6160.css b/react_frontend/static/react_frontend/css/6160.css new file mode 100644 index 000000000..2d52a7e80 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6160.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzYxNjAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2hhbmdhcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvY3NzL0Ryb25lSGFuZ2FyLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6377.css b/react_frontend/static/react_frontend/css/6377.css new file mode 100644 index 000000000..8dcfc2328 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6377.css @@ -0,0 +1,5 @@ +@import url(https://fonts.googleapis.com/css2?family=Quicksand&display=swap); +.app{margin-bottom:28px}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media(prefers-reduced-motion: no-preference){.App-logo{animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}} +:root{--background-color: black}.loading-list-message{max-width:1200px;margin:0 auto}.exercise-list{max-width:1200px;margin:0 auto;display:grid;grid-gap:1rem;padding:8px;grid-auto-rows:1fr}.loading-list-message{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Quicksand",sans-serif;font-size:5rem;font-weight:800;background-image:linear-gradient(-225deg, #231557 0%, #44107a 29%, #ff1361 67%, #fff800 100%);background-size:auto auto;background-clip:border-box;background-size:200% auto;color:#fff;background-clip:text;text-fill-color:rgba(0,0,0,0);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);animation:textclip 2s linear infinite}@keyframes textclip{to{background-position:200% center}}@media(min-width: 600px){.exercise-list{grid-template-columns:repeat(3, 1fr)}}@media(min-width: 900px){.exercise-list{grid-template-columns:repeat(4, 1fr)}}.exercise-tag-list{padding:4px}.exercise-card{display:flex;flex-direction:column;justify-content:spacebetween;background-color:#000;border-radius:20px;border:5px solid;position:relative;overflow:hidden;width:100%;aspect-ratio:9/10}.exercise-card-container{flex-grow:1;display:flex;flex-direction:column;align-items:flex-start}.exercise-info-container{width:100%;height:15%;position:absolute;background:rgba(0,0,0,.68);animation:position;transition:height .8s ease;bottom:0;padding:8px;display:inline-flex;flex-direction:column;flex-grow:1}.exercise-info-container #exercise-info,.exercise-info-container .exercise-tag-list{opacity:0%;transition:opacity 1s ease}.exercise-info-container:hover{height:100%}.exercise-info-container:hover #exercise-info,.exercise-info-container:hover .exercise-tag-list{opacity:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzYzNzcuY3NzIiwibWFwcGluZ3MiOiI7QUFBQSxLQUNFLG1CQUdGLEtBQ0Usa0JBR0YsVUFDRSxjQUNBLG9CQUdGLDhDQUNFLFVBQ0UsNkNBSUosWUFDRSx5QkFDQSxpQkFDQSxhQUNBLHNCQUNBLG1CQUNBLHVCQUNBLDZCQUNBLFdBR0YsVUFDRSxjQUdGLHlCQUNFLEtBQ0UsdUJBRUYsR0FDRSwwQjtBQ3JDSixNQUNJLDBCQUdKLHNCQUNJLGlCQUNBLGNBSUosZUFDSSxpQkFDQSxjQUNBLGFBQ0EsY0FDQSxZQUNBLG1CQXVDSixzQkFDSSxrQkFDQSxPQUNBLFFBQ0EsU0FDQSxNQUNBLGFBQ0Esc0JBQ0EsdUJBQ0EsbUJBQ0EsbUNBQ0EsZUFDQSxnQkFDQSw4RkFDQSwwQkFDQSwyQkFDQSwwQkFDQSxXQUNBLHFCQUNBLDhCQUNBLDZCQUNBLHNDQUNBLHNDQUdKLG9CQUNJLEdBQ0ksaUNBSVIseUJBMEJJLGVBQ0ksc0NBSVIseUJBQ0ksZUFDSSxzQ0FJUixtQkFDSSxZQUdKLGVBQ0ksYUFDQSxzQkFDQSw2QkFDQSxzQkFDQSxtQkFDQSxpQkFDQSxrQkFDQSxnQkFDQSxXQUNBLGtCQUdKLHlCQUNJLFlBQ0EsYUFDQSxzQkFDQSx1QkFHSix5QkFDSSxXQUNBLFdBQ0Esa0JBQ0EsMkJBQ0EsbUJBQ0EsMkJBQ0EsU0FDQSxZQUNBLG9CQUNBLHNCQUNBLFlBRUEsb0ZBRUksV0FDQSwyQkFHSiwrQkFDSSxZQUVBLGdHQUVJLGEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvQXBwLmNzcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvRXhlcmNpc2VMaXN0LmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuYXBwIHtcclxuICBtYXJnaW4tYm90dG9tOiAyOHB4O1xyXG59XHJcblxyXG4uQXBwIHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5BcHAtbG9nbyB7XHJcbiAgaGVpZ2h0OiA0MHZtaW47XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbn1cclxuXHJcbkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogbm8tcHJlZmVyZW5jZSkge1xyXG4gIC5BcHAtbG9nbyB7XHJcbiAgICBhbmltYXRpb246IEFwcC1sb2dvLXNwaW4gaW5maW5pdGUgMjBzIGxpbmVhcjtcclxuICB9XHJcbn1cclxuXHJcbi5BcHAtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgyYzM0O1xyXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGZvbnQtc2l6ZTogY2FsYygxMHB4ICsgMnZtaW4pO1xyXG4gIGNvbG9yOiB3aGl0ZTtcclxufVxyXG5cclxuLkFwcC1saW5rIHtcclxuICBjb2xvcjogIzYxZGFmYjtcclxufVxyXG5cclxuQGtleWZyYW1lcyBBcHAtbG9nby1zcGluIHtcclxuICBmcm9tIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xyXG4gIH1cclxufVxyXG4iLCJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1RdWlja3NhbmQmZGlzcGxheT1zd2FwJyk7XHJcblxyXG46cm9vdCB7XHJcbiAgICAtLWJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4ubG9hZGluZy1saXN0LW1lc3NhZ2Uge1xyXG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuXHJcbn1cclxuXHJcbi5leGVyY2lzZS1saXN0IHtcclxuICAgIG1heC13aWR0aDogMTIwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgZ3JpZC1nYXA6IDFyZW07XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICBncmlkLWF1dG8tcm93czogMWZyO1xyXG59XHJcblxyXG4vKiAuZXhlcmNpc2UtY2FyZCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCAuY2FyZC1pbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkPmRpdiB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBmb250LWZhbWlseTogJ1F1aWNrc2FuZCcsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIC5uYW1lIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLmRlc2NyaXB0aW9uIHtcclxuICAgIGhlaWdodDogNXJlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLnRhZ3Mge1xyXG4gICAgaGVpZ2h0OiA1cmVtO1xyXG59ICovXHJcblxyXG4ubG9hZGluZy1saXN0LW1lc3NhZ2Uge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LWZhbWlseTogJ1F1aWNrc2FuZCcsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXNpemU6IDVyZW07XHJcbiAgICBmb250LXdlaWdodDogODAwO1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0yMjVkZWcsICMyMzE1NTcgMCUsICM0NDEwN2EgMjklLCAjZmYxMzYxIDY3JSwgI2ZmZjgwMCAxMDAlKTtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byBhdXRvO1xyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIGF1dG87XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDtcclxuICAgIHRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcclxuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGFuaW1hdGlvbjogdGV4dGNsaXAgMnMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIHRleHRjbGlwIHtcclxuICAgIHRvIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIGNlbnRlcjtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7XHJcbiAgICAvKiAuZXhlcmNpc2UtY2FyZDpob3ZlciB7XHJcbiAgICAgICAgbWFyZ2luOiAtM3B4O1xyXG4gICAgfVxyXG5cclxuICAgIC5leGVyY2lzZS1jYXJkOmhvdmVyOjpiZWZvcmUge1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBjb250ZW50OiBcIlN0YXJ0IG1lIVwiO1xyXG5cclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU1LCA1NSwgNTUsIC44KTtcclxuICAgICAgICBjb2xvcjogIzAwN2JmZjtcclxuICAgICAgICBmb250LXNpemU6IDNyZW07XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcclxuICAgIH0gKi9cclxuXHJcbiAgICAuZXhlcmNpc2UtbGlzdCB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDkwMHB4KSB7XHJcbiAgICAuZXhlcmNpc2UtbGlzdCB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcclxuICAgIH1cclxufVxyXG5cclxuLmV4ZXJjaXNlLXRhZy1saXN0IHtcclxuICAgIHBhZGRpbmc6IDRweDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlYmV0d2VlbjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgIGJvcmRlcjogNXB4IHNvbGlkO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYXNwZWN0LXJhdGlvOiA5LzEwO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZC1jb250YWluZXIge1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWluZm8tY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxNSU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNjgpO1xyXG4gICAgYW5pbWF0aW9uOiBwb3NpdGlvbjtcclxuICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjhzIGVhc2U7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgJiAjZXhlcmNpc2UtaW5mbyxcclxuICAgIC5leGVyY2lzZS10YWctbGlzdCB7XHJcbiAgICAgICAgb3BhY2l0eTogMCU7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcyBlYXNlO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAgICAgJiAjZXhlcmNpc2UtaW5mbyxcclxuICAgICAgICAuZXhlcmNpc2UtdGFnLWxpc3Qge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6762.css b/react_frontend/static/react_frontend/css/6762.css new file mode 100644 index 000000000..72b572979 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6762.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzY3NjIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2hhbmdhcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvY3NzL0Ryb25lSGFuZ2FyLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6780.css b/react_frontend/static/react_frontend/css/6780.css new file mode 100644 index 000000000..6830089ca --- /dev/null +++ b/react_frontend/static/react_frontend/css/6780.css @@ -0,0 +1,3 @@ +#car{position:absolute;width:10px;height:10px;transition:left .1s ease-out,top .1s ease-out;z-index:3}.exercise-canvas{position:absolute;top:0;left:0;width:50%;height:100%;max-height:100%}.target{position:absolute;height:20px;width:20px;z-index:3}.target::before,.target::after{position:absolute;content:"";width:100%;height:2px;border-radius:6px;background-color:blue}.target::before{transform:rotate(45deg)}.target::after{transform:rotate(-45deg)} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzY3ODAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEtBQ0Usa0JBQ0EsV0FDQSxZQUNBLDhDQUNBLFVBR0YsaUJBQ0Usa0JBQ0EsTUFDQSxPQUVBLFVBQ0EsWUFDQSxnQkFHRixRQUNFLGtCQUNBLFlBQ0EsV0FDQSxVQUdGLCtCQUVJLGtCQUNBLFdBQ0EsV0FDQSxXQUNBLGtCQUNBLHNCQUdKLGdCQUNJLHdCQUdKLGVBQ0kseUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9nbG9iYWxfbmF2aWdhdGlvbi9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIiNjYXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMTBweDtcclxuICBoZWlnaHQ6IDEwcHg7XHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dDtcclxuICB6LWluZGV4OiAzO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FudmFzIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAwO1xyXG4gIGxlZnQ6IDA7XHJcbiAgLyogYm9yZGVyOiAycHggc29saWQgI2QzZDNkMzsgKi9cclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4udGFyZ2V0IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIHotaW5kZXg6IDM7XHJcbn1cclxuXHJcbi50YXJnZXQ6OmJlZm9yZSxcclxuLnRhcmdldDo6YWZ0ZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMnB4OyAvKiBjcm9zcyB0aGlja25lc3MgKi9cclxuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7XHJcbn1cclxuXHJcbi50YXJnZXQ6OmJlZm9yZSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbi50YXJnZXQ6OmFmdGVyIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6824.css b/react_frontend/static/react_frontend/css/6824.css new file mode 100644 index 000000000..d56180226 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6824.css @@ -0,0 +1,3 @@ +.image{position:absolute;height:100%;border:4px #000 solid} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzY4MjQuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0Usa0JBQ0EsWUFDQSxzQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19wZXJzb24vcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuaW1hZ2Uge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYm9yZGVyOiA0cHggYmxhY2sgc29saWQ7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6925.css b/react_frontend/static/react_frontend/css/6925.css new file mode 100644 index 000000000..07e7006e9 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6925.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzY5MjUuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2RpZ2l0YWxfaW1hZ2VfcHJvY2Vzc2luZy9yZWFjdC1jb21wb25lbnRzL2Nzcy9EaWdpdGFsSW1hZ2VQcm9jZXNzaW5nUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/6962.css b/react_frontend/static/react_frontend/css/6962.css new file mode 100644 index 000000000..d817c0a97 --- /dev/null +++ b/react_frontend/static/react_frontend/css/6962.css @@ -0,0 +1,4 @@ +@import url(https://fonts.googleapis.com/css2?family=Quicksand&display=swap); +:root{--background-color: black}.loading-list-message{max-width:1200px;margin:0 auto}.exercise-list{max-width:1200px;margin:0 auto;display:grid;grid-gap:1rem;padding:8px;grid-auto-rows:1fr}.loading-list-message{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Quicksand",sans-serif;font-size:5rem;font-weight:800;background-image:linear-gradient(-225deg, #231557 0%, #44107a 29%, #ff1361 67%, #fff800 100%);background-size:auto auto;background-clip:border-box;background-size:200% auto;color:#fff;background-clip:text;text-fill-color:rgba(0,0,0,0);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);animation:textclip 2s linear infinite}@keyframes textclip{to{background-position:200% center}}@media(min-width: 600px){.exercise-list{grid-template-columns:repeat(3, 1fr)}}@media(min-width: 900px){.exercise-list{grid-template-columns:repeat(4, 1fr)}}.exercise-tag-list{padding:4px}.exercise-card{display:flex;flex-direction:column;justify-content:spacebetween;background-color:#000;border-radius:20px;border:5px solid;position:relative;overflow:hidden;width:100%;aspect-ratio:9/10}.exercise-card-container{flex-grow:1;display:flex;flex-direction:column;align-items:flex-start}.exercise-info-container{width:100%;height:15%;position:absolute;background:rgba(0,0,0,.68);animation:position;transition:height .8s ease;bottom:0;padding:8px;display:inline-flex;flex-direction:column;flex-grow:1}.exercise-info-container #exercise-info,.exercise-info-container .exercise-tag-list{opacity:0%;transition:opacity 1s ease}.exercise-info-container:hover{height:100%}.exercise-info-container:hover #exercise-info,.exercise-info-container:hover .exercise-tag-list{opacity:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzY5NjIuY3NzIiwibWFwcGluZ3MiOiI7QUFFQSxNQUNJLDBCQUdKLHNCQUNJLGlCQUNBLGNBSUosZUFDSSxpQkFDQSxjQUNBLGFBQ0EsY0FDQSxZQUNBLG1CQXVDSixzQkFDSSxrQkFDQSxPQUNBLFFBQ0EsU0FDQSxNQUNBLGFBQ0Esc0JBQ0EsdUJBQ0EsbUJBQ0EsbUNBQ0EsZUFDQSxnQkFDQSw4RkFDQSwwQkFDQSwyQkFDQSwwQkFDQSxXQUNBLHFCQUNBLDhCQUNBLDZCQUNBLHNDQUNBLHNDQUdKLG9CQUNJLEdBQ0ksaUNBSVIseUJBMEJJLGVBQ0ksc0NBSVIseUJBQ0ksZUFDSSxzQ0FJUixtQkFDSSxZQUdKLGVBQ0ksYUFDQSxzQkFDQSw2QkFDQSxzQkFDQSxtQkFDQSxpQkFDQSxrQkFDQSxnQkFDQSxXQUNBLGtCQUdKLHlCQUNJLFlBQ0EsYUFDQSxzQkFDQSx1QkFHSix5QkFDSSxXQUNBLFdBQ0Esa0JBQ0EsMkJBQ0EsbUJBQ0EsMkJBQ0EsU0FDQSxZQUNBLG9CQUNBLHNCQUNBLFlBRUEsb0ZBRUksV0FDQSwyQkFHSiwrQkFDSSxZQUVBLGdHQUVJLGEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvRXhlcmNpc2VMaXN0LmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1RdWlja3NhbmQmZGlzcGxheT1zd2FwJyk7XHJcblxyXG46cm9vdCB7XHJcbiAgICAtLWJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG59XHJcblxyXG4ubG9hZGluZy1saXN0LW1lc3NhZ2Uge1xyXG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuXHJcbn1cclxuXHJcbi5leGVyY2lzZS1saXN0IHtcclxuICAgIG1heC13aWR0aDogMTIwMHB4O1xyXG4gICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgZ3JpZC1nYXA6IDFyZW07XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICBncmlkLWF1dG8tcm93czogMWZyO1xyXG59XHJcblxyXG4vKiAuZXhlcmNpc2UtY2FyZCB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgY29sb3I6IHdoaXRlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCAuY2FyZC1pbWcge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkPmRpdiB7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBmb250LWZhbWlseTogJ1F1aWNrc2FuZCcsIHNhbnMtc2VyaWY7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIC5uYW1lIHtcclxuICAgIGZvbnQtc2l6ZTogMS44cmVtO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLmRlc2NyaXB0aW9uIHtcclxuICAgIGhlaWdodDogNXJlbTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLnRhZ3Mge1xyXG4gICAgaGVpZ2h0OiA1cmVtO1xyXG59ICovXHJcblxyXG4ubG9hZGluZy1saXN0LW1lc3NhZ2Uge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgbGVmdDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgYm90dG9tOiAwO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBmb250LWZhbWlseTogJ1F1aWNrc2FuZCcsIHNhbnMtc2VyaWY7XHJcbiAgICBmb250LXNpemU6IDVyZW07XHJcbiAgICBmb250LXdlaWdodDogODAwO1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0yMjVkZWcsICMyMzE1NTcgMCUsICM0NDEwN2EgMjklLCAjZmYxMzYxIDY3JSwgI2ZmZjgwMCAxMDAlKTtcclxuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byBhdXRvO1xyXG4gICAgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94O1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiAyMDAlIGF1dG87XHJcbiAgICBjb2xvcjogI2ZmZjtcclxuICAgIGJhY2tncm91bmQtY2xpcDogdGV4dDtcclxuICAgIHRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDtcclxuICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGFuaW1hdGlvbjogdGV4dGNsaXAgMnMgbGluZWFyIGluZmluaXRlO1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIHRleHRjbGlwIHtcclxuICAgIHRvIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAyMDAlIGNlbnRlcjtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7XHJcbiAgICAvKiAuZXhlcmNpc2UtY2FyZDpob3ZlciB7XHJcbiAgICAgICAgbWFyZ2luOiAtM3B4O1xyXG4gICAgfVxyXG5cclxuICAgIC5leGVyY2lzZS1jYXJkOmhvdmVyOjpiZWZvcmUge1xyXG4gICAgICAgIGJvdHRvbTogMDtcclxuICAgICAgICBjb250ZW50OiBcIlN0YXJ0IG1lIVwiO1xyXG5cclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogMDtcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDU1LCA1NSwgNTUsIC44KTtcclxuICAgICAgICBjb2xvcjogIzAwN2JmZjtcclxuICAgICAgICBmb250LXNpemU6IDNyZW07XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDkwMDtcclxuICAgIH0gKi9cclxuXHJcbiAgICAuZXhlcmNpc2UtbGlzdCB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcclxuICAgIH1cclxufVxyXG5cclxuQG1lZGlhIChtaW4td2lkdGg6IDkwMHB4KSB7XHJcbiAgICAuZXhlcmNpc2UtbGlzdCB7XHJcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTtcclxuICAgIH1cclxufVxyXG5cclxuLmV4ZXJjaXNlLXRhZy1saXN0IHtcclxuICAgIHBhZGRpbmc6IDRweDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlYmV0d2VlbjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgIGJvcmRlcjogNXB4IHNvbGlkO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYXNwZWN0LXJhdGlvOiA5LzEwO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZC1jb250YWluZXIge1xyXG4gICAgZmxleC1ncm93OiAxO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWluZm8tY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxNSU7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNjgpO1xyXG4gICAgYW5pbWF0aW9uOiBwb3NpdGlvbjtcclxuICAgIHRyYW5zaXRpb246IGhlaWdodCAwLjhzIGVhc2U7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcblxyXG4gICAgJiAjZXhlcmNpc2UtaW5mbyxcclxuICAgIC5leGVyY2lzZS10YWctbGlzdCB7XHJcbiAgICAgICAgb3BhY2l0eTogMCU7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAxcyBlYXNlO1xyXG4gICAgfVxyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuXHJcbiAgICAgICAgJiAjZXhlcmNpc2UtaW5mbyxcclxuICAgICAgICAuZXhlcmNpc2UtdGFnLWxpc3Qge1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxMDAlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/732.css b/react_frontend/static/react_frontend/css/732.css new file mode 100644 index 000000000..1c16ee042 --- /dev/null +++ b/react_frontend/static/react_frontend/css/732.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzczMi5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsRUFDSSxzQkFHSixVQUNJLHVCQUdKLG9CQUNJLGtCQUNBLDhCQUNBLGdCQUNBLGFBQ0Esc0JBR0osNkJBQ0ksV0FDQSxZQUNBLGdCQUdKLCtDQUNJLGFBQ0Esc0JBQ0EsV0FDQSxZIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvZm9sbG93X2xpbmUvcmVhY3QtY29tcG9uZW50cy9jc3MvRm9sbG93TGluZVJSLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7480.css b/react_frontend/static/react_frontend/css/7480.css new file mode 100644 index 000000000..b258dd04a --- /dev/null +++ b/react_frontend/static/react_frontend/css/7480.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc0ODAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19yb2FkL3JlYWN0LWNvbXBvbmVudHMvY3NzL2ZvbGxvd1JvYWRSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7596.css b/react_frontend/static/react_frontend/css/7596.css new file mode 100644 index 000000000..c16c210d8 --- /dev/null +++ b/react_frontend/static/react_frontend/css/7596.css @@ -0,0 +1,6 @@ +.hidden,.visible{transition:opacity .3s ease;display:flex;gap:5px;padding-left:25px;padding-right:5px;color:blue}.hidden{opacity:0;pointer-events:none}.visible{opacity:1} +.MuiToolbar-root.exercise-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;margin:8px;border:2px solid #d3d3d3;padding:0}#editor-control{display:flex}.monitor{height:25px}.button{background:none;border:1px solid #000;border-radius:4px;padding:5px;margin:0;outline:none;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none}.toggledColor{background-color:#4caf50}.button .monitor{transition:box-shadow .3s ease;box-shadow:none}.button:hover .monitor{box-shadow:0px 0px 10px rgba(0,0,0,.3)}.visible{display:flex}.hidden{display:none} +.tooltip-container{position:relative;display:inline-block;cursor:pointer}.tooltip-details{visibility:hidden;width:200px;background-color:#333;color:#fff;text-align:center;border-radius:6px;padding:10px;position:absolute;z-index:1;top:100%;left:50%;transform:translateX(-50%);margin-top:10px;opacity:0;transition:opacity .3s,transform .3s}.tooltip-details::after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #333 rgba(0,0,0,0)}.tooltip-container:hover .tooltip-details{visibility:visible;opacity:1;transform:translateX(-50%) translateY(0)} +*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.13 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-0.25em}sup{top:-0.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.container{width:100%}@media(min-width: 640px){.container{max-width:640px}}@media(min-width: 768px){.container{max-width:768px}}@media(min-width: 1024px){.container{max-width:1024px}}@media(min-width: 1280px){.container{max-width:1280px}}@media(min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.bottom-3{bottom:.75rem}.left-0{left:0}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-3{right:.75rem}.top-1{top:.25rem}.top-\[50\%\]{top:50%}.z-\[100\]{z-index:100}.z-\[99\]{z-index:99}.m-1{margin:.25rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[20px\]{height:20px}.h-\[250px\]{height:250px}.h-full{height:100%}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[2px\]{width:2px}.w-\[30px\]{width:30px}.w-\[36px\]{width:36px}.w-\[400px\]{width:400px}.w-\[calc\(400px-120px\)\]{width:280px}.w-full{width:100%}.-translate-x-\[50\%\]{--tw-translate-x:-50%}.-translate-x-\[50\%\],.-translate-y-\[50\%\]{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-\[50\%\]{--tw-translate-y:-50%}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-bl-full{border-bottom-left-radius:9999px}.rounded-br-full{border-bottom-right-radius:9999px}.rounded-tl-full{border-top-left-radius:9999px}.rounded-tr-full{border-top-right-radius:9999px}.border,.border-\[1px\]{border-width:1px}.border-\[\#008D017F\]{border-color:rgba(0,141,1,.4980392157)}.border-\[\#464646\]{--tw-border-opacity:1;border-color:rgb(70 70 70/var(--tw-border-opacity))}.border-\[\#636363\]{--tw-border-opacity:1;border-color:rgb(99 99 99/var(--tw-border-opacity))}.bg-\[\#2D2D2D\]{--tw-bg-opacity:1;background-color:rgb(45 45 45/var(--tw-bg-opacity))}.bg-\[\#383838\]{--tw-bg-opacity:1;background-color:rgb(56 56 56/var(--tw-bg-opacity))}.bg-\[\#464646\]{--tw-bg-opacity:1;background-color:rgb(70 70 70/var(--tw-bg-opacity))}.bg-\[\#474747\]{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[2px\]{padding-left:2px;padding-right:2px}.px-\[4px\]{padding-left:4px;padding-right:4px}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-10{padding-top:2.5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.capitalize{text-transform:capitalize}.text-\[\#fcfcfc\]{--tw-text-opacity:1;color:rgb(252 252 252/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.blur{--tw-blur:blur(8px)}.blur,.grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.grayscale{--tw-grayscale:grayscale(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-\[250ms\]{transition-duration:.25s}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:start-\[2px\]:after{content:var(--tw-content);inset-inline-start:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content:"";content:var(--tw-content)}.hover\:border-\[1\.8px\]:hover{border-width:1.8px}.hover\:border-\[\#008D01\]:hover{--tw-border-opacity:1;border-color:rgb(0 141 1/var(--tw-border-opacity))}.hover\:bg-\[\#393939\]:hover{--tw-bg-opacity:1;background-color:rgb(57 57 57/var(--tw-bg-opacity))}.hover\:bg-\[\#474747\]:hover{--tw-bg-opacity:1;background-color:rgb(71 71 71/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:bg-\[\#FFA726\]{--tw-bg-opacity:1;background-color:rgb(255 167 38/var(--tw-bg-opacity))}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x:100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity))}.peer:focus~.peer-focus\:ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 rgba(0, 0, 0, 0))}.peer:focus~.peer-focus\:ring-\[\#636363\]{--tw-ring-opacity:1;--tw-ring-color:rgb(99 99 99/var(--tw-ring-opacity))}.peer:checked~.rtl\:peer-checked\:after\:-translate-x-full:where([dir=rtl],[dir=rtl] *):after{content:var(--tw-content);--tw-translate-x:-100%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media(prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc1OTYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUVFLDRCQUNBLGFBQ0EsUUFDQSxrQkFDQSxrQkFDQSxXQUdGLFFBQ0UsVUFDQSxvQkFHRixTQUNFLFU7QUNoQkYsa0NBQ0UsYUFDQSxlQUNBLDhCQUNBLG1CQUNBLFdBQ0EseUJBQ0EsVUFHRixnQkFDRSxhQUdGLFNBQ0UsWUFHRixRQUNFLGdCQUNBLHNCQUNBLGtCQUNBLFlBQ0EsU0FDQSxhQUNBLGVBQ0EsZ0JBQ0Esd0JBQ0EscUJBR0YsY0FDRSx5QkFFRixpQkFDRSwrQkFDQSxnQkFHRix1QkFDRSx1Q0FHRixTQUNFLGFBRUYsUUFDRSxhO0FDL0NGLG1CQUNFLGtCQUNBLHFCQUNBLGVBR0YsaUJBQ0Usa0JBQ0EsWUFDQSxzQkFDQSxXQUNBLGtCQUNBLGtCQUNBLGFBQ0Esa0JBQ0EsVUFDQSxTQUNBLFNBQ0EsMkJBQ0EsZ0JBQ0EsVUFDQSxxQ0FJRix3QkFDRSxXQUNBLGtCQUNBLFlBQ0EsU0FDQSxpQkFDQSxpQkFDQSxtQkFDQSw0REFJRiwwQ0FDRSxtQkFDQSxVQUNBLHlDO0FDeENGLGd6WCIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy92aXN1YWxpemVycy9GcmVxdWVuY2llcy5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL2xheW91dF9jb21wb25lbnRzL0V4ZXJjaXNlQ29udHJvbC5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL2J1dHRvbnMvRExNb2RlbFVwbG9hZEJ1dHRvbi5jc3MiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL3RhaWx3aW5kLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIuaGlkZGVuLFxyXG4udmlzaWJsZSB7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDVweDtcclxuICBwYWRkaW5nLWxlZnQ6IDI1cHg7XHJcbiAgcGFkZGluZy1yaWdodDogNXB4O1xyXG4gIGNvbG9yOiBibHVlO1xyXG59XHJcblxyXG4uaGlkZGVuIHtcclxuICBvcGFjaXR5OiAwO1xyXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG59XHJcblxyXG4udmlzaWJsZSB7XHJcbiAgb3BhY2l0eTogMTtcclxuICBcclxufSIsIi5NdWlUb29sYmFyLXJvb3QuZXhlcmNpc2UtdG9vbGJhciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgbWFyZ2luOiA4cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgI2QzZDNkMztcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4jZWRpdG9yLWNvbnRyb2wge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbn1cclxuXHJcbi5tb25pdG9yIHtcclxuICBoZWlnaHQ6IDI1cHg7XHJcbn1cclxuXHJcbi5idXR0b24ge1xyXG4gIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gIHBhZGRpbmc6IDVweDtcclxuICBtYXJnaW46IDA7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgYXBwZWFyYW5jZTogbm9uZTtcclxuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xyXG59XHJcblxyXG4udG9nZ2xlZENvbG9yIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGNhZjUwO1xyXG59XHJcbi5idXR0b24gLm1vbml0b3Ige1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgMC4zcyBlYXNlO1xyXG4gIGJveC1zaGFkb3c6IG5vbmU7XHJcbn1cclxuXHJcbi5idXR0b246aG92ZXIgLm1vbml0b3Ige1xyXG4gIGJveC1zaGFkb3c6IDBweCAwcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMyk7XHJcbn1cclxuXHJcbi52aXNpYmxlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG59XHJcbi5oaWRkZW4ge1xyXG4gIGRpc3BsYXk6IG5vbmU7XHJcbn1cclxuIiwiLnRvb2x0aXAtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLnRvb2x0aXAtZGV0YWlscyB7XHJcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIHdpZHRoOiAyMDBweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgcGFkZGluZzogMTBweDtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcclxuICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzLCB0cmFuc2Zvcm0gMC4zcztcclxufVxyXG5cclxuLyogVG9vbHRpcCBhcnJvdyAqL1xyXG4udG9vbHRpcC1kZXRhaWxzOjphZnRlciB7XHJcbiAgY29udGVudDogXCJcIjtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYm90dG9tOiAxMDAlO1xyXG4gIGxlZnQ6IDUwJTtcclxuICBtYXJnaW4tbGVmdDogLTVweDtcclxuICBib3JkZXItd2lkdGg6IDVweDtcclxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgIzMzMyB0cmFuc3BhcmVudDtcclxufVxyXG5cclxuLyogU2hvdyB0b29sdGlwIG9uIGhvdmVyICovXHJcbi50b29sdGlwLWNvbnRhaW5lcjpob3ZlciAudG9vbHRpcC1kZXRhaWxzIHtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIG9wYWNpdHk6IDE7XHJcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoMCk7XHJcbn1cclxuIiwiKiw6OmJhY2tkcm9wLDphZnRlciw6YmVmb3Jley0tdHctYm9yZGVyLXNwYWNpbmcteDowOy0tdHctYm9yZGVyLXNwYWNpbmcteTowOy0tdHctdHJhbnNsYXRlLXg6MDstLXR3LXRyYW5zbGF0ZS15OjA7LS10dy1yb3RhdGU6MDstLXR3LXNrZXcteDowOy0tdHctc2tldy15OjA7LS10dy1zY2FsZS14OjE7LS10dy1zY2FsZS15OjE7LS10dy1wYW4teDogOy0tdHctcGFuLXk6IDstLXR3LXBpbmNoLXpvb206IDstLXR3LXNjcm9sbC1zbmFwLXN0cmljdG5lc3M6cHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1jb2xvcjojM2I4MmY2ODA7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6MCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6MCAwICMwMDAwOy0tdHctc2hhZG93OjAgMCAjMDAwMDstLXR3LXNoYWRvdy1jb2xvcmVkOjAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0vKiEgdGFpbHdpbmRjc3MgdjMuNC4xMyB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20qLyosOmFmdGVyLDpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkICNlNWU3ZWJ9OmFmdGVyLDpiZWZvcmV7LS10dy1jb250ZW50OlwiXCJ9Omhvc3QsaHRtbHtsaW5lLWhlaWdodDoxLjU7LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OjEwMCU7LW1vei10YWItc2l6ZTo0Oy1vLXRhYi1zaXplOjQ7dGFiLXNpemU6NDtmb250LWZhbWlseTp1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSxzYW5zLXNlcmlmLEFwcGxlIENvbG9yIEVtb2ppLFNlZ29lIFVJIEVtb2ppLFNlZ29lIFVJIFN5bWJvbCxOb3RvIENvbG9yIEVtb2ppO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsOy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjp0cmFuc3BhcmVudH1ib2R5e21hcmdpbjowO2xpbmUtaGVpZ2h0OmluaGVyaXR9aHJ7aGVpZ2h0OjA7Y29sb3I6aW5oZXJpdDtib3JkZXItdG9wLXdpZHRoOjFweH1hYmJyOndoZXJlKFt0aXRsZV0pey13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWQ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZSBkb3R0ZWR9aDEsaDIsaDMsaDQsaDUsaDZ7Zm9udC1zaXplOmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdH1he2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxNb25hY28sQ29uc29sYXMsTGliZXJhdGlvbiBNb25vLENvdXJpZXIgTmV3LG1vbm9zcGFjZTtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDtmb250LXNpemU6MWVtfXNtYWxse2ZvbnQtc2l6ZTo4MCV9c3ViLHN1cHtmb250LXNpemU6NzUlO2xpbmUtaGVpZ2h0OjA7cG9zaXRpb246cmVsYXRpdmU7dmVydGljYWwtYWxpZ246aW5pdGlhbH1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6aW5pdGlhbDtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Oi1tb3otZm9jdXNyaW5ne291dGxpbmU6YXV0b306LW1vei11aS1pbnZhbGlke2JveC1zaGFkb3c6bm9uZX1wcm9ncmVzc3t2ZXJ0aWNhbC1hbGlnbjppbml0aWFsfTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiw6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b257aGVpZ2h0OmF1dG99W3R5cGU9c2VhcmNoXXstd2Via2l0LWFwcGVhcmFuY2U6dGV4dGZpZWxkO291dGxpbmUtb2Zmc2V0Oi0ycHh9Ojotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uey13ZWJraXQtYXBwZWFyYW5jZTpub25lfTo6LXdlYmtpdC1maWxlLXVwbG9hZC1idXR0b257LXdlYmtpdC1hcHBlYXJhbmNlOmJ1dHRvbjtmb250OmluaGVyaXR9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1ibG9ja3F1b3RlLGRkLGRsLGZpZ3VyZSxoMSxoMixoMyxoNCxoNSxoNixocixwLHByZXttYXJnaW46MH1maWVsZHNldHttYXJnaW46MH1maWVsZHNldCxsZWdlbmR7cGFkZGluZzowfW1lbnUsb2wsdWx7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfVtyb2xlPWJ1dHRvbl0sYnV0dG9ue2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXXtkaXNwbGF5Om5vbmV9LmNvbnRhaW5lcnt3aWR0aDoxMDAlfUBtZWRpYSAobWluLXdpZHRoOjY0MHB4KXsuY29udGFpbmVye21heC13aWR0aDo2NDBweH19QG1lZGlhIChtaW4td2lkdGg6NzY4cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjc2OHB4fX1AbWVkaWEgKG1pbi13aWR0aDoxMDI0cHgpey5jb250YWluZXJ7bWF4LXdpZHRoOjEwMjRweH19QG1lZGlhIChtaW4td2lkdGg6MTI4MHB4KXsuY29udGFpbmVye21heC13aWR0aDoxMjgwcHh9fUBtZWRpYSAobWluLXdpZHRoOjE1MzZweCl7LmNvbnRhaW5lcnttYXgtd2lkdGg6MTUzNnB4fX0uc3Itb25seXtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHg7aGVpZ2h0OjFweDtwYWRkaW5nOjA7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwLDAsMCwwKTt3aGl0ZS1zcGFjZTpub3dyYXA7Ym9yZGVyLXdpZHRoOjB9LnZpc2libGV7dmlzaWJpbGl0eTp2aXNpYmxlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0uYWJzb2x1dGV7cG9zaXRpb246YWJzb2x1dGV9LnJlbGF0aXZle3Bvc2l0aW9uOnJlbGF0aXZlfS5ib3R0b20tM3tib3R0b206Ljc1cmVtfS5sZWZ0LTB7bGVmdDowfS5sZWZ0LVxcWzUwXFwlXFxde2xlZnQ6NTAlfS5yaWdodC0we3JpZ2h0OjB9LnJpZ2h0LTF7cmlnaHQ6LjI1cmVtfS5yaWdodC0ze3JpZ2h0Oi43NXJlbX0udG9wLTF7dG9wOi4yNXJlbX0udG9wLVxcWzUwXFwlXFxde3RvcDo1MCV9LnotXFxbMTAwXFxde3otaW5kZXg6MTAwfS56LVxcWzk5XFxde3otaW5kZXg6OTl9Lm0tMXttYXJnaW46LjI1cmVtfS5ibG9ja3tkaXNwbGF5OmJsb2NrfS5mbGV4e2Rpc3BsYXk6ZmxleH0uaW5saW5lLWZsZXh7ZGlzcGxheTppbmxpbmUtZmxleH0uZ3JpZHtkaXNwbGF5OmdyaWR9LmhpZGRlbntkaXNwbGF5Om5vbmV9LmgtM3toZWlnaHQ6Ljc1cmVtfS5oLTV7aGVpZ2h0OjEuMjVyZW19LmgtNntoZWlnaHQ6MS41cmVtfS5oLTd7aGVpZ2h0OjEuNzVyZW19LmgtOXtoZWlnaHQ6Mi4yNXJlbX0uaC1cXFsyMHB4XFxde2hlaWdodDoyMHB4fS5oLVxcWzI1MHB4XFxde2hlaWdodDoyNTBweH0uaC1mdWxse2hlaWdodDoxMDAlfS53LTE2e3dpZHRoOjRyZW19LnctMlxcLzN7d2lkdGg6NjYuNjY2NjY3JX0udy03e3dpZHRoOjEuNzVyZW19LnctOXt3aWR0aDoyLjI1cmVtfS53LVxcWzEwMHB4XFxde3dpZHRoOjEwMHB4fS53LVxcWzEyMHB4XFxde3dpZHRoOjEyMHB4fS53LVxcWzJweFxcXXt3aWR0aDoycHh9LnctXFxbMzBweFxcXXt3aWR0aDozMHB4fS53LVxcWzM2cHhcXF17d2lkdGg6MzZweH0udy1cXFs0MDBweFxcXXt3aWR0aDo0MDBweH0udy1cXFtjYWxjXFwoNDAwcHgtMTIwcHhcXClcXF17d2lkdGg6MjgwcHh9LnctZnVsbHt3aWR0aDoxMDAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF17LS10dy10cmFuc2xhdGUteDotNTAlfS4tdHJhbnNsYXRlLXgtXFxbNTBcXCVcXF0sLi10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXt0cmFuc2Zvcm06dHJhbnNsYXRlKHZhcigtLXR3LXRyYW5zbGF0ZS14KSx2YXIoLS10dy10cmFuc2xhdGUteSkpIHJvdGF0ZSh2YXIoLS10dy1yb3RhdGUpKSBza2V3WCh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9Li10cmFuc2xhdGUteS1cXFs1MFxcJVxcXXstLXR3LXRyYW5zbGF0ZS15Oi01MCV9QGtleWZyYW1lcyBwdWxzZXs1MCV7b3BhY2l0eTouNX19LmFuaW1hdGUtcHVsc2V7YW5pbWF0aW9uOnB1bHNlIDJzIGN1YmljLWJlemllciguNCwwLC42LDEpIGluZmluaXRlfS5jdXJzb3ItcG9pbnRlcntjdXJzb3I6cG9pbnRlcn0uc2VsZWN0LW5vbmV7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5mbGV4LWNvbHtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lmp1c3RpZnktc3RhcnR7anVzdGlmeS1jb250ZW50OmZsZXgtc3RhcnR9Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZ2FwLTBcXC41e2dhcDouMTI1cmVtfS5nYXAtMXtnYXA6LjI1cmVtfS5nYXAtMntnYXA6LjVyZW19LmdhcC00e2dhcDoxcmVtfS5nYXAtNXtnYXA6MS4yNXJlbX0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLW1ke2JvcmRlci1yYWRpdXM6LjM3NXJlbX0ucm91bmRlZC14bHtib3JkZXItcmFkaXVzOi43NXJlbX0ucm91bmRlZC1ibC1mdWxse2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLWJyLWZ1bGx7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLXRsLWZ1bGx7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czo5OTk5cHh9LnJvdW5kZWQtdHItZnVsbHtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czo5OTk5cHh9LmJvcmRlciwuYm9yZGVyLVxcWzFweFxcXXtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItXFxbXFwjMDA4RDAxN0ZcXF17Ym9yZGVyLWNvbG9yOiMwMDhkMDE3Zn0uYm9yZGVyLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ib3JkZXItXFxbXFwjNjM2MzYzXFxdey0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LmJnLVxcW1xcIzJEMkQyRFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig0NSA0NSA0NS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzM4MzgzOFxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NiA1NiA1Ni92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ2NDY0NlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MCA3MCA3MC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcIzQ3NDc0N1xcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig3MSA3MSA3MS92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmJnLVxcW1xcI0ZGQTcyNlxcXXstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUgMTY3IDM4L3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX0ucHgtXFxbMnB4XFxde3BhZGRpbmctbGVmdDoycHg7cGFkZGluZy1yaWdodDoycHh9LnB4LVxcWzRweFxcXXtwYWRkaW5nLWxlZnQ6NHB4O3BhZGRpbmctcmlnaHQ6NHB4fS5weS0ye3BhZGRpbmctdG9wOi41cmVtO3BhZGRpbmctYm90dG9tOi41cmVtfS5wdC0xMHtwYWRkaW5nLXRvcDoyLjVyZW19LnRleHQtYmFzZXtmb250LXNpemU6MXJlbTtsaW5lLWhlaWdodDoxLjVyZW19LnRleHQtc217Zm9udC1zaXplOi44NzVyZW07bGluZS1oZWlnaHQ6MS4yNXJlbX0uY2FwaXRhbGl6ZXt0ZXh0LXRyYW5zZm9ybTpjYXBpdGFsaXplfS50ZXh0LVxcW1xcI2ZjZmNmY1xcXXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTIgMjUyIDI1Mi92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0udGV4dC13aGl0ZXstLXR3LXRleHQtb3BhY2l0eToxO2NvbG9yOnJnYigyNTUgMjU1IDI1NS92YXIoLS10dy10ZXh0LW9wYWNpdHkpKX0uYmx1cnstLXR3LWJsdXI6Ymx1cig4cHgpfS5ibHVyLC5ncmF5c2NhbGV7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LmdyYXlzY2FsZXstLXR3LWdyYXlzY2FsZTpncmF5c2NhbGUoMTAwJSl9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0uYmFja2Ryb3AtZmlsdGVyey13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MpIHZhcigtLXR3LWJhY2tkcm9wLWNvbnRyYXN0KSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUpIHZhcigtLXR3LWJhY2tkcm9wLWludmVydCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUpIHZhcigtLXR3LWJhY2tkcm9wLXNlcGlhKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1cikgdmFyKC0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzcykgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSkgdmFyKC0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZSkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0KSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5KSB2YXIoLS10dy1iYWNrZHJvcC1zYXR1cmF0ZSkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEpfS50cmFuc2l0aW9ue3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyO3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLG9wYWNpdHksYm94LXNoYWRvdyx0cmFuc2Zvcm0sZmlsdGVyLGJhY2tkcm9wLWZpbHRlcjt0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZSxvcGFjaXR5LGJveC1zaGFkb3csdHJhbnNmb3JtLGZpbHRlcixiYWNrZHJvcC1maWx0ZXIsLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmR1cmF0aW9uLTEwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xc30uZHVyYXRpb24tMzAwe3RyYW5zaXRpb24tZHVyYXRpb246LjNzfS5kdXJhdGlvbi1cXFsyNTBtc1xcXXt0cmFuc2l0aW9uLWR1cmF0aW9uOi4yNXN9LmFmdGVyXFw6YWJzb2x1dGU6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtwb3NpdGlvbjphYnNvbHV0ZX0uYWZ0ZXJcXDpzdGFydC1cXFsycHhcXF06YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTtpbnNldC1pbmxpbmUtc3RhcnQ6MnB4fS5hZnRlclxcOnRvcC0wXFwuNTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3RvcDouMTI1cmVtfS5hZnRlclxcOmgtNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO2hlaWdodDoxcmVtfS5hZnRlclxcOnctNDphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpO3dpZHRoOjFyZW19LmFmdGVyXFw6cm91bmRlZC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXJhZGl1czo5OTk5cHh9LmFmdGVyXFw6Ym9yZGVyOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7Ym9yZGVyLXdpZHRoOjFweH0uYWZ0ZXJcXDpib3JkZXItZ3JheS0zMDA6YWZ0ZXJ7Y29udGVudDp2YXIoLS10dy1jb250ZW50KTstLXR3LWJvcmRlci1vcGFjaXR5OjE7Ym9yZGVyLWNvbG9yOnJnYigyMDkgMjEzIDIxOS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5hZnRlclxcOmJnLXdoaXRlOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDI1NSAyNTUvdmFyKC0tdHctYmctb3BhY2l0eSkpfS5hZnRlclxcOnRyYW5zaXRpb24tYWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7dHJhbnNpdGlvbi1wcm9wZXJ0eTphbGw7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS5hZnRlclxcOmNvbnRlbnQtXFxbXFwnXFwnXFxdOmFmdGVyey0tdHctY29udGVudDpcIlwiO2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCl9LmhvdmVyXFw6Ym9yZGVyLVxcWzFcXC44cHhcXF06aG92ZXJ7Ym9yZGVyLXdpZHRoOjEuOHB4fS5ob3ZlclxcOmJvcmRlci1cXFtcXCMwMDhEMDFcXF06aG92ZXJ7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoMCAxNDEgMS92YXIoLS10dy1ib3JkZXItb3BhY2l0eSkpfS5ob3ZlclxcOmJnLVxcW1xcIzM5MzkzOVxcXTpob3ZlcnstLXR3LWJnLW9wYWNpdHk6MTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1NyA1NyA1Ny92YXIoLS10dy1iZy1vcGFjaXR5KSl9LmhvdmVyXFw6YmctXFxbXFwjNDc0NzQ3XFxdOmhvdmVyey0tdHctYmctb3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6cmdiKDcxIDcxIDcxL3ZhcigtLXR3LWJnLW9wYWNpdHkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDpiZy1cXFtcXCNGRkE3MjZcXF17LS10dy1iZy1vcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1IDE2NyAzOC92YXIoLS10dy1iZy1vcGFjaXR5KSl9LnBlZXI6Y2hlY2tlZH4ucGVlci1jaGVja2VkXFw6YWZ0ZXJcXDp0cmFuc2xhdGUteC1mdWxsOmFmdGVye2NvbnRlbnQ6dmFyKC0tdHctY29udGVudCk7LS10dy10cmFuc2xhdGUteDoxMDAlO3RyYW5zZm9ybTp0cmFuc2xhdGUodmFyKC0tdHctdHJhbnNsYXRlLXgpLHZhcigtLXR3LXRyYW5zbGF0ZS15KSkgcm90YXRlKHZhcigtLXR3LXJvdGF0ZSkpIHNrZXdYKHZhcigtLXR3LXNrZXcteCkpIHNrZXdZKHZhcigtLXR3LXNrZXcteSkpIHNjYWxlWCh2YXIoLS10dy1zY2FsZS14KSkgc2NhbGVZKHZhcigtLXR3LXNjYWxlLXkpKX0ucGVlcjpjaGVja2Vkfi5wZWVyLWNoZWNrZWRcXDphZnRlclxcOmJvcmRlci13aGl0ZTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctYm9yZGVyLW9wYWNpdHk6MTtib3JkZXItY29sb3I6cmdiKDI1NSAyNTUgMjU1L3ZhcigtLXR3LWJvcmRlci1vcGFjaXR5KSl9LnBlZXI6Zm9jdXN+LnBlZXItZm9jdXNcXDpyaW5nLTF7LS10dy1yaW5nLW9mZnNldC1zaGFkb3c6dmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OnZhcigtLXR3LXJpbmctaW5zZXQpIDAgMCAwIGNhbGMoMXB4ICsgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpKSB2YXIoLS10dy1yaW5nLWNvbG9yKTtib3gtc2hhZG93OnZhcigtLXR3LXJpbmctb2Zmc2V0LXNoYWRvdyksdmFyKC0tdHctcmluZy1zaGFkb3cpLHZhcigtLXR3LXNoYWRvdywwIDAgIzAwMDApfS5wZWVyOmZvY3Vzfi5wZWVyLWZvY3VzXFw6cmluZy1cXFtcXCM2MzYzNjNcXF17LS10dy1yaW5nLW9wYWNpdHk6MTstLXR3LXJpbmctY29sb3I6cmdiKDk5IDk5IDk5L3ZhcigtLXR3LXJpbmctb3BhY2l0eSkpfS5wZWVyOmNoZWNrZWR+LnJ0bFxcOnBlZXItY2hlY2tlZFxcOmFmdGVyXFw6LXRyYW5zbGF0ZS14LWZ1bGw6d2hlcmUoW2Rpcj1ydGxdLFtkaXI9cnRsXSAqKTphZnRlcntjb250ZW50OnZhcigtLXR3LWNvbnRlbnQpOy0tdHctdHJhbnNsYXRlLXg6LTEwMCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tld1godmFyKC0tdHctc2tldy14KSkgc2tld1kodmFyKC0tdHctc2tldy15KSkgc2NhbGVYKHZhcigtLXR3LXNjYWxlLXgpKSBzY2FsZVkodmFyKC0tdHctc2NhbGUteSkpfUBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6ZGFyayl7LmRhcmtcXDpib3JkZXItZ3JheS02MDB7LS10dy1ib3JkZXItb3BhY2l0eToxO2JvcmRlci1jb2xvcjpyZ2IoNzUgODUgOTkvdmFyKC0tdHctYm9yZGVyLW9wYWNpdHkpKX19Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7658.css b/react_frontend/static/react_frontend/css/7658.css new file mode 100644 index 000000000..b9c529241 --- /dev/null +++ b/react_frontend/static/react_frontend/css/7658.css @@ -0,0 +1,3 @@ +#message-container{position:fixed;z-index:100;top:16px;left:50%;transform:translateX(-50%)}#message-container.bottom{bottom:16px;top:unset}.message-scroll{max-height:calc(100vh - 500px);overflow-y:auto} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc2NTguY3NzIiwibWFwcGluZ3MiOiJBQUFBLG1CQUNFLGVBQ0EsWUFDQSxTQUNBLFNBQ0EsMkJBRUYsMEJBQ0UsWUFDQSxVQUdGLGdCQUNFLCtCQUNBLGdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL21lc3NhZ2Vfc3lzdGVtL0FsZXJ0LmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIjbWVzc2FnZS1jb250YWluZXIge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB6LWluZGV4OiAxMDA7XHJcbiAgdG9wOiAxNnB4O1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbn1cclxuI21lc3NhZ2UtY29udGFpbmVyLmJvdHRvbSB7XHJcbiAgYm90dG9tOiAxNnB4O1xyXG4gIHRvcDogdW5zZXQ7XHJcbn1cclxuXHJcbi5tZXNzYWdlLXNjcm9sbCB7XHJcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTtcclxuICBvdmVyZmxvdy15OiBhdXRvO1xyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7820.css b/react_frontend/static/react_frontend/css/7820.css new file mode 100644 index 000000000..62190bb94 --- /dev/null +++ b/react_frontend/static/react_frontend/css/7820.css @@ -0,0 +1,3 @@ +.MuiBackdrop-root{flex-direction:column}.MuiBackdrop-root .backdrop-message{color:#fff;font-size:40px}.MuiBackdrop-root .MuiCircularProgress-root{color:#fff} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc4MjAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGtCQUNFLHNCQUdGLG9DQUNFLFdBQ0EsZUFHRiw0Q0FDRSxXIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL21lc3NhZ2Vfc3lzdGVtL0xvYWRpbmcuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5NdWlCYWNrZHJvcC1yb290IHtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4uTXVpQmFja2Ryb3Atcm9vdCAuYmFja2Ryb3AtbWVzc2FnZSB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG4gIGZvbnQtc2l6ZTogNDBweDtcclxufVxyXG5cclxuLk11aUJhY2tkcm9wLXJvb3QgLk11aUNpcmN1bGFyUHJvZ3Jlc3Mtcm9vdCB7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7826.css b/react_frontend/static/react_frontend/css/7826.css new file mode 100644 index 000000000..b9a5fc14f --- /dev/null +++ b/react_frontend/static/react_frontend/css/7826.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc4MjYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvc2l0aW9uX2NvbnRyb2xfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9Qb3NpdGlvbkNvbnRyb2wuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7841.css b/react_frontend/static/react_frontend/css/7841.css new file mode 100644 index 000000000..254612fe0 --- /dev/null +++ b/react_frontend/static/react_frontend/css/7841.css @@ -0,0 +1,3 @@ +#f1-car{position:absolute;width:61px;height:146px;bottom:54px;left:calc(50% - 30.5px);z-index:4}.laser-beam{position:absolute;background:repeating-linear-gradient(to right, rgb(112, 138, 255), rgb(112, 138, 255) 73px, rgb(100, 198, 255) 73px, rgb(100, 198, 255) 146px);background-size:100% 1px;bottom:180px;left:50%;transform-origin:0% 0%;z-index:3}.arrow{position:absolute;z-index:5;width:36px;bottom:190px;left:calc(50% - 18px);transform-origin:center bottom}.green{filter:invert(82%) sepia(13%) saturate(6762%) hue-rotate(39deg) brightness(105%) contrast(107%)}.red{filter:invert(13%) sepia(87%) saturate(6390%) hue-rotate(343deg) brightness(91%) contrast(89%)}.target-container{position:absolute;z-index:4;width:40px;bottom:190px;left:calc(50% - 20px);transform-origin:center bottom}#target{position:relative;top:0;left:0;z-index:4;width:40px;height:40px}#target::before,#target::after{position:absolute;content:"";width:100%;height:6px;border-radius:6px;background-color:#ff0}#target::before{transform:rotate(45deg)}#target::after{transform:rotate(-45deg)} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc4NDEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLFFBQ0Usa0JBQ0EsV0FDQSxhQUNBLFlBQ0Esd0JBQ0EsVUFHRixZQUNFLGtCQUNBLCtJQU9BLHlCQUNBLGFBQ0EsU0FDQSx1QkFDQSxVQUdGLE9BQ0Usa0JBQ0EsVUFDQSxXQUNBLGFBQ0Esc0JBQ0EsK0JBR0YsT0FDRSxnR0FHRixLQUNFLCtGQUdGLGtCQUNFLGtCQUNBLFVBQ0EsV0FDQSxhQUNBLHNCQUNBLCtCQUdGLFFBQ0Usa0JBQ0EsTUFDQSxPQUNBLFVBQ0EsV0FDQSxZQUdGLCtCQUVJLGtCQUNBLFdBQ0EsV0FDQSxXQUNBLGtCQUNBLHNCQUdKLGdCQUNJLHdCQUdKLGVBQ0kseUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9vYnN0YWNsZV9hdm9pZGFuY2UvcmVhY3QtY29tcG9uZW50cy9jc3MvR1VJQ2FudmFzLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIjZjEtY2FyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDYxcHg7XHJcbiAgaGVpZ2h0OiAxNDZweDtcclxuICBib3R0b206IDU0cHg7XHJcbiAgbGVmdDogY2FsYyg1MCUgLSAzMC41cHgpO1xyXG4gIHotaW5kZXg6IDQ7XHJcbn1cclxuXHJcbi5sYXNlci1iZWFtIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgYmFja2dyb3VuZDogcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudChcclxuICAgIHRvIHJpZ2h0LFxyXG4gICAgcmdiKDExMiwgMTM4LCAyNTUpLFxyXG4gICAgcmdiKDExMiwgMTM4LCAyNTUpIDczcHgsXHJcbiAgICByZ2IoMTAwLCAxOTgsIDI1NSkgNzNweCxcclxuICAgIHJnYigxMDAsIDE5OCwgMjU1KSAxNDZweFxyXG4gICk7XHJcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIDFweDtcclxuICBib3R0b206IDE4MHB4O1xyXG4gIGxlZnQ6IDUwJTtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOiAwJSAwJTtcclxuICB6LWluZGV4OiAzO1xyXG59XHJcblxyXG4uYXJyb3cge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB6LWluZGV4OiA1O1xyXG4gIHdpZHRoOiAzNnB4O1xyXG4gIGJvdHRvbTogMTkwcHg7XHJcbiAgbGVmdDogY2FsYyg1MCUgLSAxOHB4KTtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgYm90dG9tO1xyXG59XHJcblxyXG4uZ3JlZW4ge1xyXG4gIGZpbHRlcjogaW52ZXJ0KDgyJSkgc2VwaWEoMTMlKSBzYXR1cmF0ZSg2NzYyJSkgaHVlLXJvdGF0ZSgzOWRlZykgYnJpZ2h0bmVzcygxMDUlKSBjb250cmFzdCgxMDclKTtcclxufVxyXG5cclxuLnJlZCB7XHJcbiAgZmlsdGVyOiBpbnZlcnQoMTMlKSBzZXBpYSg4NyUpIHNhdHVyYXRlKDYzOTAlKSBodWUtcm90YXRlKDM0M2RlZykgYnJpZ2h0bmVzcyg5MSUpIGNvbnRyYXN0KDg5JSk7XHJcbn1cclxuXHJcbi50YXJnZXQtY29udGFpbmVyIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogNDtcclxuICB3aWR0aDogNDBweDtcclxuICBib3R0b206IDE5MHB4O1xyXG4gIGxlZnQ6IGNhbGMoNTAlIC0gMjBweCk7XHJcbiAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGJvdHRvbTtcclxufVxyXG5cclxuI3RhcmdldCB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIHotaW5kZXg6IDQ7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG59XHJcblxyXG4jdGFyZ2V0OjpiZWZvcmUsXHJcbiN0YXJnZXQ6OmFmdGVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDZweDsgLyogY3Jvc3MgdGhpY2tuZXNzICovXHJcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7XHJcbn1cclxuXHJcbiN0YXJnZXQ6OmJlZm9yZSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbiN0YXJnZXQ6OmFmdGVyIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/7903.css b/react_frontend/static/react_frontend/css/7903.css new file mode 100644 index 000000000..d0e22dc44 --- /dev/null +++ b/react_frontend/static/react_frontend/css/7903.css @@ -0,0 +1,3 @@ +#car{position:absolute;width:91px;height:100px;top:calc(50% - 68px);left:calc(50% - 45.5px);z-index:2} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzc5MDMuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEtBQ0Usa0JBQ0EsV0FDQSxhQUNBLHFCQUNBLHdCQUNBLFUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9hdXRvcGFya2luZy9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIiNjYXIge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogOTFweDtcclxuICBoZWlnaHQ6IDEwMHB4O1xyXG4gIHRvcDogY2FsYyg1MCUgLSA2OHB4KTtcclxuICBsZWZ0OiBjYWxjKDUwJSAtIDQ1LjVweCk7XHJcbiAgei1pbmRleDogMlxyXG59XHJcblxyXG4vKiAubGFzZXItYmVhbSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIGJhY2tncm91bmQ6IHJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoXHJcbiAgICB0byByaWdodCxcclxuICAgIHJnYigxMTIsIDEzOCwgMjU1KSxcclxuICAgIHJnYigxMTIsIDEzOCwgMjU1KSA3M3B4LFxyXG4gICAgcmdiKDEwMCwgMTk4LCAyNTUpIDczcHgsXHJcbiAgICByZ2IoMTAwLCAxOTgsIDI1NSkgMTQ2cHhcclxuICApO1xyXG4gIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxcHg7XHJcbiAgYm90dG9tOiA1MCU7XHJcbiAgbGVmdDogNTAlO1xyXG4gIHRyYW5zZm9ybS1vcmlnaW46IDAlIDAlO1xyXG4gIHotaW5kZXg6IDM7XHJcbn0gKi9cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8038.css b/react_frontend/static/react_frontend/css/8038.css new file mode 100644 index 000000000..6aea89997 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8038.css @@ -0,0 +1,3 @@ +.monaco-editor .scrollbar{padding:0 !important}.glyph-indicator{background:red;width:8px !important;height:8px !important;border-radius:20px !important;padding-left:8px !important}.overlayWidgets .editor-widget{display:flex !important;flex-direction:column !important} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzgwMzguY3NzIiwibWFwcGluZ3MiOiJBQUFBLDBCQUNFLHFCQUdGLGlCQUNFLGVBQ0EscUJBQ0Esc0JBQ0EsOEJBQ0EsNEJBR0YsK0JBQ0Usd0JBQ0EsaUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvZWRpdG9ycy9Nb25hY29FZGl0b3IuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5tb25hY28tZWRpdG9yIC5zY3JvbGxiYXIge1xyXG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmdseXBoLWluZGljYXRvciB7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDAsIDAsIDEpO1xyXG4gIHdpZHRoOiA4cHggIWltcG9ydGFudDtcclxuICBoZWlnaHQ6IDhweCAhaW1wb3J0YW50O1xyXG4gIGJvcmRlci1yYWRpdXM6IDIwcHggIWltcG9ydGFudDtcclxuICBwYWRkaW5nLWxlZnQ6IDhweCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ub3ZlcmxheVdpZGdldHMgLmVkaXRvci13aWRnZXQge1xyXG4gIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8160.css b/react_frontend/static/react_frontend/css/8160.css new file mode 100644 index 000000000..8f5cc7ce1 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8160.css @@ -0,0 +1,3 @@ +.hidden,.visible{transition:opacity .3s ease;display:flex;gap:5px;padding-left:25px;padding-right:5px;color:blue}.hidden{opacity:0;pointer-events:none}.visible{opacity:1} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzgxNjAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUVFLDRCQUNBLGFBQ0EsUUFDQSxrQkFDQSxrQkFDQSxXQUdGLFFBQ0UsVUFDQSxvQkFHRixTQUNFLFUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvdmlzdWFsaXplcnMvRnJlcXVlbmNpZXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5oaWRkZW4sXHJcbi52aXNpYmxlIHtcclxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogNXB4O1xyXG4gIHBhZGRpbmctbGVmdDogMjVweDtcclxuICBwYWRkaW5nLXJpZ2h0OiA1cHg7XHJcbiAgY29sb3I6IGJsdWU7XHJcbn1cclxuXHJcbi5oaWRkZW4ge1xyXG4gIG9wYWNpdHk6IDA7XHJcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XHJcbn1cclxuXHJcbi52aXNpYmxlIHtcclxuICBvcGFjaXR5OiAxO1xyXG4gIFxyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8198.css b/react_frontend/static/react_frontend/css/8198.css new file mode 100644 index 000000000..ce24bbcff --- /dev/null +++ b/react_frontend/static/react_frontend/css/8198.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzgxOTguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Zpc3VhbF9sYW5kZXJfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9WaXN1YWxMYW5kZXIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8201.css b/react_frontend/static/react_frontend/css/8201.css new file mode 100644 index 000000000..306365539 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8201.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzgyMDEuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2F1dG9wYXJraW5nL3JlYWN0LWNvbXBvbmVudHMvY3NzL0F1dG9wYXJraW5nUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8256.css b/react_frontend/static/react_frontend/css/8256.css new file mode 100644 index 000000000..90040483a --- /dev/null +++ b/react_frontend/static/react_frontend/css/8256.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:50%;height:100%;max-height:100%}.image{position:absolute;width:50%;height:100%}#real-pos{position:absolute;z-index:3;width:20px;height:20px;border-radius:10px;transition:left .1s ease-out,top .1s ease-out}#noisy-pos{position:absolute;z-index:3;width:20px;height:20px;border-radius:10px;transition:left .1s ease-out,top .1s ease-out}#user-pos{position:absolute;z-index:3;width:20px;height:20px;border-radius:10px;transition:left .1s ease-out,top .1s ease-out}.beacon{position:absolute;border:2px solid #fff;cursor:pointer;z-index:5}.beacon-vert{width:0px;height:20px;translate:0 -10px}.beacon-hor{width:20px;height:0px;translate:-10px} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzgyNTYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FDQSxVQUNBLFlBQ0EsZ0JBR0YsT0FDRSxrQkFDQSxVQUNBLFlBR0YsVUFDRSxrQkFDQSxVQUNBLFdBQ0EsWUFDQSxtQkFDQSw4Q0FHRixXQUNFLGtCQUNBLFVBQ0EsV0FDQSxZQUNBLG1CQUNBLDhDQUdGLFVBQ0Usa0JBQ0EsVUFDQSxXQUNBLFlBQ0EsbUJBQ0EsOENBR0YsUUFDRSxrQkFDQSxzQkFDQSxlQUNBLFVBR0YsYUFDRSxVQUNBLFlBQ0Esa0JBR0YsWUFDRSxXQUNBLFdBQ0EsZ0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9tYXJrZXJfdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL2Nzcy9HVUlDYW52YXMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5leGVyY2lzZS1jYW52YXMge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxuICBtYXgtaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4uaW1hZ2Uge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogNTAlO1xyXG4gIGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI3JlYWwtcG9zIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMztcclxuICB3aWR0aDogMjBweDtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbiNub2lzeS1wb3Mge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB6LWluZGV4OiAzO1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXRcclxufVxyXG5cclxuI3VzZXItcG9zIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgei1pbmRleDogMztcclxuICB3aWR0aDogMjBweDtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbi5iZWFjb24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBib3JkZXI6IDJweCBzb2xpZCByZ2IoMjU1LCAyNTUsIDI1NSk7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHotaW5kZXg6IDU7XHJcbn1cclxuXHJcbi5iZWFjb24tdmVydCB7XHJcbiAgd2lkdGg6IDBweDtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgdHJhbnNsYXRlOiAwIC0xMHB4O1xyXG59XHJcblxyXG4uYmVhY29uLWhvciB7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiAwcHg7XHJcbiAgdHJhbnNsYXRlOiAtMTBweDtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8496.css b/react_frontend/static/react_frontend/css/8496.css new file mode 100644 index 000000000..adf4ac531 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8496.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzg0OTYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Zpc3VhbF9sYW5kZXJfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9WaXN1YWxMYW5kZXIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8590.css b/react_frontend/static/react_frontend/css/8590.css new file mode 100644 index 000000000..b66e91007 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8590.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzg1OTAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhc2VyX21hcHBpbmcvcmVhY3QtY29tcG9uZW50cy9jc3MvTGFzZXJNYXBwaW5nLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8724.css b/react_frontend/static/react_frontend/css/8724.css new file mode 100644 index 000000000..ddf1809f9 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8724.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzg3MjQuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2d5bWtoYW5hX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9jc3MvRHJvbmVHeW1raGFuYS5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8725.css b/react_frontend/static/react_frontend/css/8725.css new file mode 100644 index 000000000..0e41d73df --- /dev/null +++ b/react_frontend/static/react_frontend/css/8725.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:50%;height:100%;max-height:100%}.overlay{position:absolute;width:50%;height:100%;max-height:100%;margin:0 0 0 0;background:rgba(0,0,0,0) !important;z-index:1}#vacuum-pos{position:absolute;z-index:3;width:20px;height:20px;border-radius:20px;background-color:#353535;transition:left .1s ease-out,top .1s ease-out}#map-img{width:100%;height:100%}.arrow{position:relative;width:20px;height:20px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:4;margin-left:-10px}.arrow:after{position:absolute;display:block;content:"";color:red;width:20px;height:15px;top:-4px;border-bottom:solid 2px;transform:translatex(4px)}.arrow:before{position:absolute;display:block;content:"";color:red;width:8px;height:8px;border-top:solid 2px;border-left:solid 2px;top:50%;left:2px;transform-origin:0% 0%;transform:rotatez(-45deg)} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzg3MjUuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FFQSxVQUNBLFlBQ0EsZ0JBR0YsU0FDRSxrQkFDQSxVQUNBLFlBQ0EsZ0JBQ0EsZUFDQSxvQ0FDQSxVQUdGLFlBQ0Usa0JBQ0EsVUFDQSxXQUNBLFlBQ0EsbUJBQ0EseUJBQ0EsOENBR0YsU0FDRSxXQUNBLFlBR0YsT0FDRSxrQkFDQSxXQUNBLFlBQ0EsZUFFQSw4Q0FDQSxnQkFDQSxVQUNBLGtCQUdGLGFBQ0Usa0JBQ0EsY0FDQSxXQUNBLFVBQ0EsV0FDQSxZQUVBLFNBQ0Esd0JBQ0EsMEJBR0YsY0FDRSxrQkFDQSxjQUNBLFdBQ0EsVUFDQSxVQUNBLFdBRUEscUJBQ0Esc0JBQ0EsUUFDQSxTQUNBLHVCQUNBLDBCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmFjdXVtX2NsZWFuZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvY3NzL0dVSUNhbnZhcy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLmV4ZXJjaXNlLWNhbnZhcyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIC8qIGJvcmRlcjogMnB4IHNvbGlkICNkM2QzZDM7ICovXHJcbiAgd2lkdGg6IDUwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgbWF4LWhlaWdodDogMTAwJTtcclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTsgIFxyXG4gIHdpZHRoOiA1MCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG1heC1oZWlnaHQ6IDEwMCU7XHJcbiAgbWFyZ2luOiAwIDAgMCAwO1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcbiAgei1pbmRleDogMTtcclxufVxyXG5cclxuI3ZhY3V1bS1wb3Mge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB6LWluZGV4OiAzO1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYig1MywgNTMsIDUzKTtcclxuICB0cmFuc2l0aW9uOiBsZWZ0IDAuMXMgZWFzZS1vdXQsIHRvcCAwLjFzIGVhc2Utb3V0XHJcbn1cclxuXHJcbiNtYXAtaW1nIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi5hcnJvd3tcclxuICBwb3NpdGlvbjpyZWxhdGl2ZTtcclxuICB3aWR0aDoyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBjdXJzb3I6cG9pbnRlcjtcclxuLyogICBib3JkZXI6c29saWQgMXB4IHdoaXRlOyAqL1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXQ7XHJcbiAgb3ZlcmZsb3c6aGlkZGVuO1xyXG4gIHotaW5kZXg6IDQ7XHJcbiAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xyXG59XHJcblxyXG4uYXJyb3c6YWZ0ZXJ7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgY29sb3I6cmdiKDI1NSwgMCwgMCk7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiAxNXB4O1xyXG4vKiAgIGJvcmRlcjpzb2xpZCAxcHg7ICAqL1xyXG4gIHRvcDotNHB4O1xyXG4gIGJvcmRlci1ib3R0b206c29saWQgMnB4O1xyXG4gIHRyYW5zZm9ybTp0cmFuc2xhdGV4KDRweCk7XHJcbn1cclxuXHJcbi5hcnJvdzpiZWZvcmV7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgY29sb3I6cmdiKDI1NSwgMCwgMCk7XHJcbiAgd2lkdGg6IDhweDtcclxuICBoZWlnaHQ6IDhweDtcclxuLyogICBib3JkZXI6c29saWQgMXB4OyAgKi9cclxuICBib3JkZXItdG9wOnNvbGlkIDJweDtcclxuICBib3JkZXItbGVmdDpzb2xpZCAycHg7XHJcbiAgdG9wOjUwJTtcclxuICBsZWZ0OjJweDtcclxuICB0cmFuc2Zvcm0tb3JpZ2luOjAlIDAlO1xyXG4gIHRyYW5zZm9ybTpyb3RhdGV6KC00NWRlZyk7XHJcblxyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/8732.css b/react_frontend/static/react_frontend/css/8732.css new file mode 100644 index 000000000..95a110460 --- /dev/null +++ b/react_frontend/static/react_frontend/css/8732.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzg3MzIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL29ic3RhY2xlX2F2b2lkYW5jZS9yZWFjdC1jb21wb25lbnRzL2Nzcy9PYnN0YWNsZUF2b2lkYW5jZVJSLmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIqIHtcclxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbn1cclxuXHJcbmJvZHksIGh0bWwge1xyXG4gICAgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDA7IGxlZnQ6IDA7IGJvdHRvbTogMDsgcmlnaHQ6IDA7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50ICNjb250ZW50LWV4ZXJjaXNlIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/879.css b/react_frontend/static/react_frontend/css/879.css new file mode 100644 index 000000000..114f53c7a --- /dev/null +++ b/react_frontend/static/react_frontend/css/879.css @@ -0,0 +1,3 @@ +@font-face{font-family:"Silkscreen";font-style:normal;font-weight:400;font-display:swap;src:url("./../Silkscreen-Regular.ttf") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}.nrP5YmrKd6VTDPHqAYnS{display:flex;flex-direction:column;width:100%;height:100%}.vUKm8VvZI0pEreRzLBVt{flex:1;position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center}.AlTeRtfBHAEatLH85NDV{width:480px;height:360px}.IqcT3zQvqRVmncDy1c53{width:500px;height:auto;max-width:100%;object-fit:contain}.IqOZ1MXzdQIrWo13sFXJ{position:absolute;display:flex;flex-direction:column;gap:10px;justify-content:center;align-items:center}.RwSvwiXRkbzR7Qcc3yBE{color:#fb2b36}.gFuffd9Xm8AycxqnZ_PH{position:absolute;top:0;right:0;border:.5px solid #414141;padding:4px;border-radius:5px;background-color:#dbdbdb;margin-top:12px;user-select:none}.Sxpj85zKecdKfdUg8A6T{display:flex;justify-content:center;align-items:center;width:44px;height:44px}.aTYGra671ZmXo0E3ljyB{display:flex;flex-direction:column;align-items:center;cursor:pointer;width:44px}.Ivx30CfGkCcyZyUZbyJ7{display:flex;flex-direction:column;justify-content:center;align-items:center;border-bottom:.5px solid;font-family:"Silkscreen-Regular";padding-bottom:4px}.Ivx30CfGkCcyZyUZbyJ7>p{font-size:18px}.Ivx30CfGkCcyZyUZbyJ7>span{font-size:14px}.Lt6aIpcgjGTXa_fnFqXy{display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Silkscreen-Regular";padding-top:4px}.Lt6aIpcgjGTXa_fnFqXy>div{display:flex;align-items:center;gap:2px}.Lt6aIpcgjGTXa_fnFqXy>div>p{font-size:18px}.Lt6aIpcgjGTXa_fnFqXy>div>span{font-size:12px}.Lt6aIpcgjGTXa_fnFqXy>span{font-size:14px}.KAGSAD0HMVWN5A8b5sjC{flex:0 1 10px;background-color:#fff}.fx_XWDPxdh6MjZ0ufmCd{flex:1;position:relative;display:flex;justify-content:center;align-items:center;cursor:pointer} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzg3OS5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsV0FDRSx5QkFDQSxrQkFDQSxnQkFDQSxrQkFDQSx1REFDQSxpTUFLRixzQkFDRSxhQUNBLHNCQUNBLFdBQ0EsWUFJRixzQkFDRSxPQUNBLGtCQUNBLGFBQ0Esc0JBQ0EsdUJBQ0EsbUJBR0Ysc0JBQ0UsWUFDQSxhQUlGLHNCQUNFLFlBQ0EsWUFDQSxlQUNBLG1CQUdGLHNCQUNFLGtCQUNBLGFBQ0Esc0JBQ0EsU0FDQSx1QkFDQSxtQkFJRixzQkFDRSxjQUlGLHNCQUNFLGtCQUNBLE1BQ0EsUUFDQSwwQkFDQSxZQUNBLGtCQUNBLHlCQUNBLGdCQUNBLGlCQUdGLHNCQUNFLGFBQ0EsdUJBQ0EsbUJBQ0EsV0FDQSxZQUVGLHNCQUNFLGFBQ0Esc0JBQ0EsbUJBQ0EsZUFDQSxXQUdGLHNCQUNFLGFBQ0Esc0JBQ0EsdUJBQ0EsbUJBQ0EseUJBQ0EsaUNBQ0EsbUJBR0Ysd0JBQ0UsZUFHRiwyQkFDRSxlQUdGLHNCQUNFLGFBQ0Esc0JBQ0EsdUJBQ0EsbUJBQ0EsaUNBQ0EsZ0JBR0YsMEJBQ0UsYUFDQSxtQkFDQSxRQUdGLDRCQUNFLGVBR0YsK0JBQ0UsZUFHRiwyQkFDRSxlQUlGLHNCQUNFLGNBQ0Esc0JBSUYsc0JBQ0UsT0FDQSxrQkFDQSxhQUNBLHVCQUNBLG1CQUNBLGUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvY2FtZXJhX2RyaXZlci9jYW1lcmFfZHJpdmVyLm1vZHVsZS5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGZvbnQtZmFjZSB7XHJcbiAgZm9udC1mYW1pbHk6IFwiU2lsa3NjcmVlblwiO1xyXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG4gIGZvbnQtZGlzcGxheTogc3dhcDtcclxuICBzcmM6IHVybChcIi4vLi4vU2lsa3NjcmVlbi1SZWd1bGFyLnR0ZlwiKSBmb3JtYXQoXCJ3b2ZmMlwiKTtcclxuICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDJCQSwgVSswMkJELTAyQzUsIFUrMDJDNy0wMkNDLCBVKzAyQ0UtMDJENywgVSswMkRELTAyRkYsXHJcbiAgICBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsIFUrMUVGMi0xRUZGLCBVKzIwMjAsXHJcbiAgICBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGO1xyXG59XHJcbi8qIGNhbWVyYSBjb250YWluZXIgKi9cclxuLmNhbWVyYV9jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbi8qIHVwcGVyIHNlY3Rpb24gKi9cclxuLnZpZGVvX3NlY3Rpb24ge1xyXG4gIGZsZXg6IDE7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcbi8qIHZpZGVvICovXHJcbi5jYW1lcmFfdmlkZW8ge1xyXG4gIHdpZHRoOiA0ODBweDtcclxuICBoZWlnaHQ6IDM2MHB4O1xyXG59XHJcblxyXG4vKiBvdXRwdXQgaW1hZ2UgICovXHJcbi5vdXRwdXRfaW1hZ2Uge1xyXG4gIHdpZHRoOiA1MDBweDtcclxuICBoZWlnaHQ6IGF1dG87XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbn1cclxuLyogQ2FtZXJhIEVycm9yICovXHJcbi5jYW1lcmFfZXJyb3Ige1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAxMHB4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi8qIGNhbWVyYSBlcnJvciBtc2cgKi9cclxuLmNhbWVyYV9lcnJvcl9tc2cge1xyXG4gIGNvbG9yOiAjZmIyYjM2O1xyXG59XHJcblxyXG4vKiBzdGF0aWNzICovXHJcbi5jYW1lcmFfc3RhdGljX3NlY3Rpb24ge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYm9yZGVyOiAwLjVweCBzb2xpZCAjNDE0MTQxO1xyXG4gIHBhZGRpbmc6IDRweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RiZGJkYjtcclxuICBtYXJnaW4tdG9wOiAxMnB4O1xyXG4gIHVzZXItc2VsZWN0OiBub25lO1xyXG59XHJcblxyXG4uY2FtZXJhX3N0YXRpY19pY29uIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgd2lkdGg6IDQ0cHg7XHJcbiAgaGVpZ2h0OiA0NHB4O1xyXG59XHJcbi5jYW1lcmFfc3RhdGljX2JveCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHdpZHRoOiA0NHB4O1xyXG59XHJcbi8qIGZwcyAqL1xyXG4uY2FtZXJhX3N0YXRpY19mcHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlci1ib3R0b206IDAuNXB4IHNvbGlkO1xyXG4gIGZvbnQtZmFtaWx5OiBcIlNpbGtzY3JlZW4tUmVndWxhclwiO1xyXG4gIHBhZGRpbmctYm90dG9tOiA0cHg7XHJcbn1cclxuXHJcbi5jYW1lcmFfc3RhdGljX2ZwcyA+IHAge1xyXG4gIGZvbnQtc2l6ZTogMThweDtcclxufVxyXG5cclxuLmNhbWVyYV9zdGF0aWNfZnBzID4gc3BhbiB7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG59XHJcbi8qIGxhdGVuY3kgKi9cclxuLmNhbWVyYV9zdGF0aWNfbGF0IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBmb250LWZhbWlseTogXCJTaWxrc2NyZWVuLVJlZ3VsYXJcIjtcclxuICBwYWRkaW5nLXRvcDogNHB4O1xyXG59XHJcblxyXG4uY2FtZXJhX3N0YXRpY19sYXQgPiBkaXYge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBnYXA6IDJweDtcclxufVxyXG5cclxuLmNhbWVyYV9zdGF0aWNfbGF0ID4gZGl2ID4gcCB7XHJcbiAgZm9udC1zaXplOiAxOHB4O1xyXG59XHJcblxyXG4uY2FtZXJhX3N0YXRpY19sYXQgPiBkaXYgPiBzcGFuIHtcclxuICBmb250LXNpemU6IDEycHg7XHJcbn1cclxuXHJcbi5jYW1lcmFfc3RhdGljX2xhdCA+IHNwYW4ge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuLyogaG9yaXpvbnRhbCBwYXJpdGlvbiAqL1xyXG4uY2FtZXJhX3BhcnRpdGlvbiB7XHJcbiAgZmxleDogMCAxIDEwcHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxufVxyXG5cclxuLyogY2FtZXJhIG91dHB1dCAqL1xyXG4uY2FtZXJhX291dHB1dF9zZWN0aW9uIHtcclxuICBmbGV4OiAxO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9294.css b/react_frontend/static/react_frontend/css/9294.css new file mode 100644 index 000000000..46f070c22 --- /dev/null +++ b/react_frontend/static/react_frontend/css/9294.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzkyOTQuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19yb2FkL3JlYWN0LWNvbXBvbmVudHMvY3NzL2ZvbGxvd1JvYWRSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9359.css b/react_frontend/static/react_frontend/css/9359.css new file mode 100644 index 000000000..b8ddba57c --- /dev/null +++ b/react_frontend/static/react_frontend/css/9359.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzkzNTkuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Jlc2N1ZV9wZW9wbGVfY2xhc3NpYy9yZWFjdC1jb21wb25lbnRzL2Nzcy9yZXNjdWVQZW9wbGVSUi5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9390.css b/react_frontend/static/react_frontend/css/9390.css new file mode 100644 index 000000000..a63766e87 --- /dev/null +++ b/react_frontend/static/react_frontend/css/9390.css @@ -0,0 +1,3 @@ +.exercise-canvas{position:absolute;top:0;left:0;width:100%;height:100%;max-height:100%}#vehic-pos{position:absolute;width:20px;height:20px;border-radius:5px;background-color:#c80000;border:1px solid #000;z-index:4;transition:left .1s ease-out,top .1s ease-out}.lifting{border:2px solid lime !important}.lifting-ack{border:4px solid lime !important}#vehic-pos-ack{position:absolute;width:20px;height:50px;border-radius:5px;background-color:#817f7c;border:3px solid #ff9800;z-index:4;transition:left .1s ease-out,top .1s ease-out}.arrow{position:relative;width:20px;height:20px;cursor:pointer;transition:left .1s ease-out,top .1s ease-out;overflow:hidden;z-index:4;margin-left:-10px}.arrow:after{position:absolute;display:block;content:"";color:#000;width:20px;height:15px;top:-5px;border-bottom:solid 2px;transform:translatex(4px)}.arrow:before{position:absolute;display:block;content:"";color:#000;width:8px;height:8px;border-top:solid 2px;border-left:solid 2px;top:9px;left:1px;transform-origin:0% 0%;transform:rotatez(-45deg)}.target{position:absolute;height:20px;width:20px;z-index:3}.target::before,.target::after{position:absolute;content:"";width:100%;height:2px;border-radius:6px;background-color:blue}.target::before{transform:rotate(45deg)}.target::after{transform:rotate(-45deg)}.arrow-ack{margin-top:40px;margin-left:-2px;transform:rotate(-90deg)} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzkzOTAuY3NzIiwibWFwcGluZ3MiOiJBQUFBLGlCQUNFLGtCQUNBLE1BQ0EsT0FFQSxXQUNBLFlBQ0EsZ0JBR0YsV0FDRSxrQkFDQSxXQUNBLFlBQ0Esa0JBQ0EseUJBQ0Esc0JBQ0EsVUFDQSw4Q0FHRixTQUNFLGlDQUdGLGFBQ0UsaUNBR0YsZUFDRSxrQkFDQSxXQUNBLFlBQ0Esa0JBQ0EseUJBQ0EseUJBQ0EsVUFDQSw4Q0FHRixPQUNFLGtCQUNBLFdBQ0EsWUFDQSxlQUVBLDhDQUNBLGdCQUNBLFVBQ0Esa0JBR0YsYUFDRSxrQkFDQSxjQUNBLFdBQ0EsV0FDQSxXQUNBLFlBRUEsU0FDQSx3QkFDQSwwQkFHRixjQUNFLGtCQUNBLGNBQ0EsV0FDQSxXQUNBLFVBQ0EsV0FFQSxxQkFDQSxzQkFDQSxRQUNBLFNBQ0EsdUJBQ0EsMEJBR0YsUUFDRSxrQkFDQSxZQUNBLFdBQ0EsVUFHRiwrQkFFSSxrQkFDQSxXQUNBLFdBQ0EsV0FDQSxrQkFDQSxzQkFHSixnQkFDSSx3QkFHSixlQUNJLHlCQUdKLFdBQ0ksZ0JBQ0EsaUJBQ0EseUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9hbWF6b25fd2FyZWhvdXNlL3JlYWN0LWNvbXBvbmVudHMvY3NzL0dVSUNhbnZhcy5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLmV4ZXJjaXNlLWNhbnZhcyB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHRvcDogMDtcclxuICBsZWZ0OiAwO1xyXG4gIC8qIGJvcmRlcjogMnB4IHNvbGlkICNkM2QzZDM7ICovXHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG1heC1oZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiN2ZWhpYy1wb3Mge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB3aWR0aDogMjBweDtcclxuICBoZWlnaHQ6IDIwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigyMDAsIDAsIDApO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrO1xyXG4gIHotaW5kZXg6IDQ7XHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dFxyXG59XHJcblxyXG4ubGlmdGluZyB7XHJcbiAgYm9yZGVyOiAycHggc29saWQgcmdiKDAsIDI1NSwgMCkgIWltcG9ydGFudDtcclxufVxyXG5cclxuLmxpZnRpbmctYWNrIHtcclxuICBib3JkZXI6IDRweCBzb2xpZCByZ2IoMCwgMjU1LCAwKSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4jdmVoaWMtcG9zLWFjayB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogNTBweDtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzgxN2Y3YztcclxuICBib3JkZXI6IDNweCBzb2xpZCByZ2IoMjU1IDE1MiAwKTtcclxuICB6LWluZGV4OiA0O1xyXG4gIHRyYW5zaXRpb246IGxlZnQgMC4xcyBlYXNlLW91dCwgdG9wIDAuMXMgZWFzZS1vdXRcclxufVxyXG5cclxuLmFycm93e1xyXG4gIHBvc2l0aW9uOnJlbGF0aXZlO1xyXG4gIHdpZHRoOjIwcHg7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIGN1cnNvcjpwb2ludGVyO1xyXG4vKiAgIGJvcmRlcjpzb2xpZCAxcHggd2hpdGU7ICovXHJcbiAgdHJhbnNpdGlvbjogbGVmdCAwLjFzIGVhc2Utb3V0LCB0b3AgMC4xcyBlYXNlLW91dDtcclxuICBvdmVyZmxvdzpoaWRkZW47XHJcbiAgei1pbmRleDogNDtcclxuICBtYXJnaW4tbGVmdDogLTEwcHg7XHJcbn1cclxuXHJcbi5hcnJvdzphZnRlcntcclxuICBwb3NpdGlvbjphYnNvbHV0ZTtcclxuICBkaXNwbGF5OmJsb2NrO1xyXG4gIGNvbnRlbnQ6XCJcIjtcclxuICBjb2xvcjpyZ2IoMCwgMCwgMCk7XHJcbiAgd2lkdGg6IDIwcHg7XHJcbiAgaGVpZ2h0OiAxNXB4O1xyXG4vKiAgIGJvcmRlcjpzb2xpZCAxcHg7ICAqL1xyXG4gIHRvcDotNXB4O1xyXG4gIGJvcmRlci1ib3R0b206c29saWQgMnB4O1xyXG4gIHRyYW5zZm9ybTp0cmFuc2xhdGV4KDRweCk7XHJcbn1cclxuXHJcbi5hcnJvdzpiZWZvcmV7XHJcbiAgcG9zaXRpb246YWJzb2x1dGU7XHJcbiAgZGlzcGxheTpibG9jaztcclxuICBjb250ZW50OlwiXCI7XHJcbiAgY29sb3I6cmdiKDAsIDAsIDApO1xyXG4gIHdpZHRoOiA4cHg7XHJcbiAgaGVpZ2h0OiA4cHg7XHJcbi8qICAgYm9yZGVyOnNvbGlkIDFweDsgICovXHJcbiAgYm9yZGVyLXRvcDpzb2xpZCAycHg7XHJcbiAgYm9yZGVyLWxlZnQ6c29saWQgMnB4O1xyXG4gIHRvcDo5cHg7XHJcbiAgbGVmdDoxcHg7XHJcbiAgdHJhbnNmb3JtLW9yaWdpbjowJSAwJTtcclxuICB0cmFuc2Zvcm06cm90YXRleigtNDVkZWcpO1xyXG59XHJcblxyXG4udGFyZ2V0IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgaGVpZ2h0OiAyMHB4O1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIHotaW5kZXg6IDM7XHJcbn1cclxuXHJcbi50YXJnZXQ6OmJlZm9yZSxcclxuLnRhcmdldDo6YWZ0ZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgY29udGVudDogJyc7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMnB4OyAvKiBjcm9zcyB0aGlja25lc3MgKi9cclxuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7XHJcbn1cclxuXHJcbi50YXJnZXQ6OmJlZm9yZSB7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbi50YXJnZXQ6OmFmdGVyIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XHJcbn1cclxuXHJcbi5hcnJvdy1hY2t7XHJcbiAgICBtYXJnaW4tdG9wOiA0MHB4O1xyXG4gICAgbWFyZ2luLWxlZnQ6IC0ycHg7XHJcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/945.css b/react_frontend/static/react_frontend/css/945.css new file mode 100644 index 000000000..23ea6a855 --- /dev/null +++ b/react_frontend/static/react_frontend/css/945.css @@ -0,0 +1,3 @@ +.monaco-editor .scrollbar{padding:0 !important}.glyph-indicator{background:red;width:8px !important;height:8px !important;border-radius:20px !important;padding-left:8px !important}.overlayWidgets .editor-widget{display:flex !important;flex-direction:column !important} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzk0NS5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsMEJBQ0UscUJBR0YsaUJBQ0UsZUFDQSxxQkFDQSxzQkFDQSw4QkFDQSw0QkFHRiwrQkFDRSx3QkFDQSxpQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9lZGl0b3JzL01vbmFjb0VkaXRvci5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLm1vbmFjby1lZGl0b3IgLnNjcm9sbGJhciB7XHJcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4uZ2x5cGgtaW5kaWNhdG9yIHtcclxuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMSk7XHJcbiAgd2lkdGg6IDhweCAhaW1wb3J0YW50O1xyXG4gIGhlaWdodDogOHB4ICFpbXBvcnRhbnQ7XHJcbiAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xyXG4gIHBhZGRpbmctbGVmdDogOHB4ICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5vdmVybGF5V2lkZ2V0cyAuZWRpdG9yLXdpZGdldCB7XHJcbiAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9516.css b/react_frontend/static/react_frontend/css/9516.css new file mode 100644 index 000000000..38cbe3d53 --- /dev/null +++ b/react_frontend/static/react_frontend/css/9516.css @@ -0,0 +1,3 @@ +.ready{color:#000;background-color:#4caf50;box-shadow:0px 2px 3px -1px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 1px 8px 0px rgba(0,0,0,.12);padding:10px 30px;text-align:center;min-width:64px;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-radius:5px;letter-spacing:.02857em;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000}.waiting{color:#000;background-color:#f57f51;min-width:64px;padding:10px 30px;text-align:center;transition:background-color .3s ease,box-shadow .3s ease,border .3s ease;line-height:1.75;font-weight:500;border-width:0px 1px 1px 1px;border-style:solid;border-color:#000;border-radius:5px;letter-spacing:.02857em}.word{display:block;margin:0;padding:0;line-height:1;text-transform:uppercase}.title{position:relative;font-size:.8rem;text-align:start;top:-20px;height:0px;left:-15px;right:0;margin:0} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzk1MTYuY3NzIiwibWFwcGluZ3MiOiJBQUFBLE9BQ0UsV0FDQSx5QkFDQSwyR0FFQSxrQkFDQSxrQkFDQSxlQUNBLHlFQUNBLGlCQUNBLGdCQUNBLGtCQUNBLHdCQUNBLDZCQUNBLG1CQUNBLGtCQUdGLFNBQ0UsV0FDQSx5QkFFQSxlQUNBLGtCQUNBLGtCQUNBLHlFQUNBLGlCQUNBLGdCQUNBLDZCQUNBLG1CQUNBLGtCQUNBLGtCQUNBLHdCQUdGLE1BQ0UsY0FDQSxTQUNBLFVBQ0EsY0FDQSx5QkFHRixPQUNFLGtCQUNBLGdCQUNBLGlCQUNBLFVBQ0EsV0FDQSxXQUNBLFFBQ0EsUyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL3N0eWxlcy9JbmRpY2F0b3IuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5yZWFkeSB7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM0Y2FmNTA7XHJcbiAgYm94LXNoYWRvdzogMHB4IDJweCAzcHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMiksXHJcbiAgICAwcHggM3B4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDFweCA4cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XHJcbiAgcGFkZGluZzogMTBweCAzMHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBtaW4td2lkdGg6IDY0cHg7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlLCBib3JkZXIgMC4zcyBlYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XHJcbiAgYm9yZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItY29sb3I6ICMwMDAwMDA7XHJcbn1cclxuXHJcbi53YWl0aW5nIHtcclxuICBjb2xvcjogYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y1N2Y1MTtcclxuXHJcbiAgbWluLXdpZHRoOiA2NHB4O1xyXG4gIHBhZGRpbmc6IDEwcHggMzBweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGJveC1zaGFkb3cgMC4zcyBlYXNlLCBib3JkZXIgMC4zcyBlYXNlO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjc1O1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyLXdpZHRoOiAwcHggMXB4IDFweCAxcHg7XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcclxuICBib3JkZXItY29sb3I6ICMwMDAwMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjAyODU3ZW07XHJcbn1cclxuXHJcbi53b3JkIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBtYXJnaW46IDA7XHJcbiAgcGFkZGluZzogMDtcclxuICBsaW5lLWhlaWdodDogMTtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG4udGl0bGUge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBmb250LXNpemU6IDAuOHJlbTtcclxuICB0ZXh0LWFsaWduOiBzdGFydDtcclxuICB0b3A6IC0yMHB4O1xyXG4gIGhlaWdodDogMHB4O1xyXG4gIGxlZnQ6IC0xNXB4O1xyXG4gIHJpZ2h0OiAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9612.css b/react_frontend/static/react_frontend/css/9612.css new file mode 100644 index 000000000..8a262760e --- /dev/null +++ b/react_frontend/static/react_frontend/css/9612.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzk2MTIuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3ZhY3V1bV9jbGVhbmVyL3JlYWN0LWNvbXBvbmVudHMvY3NzL0Jhc2ljVmFjdXVtQ2xlYW5lci5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiKiB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG59XHJcblxyXG5ib2R5LCBodG1sIHtcclxuICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyICNjb250ZW50IHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCAjY29udGVudC1leGVyY2lzZSB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgaGVpZ2h0OiAxMDAlO1xyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9617.css b/react_frontend/static/react_frontend/css/9617.css new file mode 100644 index 000000000..4e39f32aa --- /dev/null +++ b/react_frontend/static/react_frontend/css/9617.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzk2MTcuY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2RpZ2l0YWxfaW1hZ2VfcHJvY2Vzc2luZy9yZWFjdC1jb21wb25lbnRzL2Nzcy9EaWdpdGFsSW1hZ2VQcm9jZXNzaW5nUlIuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/9848.css b/react_frontend/static/react_frontend/css/9848.css new file mode 100644 index 000000000..68e86f51e --- /dev/null +++ b/react_frontend/static/react_frontend/css/9848.css @@ -0,0 +1,3 @@ +*{box-sizing:border-box}body,html{width:100%;height:100%}#exercise-container{position:absolute;top:0;left:0;bottom:0;right:0;overflow:hidden;display:flex;flex-direction:column}#exercise-container #content{width:100%;height:100%;overflow:hidden}#exercise-container #content #content-exercise{display:flex;flex-direction:column;width:100%;height:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzLzk4NDguY3NzIiwibWFwcGluZ3MiOiJBQUFBLEVBQ0ksc0JBR0osVUFDSSx1QkFHSixvQkFDSSxrQkFDQSw4QkFDQSxnQkFDQSxhQUNBLHNCQUdKLDZCQUNJLFdBQ0EsWUFDQSxnQkFHSiwrQ0FDSSxhQUNBLHNCQUNBLFdBQ0EsWSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvc2l0aW9uX2NvbnRyb2xfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2Nzcy9Qb3NpdGlvbkNvbnRyb2wuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIioge1xyXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuYm9keSwgaHRtbCB7XHJcbiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1xyXG59XHJcblxyXG4jZXhlcmNpc2UtY29udGFpbmVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuI2V4ZXJjaXNlLWNvbnRhaW5lciAjY29udGVudCB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbiNleGVyY2lzZS1jb250YWluZXIgI2NvbnRlbnQgI2NvbnRlbnQtZXhlcmNpc2Uge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/exercise.css b/react_frontend/static/react_frontend/css/exercise.css new file mode 100644 index 000000000..bc7c248d4 --- /dev/null +++ b/react_frontend/static/react_frontend/css/exercise.css @@ -0,0 +1,4 @@ +body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.exercise{margin-bottom:28px} +@tailwind base;@tailwind components;@tailwind utilities + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2V4ZXJjaXNlLmNzcyIsIm1hcHBpbmdzIjoiQUFBQSxLQUNFLFNBQ0EsVUFDQSxvSkFHQSxtQ0FDQSxrQ0FHRixLQUNFLDBFQUlGLFVBQ0UsbUI7QUNoQkYsZUFDQSxxQkFDQSxtQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2V4ZXJjaXNlLWluZGV4LmNzcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvdGFpbHdpbmRjc3NfYmFzZS5jc3MiXSwic291cmNlc0NvbnRlbnQiOlsiYm9keSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBcIlJvYm90b1wiLCBcIk94eWdlblwiLFxyXG4gICAgXCJVYnVudHVcIiwgXCJDYW50YXJlbGxcIiwgXCJGaXJhIFNhbnNcIiwgXCJEcm9pZCBTYW5zXCIsIFwiSGVsdmV0aWNhIE5ldWVcIixcclxuICAgIHNhbnMtc2VyaWY7XHJcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XHJcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcclxufVxyXG5cclxuY29kZSB7XHJcbiAgZm9udC1mYW1pbHk6IHNvdXJjZS1jb2RlLXBybywgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiQ291cmllciBOZXdcIixcclxuICAgIG1vbm9zcGFjZTtcclxufVxyXG5cclxuLmV4ZXJjaXNlIHtcclxuICBtYXJnaW4tYm90dG9tOiAyOHB4O1xyXG59XHJcbiIsIkB0YWlsd2luZCBiYXNlO1xyXG5AdGFpbHdpbmQgY29tcG9uZW50cztcclxuQHRhaWx3aW5kIHV0aWxpdGllcztcclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/css/index.css b/react_frontend/static/react_frontend/css/index.css new file mode 100644 index 000000000..8f547cfcc --- /dev/null +++ b/react_frontend/static/react_frontend/css/index.css @@ -0,0 +1,6 @@ +@import url(https://fonts.googleapis.com/css2?family=Quicksand&display=swap); +body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.app{margin-bottom:28px} +.app{margin-bottom:28px}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media(prefers-reduced-motion: no-preference){.App-logo{animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}} +:root{--background-color: black}.loading-list-message{max-width:1200px;margin:0 auto}.exercise-list{max-width:1200px;margin:0 auto;display:grid;grid-gap:1rem;padding:8px;grid-auto-rows:1fr}.loading-list-message{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:"Quicksand",sans-serif;font-size:5rem;font-weight:800;background-image:linear-gradient(-225deg, #231557 0%, #44107a 29%, #ff1361 67%, #fff800 100%);background-size:auto auto;background-clip:border-box;background-size:200% auto;color:#fff;background-clip:text;text-fill-color:rgba(0,0,0,0);-webkit-background-clip:text;-webkit-text-fill-color:rgba(0,0,0,0);animation:textclip 2s linear infinite}@keyframes textclip{to{background-position:200% center}}@media(min-width: 600px){.exercise-list{grid-template-columns:repeat(3, 1fr)}}@media(min-width: 900px){.exercise-list{grid-template-columns:repeat(4, 1fr)}}.exercise-tag-list{padding:4px}.exercise-card{display:flex;flex-direction:column;justify-content:spacebetween;background-color:#000;border-radius:20px;border:5px solid;position:relative;overflow:hidden;width:100%;aspect-ratio:9/10}.exercise-card-container{flex-grow:1;display:flex;flex-direction:column;align-items:flex-start}.exercise-info-container{width:100%;height:15%;position:absolute;background:rgba(0,0,0,.68);animation:position;transition:height .8s ease;bottom:0;padding:8px;display:inline-flex;flex-direction:column;flex-grow:1}.exercise-info-container #exercise-info,.exercise-info-container .exercise-tag-list{opacity:0%;transition:opacity 1s ease}.exercise-info-container:hover{height:100%}.exercise-info-container:hover #exercise-info,.exercise-info-container:hover .exercise-tag-list{opacity:100%} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2luZGV4LmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsS0FDRSxTQUNBLG9KQUdBLG1DQUNBLGtDQUdGLEtBQ0UsMEVBSUYsS0FDRSxtQjtBQ2ZGLEtBQ0UsbUJBR0YsS0FDRSxrQkFHRixVQUNFLGNBQ0Esb0JBR0YsOENBQ0UsVUFDRSw2Q0FJSixZQUNFLHlCQUNBLGlCQUNBLGFBQ0Esc0JBQ0EsbUJBQ0EsdUJBQ0EsNkJBQ0EsV0FHRixVQUNFLGNBR0YseUJBQ0UsS0FDRSx1QkFFRixHQUNFLDBCO0FDckNKLE1BQ0ksMEJBR0osc0JBQ0ksaUJBQ0EsY0FJSixlQUNJLGlCQUNBLGNBQ0EsYUFDQSxjQUNBLFlBQ0EsbUJBdUNKLHNCQUNJLGtCQUNBLE9BQ0EsUUFDQSxTQUNBLE1BQ0EsYUFDQSxzQkFDQSx1QkFDQSxtQkFDQSxtQ0FDQSxlQUNBLGdCQUNBLDhGQUNBLDBCQUNBLDJCQUNBLDBCQUNBLFdBQ0EscUJBQ0EsOEJBQ0EsNkJBQ0Esc0NBQ0Esc0NBR0osb0JBQ0ksR0FDSSxpQ0FJUix5QkEwQkksZUFDSSxzQ0FJUix5QkFDSSxlQUNJLHNDQUlSLG1CQUNJLFlBR0osZUFDSSxhQUNBLHNCQUNBLDZCQUNBLHNCQUNBLG1CQUNBLGlCQUNBLGtCQUNBLGdCQUNBLFdBQ0Esa0JBR0oseUJBQ0ksWUFDQSxhQUNBLHNCQUNBLHVCQUdKLHlCQUNJLFdBQ0EsV0FDQSxrQkFDQSwyQkFDQSxtQkFDQSwyQkFDQSxTQUNBLFlBQ0Esb0JBQ0Esc0JBQ0EsWUFFQSxvRkFFSSxXQUNBLDJCQUdKLCtCQUNJLFlBRUEsZ0dBRUksYSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2luZGV4LmNzcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvQXBwLmNzcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9zdHlsZXMvRXhlcmNpc2VMaXN0LmNzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJib2R5IHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgJ1JvYm90bycsICdPeHlnZW4nLFxyXG4gICAgJ1VidW50dScsICdDYW50YXJlbGwnLCAnRmlyYSBTYW5zJywgJ0Ryb2lkIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLFxyXG4gICAgc2Fucy1zZXJpZjtcclxuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcclxuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xyXG59XHJcblxyXG5jb2RlIHtcclxuICBmb250LWZhbWlseTogc291cmNlLWNvZGUtcHJvLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JyxcclxuICAgIG1vbm9zcGFjZTtcclxufVxyXG5cclxuLmFwcCB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMjhweDtcclxufSIsIi5hcHAge1xyXG4gIG1hcmdpbi1ib3R0b206IDI4cHg7XHJcbn1cclxuXHJcbi5BcHAge1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxufVxyXG5cclxuLkFwcC1sb2dvIHtcclxuICBoZWlnaHQ6IDQwdm1pbjtcclxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxufVxyXG5cclxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiBuby1wcmVmZXJlbmNlKSB7XHJcbiAgLkFwcC1sb2dvIHtcclxuICAgIGFuaW1hdGlvbjogQXBwLWxvZ28tc3BpbiBpbmZpbml0ZSAyMHMgbGluZWFyO1xyXG4gIH1cclxufVxyXG5cclxuLkFwcC1oZWFkZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMyODJjMzQ7XHJcbiAgbWluLWhlaWdodDogMTAwdmg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiBjYWxjKDEwcHggKyAydm1pbik7XHJcbiAgY29sb3I6IHdoaXRlO1xyXG59XHJcblxyXG4uQXBwLWxpbmsge1xyXG4gIGNvbG9yOiAjNjFkYWZiO1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIEFwcC1sb2dvLXNwaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcbiIsIkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVF1aWNrc2FuZCZkaXNwbGF5PXN3YXAnKTtcclxuXHJcbjpyb290IHtcclxuICAgIC0tYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbn1cclxuXHJcbi5sb2FkaW5nLWxpc3QtbWVzc2FnZSB7XHJcbiAgICBtYXgtd2lkdGg6IDEyMDBweDtcclxuICAgIG1hcmdpbjogMCBhdXRvO1xyXG5cclxufVxyXG5cclxuLmV4ZXJjaXNlLWxpc3Qge1xyXG4gICAgbWF4LXdpZHRoOiAxMjAwcHg7XHJcbiAgICBtYXJnaW46IDAgYXV0bztcclxuICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICBncmlkLWdhcDogMXJlbTtcclxuICAgIHBhZGRpbmc6IDhweDtcclxuICAgIGdyaWQtYXV0by1yb3dzOiAxZnI7XHJcbn1cclxuXHJcbi8qIC5leGVyY2lzZS1jYXJkIHtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIGRpc3BsYXk6IGdyaWQ7XHJcbiAgICBjb2xvcjogd2hpdGU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkIC5jYXJkLWltZyB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQ+ZGl2IHtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgIGZvbnQtZmFtaWx5OiAnUXVpY2tzYW5kJywgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuLmV4ZXJjaXNlLWNhcmQgLm5hbWUge1xyXG4gICAgZm9udC1zaXplOiAxLjhyZW07XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCAuZGVzY3JpcHRpb24ge1xyXG4gICAgaGVpZ2h0OiA1cmVtO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCAudGFncyB7XHJcbiAgICBoZWlnaHQ6IDVyZW07XHJcbn0gKi9cclxuXHJcbi5sb2FkaW5nLWxpc3QtbWVzc2FnZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgcmlnaHQ6IDA7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB0b3A6IDA7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGZvbnQtZmFtaWx5OiAnUXVpY2tzYW5kJywgc2Fucy1zZXJpZjtcclxuICAgIGZvbnQtc2l6ZTogNXJlbTtcclxuICAgIGZvbnQtd2VpZ2h0OiA4MDA7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTIyNWRlZywgIzIzMTU1NyAwJSwgIzQ0MTA3YSAyOSUsICNmZjEzNjEgNjclLCAjZmZmODAwIDEwMCUpO1xyXG4gICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIGF1dG87XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IGJvcmRlci1ib3g7XHJcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMCUgYXV0bztcclxuICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xyXG4gICAgdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xyXG4gICAgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgYW5pbWF0aW9uOiB0ZXh0Y2xpcCAycyBsaW5lYXIgaW5maW5pdGU7XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgdGV4dGNsaXAge1xyXG4gICAgdG8ge1xyXG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDIwMCUgY2VudGVyO1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHtcclxuICAgIC8qIC5leGVyY2lzZS1jYXJkOmhvdmVyIHtcclxuICAgICAgICBtYXJnaW46IC0zcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmV4ZXJjaXNlLWNhcmQ6aG92ZXI6OmJlZm9yZSB7XHJcbiAgICAgICAgYm90dG9tOiAwO1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiU3RhcnQgbWUhXCI7XHJcblxyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHJpZ2h0OiAwO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNTUsIDU1LCA1NSwgLjgpO1xyXG4gICAgICAgIGNvbG9yOiAjMDA3YmZmO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcclxuICAgICAgICBmb250LXdlaWdodDogOTAwO1xyXG4gICAgfSAqL1xyXG5cclxuICAgIC5leGVyY2lzZS1saXN0IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogOTAwcHgpIHtcclxuICAgIC5leGVyY2lzZS1saXN0IHtcclxuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCg0LCAxZnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG4uZXhlcmNpc2UtdGFnLWxpc3Qge1xyXG4gICAgcGFkZGluZzogNHB4O1xyXG59XHJcblxyXG4uZXhlcmNpc2UtY2FyZCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2ViZXR3ZWVuO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XHJcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgYm9yZGVyOiA1cHggc29saWQ7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBhc3BlY3QtcmF0aW86IDkvMTA7XHJcbn1cclxuXHJcbi5leGVyY2lzZS1jYXJkLWNvbnRhaW5lciB7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG59XHJcblxyXG4uZXhlcmNpc2UtaW5mby1jb250YWluZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IDE1JTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42OCk7XHJcbiAgICBhbmltYXRpb246IHBvc2l0aW9uO1xyXG4gICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuOHMgZWFzZTtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHBhZGRpbmc6IDhweDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuXHJcbiAgICAmICNleGVyY2lzZS1pbmZvLFxyXG4gICAgLmV4ZXJjaXNlLXRhZy1saXN0IHtcclxuICAgICAgICBvcGFjaXR5OiAwJTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDFzIGVhc2U7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG5cclxuICAgICAgICAmICNleGVyY2lzZS1pbmZvLFxyXG4gICAgICAgIC5leGVyY2lzZS10YWctbGlzdCB7XHJcbiAgICAgICAgICAgIG9wYWNpdHk6IDEwMCU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/ \ No newline at end of file diff --git a/react_frontend/static/react_frontend/d11c46b809e74e2f83fe.png b/react_frontend/static/react_frontend/d11c46b809e74e2f83fe.png new file mode 100644 index 0000000000000000000000000000000000000000..13092d61b4f24bc9fcbcbd4bf0e67ba86c56f80f GIT binary patch literal 71162 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 x`mi6MPfYvJhd%USKR}Kr%K)R(-B&4OAXC1!Z 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

    toly+_aHy9>SZ2E8B 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 literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/df2d975eff24335477f0.svg b/react_frontend/static/react_frontend/df2d975eff24335477f0.svg new file mode 100644 index 000000000..db10abd1f --- /dev/null +++ b/react_frontend/static/react_frontend/df2d975eff24335477f0.svg @@ -0,0 +1,65 @@ + + + + + + diff --git a/react_frontend/static/react_frontend/e0742232b0207d6b3b58.png b/react_frontend/static/react_frontend/e0742232b0207d6b3b58.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfeff0033fe83aa4f9c5a982dc356b6e338ba9c GIT binary patch literal 65166 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 literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/f1161e013312668b9ed4.png b/react_frontend/static/react_frontend/f1161e013312668b9ed4.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3bb6495ebe3a71f8466eacfa9a668a66f4897f GIT binary patch literal 335927 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

    =m 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%0D2Uy&oHJb9uRG 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

    f;rfUCW| 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 Nz|+;wWt~$(69A%^j9LHy literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/fbd2a40c78e5112b66a9.png b/react_frontend/static/react_frontend/fbd2a40c78e5112b66a9.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c1e57288e35df1a8fed1e56f56ee01412970a8 GIT binary patch literal 9369 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 literal 0 HcmV?d00001 diff --git a/react_frontend/static/react_frontend/js/1052.33ba00a0.js b/react_frontend/static/react_frontend/js/1052.33ba00a0.js new file mode 100644 index 000000000..2b3a5c539 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1052.33ba00a0.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1052],{7437:(e,n,t)=>{t.d(n,{AH:()=>c,i7:()=>u,mL:()=>s});var o=t(5684),r=t(6540),i=t(41),l=t(1287),a=t(6899),s=(t(4300),t(4146),(0,o.w)((function(e,n){var t=e.styles,s=(0,a.J)([t],void 0,r.useContext(o.T));if(!o.i){for(var c,u=s.name,d=s.styles,f=s.next;void 0!==f;)u+=" "+f.name,d+=f.styles,f=f.next;var m=!0===n.compat,v=n.insert("",{name:u,styles:d},n.sheet,m);return m?null:r.createElement("style",((c={})["data-emotion"]=n.key+"-global "+u,c.dangerouslySetInnerHTML={__html:v},c.nonce=n.sheet.nonce,c))}var h=r.useRef();return(0,l.i)((function(){var e=n.key+"-global",t=new n.sheet.constructor({key:e,nonce:n.sheet.nonce,container:n.sheet.container,speedy:n.sheet.isSpeedy}),o=!1,r=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return n.sheet.tags.length&&(t.before=n.sheet.tags[0]),null!==r&&(o=!0,r.setAttribute("data-emotion",e),t.hydrate([r])),h.current=[t,o],function(){t.flush()}}),[n]),(0,l.i)((function(){var e=h.current,t=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,i.sk)(n,s.next,!0),t.tags.length){var o=t.tags[t.tags.length-1].nextElementSibling;t.before=o,t.flush()}n.insert("",s,t,!1)}}),[n,s.name]),null})));function c(){for(var e=arguments.length,n=new Array(e),t=0;t{t.d(n,{A:()=>y});var o=t(8168),r=t(6540),i=t(8587),l=t(53),a=t(5659),s=t(8466),c=t(4409),u=t(7577),d=t(8413),f=t(1609);function m(e){return(0,f.A)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var v=t(4848);const h=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],A=(0,u.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:t}=e;return[n.root,"inherit"!==t.color&&n[`color${(0,s.A)(t.color)}`],n[`fontSize${(0,s.A)(t.fontSize)}`]]}})((({theme:e,ownerState:n})=>{var t,o,r,i,l,a,s,c,u,d,f,m,v;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:n.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(t=e.transitions)||null==(o=t.create)?void 0:o.call(t,"fill",{duration:null==(r=e.transitions)||null==(r=r.duration)?void 0:r.shorter}),fontSize:{inherit:"inherit",small:(null==(i=e.typography)||null==(l=i.pxToRem)?void 0:l.call(i,20))||"1.25rem",medium:(null==(a=e.typography)||null==(s=a.pxToRem)?void 0:s.call(a,24))||"1.5rem",large:(null==(c=e.typography)||null==(u=c.pxToRem)?void 0:u.call(c,35))||"2.1875rem"}[n.fontSize],color:null!=(d=null==(f=(e.vars||e).palette)||null==(f=f[n.color])?void 0:f.main)?d:{action:null==(m=(e.vars||e).palette)||null==(m=m.action)?void 0:m.active,disabled:null==(v=(e.vars||e).palette)||null==(v=v.action)?void 0:v.disabled,inherit:void 0}[n.color]}})),p=r.forwardRef((function(e,n){const t=(0,c.A)({props:e,name:"MuiSvgIcon"}),{children:u,className:d,color:f="inherit",component:p="svg",fontSize:S="medium",htmlColor:y,inheritViewBox:g=!1,titleAccess:w,viewBox:x="0 0 24 24"}=t,z=(0,i.A)(t,h),b=r.isValidElement(u)&&"svg"===u.type,k=(0,o.A)({},t,{color:f,component:p,fontSize:S,instanceFontSize:e.fontSize,inheritViewBox:g,viewBox:x,hasSvgAsChild:b}),C={};g||(C.viewBox=x);const I=(e=>{const{color:n,fontSize:t,classes:o}=e,r={root:["root","inherit"!==n&&`color${(0,s.A)(n)}`,`fontSize${(0,s.A)(t)}`]};return(0,a.A)(r,m,o)})(k);return(0,v.jsxs)(A,(0,o.A)({as:p,className:(0,l.A)(I.root,d),focusable:"false",color:y,"aria-hidden":!w||void 0,role:w?"img":void 0,ref:n},C,z,b&&u.props,{ownerState:k,children:[b?u.props.children:u,w?(0,v.jsx)("title",{children:w}):null]}))}));p.muiName="SvgIcon";const S=p;function y(e,n){function t(t,r){return(0,v.jsx)(S,(0,o.A)({"data-testid":`${n}Icon`,ref:r},t,{children:e}))}return t.muiName=S.muiName,r.memo(r.forwardRef(t))}},1935:(e,n,t)=>{t.d(n,{A:()=>o});const o=t(4705).A},5034:(e,n,t)=>{t.d(n,{A:()=>r});var o=t(6540);const r=function(e,n){return o.isValidElement(e)&&-1!==n.indexOf(e.type.muiName)}},6248:(e,n,t)=>{t.d(n,{A:()=>o});const o=t(2325).A},3749:(e,n,t)=>{t.d(n,{A:()=>o});const o=t(4877).A},1159:(e,n,t)=>{t.d(n,{A:()=>o});const o=t(2501).A},2778:(e,n,t)=>{t.d(n,{A:()=>o});const o=t(1529).A},1668:(e,n,t)=>{t.d(n,{A:()=>o});const o=t(4661).A},1210:(e,n,t)=>{function o(...e){return e.reduce(((e,n)=>null==n?e:function(...t){e.apply(this,t),n.apply(this,t)}),(()=>{}))}t.d(n,{A:()=>o})},4705:(e,n,t)=>{function o(e,n=166){let t;function o(...o){clearTimeout(t),t=setTimeout((()=>{e.apply(this,o)}),n)}return o.clear=()=>{clearTimeout(t)},o}t.d(n,{A:()=>o})},2325:(e,n,t)=>{function o(e){return e&&e.ownerDocument||document}t.d(n,{A:()=>o})},4877:(e,n,t)=>{t.d(n,{A:()=>r});var o=t(2325);function r(e){return(0,o.A)(e).defaultView||window}},2501:(e,n,t)=>{t.d(n,{A:()=>r});var o=t(6540);function r({controlled:e,default:n,name:t,state:r="value"}){const{current:i}=o.useRef(void 0!==e),[l,a]=o.useState(n);return[i?e:l,o.useCallback((e=>{i||a(e)}),[])]}},4661:(e,n,t)=>{var o;t.d(n,{A:()=>a});var r=t(6540);let i=0;const l=(o||(o=t.t(r,2)))["useId".toString()];function a(e){if(void 0!==l){const n=l();return null!=e?e:n}return function(e){const[n,t]=r.useState(e),o=e||n;return r.useEffect((()=>{null==n&&(i+=1,t(`mui-${i}`))}),[n]),o}(e)}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUVMLEMsc0RDbENBLElBQUlDLEVBQVcsRUFrQmYsTUFBTUMsR0FBa0IsaUJBQU0sUUFBUTdHLFlBT3ZCLFNBQVM4RyxFQUFNQyxHQUM1QixRQUF3QjdKLElBQXBCMkosRUFBK0IsQ0FDakMsTUFBTUcsRUFBVUgsSUFDaEIsT0FBcUIsTUFBZEUsRUFBcUJBLEVBQWFDLENBQzNDLENBRUEsT0E5QkYsU0FBcUJELEdBQ25CLE1BQU9FLEVBQVdDLEdBQWdCLFdBQWVILEdBQzNDSSxFQUFLSixHQUFjRSxFQVd6QixPQVZBLGFBQWdCLEtBQ0csTUFBYkEsSUFLRkwsR0FBWSxFQUNaTSxFQUFhLE9BQU9OLEtBQ3RCLEdBQ0MsQ0FBQ0ssSUFDR0UsQ0FDVCxDQWdCU0MsQ0FBWUwsRUFDckIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1N2Z0ljb24vc3ZnSWNvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL1N2Z0ljb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9jcmVhdGVTdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pc011aUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyV2luZG93LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlQ29udHJvbGxlZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUVuaGFuY2VkRWZmZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyRG9jdW1lbnQvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lcldpbmRvdy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VDb250cm9sbGVkL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlSWQvdXNlSWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVN2Z0ljb24nLCBzbG90KTtcbn1cbmNvbnN0IHN2Z0ljb25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpU3ZnSWNvbicsIFsncm9vdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JBY3Rpb24nLCAnY29sb3JFcnJvcicsICdjb2xvckRpc2FibGVkJywgJ2ZvbnRTaXplSW5oZXJpdCcsICdmb250U2l6ZVNtYWxsJywgJ2ZvbnRTaXplTWVkaXVtJywgJ2ZvbnRTaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBzdmdJY29uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiZm9udFNpemVcIiwgXCJodG1sQ29sb3JcIiwgXCJpbmhlcml0Vmlld0JveFwiLCBcInRpdGxlQWNjZXNzXCIsIFwidmlld0JveFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3N2Z0ljb25DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3IsXG4gICAgZm9udFNpemUsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgY29sb3IgIT09ICdpbmhlcml0JyAmJiBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBmb250U2l6ZSR7Y2FwaXRhbGl6ZShmb250U2l6ZSl9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRTdmdJY29uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBTdmdJY29uUm9vdCA9IHN0eWxlZCgnc3ZnJywge1xuICBuYW1lOiAnTXVpU3ZnSWNvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2Bmb250U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmZvbnRTaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkdHJhbnNpdGlvbnMsIF90aGVtZSR0cmFuc2l0aW9ucyRjciwgX3RoZW1lJHRyYW5zaXRpb25zMiwgX3RoZW1lJHR5cG9ncmFwaHksIF90aGVtZSR0eXBvZ3JhcGh5JHB4VCwgX3RoZW1lJHR5cG9ncmFwaHkyLCBfdGhlbWUkdHlwb2dyYXBoeTIkcHgsIF90aGVtZSR0eXBvZ3JhcGh5MywgX3RoZW1lJHR5cG9ncmFwaHkzJHB4LCBfcGFsZXR0ZSRvd25lclN0YXRlJGMsIF9wYWxldHRlLCBfcGFsZXR0ZTIsIF9wYWxldHRlMztcbiAgcmV0dXJuIHtcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgd2lkdGg6ICcxZW0nLFxuICAgIGhlaWdodDogJzFlbScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLy8gdGhlIDxzdmc+IHdpbGwgZGVmaW5lIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyBgY3VycmVudENvbG9yYFxuICAgIC8vIGUuZy4gaGVyb2ljb25zIHVzZXMgZmlsbD1cIm5vbmVcIiBhbmQgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICBmaWxsOiBvd25lclN0YXRlLmhhc1N2Z0FzQ2hpbGQgPyB1bmRlZmluZWQgOiAnY3VycmVudENvbG9yJyxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICAgIHRyYW5zaXRpb246IChfdGhlbWUkdHJhbnNpdGlvbnMgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zJGNyID0gX3RoZW1lJHRyYW5zaXRpb25zLmNyZWF0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9ucyRjci5jYWxsKF90aGVtZSR0cmFuc2l0aW9ucywgJ2ZpbGwnLCB7XG4gICAgICBkdXJhdGlvbjogKF90aGVtZSR0cmFuc2l0aW9uczIgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IF90aGVtZSR0cmFuc2l0aW9uczIuZHVyYXRpb24pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHJhbnNpdGlvbnMyLnNob3J0ZXJcbiAgICB9KSxcbiAgICBmb250U2l6ZToge1xuICAgICAgaW5oZXJpdDogJ2luaGVyaXQnLFxuICAgICAgc21hbGw6ICgoX3RoZW1lJHR5cG9ncmFwaHkgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeSRweFQgPSBfdGhlbWUkdHlwb2dyYXBoeS5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkkcHhULmNhbGwoX3RoZW1lJHR5cG9ncmFwaHksIDIwKSkgfHwgJzEuMjVyZW0nLFxuICAgICAgbWVkaXVtOiAoKF90aGVtZSR0eXBvZ3JhcGh5MiA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5MiRweCA9IF90aGVtZSR0eXBvZ3JhcGh5Mi5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkyJHB4LmNhbGwoX3RoZW1lJHR5cG9ncmFwaHkyLCAyNCkpIHx8ICcxLjVyZW0nLFxuICAgICAgbGFyZ2U6ICgoX3RoZW1lJHR5cG9ncmFwaHkzID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkzJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkzLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTMkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTMsIDM1KSkgfHwgJzIuMTg3NXJlbSdcbiAgICB9W293bmVyU3RhdGUuZm9udFNpemVdLFxuICAgIC8vIFRPRE8gdjUgZGVwcmVjYXRlLCB2NiByZW1vdmUgZm9yIHN4XG4gICAgY29sb3I6IChfcGFsZXR0ZSRvd25lclN0YXRlJGMgPSAoX3BhbGV0dGUgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUgPSBfcGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlLm1haW4pICE9IG51bGwgPyBfcGFsZXR0ZSRvd25lclN0YXRlJGMgOiB7XG4gICAgICBhY3Rpb246IChfcGFsZXR0ZTIgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUyID0gX3BhbGV0dGUyLmFjdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlMi5hY3RpdmUsXG4gICAgICBkaXNhYmxlZDogKF9wYWxldHRlMyA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTMgPSBfcGFsZXR0ZTMuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUzLmRpc2FibGVkLFxuICAgICAgaW5oZXJpdDogdW5kZWZpbmVkXG4gICAgfVtvd25lclN0YXRlLmNvbG9yXVxuICB9O1xufSk7XG5jb25zdCBTdmdJY29uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gU3ZnSWNvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpU3ZnSWNvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAnaW5oZXJpdCcsXG4gICAgICBjb21wb25lbnQgPSAnc3ZnJyxcbiAgICAgIGZvbnRTaXplID0gJ21lZGl1bScsXG4gICAgICBodG1sQ29sb3IsXG4gICAgICBpbmhlcml0Vmlld0JveCA9IGZhbHNlLFxuICAgICAgdGl0bGVBY2Nlc3MsXG4gICAgICB2aWV3Qm94ID0gJzAgMCAyNCAyNCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgaGFzU3ZnQXNDaGlsZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiYgY2hpbGRyZW4udHlwZSA9PT0gJ3N2Zyc7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZm9udFNpemUsXG4gICAgaW5zdGFuY2VGb250U2l6ZTogaW5Qcm9wcy5mb250U2l6ZSxcbiAgICBpbmhlcml0Vmlld0JveCxcbiAgICB2aWV3Qm94LFxuICAgIGhhc1N2Z0FzQ2hpbGRcbiAgfSk7XG4gIGNvbnN0IG1vcmUgPSB7fTtcbiAgaWYgKCFpbmhlcml0Vmlld0JveCkge1xuICAgIG1vcmUudmlld0JveCA9IHZpZXdCb3g7XG4gIH1cbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFN2Z0ljb25Sb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNvbG9yOiBodG1sQ29sb3IsXG4gICAgXCJhcmlhLWhpZGRlblwiOiB0aXRsZUFjY2VzcyA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgcm9sZTogdGl0bGVBY2Nlc3MgPyAnaW1nJyA6IHVuZGVmaW5lZCxcbiAgICByZWY6IHJlZlxuICB9LCBtb3JlLCBvdGhlciwgaGFzU3ZnQXNDaGlsZCAmJiBjaGlsZHJlbi5wcm9wcywge1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IFtoYXNTdmdBc0NoaWxkID8gY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4gOiBjaGlsZHJlbiwgdGl0bGVBY2Nlc3MgPyAvKiNfX1BVUkVfXyovX2pzeChcInRpdGxlXCIsIHtcbiAgICAgIGNoaWxkcmVuOiB0aXRsZUFjY2Vzc1xuICAgIH0pIDogbnVsbF1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBTdmdJY29uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIE5vZGUgcGFzc2VkIGludG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgYGh0bWxDb2xvcmAgcHJvcCB0byBhcHBseSBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdpbmhlcml0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdhY3Rpb24nLCAnZGlzYWJsZWQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGZvbnRTaXplIGFwcGxpZWQgdG8gdGhlIGljb24uIERlZmF1bHRzIHRvIDI0cHgsIGJ1dCBjYW4gYmUgY29uZmlndXJlIHRvIGluaGVyaXQgZm9udCBzaXplLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgZm9udFNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdsYXJnZScsICdtZWRpdW0nLCAnc21hbGwnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgYSBjb2xvciBhdHRyaWJ1dGUgdG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgaHRtbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcm9vdCBub2RlIHdpbGwgaW5oZXJpdCB0aGUgY3VzdG9tIGBjb21wb25lbnRgJ3Mgdmlld0JveCBhbmQgdGhlIGB2aWV3Qm94YFxuICAgKiBwcm9wIHdpbGwgYmUgaWdub3JlZC5cbiAgICogVXNlZnVsIHdoZW4geW91IHdhbnQgdG8gcmVmZXJlbmNlIGEgY3VzdG9tIGBjb21wb25lbnRgIGFuZCBoYXZlIGBTdmdJY29uYCBwYXNzIHRoYXRcbiAgICogYGNvbXBvbmVudGAncyB2aWV3Qm94IHRvIHRoZSByb290IG5vZGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmhlcml0Vmlld0JveDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc2hhcGUtcmVuZGVyaW5nIGF0dHJpYnV0ZS4gVGhlIGJlaGF2aW9yIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBpcyBkZXNjcmliZWQgb24gdGhlXG4gICAqIFtNRE4gV2ViIERvY3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc2hhcGUtcmVuZGVyaW5nKS5cbiAgICogSWYgeW91IGFyZSBoYXZpbmcgaXNzdWVzIHdpdGggYmx1cnJ5IGljb25zIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgdGhpcyBwcm9wLlxuICAgKi9cbiAgc2hhcGVSZW5kZXJpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIGh1bWFuLXJlYWRhYmxlIHRpdGxlIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIGl0LlxuICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHLWFjY2Vzcy8jRXF1aXZhbGVudFxuICAgKi9cbiAgdGl0bGVBY2Nlc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIHJlZGVmaW5lIHdoYXQgdGhlIGNvb3JkaW5hdGVzIHdpdGhvdXQgdW5pdHMgbWVhbiBpbnNpZGUgYW4gU1ZHIGVsZW1lbnQuXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGUgU1ZHIGVsZW1lbnQgaXMgNTAwICh3aWR0aCkgYnkgMjAwIChoZWlnaHQpLFxuICAgKiBhbmQgeW91IHBhc3Mgdmlld0JveD1cIjAgMCA1MCAyMFwiLFxuICAgKiB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvb3JkaW5hdGVzIGluc2lkZSB0aGUgU1ZHIHdpbGwgZ28gZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyICgwLDApXG4gICAqIHRvIGJvdHRvbSByaWdodCAoNTAsMjApIGFuZCBlYWNoIHVuaXQgd2lsbCBiZSB3b3J0aCAxMHB4LlxuICAgKiBAZGVmYXVsdCAnMCAwIDI0IDI0J1xuICAgKi9cbiAgdmlld0JveDogUHJvcFR5cGVzLnN0cmluZ1xufSA6IHZvaWQgMDtcblN2Z0ljb24ubXVpTmFtZSA9ICdTdmdJY29uJztcbmV4cG9ydCBkZWZhdWx0IFN2Z0ljb247IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTdmdJY29uIGZyb20gJy4uL1N2Z0ljb24nO1xuXG4vKipcbiAqIFByaXZhdGUgbW9kdWxlIHJlc2VydmVkIGZvciBAbXVpIHBhY2thZ2VzLlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3ZnSWNvbihwYXRoLCBkaXNwbGF5TmFtZSkge1xuICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIHJlZikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTdmdJY29uLCBfZXh0ZW5kcyh7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IGAke2Rpc3BsYXlOYW1lfUljb25gLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcywge1xuICAgICAgY2hpbGRyZW46IHBhdGhcbiAgICB9KSk7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBOZWVkIHRvIHNldCBgZGlzcGxheU5hbWVgIG9uIHRoZSBpbm5lciBjb21wb25lbnQgZm9yIFJlYWN0Lm1lbW8uXG4gICAgLy8gUmVhY3QgcHJpb3IgdG8gMTYuMTQgaWdub3JlcyBgZGlzcGxheU5hbWVgIG9uIHRoZSB3cmFwcGVyLlxuICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2Rpc3BsYXlOYW1lfUljb25gO1xuICB9XG4gIENvbXBvbmVudC5tdWlOYW1lID0gU3ZnSWNvbi5tdWlOYW1lO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oIC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENvbXBvbmVudCkpO1xufSIsImltcG9ydCB7IHVuc3RhYmxlX2RlYm91bmNlIGFzIGRlYm91bmNlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZWJvdW5jZTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9pc011aUVsZW1lbnQgYXMgaXNNdWlFbGVtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBpc011aUVsZW1lbnQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNdWlFbGVtZW50KGVsZW1lbnQsIG11aU5hbWVzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkgJiYgbXVpTmFtZXMuaW5kZXhPZihlbGVtZW50LnR5cGUubXVpTmFtZSkgIT09IC0xO1xufSIsImltcG9ydCB7IHVuc3RhYmxlX293bmVyRG9jdW1lbnQgYXMgb3duZXJEb2N1bWVudCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgb3duZXJEb2N1bWVudDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9vd25lcldpbmRvdyBhcyBvd25lcldpbmRvdyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgb3duZXJXaW5kb3c7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VDb250cm9sbGVkIGFzIHVzZUNvbnRyb2xsZWQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUNvbnRyb2xsZWQ7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VFbmhhbmNlZEVmZmVjdCBhcyB1c2VFbmhhbmNlZEVmZmVjdCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRW5oYW5jZWRFZmZlY3Q7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VJZCBhcyB1c2VJZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlSWQ7IiwiLyoqXG4gKiBTYWZlIGNoYWluZWQgZnVuY3Rpb24uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiguLi5mdW5jcykge1xuICByZXR1cm4gZnVuY3MucmVkdWNlKChhY2MsIGZ1bmMpID0+IHtcbiAgICBpZiAoZnVuYyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgIGFjYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfSwgKCkgPT4ge30pO1xufSIsIi8vIENvcnJlc3BvbmRzIHRvIDEwIGZyYW1lcyBhdCA2MCBIei5cbi8vIEEgZmV3IGJ5dGVzIHBheWxvYWQgb3ZlcmhlYWQgd2hlbiBsb2Rhc2gvZGVib3VuY2UgaXMgfjMga0IgYW5kIGRlYm91bmNlIH4zMDAgQi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQgPSAxNjYpIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIGZ1bmN0aW9uIGRlYm91bmNlZCguLi5hcmdzKSB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgfVxuICBkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9O1xuICByZXR1cm4gZGVib3VuY2VkO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSIsIid1c2UgY2xpZW50JztcblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MsIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29udHJvbGxlZCh7XG4gIGNvbnRyb2xsZWQsXG4gIGRlZmF1bHQ6IGRlZmF1bHRQcm9wLFxuICBuYW1lLFxuICBzdGF0ZSA9ICd2YWx1ZSdcbn0pIHtcbiAgLy8gaXNDb250cm9sbGVkIGlzIGlnbm9yZWQgaW4gdGhlIGhvb2sgZGVwZW5kZW5jeSBsaXN0cyBhcyBpdCBzaG91bGQgbmV2ZXIgY2hhbmdlLlxuICBjb25zdCB7XG4gICAgY3VycmVudDogaXNDb250cm9sbGVkXG4gIH0gPSBSZWFjdC51c2VSZWYoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgW3ZhbHVlU3RhdGUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgY29uc3QgdmFsdWUgPSBpc0NvbnRyb2xsZWQgPyBjb250cm9sbGVkIDogdmFsdWVTdGF0ZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCAhPT0gKGNvbnRyb2xsZWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogQSBjb21wb25lbnQgaXMgY2hhbmdpbmcgdGhlICR7aXNDb250cm9sbGVkID8gJycgOiAndW4nfWNvbnRyb2xsZWQgJHtzdGF0ZX0gc3RhdGUgb2YgJHtuYW1lfSB0byBiZSAke2lzQ29udHJvbGxlZCA/ICd1bicgOiAnJ31jb250cm9sbGVkLmAsICdFbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4nLCBgRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAke25hbWV9IGAgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuJywgXCJUaGUgbmF0dXJlIG9mIHRoZSBzdGF0ZSBpcyBkZXRlcm1pbmVkIGR1cmluZyB0aGUgZmlyc3QgcmVuZGVyLiBJdCdzIGNvbnNpZGVyZWQgY29udHJvbGxlZCBpZiB0aGUgdmFsdWUgaXMgbm90IGB1bmRlZmluZWRgLlwiLCAnTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cyddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbc3RhdGUsIG5hbWUsIGNvbnRyb2xsZWRdKTtcbiAgICBjb25zdCB7XG4gICAgICBjdXJyZW50OiBkZWZhdWx0VmFsdWVcbiAgICB9ID0gUmVhY3QudXNlUmVmKGRlZmF1bHRQcm9wKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFpc0NvbnRyb2xsZWQgJiYgZGVmYXVsdFZhbHVlICE9PSBkZWZhdWx0UHJvcCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgZGVmYXVsdCAke3N0YXRlfSBzdGF0ZSBvZiBhbiB1bmNvbnRyb2xsZWQgJHtuYW1lfSBhZnRlciBiZWluZyBpbml0aWFsaXplZC4gYCArIGBUbyBzdXBwcmVzcyB0aGlzIHdhcm5pbmcgb3B0IHRvIHVzZSBhIGNvbnRyb2xsZWQgJHtuYW1lfS5gXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfSwgW0pTT04uc3RyaW5naWZ5KGRlZmF1bHRQcm9wKV0pO1xuICB9XG4gIGNvbnN0IHNldFZhbHVlSWZVbmNvbnRyb2xsZWQgPSBSZWFjdC51c2VDYWxsYmFjayhuZXdWYWx1ZSA9PiB7XG4gICAgaWYgKCFpc0NvbnRyb2xsZWQpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVJZlVuY29udHJvbGxlZF07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5sZXQgZ2xvYmFsSWQgPSAwO1xuZnVuY3Rpb24gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSkge1xuICBjb25zdCBbZGVmYXVsdElkLCBzZXREZWZhdWx0SWRdID0gUmVhY3QudXNlU3RhdGUoaWRPdmVycmlkZSk7XG4gIGNvbnN0IGlkID0gaWRPdmVycmlkZSB8fCBkZWZhdWx0SWQ7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRJZCA9PSBudWxsKSB7XG4gICAgICAvLyBGYWxsYmFjayB0byB0aGlzIGRlZmF1bHQgaWQgd2hlbiBwb3NzaWJsZS5cbiAgICAgIC8vIFVzZSB0aGUgaW5jcmVtZW50aW5nIHZhbHVlIGZvciBjbGllbnQtc2lkZSByZW5kZXJpbmcgb25seS5cbiAgICAgIC8vIFdlIGNhbid0IHVzZSBpdCBzZXJ2ZXItc2lkZS5cbiAgICAgIC8vIElmIHlvdSB3YW50IHRvIHVzZSByYW5kb20gdmFsdWVzIHBsZWFzZSBjb25zaWRlciB0aGUgQmlydGhkYXkgUHJvYmxlbTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlydGhkYXlfcHJvYmxlbVxuICAgICAgZ2xvYmFsSWQgKz0gMTtcbiAgICAgIHNldERlZmF1bHRJZChgbXVpLSR7Z2xvYmFsSWR9YCk7XG4gICAgfVxuICB9LCBbZGVmYXVsdElkXSk7XG4gIHJldHVybiBpZDtcbn1cblxuLy8gZG93bnN0cmVhbSBidW5kbGVycyBtYXkgcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbmNhdGVuYXRpb24sIGJ1dCB3b24ndCByZW1vdmUgdG9TdHJpbmcgY2FsbCAtLSBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2lzc3Vlcy8xNDgxNFxuY29uc3QgbWF5YmVSZWFjdFVzZUlkID0gUmVhY3RbJ3VzZUlkJy50b1N0cmluZygpXTtcbi8qKlxuICpcbiAqIEBleGFtcGxlIDxkaXYgaWQ9e3VzZUlkKCl9IC8+XG4gKiBAcGFyYW0gaWRPdmVycmlkZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSWQoaWRPdmVycmlkZSkge1xuICBpZiAobWF5YmVSZWFjdFVzZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZWFjdElkID0gbWF5YmVSZWFjdFVzZUlkKCk7XG4gICAgcmV0dXJuIGlkT3ZlcnJpZGUgIT0gbnVsbCA/IGlkT3ZlcnJpZGUgOiByZWFjdElkO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcyAtLSBgUmVhY3QudXNlSWRgIGlzIGludmFyaWFudCBhdCBydW50aW1lLlxuICByZXR1cm4gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSk7XG59Il0sIm5hbWVzIjpbIkdsb2JhbCIsInciLCJwcm9wcyIsImNhY2hlIiwic3R5bGVzIiwic2VyaWFsaXplZCIsInVuZGVmaW5lZCIsIlQiLCJpIiwiX3JlZiIsInNlcmlhbGl6ZWROYW1lcyIsIm5hbWUiLCJzZXJpYWxpemVkU3R5bGVzIiwibmV4dCIsInNob3VsZENhY2hlIiwiY29tcGF0IiwicnVsZXMiLCJpbnNlcnQiLCJzaGVldCIsImtleSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibm9uY2UiLCJzaGVldFJlZiIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwic3BlZWR5IiwiaXNTcGVlZHkiLCJyZWh5ZHJhdGluZyIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0YWdzIiwibGVuZ3RoIiwiYmVmb3JlIiwic2V0QXR0cmlidXRlIiwiaHlkcmF0ZSIsImN1cnJlbnQiLCJmbHVzaCIsInNoZWV0UmVmQ3VycmVudCIsImVsZW1lbnQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJjc3MiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImtleWZyYW1lcyIsImluc2VydGFibGUiLCJhcHBseSIsImFuaW0iLCJ0b1N0cmluZyIsInRoaXMiLCJnZXRTdmdJY29uVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsIlN2Z0ljb25Sb290Iiwic3R5bGVkIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJvd25lclN0YXRlIiwicm9vdCIsImNvbG9yIiwiY2FwaXRhbGl6ZSIsImZvbnRTaXplIiwidGhlbWUiLCJfdGhlbWUkdHJhbnNpdGlvbnMiLCJfdGhlbWUkdHJhbnNpdGlvbnMkY3IiLCJfdGhlbWUkdHJhbnNpdGlvbnMyIiwiX3RoZW1lJHR5cG9ncmFwaHkiLCJfdGhlbWUkdHlwb2dyYXBoeSRweFQiLCJfdGhlbWUkdHlwb2dyYXBoeTIiLCJfdGhlbWUkdHlwb2dyYXBoeTIkcHgiLCJfdGhlbWUkdHlwb2dyYXBoeTMiLCJfdGhlbWUkdHlwb2dyYXBoeTMkcHgiLCJfcGFsZXR0ZSRvd25lclN0YXRlJGMiLCJfcGFsZXR0ZSIsIl9wYWxldHRlMiIsIl9wYWxldHRlMyIsInVzZXJTZWxlY3QiLCJ3aWR0aCIsImhlaWdodCIsImRpc3BsYXkiLCJmaWxsIiwiaGFzU3ZnQXNDaGlsZCIsImZsZXhTaHJpbmsiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJjYWxsIiwiZHVyYXRpb24iLCJzaG9ydGVyIiwiaW5oZXJpdCIsInNtYWxsIiwidHlwb2dyYXBoeSIsInB4VG9SZW0iLCJtZWRpdW0iLCJsYXJnZSIsInZhcnMiLCJwYWxldHRlIiwibWFpbiIsImFjdGlvbiIsImFjdGl2ZSIsImRpc2FibGVkIiwiU3ZnSWNvbiIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJjb21wb25lbnQiLCJodG1sQ29sb3IiLCJpbmhlcml0Vmlld0JveCIsInRpdGxlQWNjZXNzIiwidmlld0JveCIsIm90aGVyIiwidHlwZSIsImluc3RhbmNlRm9udFNpemUiLCJtb3JlIiwiY2xhc3NlcyIsInNsb3RzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImFzIiwiZm9jdXNhYmxlIiwicm9sZSIsIm11aU5hbWUiLCJjcmVhdGVTdmdJY29uIiwicGF0aCIsImRpc3BsYXlOYW1lIiwiQ29tcG9uZW50IiwibXVpTmFtZXMiLCJpbmRleE9mIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwiZnVuY3MiLCJyZWR1Y2UiLCJhY2MiLCJmdW5jIiwiZGVib3VuY2UiLCJ3YWl0IiwidGltZW91dCIsImRlYm91bmNlZCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJjbGVhciIsIm93bmVyRG9jdW1lbnQiLCJvd25lcldpbmRvdyIsImRlZmF1bHRWaWV3Iiwid2luZG93IiwidXNlQ29udHJvbGxlZCIsImNvbnRyb2xsZWQiLCJkZWZhdWx0IiwiZGVmYXVsdFByb3AiLCJzdGF0ZSIsImlzQ29udHJvbGxlZCIsInZhbHVlU3RhdGUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwiZ2xvYmFsSWQiLCJtYXliZVJlYWN0VXNlSWQiLCJ1c2VJZCIsImlkT3ZlcnJpZGUiLCJyZWFjdElkIiwiZGVmYXVsdElkIiwic2V0RGVmYXVsdElkIiwiaWQiLCJ1c2VHbG9iYWxJZCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1159.bfcc3761.js b/react_frontend/static/react_frontend/js/1159.bfcc3761.js new file mode 100644 index 000000000..e844e1fc1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1159.bfcc3761.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1159],{3540:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1166.89a454fc.js b/react_frontend/static/react_frontend/js/1166.89a454fc.js new file mode 100644 index 000000000..d6a7a9012 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1166.89a454fc.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1166],{1166:(t,n,r)=>{r.r(n),r.d(n,{updatePath:()=>e});var e=function(t,n,r,e){for(var a="M ",o=0;o0&&n(a)}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTE2Ni4xMDU1ZGRlYy5qcyIsIm1hcHBpbmdzIjoiaUpBQU8sSUFBTUEsRUFBYSxTQUFDQyxFQUFPQyxFQUFpQkMsRUFBUUMsR0FHekQsSUFGQSxJQUFJQyxFQUFVLEtBRUxDLEVBQVEsRUFBR0EsRUFBUUwsRUFBTU0sT0FBUUQsSUFBUyxDQUNqRCxJQUFNRSxFQUFVUCxFQUFNSyxHQUNsQkcsRUFBT0QsRUFBUSxHQUFLTCxFQUNwQk8sRUFBT0YsRUFBUSxHQUFLSixFQUNWLElBQVZFLElBQ0ZELEdBQVdLLEVBQUtDLFdBQVksSUFBTUYsRUFBSUUsWUFFeENOLEdBQVcsTUFBUUssRUFBS0MsV0FBYSxJQUFNRixFQUFJRSxVQUNqRCxDQUVJVixFQUFNTSxPQUFTLEdBQ2pCTCxFQUFnQkcsRUFFcEIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2dsb2JhbF9uYXZpZ2F0aW9uL3JlYWN0LWNvbXBvbmVudHMvaGVscGVycy9HbG9iYWxOYXZpZ2F0aW9uSGVscGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1cGRhdGVQYXRoID0gKHRyYWlsLCBzZXRQYXRoQ2FsbGJhY2ssIGhlaWdodCwgd2lkdGgpID0+IHtcclxuICB2YXIgbmV3UGF0aCA9IFwiTSBcIjtcclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRyYWlsLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRyYWlsW2luZGV4XTtcclxuICAgIHZhciB0b3AgID0gZWxlbWVudFsxXSAqIGhlaWdodDtcclxuICAgIHZhciBsZWZ0ID0gZWxlbWVudFswXSAqIHdpZHRoO1xyXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIG5ld1BhdGggKz0gbGVmdC50b1N0cmluZygpKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbmV3UGF0aCArPSBcIiBMIFwiICsgbGVmdC50b1N0cmluZygpICsgXCIsXCIgKyB0b3AudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGlmICh0cmFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICBzZXRQYXRoQ2FsbGJhY2sobmV3UGF0aClcclxuICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbInVwZGF0ZVBhdGgiLCJ0cmFpbCIsInNldFBhdGhDYWxsYmFjayIsImhlaWdodCIsIndpZHRoIiwibmV3UGF0aCIsImluZGV4IiwibGVuZ3RoIiwiZWxlbWVudCIsInRvcCIsImxlZnQiLCJ0b1N0cmluZyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1167.1062705c.js b/react_frontend/static/react_frontend/js/1167.1062705c.js new file mode 100644 index 000000000..23b440716 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1167.1062705c.js @@ -0,0 +1,76 @@ +/*! For license information please see 1167.1062705c.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1167],{6606:(e,t,n)=>{n.d(t,{A:()=>_});var r=n(8168),o=n(8587),i=n(6540),c=n(53),a=n(5659),s=n(7577),u=n(4409),l=n(6852),p=n(3034),d=n(1544),f=n(5540),m=n(7241);function h(e,t){var n=Object.create(null);return e&&i.Children.map(e,(function(e){return e})).forEach((function(e){n[e.key]=function(e){return t&&(0,i.isValidElement)(e)?t(e):e}(e)})),n}function y(e,t,n){return null!=n[t]?n[t]:e.props[t]}function b(e,t,n){var r=h(e.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,o=Object.create(null),i=[];for(var c in e)c in t?i.length&&(o[c]=i,i=[]):i.push(c);var a={};for(var s in t){if(o[s])for(r=0;re;const k=(0,x.i7)($||($=C` + 0% { + transform: scale(0); + opacity: 0.1; + } + + 100% { + transform: scale(1); + opacity: 0.3; + } +`)),j=(0,x.i7)(w||(w=C` + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +`)),O=(0,x.i7)(T||(T=C` + 0% { + transform: scale(1); + } + + 50% { + transform: scale(0.92); + } + + 100% { + transform: scale(1); + } +`)),V=(0,s.Ay)("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),L=(0,s.Ay)((function(e){const{className:t,classes:n,pulsate:r=!1,rippleX:o,rippleY:a,rippleSize:s,in:u,onExited:l,timeout:p}=e,[d,f]=i.useState(!1),m=(0,c.A)(t,n.ripple,n.rippleVisible,r&&n.ripplePulsate),h={width:s,height:s,top:-s/2+a,left:-s/2+o},y=(0,c.A)(n.child,d&&n.childLeaving,r&&n.childPulsate);return u||d||f(!0),i.useEffect((()=>{if(!u&&null!=l){const e=setTimeout(l,p);return()=>{clearTimeout(e)}}}),[l,u,p]),(0,R.jsx)("span",{className:m,style:h,children:(0,R.jsx)("span",{className:y})})}),{name:"MuiTouchRipple",slot:"Ripple"})(P||(P=C` + opacity: 0; + position: absolute; + + &.${0} { + opacity: 0.3; + transform: scale(1); + animation-name: ${0}; + animation-duration: ${0}ms; + animation-timing-function: ${0}; + } + + &.${0} { + animation-duration: ${0}ms; + } + + & .${0} { + opacity: 1; + display: block; + width: 100%; + height: 100%; + border-radius: 50%; + background-color: currentColor; + } + + & .${0} { + opacity: 0; + animation-name: ${0}; + animation-duration: ${0}ms; + animation-timing-function: ${0}; + } + + & .${0} { + position: absolute; + /* @noflip */ + left: 0px; + top: 0; + animation-name: ${0}; + animation-duration: 2500ms; + animation-timing-function: ${0}; + animation-iteration-count: infinite; + animation-delay: 200ms; + } +`),M.rippleVisible,k,550,(({theme:e})=>e.transitions.easing.easeInOut),M.ripplePulsate,(({theme:e})=>e.transitions.duration.shorter),M.child,M.childLeaving,j,550,(({theme:e})=>e.transitions.easing.easeInOut),M.childPulsate,O,(({theme:e})=>e.transitions.easing.easeInOut)),D=i.forwardRef((function(e,t){const n=(0,u.A)({props:e,name:"MuiTouchRipple"}),{center:a=!1,classes:s={},className:l}=n,p=(0,o.A)(n,S),[d,f]=i.useState([]),m=i.useRef(0),h=i.useRef(null);i.useEffect((()=>{h.current&&(h.current(),h.current=null)}),[d]);const y=i.useRef(!1),b=i.useRef(0),v=i.useRef(null),g=i.useRef(null);i.useEffect((()=>()=>{b.current&&clearTimeout(b.current)}),[]);const x=i.useCallback((e=>{const{pulsate:t,rippleX:n,rippleY:r,rippleSize:o,cb:i}=e;f((e=>[...e,(0,R.jsx)(L,{classes:{ripple:(0,c.A)(s.ripple,M.ripple),rippleVisible:(0,c.A)(s.rippleVisible,M.rippleVisible),ripplePulsate:(0,c.A)(s.ripplePulsate,M.ripplePulsate),child:(0,c.A)(s.child,M.child),childLeaving:(0,c.A)(s.childLeaving,M.childLeaving),childPulsate:(0,c.A)(s.childPulsate,M.childPulsate)},timeout:550,pulsate:t,rippleX:n,rippleY:r,rippleSize:o},m.current)])),m.current+=1,h.current=i}),[s]),E=i.useCallback(((e={},t={},n=()=>{})=>{const{pulsate:r=!1,center:o=a||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&y.current)return void(y.current=!1);"touchstart"===(null==e?void 0:e.type)&&(y.current=!0);const c=i?null:g.current,s=c?c.getBoundingClientRect():{width:0,height:0,left:0,top:0};let u,l,p;if(o||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)u=Math.round(s.width/2),l=Math.round(s.height/2);else{const{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;u=Math.round(t-s.left),l=Math.round(n-s.top)}if(o)p=Math.sqrt((2*s.width**2+s.height**2)/3),p%2==0&&(p+=1);else{const e=2*Math.max(Math.abs((c?c.clientWidth:0)-u),u)+2,t=2*Math.max(Math.abs((c?c.clientHeight:0)-l),l)+2;p=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===v.current&&(v.current=()=>{x({pulsate:r,rippleX:u,rippleY:l,rippleSize:p,cb:n})},b.current=setTimeout((()=>{v.current&&(v.current(),v.current=null)}),80)):x({pulsate:r,rippleX:u,rippleY:l,rippleSize:p,cb:n})}),[a,x]),$=i.useCallback((()=>{E({},{pulsate:!0})}),[E]),w=i.useCallback(((e,t)=>{if(clearTimeout(b.current),"touchend"===(null==e?void 0:e.type)&&v.current)return v.current(),v.current=null,void(b.current=setTimeout((()=>{w(e,t)})));v.current=null,f((e=>e.length>0?e.slice(1):e)),h.current=t}),[]);return i.useImperativeHandle(t,(()=>({pulsate:$,start:E,stop:w})),[$,E,w]),(0,R.jsx)(V,(0,r.A)({className:(0,c.A)(M.root,s.root,l),ref:g},p,{children:(0,R.jsx)(A,{component:null,exit:!0,children:d})}))}));var F=n(1609);function N(e){return(0,F.A)("MuiButtonBase",e)}const B=(0,E.A)("MuiButtonBase",["root","disabled","focusVisible"]),z=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],I=(0,s.Ay)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${B.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),_=i.forwardRef((function(e,t){const n=(0,u.A)({props:e,name:"MuiButtonBase"}),{action:s,centerRipple:f=!1,children:m,className:h,component:y="button",disabled:b=!1,disableRipple:v=!1,disableTouchRipple:g=!1,focusRipple:A=!1,LinkComponent:x="a",onBlur:E,onClick:M,onContextMenu:S,onDragLeave:$,onFocus:w,onFocusVisible:T,onKeyDown:P,onKeyUp:C,onMouseDown:k,onMouseLeave:j,onMouseUp:O,onTouchEnd:V,onTouchMove:L,onTouchStart:F,tabIndex:B=0,TouchRippleProps:_,touchRippleRef:K,type:X}=n,U=(0,o.A)(n,z),Y=i.useRef(null),H=i.useRef(null),W=(0,l.A)(H,K),{isFocusVisibleRef:q,onFocus:G,onBlur:J,ref:Q}=(0,d.A)(),[Z,ee]=i.useState(!1);b&&Z&&ee(!1),i.useImperativeHandle(s,(()=>({focusVisible:()=>{ee(!0),Y.current.focus()}})),[]);const[te,ne]=i.useState(!1);i.useEffect((()=>{ne(!0)}),[]);const re=te&&!v&&!b;function oe(e,t,n=g){return(0,p.A)((r=>(t&&t(r),!n&&H.current&&H.current[e](r),!0)))}i.useEffect((()=>{Z&&A&&!v&&te&&H.current.pulsate()}),[v,A,Z,te]);const ie=oe("start",k),ce=oe("stop",S),ae=oe("stop",$),se=oe("stop",O),ue=oe("stop",(e=>{Z&&e.preventDefault(),j&&j(e)})),le=oe("start",F),pe=oe("stop",V),de=oe("stop",L),fe=oe("stop",(e=>{J(e),!1===q.current&&ee(!1),E&&E(e)}),!1),me=(0,p.A)((e=>{Y.current||(Y.current=e.currentTarget),G(e),!0===q.current&&(ee(!0),T&&T(e)),w&&w(e)})),he=()=>{const e=Y.current;return y&&"button"!==y&&!("A"===e.tagName&&e.href)},ye=i.useRef(!1),be=(0,p.A)((e=>{A&&!ye.current&&Z&&H.current&&" "===e.key&&(ye.current=!0,H.current.stop(e,(()=>{H.current.start(e)}))),e.target===e.currentTarget&&he()&&" "===e.key&&e.preventDefault(),P&&P(e),e.target===e.currentTarget&&he()&&"Enter"===e.key&&!b&&(e.preventDefault(),M&&M(e))})),ve=(0,p.A)((e=>{A&&" "===e.key&&H.current&&Z&&!e.defaultPrevented&&(ye.current=!1,H.current.stop(e,(()=>{H.current.pulsate(e)}))),C&&C(e),M&&e.target===e.currentTarget&&he()&&" "===e.key&&!e.defaultPrevented&&M(e)}));let ge=y;"button"===ge&&(U.href||U.to)&&(ge=x);const Ae={};"button"===ge?(Ae.type=void 0===X?"button":X,Ae.disabled=b):(U.href||U.to||(Ae.role="button"),b&&(Ae["aria-disabled"]=b));const xe=(0,l.A)(t,Q,Y),Re=(0,r.A)({},n,{centerRipple:f,component:y,disabled:b,disableRipple:v,disableTouchRipple:g,focusRipple:A,tabIndex:B,focusVisible:Z}),Ee=(e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:o}=e,i={root:["root",t&&"disabled",n&&"focusVisible"]},c=(0,a.A)(i,N,o);return n&&r&&(c.root+=` ${r}`),c})(Re);return(0,R.jsxs)(I,(0,r.A)({as:ge,className:(0,c.A)(Ee.root,h),ownerState:Re,onBlur:fe,onClick:M,onContextMenu:ce,onFocus:me,onKeyDown:be,onKeyUp:ve,onMouseDown:ie,onMouseLeave:ue,onMouseUp:se,onDragLeave:ae,onTouchEnd:pe,onTouchMove:de,onTouchStart:le,ref:xe,tabIndex:b?-1:B,type:X},Ae,U,{children:[m,re?(0,R.jsx)(D,(0,r.A)({ref:W,center:f},_)):null]}))}))},3034:(e,t,n)=>{n.d(t,{A:()=>r});const r=n(1547).A},6852:(e,t,n)=>{n.d(t,{A:()=>r});const r=n(1523).A},1544:(e,t,n)=>{n.d(t,{A:()=>p});var r=n(6540);let o,i=!0,c=!1;const a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(e){e.metaKey||e.altKey||e.ctrlKey||(i=!0)}function u(){i=!1}function l(){"hidden"===this.visibilityState&&c&&(i=!0)}const p=function(){const e=r.useCallback((e=>{var t;null!=e&&((t=e.ownerDocument).addEventListener("keydown",s,!0),t.addEventListener("mousedown",u,!0),t.addEventListener("pointerdown",u,!0),t.addEventListener("touchstart",u,!0),t.addEventListener("visibilitychange",l,!0))}),[]),t=r.useRef(!1);return{isFocusVisibleRef:t,onFocus:function(e){return!!function(e){const{target:t}=e;try{return t.matches(":focus-visible")}catch(e){}return i||function(e){const{type:t,tagName:n}=e;return!("INPUT"!==n||!a[t]||e.readOnly)||"TEXTAREA"===n&&!e.readOnly||!!e.isContentEditable}(t)}(e)&&(t.current=!0,!0)},onBlur:function(){return!!t.current&&(c=!0,window.clearTimeout(o),o=window.setTimeout((()=>{c=!1}),100),t.current=!1,!0)},ref:e}}},989:(e,t,n)=>{function r(e,t){"function"==typeof e?e(t):e&&(e.current=t)}n.d(t,{A:()=>r})},1529:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(6540);const o="undefined"!=typeof window?r.useLayoutEffect:r.useEffect},1547:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(6540),o=n(1529);const i=function(e){const t=r.useRef(e);return(0,o.A)((()=>{t.current=e})),r.useCallback(((...e)=>(0,t.current)(...e)),[])}},1523:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(6540),o=n(989);function i(...e){return r.useMemo((()=>e.every((e=>null==e))?null:t=>{e.forEach((e=>{(0,o.A)(e,t)}))}),e)}},4146:(e,t,n)=>{var r=n(3404),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},c={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},a={};function s(e){return r.isMemo(e)?c:a[e.$$typeof]||o}a[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},a[r.Memo]=c;var u=Object.defineProperty,l=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,r)}var c=l(n);p&&(c=c.concat(p(n)));for(var a=s(t),h=s(n),y=0;y{var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,i=n?Symbol.for("react.fragment"):60107,c=n?Symbol.for("react.strict_mode"):60108,a=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,l=n?Symbol.for("react.async_mode"):60111,p=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,f=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,y=n?Symbol.for("react.lazy"):60116,b=n?Symbol.for("react.block"):60121,v=n?Symbol.for("react.fundamental"):60117,g=n?Symbol.for("react.responder"):60118,A=n?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case l:case p:case i:case a:case c:case f:return e;default:switch(e=e&&e.$$typeof){case u:case d:case y:case h:case s:return e;default:return t}}case o:return t}}}function R(e){return x(e)===p}t.AsyncMode=l,t.ConcurrentMode=p,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=d,t.Fragment=i,t.Lazy=y,t.Memo=h,t.Portal=o,t.Profiler=a,t.StrictMode=c,t.Suspense=f,t.isAsyncMode=function(e){return R(e)||x(e)===l},t.isConcurrentMode=R,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===d},t.isFragment=function(e){return x(e)===i},t.isLazy=function(e){return x(e)===y},t.isMemo=function(e){return x(e)===h},t.isPortal=function(e){return x(e)===o},t.isProfiler=function(e){return x(e)===a},t.isStrictMode=function(e){return x(e)===c},t.isSuspense=function(e){return x(e)===f},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===p||e===a||e===c||e===f||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===y||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===d||e.$$typeof===v||e.$$typeof===g||e.$$typeof===A||e.$$typeof===b)},t.typeOf=x},3404:(e,t,n)=>{e.exports=n(3072)},7241:(e,t,n)=>{n.d(t,{A:()=>r});const r=n(6540).createContext(null)},5540:(e,t,n)=>{function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTE2Ny5hOTMzMTBmNi5qcyIsIm1hcHBpbmdzIjoiOzJQQVFPLFNBQVNBLEVBQWdCQyxFQUFVQyxHQUN4QyxJQUlJQyxFQUFTQyxPQUFPQyxPQUFPLE1BTzNCLE9BTklKLEdBQVUsRUFBQUssU0FBU0MsSUFBSU4sR0FBVSxTQUFVTyxHQUM3QyxPQUFPQSxDQUNULElBQUdDLFNBQVEsU0FBVUMsR0FFbkJQLEVBQU9PLEVBQU1DLEtBVEYsU0FBZ0JELEdBQzNCLE9BQU9SLElBQVMsSUFBQVUsZ0JBQWVGLEdBQVNSLEVBQU1RLEdBQVNBLENBQ3pELENBT3NCRyxDQUFPSCxFQUM3QixJQUNPUCxDQUNULENBaUVBLFNBQVNXLEVBQVFKLEVBQU9LLEVBQU1DLEdBQzVCLE9BQXNCLE1BQWZBLEVBQU1ELEdBQWdCQyxFQUFNRCxHQUFRTCxFQUFNTSxNQUFNRCxFQUN6RCxDQWFPLFNBQVNFLEVBQW9CQyxFQUFXQyxFQUFrQkMsR0FDL0QsSUFBSUMsRUFBbUJyQixFQUFnQmtCLEVBQVVqQixVQUM3Q0EsRUEvREMsU0FBNEJxQixFQUFNQyxHQUl2QyxTQUFTQyxFQUFlYixHQUN0QixPQUFPQSxLQUFPWSxFQUFPQSxFQUFLWixHQUFPVyxFQUFLWCxFQUN4QyxDQUxBVyxFQUFPQSxHQUFRLENBQUMsRUFDaEJDLEVBQU9BLEdBQVEsQ0FBQyxFQVFoQixJQWNJRSxFQWRBQyxFQUFrQnRCLE9BQU9DLE9BQU8sTUFDaENzQixFQUFjLEdBRWxCLElBQUssSUFBSUMsS0FBV04sRUFDZE0sS0FBV0wsRUFDVEksRUFBWUUsU0FDZEgsRUFBZ0JFLEdBQVdELEVBQzNCQSxFQUFjLElBR2hCQSxFQUFZRyxLQUFLRixHQUtyQixJQUFJRyxFQUFlLENBQUMsRUFFcEIsSUFBSyxJQUFJQyxLQUFXVCxFQUFNLENBQ3hCLEdBQUlHLEVBQWdCTSxHQUNsQixJQUFLUCxFQUFJLEVBQUdBLEVBQUlDLEVBQWdCTSxHQUFTSCxPQUFRSixJQUFLLENBQ3BELElBQUlRLEVBQWlCUCxFQUFnQk0sR0FBU1AsR0FDOUNNLEVBQWFMLEVBQWdCTSxHQUFTUCxJQUFNRCxFQUFlUyxFQUM3RCxDQUdGRixFQUFhQyxHQUFXUixFQUFlUSxFQUN6QyxDQUdBLElBQUtQLEVBQUksRUFBR0EsRUFBSUUsRUFBWUUsT0FBUUosSUFDbENNLEVBQWFKLEVBQVlGLElBQU1ELEVBQWVHLEVBQVlGLElBRzVELE9BQU9NLENBQ1QsQ0FtQmlCRyxDQUFtQmYsRUFBa0JFLEdBbUNwRCxPQWxDQWpCLE9BQU8rQixLQUFLbEMsR0FBVVEsU0FBUSxTQUFVRSxHQUN0QyxJQUFJRCxFQUFRVCxFQUFTVSxHQUNyQixJQUFLLElBQUFDLGdCQUFlRixHQUFwQixDQUNBLElBQUkwQixFQUFXekIsS0FBT1EsRUFDbEJrQixFQUFXMUIsS0FBT1UsRUFDbEJpQixFQUFZbkIsRUFBaUJSLEdBQzdCNEIsR0FBWSxJQUFBM0IsZ0JBQWUwQixLQUFlQSxFQUFVdEIsTUFBTXdCLElBRTFESCxHQUFhRCxJQUFXRyxFQVFoQkYsSUFBV0QsR0FBWUcsRUFNeEJGLEdBQVdELElBQVcsSUFBQXhCLGdCQUFlMEIsS0FJOUNyQyxFQUFTVSxJQUFPLElBQUE4QixjQUFhL0IsRUFBTyxDQUNsQ1UsU0FBVUEsRUFBU3NCLEtBQUssS0FBTWhDLEdBQzlCOEIsR0FBSUYsRUFBVXRCLE1BQU13QixHQUNwQkcsS0FBTTdCLEVBQVFKLEVBQU8sT0FBUVEsR0FDN0IwQixNQUFPOUIsRUFBUUosRUFBTyxRQUFTUSxNQVhqQ2pCLEVBQVNVLElBQU8sSUFBQThCLGNBQWEvQixFQUFPLENBQ2xDOEIsSUFBSSxJQVZOdkMsRUFBU1UsSUFBTyxJQUFBOEIsY0FBYS9CLEVBQU8sQ0FDbENVLFNBQVVBLEVBQVNzQixLQUFLLEtBQU1oQyxHQUM5QjhCLElBQUksRUFDSkcsS0FBTTdCLEVBQVFKLEVBQU8sT0FBUVEsR0FDN0IwQixNQUFPOUIsRUFBUUosRUFBTyxRQUFTUSxJQVpELENBK0JwQyxJQUNPakIsQ0FDVCxDQ2xJQSxJQUFJNEMsRUFBU3pDLE9BQU95QyxRQUFVLFNBQVVDLEdBQ3RDLE9BQU8xQyxPQUFPK0IsS0FBS1csR0FBS3ZDLEtBQUksU0FBVXdDLEdBQ3BDLE9BQU9ELEVBQUlDLEVBQ2IsR0FDRixFQXVCSUMsRUFBK0IsU0FBVUMsR0FHM0MsU0FBU0QsRUFBZ0JoQyxFQUFPa0MsR0FDOUIsSUFBSUMsRUFJQUMsR0FGSkQsRUFBUUYsRUFBaUJJLEtBQUtDLEtBQU10QyxFQUFPa0MsSUFBWUksTUFFOUJGLGFBQWFWLEtDNUMxQyxTQUFnQ2EsR0FDOUIsUUFBSSxJQUFXQSxFQUFHLE1BQU0sSUFBSUMsZUFBZSw2REFDM0MsT0FBT0QsQ0FDVCxDRHlDK0NFLENBQXVCTixJQVVsRSxPQVBBQSxFQUFNTyxNQUFRLENBQ1pDLGFBQWMsQ0FDWkMsWUFBWSxHQUVkUixhQUFjQSxFQUNkUyxhQUFhLEdBRVJWLENBQ1QsRUFsQkEsT0FBZUgsRUFBaUJDLEdBb0JoQyxJQUFJYSxFQUFTZCxFQUFnQmUsVUFxRTdCLE9BbkVBRCxFQUFPRSxrQkFBb0IsV0FDekJWLEtBQUtXLFNBQVUsRUFDZlgsS0FBS1ksU0FBUyxDQUNaUCxhQUFjLENBQ1pDLFlBQVksSUFHbEIsRUFFQUUsRUFBT0sscUJBQXVCLFdBQzVCYixLQUFLVyxTQUFVLENBQ2pCLEVBRUFqQixFQUFnQm9CLHlCQUEyQixTQUFrQ2xELEVBQVdtRCxHQUN0RixJRGlCbUNyRCxFQUFPSSxFQ2pCdENELEVBQW1Ca0QsRUFBS3BFLFNBQ3hCbUQsRUFBZWlCLEVBQUtqQixhQUV4QixNQUFPLENBQ0xuRCxTQUZnQm9FLEVBQUtSLGFEZVk3QyxFQ2JjRSxFRGFQRSxFQ2JrQmdDLEVEY3ZEcEQsRUFBZ0JnQixFQUFNZixVQUFVLFNBQVVTLEdBQy9DLE9BQU8sSUFBQStCLGNBQWEvQixFQUFPLENBQ3pCVSxTQUFVQSxFQUFTc0IsS0FBSyxLQUFNaEMsR0FDOUI4QixJQUFJLEVBQ0o4QixPQUFReEQsRUFBUUosRUFBTyxTQUFVTSxHQUNqQzRCLE1BQU85QixFQUFRSixFQUFPLFFBQVNNLEdBQy9CMkIsS0FBTTdCLEVBQVFKLEVBQU8sT0FBUU0sSUFFakMsS0N0QjhFQyxFQUFvQkMsRUFBV0MsRUFBa0JpQyxHQUMzSFMsYUFBYSxFQUVqQixFQUdBQyxFQUFPVixhQUFlLFNBQXNCMUMsRUFBTzZELEdBQ2pELElBQUlDLEVBQXNCeEUsRUFBZ0JzRCxLQUFLdEMsTUFBTWYsVUFDakRTLEVBQU1DLE9BQU82RCxJQUViOUQsRUFBTU0sTUFBTUksVUFDZFYsRUFBTU0sTUFBTUksU0FBU21ELEdBR25CakIsS0FBS1csU0FDUFgsS0FBS1ksVUFBUyxTQUFVUixHQUN0QixJQUFJekQsR0FBVyxPQUFTLENBQUMsRUFBR3lELEVBQU16RCxVQUdsQyxjQURPQSxFQUFTUyxFQUFNQyxLQUNmLENBQ0xWLFNBQVVBLEVBRWQsSUFFSixFQUVBNkQsRUFBT1csT0FBUyxXQUNkLElBQUlDLEVBQWNwQixLQUFLdEMsTUFDbkIyRCxFQUFZRCxFQUFZRSxVQUN4QkMsRUFBZUgsRUFBWUcsYUFDM0I3RCxHQUFRLE9BQThCMEQsRUFBYSxDQUFDLFlBQWEsaUJBRWpFZixFQUFlTCxLQUFLSSxNQUFNQyxhQUMxQjFELEVBQVc0QyxFQUFPUyxLQUFLSSxNQUFNekQsVUFBVU0sSUFBSXNFLEdBSy9DLGNBSk83RCxFQUFNc0QsY0FDTnRELEVBQU00QixhQUNONUIsRUFBTTJCLEtBRUssT0FBZGdDLEVBQ2tCLGdCQUFvQkcsRUFBQSxFQUF1QkMsU0FBVSxDQUN2RUMsTUFBT3JCLEdBQ04xRCxHQUdlLGdCQUFvQjZFLEVBQUEsRUFBdUJDLFNBQVUsQ0FDdkVDLE1BQU9yQixHQUNPLGdCQUFvQmdCLEVBQVczRCxFQUFPZixHQUN4RCxFQUVPK0MsQ0FDVCxDQTNGbUMsQ0EyRmpDLGFBRUZBLEVBQWdCaUMsVUF5RFosQ0FBQyxFQUNMakMsRUFBZ0JrQyxhQTVLRyxDQUNqQk4sVUFBVyxNQUNYQyxhQUFjLFNBQXNCbkUsR0FDbEMsT0FBT0EsQ0FDVCxHQXlLRixnREV2TEEsTUFDQSxHQUQyQixFQUFBeUUsRUFBQSxHQUF1QixpQkFBa0IsQ0FBQyxPQUFRLFNBQVUsZ0JBQWlCLGdCQUFpQixRQUFTLGVBQWdCLGlCQ0Q1SUMsRUFBWSxDQUFDLFNBQVUsVUFBVyxhQUN4QyxJQUNFQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUpFQyxFQUFJQyxHQUFLQSxFQWViLE1BRU1DLEdBQWdCLFFBQVVOLElBQU9BLEVBQUtJLENBQUM7Ozs7Ozs7Ozs7SUFXdkNHLEdBQWUsUUFBVU4sSUFBUUEsRUFBTUcsQ0FBQzs7Ozs7Ozs7SUFTeENJLEdBQWtCLFFBQVVOLElBQVFBLEVBQU1FLENBQUM7Ozs7Ozs7Ozs7OztJQWFwQ0ssR0FBa0IsRUFBQUMsRUFBQSxJQUFPLE9BQVEsQ0FDNUNDLEtBQU0saUJBQ05DLEtBQU0sUUFGdUIsQ0FHNUIsQ0FDREMsU0FBVSxTQUNWQyxjQUFlLE9BQ2ZDLFNBQVUsV0FDVkMsT0FBUSxFQUNSQyxJQUFLLEVBQ0xDLE1BQU8sRUFDUEMsT0FBUSxFQUNSQyxLQUFNLEVBQ05DLGFBQWMsWUFLSEMsR0FBb0IsRUFBQVosRUFBQSxLQzlEakMsU0FBZ0IvRSxHQUNkLE1BQU0sVUFDSjRGLEVBQVMsUUFDVEMsRUFBTyxRQUNQQyxHQUFVLEVBQUssUUFDZkMsRUFBTyxRQUNQQyxFQUFPLFdBQ1BDLEVBQ0F6RSxHQUFJMEUsRUFBTSxTQUNWOUYsRUFBUSxRQUNSK0YsR0FDRW5HLEdBQ0dvRyxFQUFTQyxHQUFjLFlBQWUsR0FDdkNDLEdBQWtCLE9BQUtWLEVBQVdDLEVBQVFVLE9BQVFWLEVBQVFXLGNBQWVWLEdBQVdELEVBQVFZLGVBQzVGQyxFQUFlLENBQ25CQyxNQUFPVixFQUNQVyxPQUFRWCxFQUNSWCxLQUFPVyxFQUFhLEVBQUtELEVBQ3pCUCxNQUFRUSxFQUFhLEVBQUtGLEdBRXRCYyxHQUFpQixPQUFLaEIsRUFBUW5HLE1BQU8wRyxHQUFXUCxFQUFRaUIsYUFBY2hCLEdBQVdELEVBQVFrQixjQWMvRixPQWJLYixHQUFXRSxHQUNkQyxHQUFXLEdBRWIsYUFBZ0IsS0FDZCxJQUFLSCxHQUFzQixNQUFaOUYsRUFBa0IsQ0FFL0IsTUFBTTRHLEVBQVlDLFdBQVc3RyxFQUFVK0YsR0FDdkMsTUFBTyxLQUNMZSxhQUFhRixFQUFVLENBRTNCLENBQ2dCLEdBQ2YsQ0FBQzVHLEVBQVU4RixFQUFRQyxLQUNGLFNBQUssT0FBUSxDQUMvQlAsVUFBV1UsRUFDWGEsTUFBT1QsRUFDUHpILFVBQXVCLFNBQUssT0FBUSxDQUNsQzJHLFVBQVdpQixLQUdqQixHRHFCZ0QsQ0FDOUM3QixLQUFNLGlCQUNOQyxLQUFNLFVBRnlCLENBRzlCVCxJQUFRQSxFQUFNQyxDQUFDOzs7O01BSVo7OztzQkFHZ0I7MEJBQ0k7aUNBQ087OztNQUczQjswQkFDb0I7OztPQUduQjs7Ozs7Ozs7O09BU0E7O3NCQUVlOzBCQUNJO2lDQUNPOzs7T0FHMUI7Ozs7O3NCQUtlOztpQ0FFVzs7OztHQUk3QixFQUFtQitCLGNBQWU3QixFQWxHckIsS0FrRzhDLEVBQzdEeUMsV0FDSUEsRUFBTUMsWUFBWUMsT0FBT0MsV0FBVyxFQUFtQmQsZUFBZSxFQUMxRVcsV0FDSUEsRUFBTUMsWUFBWUcsU0FBU0MsU0FBUyxFQUFtQi9ILE1BQU8sRUFBbUJvSCxhQUFjbEMsRUF0R3BGLEtBc0c0RyxFQUMzSHdDLFdBQ0lBLEVBQU1DLFlBQVlDLE9BQU9DLFdBQVcsRUFBbUJSLGFBQWNsQyxHQUFpQixFQUMxRnVDLFdBQ0lBLEVBQU1DLFlBQVlDLE9BQU9DLFlBb04vQixFQTdNaUMsY0FBaUIsU0FBcUJHLEVBQVNDLEdBQzlFLE1BQU0zSCxHQUFRLEVBQUE0SCxFQUFBLEdBQWMsQ0FDMUI1SCxNQUFPMEgsRUFDUDFDLEtBQU0sb0JBR0o2QyxPQUFRQyxHQUFhLEVBQUssUUFDMUJqQyxFQUFVLENBQUMsRUFBQyxVQUNaRCxHQUNFNUYsRUFDSitILEdBQVEsT0FBOEIvSCxFQUFPb0UsSUFDeEM0RCxFQUFTQyxHQUFjLFdBQWUsSUFDdkNqSCxFQUFVLFNBQWEsR0FDdkJrSCxFQUFpQixTQUFhLE1BQ3BDLGFBQWdCLEtBQ1ZBLEVBQWVDLFVBQ2pCRCxFQUFlQyxVQUNmRCxFQUFlQyxRQUFVLEtBQzNCLEdBQ0MsQ0FBQ0gsSUFHSixNQUFNSSxFQUFvQixVQUFhLEdBR2pDQyxFQUFhLFNBQWEsR0FHMUJDLEVBQW1CLFNBQWEsTUFDaENDLEVBQVksU0FBYSxNQUMvQixhQUFnQixJQUNQLEtBQ0RGLEVBQVdGLFNBQ2JqQixhQUFhbUIsRUFBV0YsUUFDMUIsR0FFRCxJQUNILE1BQU1LLEVBQWMsZUFBa0JDLElBQ3BDLE1BQU0sUUFDSjNDLEVBQU8sUUFDUEMsRUFBTyxRQUNQQyxFQUFPLFdBQ1BDLEVBQVUsR0FDVnlDLEdBQ0VELEVBQ0pSLEdBQVdVLEdBQWMsSUFBSUEsR0FBeUIsU0FBS2hELEVBQW1CLENBQzVFRSxRQUFTLENBQ1BVLFFBQVEsT0FBS1YsRUFBUVUsT0FBUSxFQUFtQkEsUUFDaERDLGVBQWUsT0FBS1gsRUFBUVcsY0FBZSxFQUFtQkEsZUFDOURDLGVBQWUsT0FBS1osRUFBUVksY0FBZSxFQUFtQkEsZUFDOUQvRyxPQUFPLE9BQUttRyxFQUFRbkcsTUFBTyxFQUFtQkEsT0FDOUNvSCxjQUFjLE9BQUtqQixFQUFRaUIsYUFBYyxFQUFtQkEsY0FDNURDLGNBQWMsT0FBS2xCLEVBQVFrQixhQUFjLEVBQW1CQSxlQUU5RFosUUF2S1csSUF3S1hMLFFBQVNBLEVBQ1RDLFFBQVNBLEVBQ1RDLFFBQVNBLEVBQ1RDLFdBQVlBLEdBQ1hqRixFQUFRbUgsWUFDWG5ILEVBQVFtSCxTQUFXLEVBQ25CRCxFQUFlQyxRQUFVTyxDQUFFLEdBQzFCLENBQUM3QyxJQUNFK0MsRUFBUSxlQUFrQixDQUFDQyxFQUFRLENBQUMsRUFBR0MsRUFBVSxDQUFDLEVBQUdKLEVBQUssVUFDOUQsTUFBTSxRQUNKNUMsR0FBVSxFQUFLLE9BQ2YrQixFQUFTQyxHQUFjZ0IsRUFBUWhELFFBQU8sWUFDdENpRCxHQUFjLEdBQ1pELEVBQ0osR0FBOEMsZUFBaEMsTUFBVEQsT0FBZ0IsRUFBU0EsRUFBTUcsT0FBeUJaLEVBQWtCRCxRQUU3RSxZQURBQyxFQUFrQkQsU0FBVSxHQUdnQixnQkFBaEMsTUFBVFUsT0FBZ0IsRUFBU0EsRUFBTUcsUUFDbENaLEVBQWtCRCxTQUFVLEdBRTlCLE1BQU1jLEVBQVVGLEVBQWMsS0FBT1IsRUFBVUosUUFDekNlLEVBQU9ELEVBQVVBLEVBQVFFLHdCQUEwQixDQUN2RHhDLE1BQU8sRUFDUEMsT0FBUSxFQUNSbkIsS0FBTSxFQUNOSCxJQUFLLEdBSVAsSUFBSVMsRUFDQUMsRUFDQUMsRUFDSixHQUFJNEIsUUFBb0J1QixJQUFWUCxHQUF5QyxJQUFsQkEsRUFBTVEsU0FBbUMsSUFBbEJSLEVBQU1TLFVBQWtCVCxFQUFNUSxVQUFZUixFQUFNVSxRQUMxR3hELEVBQVV5RCxLQUFLQyxNQUFNUCxFQUFLdkMsTUFBUSxHQUNsQ1gsRUFBVXdELEtBQUtDLE1BQU1QLEVBQUt0QyxPQUFTLE9BQzlCLENBQ0wsTUFBTSxRQUNKeUMsRUFBTyxRQUNQQyxHQUNFVCxFQUFNVSxTQUFXVixFQUFNVSxRQUFRMUksT0FBUyxFQUFJZ0ksRUFBTVUsUUFBUSxHQUFLVixFQUNuRTlDLEVBQVV5RCxLQUFLQyxNQUFNSixFQUFVSCxFQUFLekQsTUFDcENPLEVBQVV3RCxLQUFLQyxNQUFNSCxFQUFVSixFQUFLNUQsSUFDdEMsQ0FDQSxHQUFJdUMsRUFDRjVCLEVBQWF1RCxLQUFLRSxNQUFNLEVBQUlSLEVBQUt2QyxPQUFTLEVBQUl1QyxFQUFLdEMsUUFBVSxHQUFLLEdBRzlEWCxFQUFhLEdBQU0sSUFDckJBLEdBQWMsT0FFWCxDQUNMLE1BQU0wRCxFQUFxRixFQUE3RUgsS0FBS0ksSUFBSUosS0FBS0ssS0FBS1osRUFBVUEsRUFBUWEsWUFBYyxHQUFLL0QsR0FBVUEsR0FBZSxFQUN6RmdFLEVBQXNGLEVBQTlFUCxLQUFLSSxJQUFJSixLQUFLSyxLQUFLWixFQUFVQSxFQUFRZSxhQUFlLEdBQUtoRSxHQUFVQSxHQUFlLEVBQ2hHQyxFQUFhdUQsS0FBS0UsS0FBS0MsR0FBUyxFQUFJSSxHQUFTLEVBQy9DLENBR2EsTUFBVGxCLEdBQWlCQSxFQUFNVSxRQUlRLE9BQTdCakIsRUFBaUJILFVBRW5CRyxFQUFpQkgsUUFBVSxLQUN6QkssRUFBWSxDQUNWMUMsVUFDQUMsVUFDQUMsVUFDQUMsYUFDQXlDLE1BQ0EsRUFHSkwsRUFBV0YsUUFBVWxCLFlBQVcsS0FDMUJxQixFQUFpQkgsVUFDbkJHLEVBQWlCSCxVQUNqQkcsRUFBaUJILFFBQVUsS0FDN0IsR0FyUGtCLEtBeVB0QkssRUFBWSxDQUNWMUMsVUFDQUMsVUFDQUMsVUFDQUMsYUFDQXlDLE1BRUosR0FDQyxDQUFDWixFQUFZVSxJQUNWMUMsRUFBVSxlQUFrQixLQUNoQzhDLEVBQU0sQ0FBQyxFQUFHLENBQ1I5QyxTQUFTLEdBQ1QsR0FDRCxDQUFDOEMsSUFDRXFCLEVBQU8sZUFBa0IsQ0FBQ3BCLEVBQU9ILEtBS3JDLEdBSkF4QixhQUFhbUIsRUFBV0YsU0FJc0IsY0FBaEMsTUFBVFUsT0FBZ0IsRUFBU0EsRUFBTUcsT0FBd0JWLEVBQWlCSCxRQU0zRSxPQUxBRyxFQUFpQkgsVUFDakJHLEVBQWlCSCxRQUFVLFVBQzNCRSxFQUFXRixRQUFVbEIsWUFBVyxLQUM5QmdELEVBQUtwQixFQUFPSCxFQUFHLEtBSW5CSixFQUFpQkgsUUFBVSxLQUMzQkYsR0FBV1UsR0FDTEEsRUFBVzlILE9BQVMsRUFDZjhILEVBQVd1QixNQUFNLEdBRW5CdkIsSUFFVFQsRUFBZUMsUUFBVU8sQ0FBRSxHQUMxQixJQU1ILE9BTEEsc0JBQTBCZixHQUFLLEtBQU0sQ0FDbkM3QixVQUNBOEMsUUFDQXFCLFVBQ0UsQ0FBQ25FLEVBQVM4QyxFQUFPcUIsS0FDRCxTQUFLbkYsR0FBaUIsT0FBUyxDQUNqRGMsV0FBVyxPQUFLLEVBQW1CdUUsS0FBTXRFLEVBQVFzRSxLQUFNdkUsR0FDdkQrQixJQUFLWSxHQUNKUixFQUFPLENBQ1I5SSxVQUF1QixTQUFLLEVBQWlCLENBQzNDMkUsVUFBVyxLQUNYakMsTUFBTSxFQUNOMUMsU0FBVStJLE1BR2hCLGtCRS9UTyxTQUFTb0MsRUFBMEJuRixHQUN4QyxPQUFPLE9BQXFCLGdCQUFpQkEsRUFDL0MsQ0FDQSxNQUNBLEdBRDBCLEVBQUFkLEVBQUEsR0FBdUIsZ0JBQWlCLENBQUMsT0FBUSxXQUFZLGlCQ0RqRixFQUFZLENBQUMsU0FBVSxlQUFnQixXQUFZLFlBQWEsWUFBYSxXQUFZLGdCQUFpQixxQkFBc0IsY0FBZSx3QkFBeUIsZ0JBQWlCLFNBQVUsVUFBVyxnQkFBaUIsY0FBZSxVQUFXLGlCQUFrQixZQUFhLFVBQVcsY0FBZSxlQUFnQixZQUFhLGFBQWMsY0FBZSxlQUFnQixXQUFZLG1CQUFvQixpQkFBa0IsUUErQnZha0csR0FBaUIsRUFBQXRGLEVBQUEsSUFBTyxTQUFVLENBQzdDQyxLQUFNLGdCQUNOQyxLQUFNLE9BQ05xRixrQkFBbUIsQ0FBQ3RLLEVBQU91SyxJQUFXQSxFQUFPSixNQUhqQixDQUkzQixDQUNESyxRQUFTLGNBQ1RDLFdBQVksU0FDWkMsZUFBZ0IsU0FDaEJ0RixTQUFVLFdBQ1Z1RixVQUFXLGFBQ1hDLHdCQUF5QixjQUN6QkMsZ0JBQWlCLGNBR2pCQyxRQUFTLEVBQ1RDLE9BQVEsRUFDUkMsT0FBUSxFQUVSdEYsYUFBYyxFQUNkdUYsUUFBUyxFQUVUQyxPQUFRLFVBQ1JDLFdBQVksT0FDWkMsY0FBZSxTQUNmQyxjQUFlLE9BRWZDLGlCQUFrQixPQUVsQkMsZUFBZ0IsT0FFaEJDLE1BQU8sVUFDUCxzQkFBdUIsQ0FDckJDLFlBQWEsUUFHZixDQUFDLEtBQUssRUFBa0JDLFlBQWEsQ0FDbkN2RyxjQUFlLE9BRWYrRixPQUFRLFdBRVYsZUFBZ0IsQ0FDZFMsWUFBYSxXQWdaakIsRUF2WWdDLGNBQWlCLFNBQW9CakUsRUFBU0MsR0FDNUUsTUFBTTNILEdBQVEsRUFBQTRILEVBQUEsR0FBYyxDQUMxQjVILE1BQU8wSCxFQUNQMUMsS0FBTSxtQkFFRixPQUNGNEcsRUFBTSxhQUNOQyxHQUFlLEVBQUssU0FDcEI1TSxFQUFRLFVBQ1IyRyxFQUFTLFVBQ1RoQyxFQUFZLFNBQVEsU0FDcEI4SCxHQUFXLEVBQUssY0FDaEJJLEdBQWdCLEVBQUssbUJBQ3JCQyxHQUFxQixFQUFLLFlBQzFCQyxHQUFjLEVBQUssY0FDbkJDLEVBQWdCLElBQUcsT0FDbkJDLEVBQU0sUUFDTkMsRUFBTyxjQUNQQyxFQUFhLFlBQ2JDLEVBQVcsUUFDWEMsRUFBTyxlQUNQQyxFQUFjLFVBQ2RDLEVBQVMsUUFDVEMsRUFBTyxZQUNQQyxFQUFXLGFBQ1hDLEVBQVksVUFDWkMsRUFBUyxXQUNUQyxFQUFVLFlBQ1ZDLEVBQVcsYUFDWEMsRUFBWSxTQUNaQyxFQUFXLEVBQUMsaUJBQ1pDLEVBQWdCLGVBQ2hCQyxFQUFjLEtBQ2RsRSxHQUNFaEosRUFDSitILEdBQVEsT0FBOEIvSCxFQUFPLEdBQ3pDbU4sRUFBWSxTQUFhLE1BQ3pCQyxFQUFZLFNBQWEsTUFDekJDLEdBQWtCLEVBQUFDLEVBQUEsR0FBV0YsRUFBV0YsSUFDeEMsa0JBQ0pLLEVBQ0FqQixRQUFTa0IsRUFDVHRCLE9BQVF1QixFQUNSOUYsSUFBSytGLElBQ0gsRUFBQUMsRUFBQSxNQUNHQyxFQUFjQyxJQUFtQixZQUFlLEdBQ25EbkMsR0FBWWtDLEdBQ2RDLElBQWdCLEdBRWxCLHNCQUEwQmpDLEdBQVEsS0FBTSxDQUN0Q2dDLGFBQWMsS0FDWkMsSUFBZ0IsR0FDaEJWLEVBQVVoRixRQUFRMkYsT0FBTyxLQUV6QixJQUNKLE1BQU9DLEdBQWNDLElBQW1CLFlBQWUsR0FDdkQsYUFBZ0IsS0FDZEEsSUFBZ0IsRUFBSyxHQUNwQixJQUNILE1BQU1DLEdBQW9CRixLQUFpQmpDLElBQWtCSixFQU03RCxTQUFTd0MsR0FBaUJDLEVBQWNDLEVBQWVDLEVBQW1CdEMsR0FDeEUsT0FBTyxFQUFBdUMsRUFBQSxJQUFpQnpGLElBQ2xCdUYsR0FDRkEsRUFBY3ZGLElBRUR3RixHQUNBakIsRUFBVWpGLFNBQ3ZCaUYsRUFBVWpGLFFBQVFnRyxHQUFjdEYsSUFFM0IsSUFFWCxDQWhCQSxhQUFnQixLQUNWK0UsR0FBZ0I1QixJQUFnQkYsR0FBaUJpQyxJQUNuRFgsRUFBVWpGLFFBQVFyQyxTQUNwQixHQUNDLENBQUNnRyxFQUFlRSxFQUFhNEIsRUFBY0csS0FhOUMsTUFBTVEsR0FBa0JMLEdBQWlCLFFBQVN4QixHQUM1QzhCLEdBQW9CTixHQUFpQixPQUFROUIsR0FDN0NxQyxHQUFrQlAsR0FBaUIsT0FBUTdCLEdBQzNDcUMsR0FBZ0JSLEdBQWlCLE9BQVF0QixHQUN6QytCLEdBQW1CVCxHQUFpQixRQUFRckYsSUFDNUMrRSxHQUNGL0UsRUFBTStGLGlCQUVKakMsR0FDRkEsRUFBYTlELEVBQ2YsSUFFSWdHLEdBQW1CWCxHQUFpQixRQUFTbkIsR0FDN0MrQixHQUFpQlosR0FBaUIsT0FBUXJCLEdBQzFDa0MsR0FBa0JiLEdBQWlCLE9BQVFwQixHQUMzQ2tDLEdBQWFkLEdBQWlCLFFBQVFyRixJQUMxQzRFLEVBQWtCNUUsSUFDZ0IsSUFBOUIwRSxFQUFrQnBGLFNBQ3BCMEYsSUFBZ0IsR0FFZDNCLEdBQ0ZBLEVBQU9yRCxFQUNULElBQ0MsR0FDR29HLElBQWMsRUFBQVgsRUFBQSxJQUFpQnpGLElBRTlCc0UsRUFBVWhGLFVBQ2JnRixFQUFVaEYsUUFBVVUsRUFBTXFHLGVBRTVCMUIsRUFBbUIzRSxJQUNlLElBQTlCMEUsRUFBa0JwRixVQUNwQjBGLElBQWdCLEdBQ1p0QixHQUNGQSxFQUFlMUQsSUFHZnlELEdBQ0ZBLEVBQVF6RCxFQUNWLElBRUlzRyxHQUFvQixLQUN4QixNQUFNQyxFQUFTakMsRUFBVWhGLFFBQ3pCLE9BQU92RSxHQUEyQixXQUFkQSxLQUErQyxNQUFuQndMLEVBQU9DLFNBQW1CRCxFQUFPRSxLQUFLLEVBTWxGQyxHQUFhLFVBQWEsR0FDMUJDLElBQWdCLEVBQUFsQixFQUFBLElBQWlCekYsSUFFakNtRCxJQUFnQnVELEdBQVdwSCxTQUFXeUYsR0FBZ0JSLEVBQVVqRixTQUF5QixNQUFkVSxFQUFNbEosTUFDbkY0UCxHQUFXcEgsU0FBVSxFQUNyQmlGLEVBQVVqRixRQUFROEIsS0FBS3BCLEdBQU8sS0FDNUJ1RSxFQUFVakYsUUFBUVMsTUFBTUMsRUFBTSxLQUc5QkEsRUFBTTRHLFNBQVc1RyxFQUFNcUcsZUFBaUJDLE1BQXFDLE1BQWR0RyxFQUFNbEosS0FDdkVrSixFQUFNK0YsaUJBRUpwQyxHQUNGQSxFQUFVM0QsR0FJUkEsRUFBTTRHLFNBQVc1RyxFQUFNcUcsZUFBaUJDLE1BQXFDLFVBQWR0RyxFQUFNbEosTUFBb0IrTCxJQUMzRjdDLEVBQU0rRixpQkFDRnpDLEdBQ0ZBLEVBQVF0RCxHQUVaLElBRUk2RyxJQUFjLEVBQUFwQixFQUFBLElBQWlCekYsSUFHL0JtRCxHQUE2QixNQUFkbkQsRUFBTWxKLEtBQWV5TixFQUFVakYsU0FBV3lGLElBQWlCL0UsRUFBTThHLG1CQUNsRkosR0FBV3BILFNBQVUsRUFDckJpRixFQUFVakYsUUFBUThCLEtBQUtwQixHQUFPLEtBQzVCdUUsRUFBVWpGLFFBQVFyQyxRQUFRK0MsRUFBTSxLQUdoQzRELEdBQ0ZBLEVBQVE1RCxHQUlOc0QsR0FBV3RELEVBQU00RyxTQUFXNUcsRUFBTXFHLGVBQWlCQyxNQUFxQyxNQUFkdEcsRUFBTWxKLE1BQWdCa0osRUFBTThHLGtCQUN4R3hELEVBQVF0RCxFQUNWLElBRUYsSUFBSStHLEdBQWdCaE0sRUFDRSxXQUFsQmdNLEtBQStCN0gsRUFBTXVILE1BQVF2SCxFQUFNOEgsTUFDckRELEdBQWdCM0QsR0FFbEIsTUFBTTZELEdBQWMsQ0FBQyxFQUNDLFdBQWxCRixJQUNGRSxHQUFZOUcsVUFBZ0JJLElBQVRKLEVBQXFCLFNBQVdBLEVBQ25EOEcsR0FBWXBFLFNBQVdBLElBRWxCM0QsRUFBTXVILE1BQVN2SCxFQUFNOEgsS0FDeEJDLEdBQVlDLEtBQU8sVUFFakJyRSxJQUNGb0UsR0FBWSxpQkFBbUJwRSxJQUduQyxNQUFNc0UsSUFBWSxFQUFBMUMsRUFBQSxHQUFXM0YsRUFBSytGLEVBQWlCUCxHQVM3QzhDLElBQWEsT0FBUyxDQUFDLEVBQUdqUSxFQUFPLENBQ3JDNkwsZUFDQWpJLFlBQ0E4SCxXQUNBSSxnQkFDQUMscUJBQ0FDLGNBQ0FnQixXQUNBWSxpQkFFSS9ILEdBNVFrQm9LLEtBQ3hCLE1BQU0sU0FDSnZFLEVBQVEsYUFDUmtDLEVBQVksc0JBQ1pzQyxFQUFxQixRQUNyQnJLLEdBQ0VvSyxFQUNFRSxFQUFRLENBQ1poRyxLQUFNLENBQUMsT0FBUXVCLEdBQVksV0FBWWtDLEdBQWdCLGlCQUVuRHdDLEdBQWtCLEVBQUFDLEVBQUEsR0FBZUYsRUFBTy9GLEVBQTJCdkUsR0FJekUsT0FISStILEdBQWdCc0MsSUFDbEJFLEVBQWdCakcsTUFBUSxJQUFJK0YsS0FFdkJFLENBQWUsRUE4UE5FLENBQWtCTCxJQUNsQyxPQUFvQixVQUFNNUYsR0FBZ0IsT0FBUyxDQUNqRGtHLEdBQUlYLEdBQ0poSyxXQUFXLE9BQUtDLEdBQVFzRSxLQUFNdkUsR0FDOUJxSyxXQUFZQSxHQUNaL0QsT0FBUThDLEdBQ1I3QyxRQUFTQSxFQUNUQyxjQUFlb0MsR0FDZmxDLFFBQVMyQyxHQUNUekMsVUFBV2dELEdBQ1gvQyxRQUFTaUQsR0FDVGhELFlBQWE2QixHQUNiNUIsYUFBY2dDLEdBQ2QvQixVQUFXOEIsR0FDWHJDLFlBQWFvQyxHQUNiNUIsV0FBWWlDLEdBQ1poQyxZQUFhaUMsR0FDYmhDLGFBQWM4QixHQUNkbEgsSUFBS3FJLEdBQ0xoRCxTQUFVdEIsR0FBWSxFQUFJc0IsRUFDMUJoRSxLQUFNQSxHQUNMOEcsR0FBYS9ILEVBQU8sQ0FDckI5SSxTQUFVLENBQUNBLEVBQVVnUCxJQUdyQixTQUFLLEdBQWEsT0FBUyxDQUN6QnRHLElBQUswRixFQUNMeEYsT0FBUWdFLEdBQ1BvQixJQUFxQixRQUU1QixxQ0MxVEEsZ0JBQStCLG1DQ0EvQixnQkFBeUIsaURDQ3pCLElBRUl1RCxFQUZBQyxHQUFtQixFQUNuQkMsR0FBMEIsRUFFOUIsTUFBTUMsRUFBc0IsQ0FDMUJDLE1BQU0sRUFDTkMsUUFBUSxFQUNSQyxLQUFLLEVBQ0xDLEtBQUssRUFDTEMsT0FBTyxFQUNQQyxVQUFVLEVBQ1ZDLFFBQVEsRUFDUkMsTUFBTSxFQUNOQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsTUFBTSxFQUNOQyxVQUFVLEVBQ1Ysa0JBQWtCLEdBa0NwQixTQUFTL0IsRUFBYzNHLEdBQ2pCQSxFQUFNMkksU0FBVzNJLEVBQU00SSxRQUFVNUksRUFBTTZJLFVBRzNDakIsR0FBbUIsRUFDckIsQ0FTQSxTQUFTa0IsSUFDUGxCLEdBQW1CLENBQ3JCLENBQ0EsU0FBU21CLElBQ3NCLFdBQXpCdFAsS0FBS3VQLGlCQUtIbkIsSUFDRkQsR0FBbUIsRUFHekIsQ0M5RUEsUUQ4R2UsV0FDYixNQUFNOUksRUFBTSxlQUFrQnBFLElBaENoQyxJQUFpQnVPLEVBaUNELE1BQVJ2TyxLQWpDU3VPLEVBa0NIdk8sRUFBS3dPLGVBakNiQyxpQkFBaUIsVUFBV3hDLEdBQWUsR0FDL0NzQyxFQUFJRSxpQkFBaUIsWUFBYUwsR0FBbUIsR0FDckRHLEVBQUlFLGlCQUFpQixjQUFlTCxHQUFtQixHQUN2REcsRUFBSUUsaUJBQWlCLGFBQWNMLEdBQW1CLEdBQ3RERyxFQUFJRSxpQkFBaUIsbUJBQW9CSixHQUF3QixHQThCL0QsR0FDQyxJQUNHckUsRUFBb0IsVUFBYSxHQXFDdkMsTUFBTyxDQUNMQSxvQkFDQWpCLFFBVEYsU0FBNEJ6RCxHQUMxQixRQXRESixTQUF3QkEsR0FDdEIsTUFBTSxPQUNKNEcsR0FDRTVHLEVBQ0osSUFDRSxPQUFPNEcsRUFBT3dDLFFBQVEsaUJBQ3hCLENBQUUsTUFBT0MsR0FLVCxDQUlBLE9BQU96QixHQWpGVCxTQUF1Q2xOLEdBQ3JDLE1BQU0sS0FDSnlGLEVBQUksUUFDSnFHLEdBQ0U5TCxFQUNKLFFBQWdCLFVBQVo4TCxJQUF1QnNCLEVBQW9CM0gsSUFBVXpGLEVBQUs0TyxXQUc5QyxhQUFaOUMsSUFBMkI5TCxFQUFLNE8sWUFHaEM1TyxFQUFLNk8saUJBSVgsQ0FrRTZCQyxDQUE4QjVDLEVBQzNELENBc0NRNkMsQ0FBZXpKLEtBQ2pCMEUsRUFBa0JwRixTQUFVLEdBQ3JCLEVBR1gsRUFJRStELE9BbkNGLFdBTUUsUUFBSXFCLEVBQWtCcEYsVUFLcEJ1SSxHQUEwQixFQUMxQjZCLE9BQU9yTCxhQUFhc0osR0FDcEJBLEVBQWlDK0IsT0FBT3RMLFlBQVcsS0FDakR5SixHQUEwQixDQUFLLEdBQzlCLEtBQ0huRCxFQUFrQnBGLFNBQVUsR0FDckIsRUFHWCxFQWdCRVIsTUFFSixpQkVySmUsU0FBUzZLLEVBQU83SyxFQUFLM0QsR0FDZixtQkFBUjJELEVBQ1RBLEVBQUkzRCxHQUNLMkQsSUFDVEEsRUFBSVEsUUFBVW5FLEVBRWxCLGlFQ2hCQSxNQUNBLEVBRDRDLG9CQUFYdU8sT0FBeUIsa0JBQXdCLHFFQ2dCbEYsUUFWQSxTQUEwQkUsR0FDeEIsTUFBTTlLLEVBQU0sU0FBYThLLEdBSXpCLE9BSEEsUUFBa0IsS0FDaEI5SyxFQUFJUSxRQUFVc0ssQ0FBRSxJQUVYLGVBQWtCLElBQUlDLEtBRzdCLEVBQUkvSyxFQUFJUSxZQUFZdUssSUFBTyxHQUM3QiwwRENkZSxTQUFTcEYsS0FBY3FGLEdBTXBDLE9BQU8sV0FBYyxJQUNmQSxFQUFLQyxPQUFNakwsR0FBYyxNQUFQQSxJQUNiLEtBRUZrTCxJQUNMRixFQUFLbFQsU0FBUWtJLEtBQ1gsT0FBT0EsRUFBS2tMLEVBQVMsR0FDckIsR0FHSEYsRUFDTCxrQkNuQkEsSUFBSUcsRUFBVSxFQUFRLE1BTWxCQyxFQUFnQixDQUNsQkMsbUJBQW1CLEVBQ25CQyxhQUFhLEVBQ2JDLGNBQWMsRUFDZGhQLGNBQWMsRUFDZGlQLGFBQWEsRUFDYkMsaUJBQWlCLEVBQ2pCQywwQkFBMEIsRUFDMUJqUSwwQkFBMEIsRUFDMUJrUSxRQUFRLEVBQ1JyUCxXQUFXLEVBQ1grRSxNQUFNLEdBRUp1SyxFQUFnQixDQUNsQnZPLE1BQU0sRUFDTm5FLFFBQVEsRUFDUmtDLFdBQVcsRUFDWHlRLFFBQVEsRUFDUkMsUUFBUSxFQUNSQyxXQUFXLEVBQ1hDLE9BQU8sR0FTTEMsRUFBZSxDQUNqQixVQUFZLEVBQ1pDLFNBQVMsRUFDVDNQLGNBQWMsRUFDZGlQLGFBQWEsRUFDYmxQLFdBQVcsRUFDWCtFLE1BQU0sR0FFSjhLLEVBQWUsQ0FBQyxFQUlwQixTQUFTQyxFQUFXblEsR0FFbEIsT0FBSWtQLEVBQVFrQixPQUFPcFEsR0FDVmdRLEVBSUZFLEVBQWFsUSxFQUFvQixXQUFNbVAsQ0FDaEQsQ0FYQWUsRUFBYWhCLEVBQVFtQixZQWhCSyxDQUN4QixVQUFZLEVBQ1p4USxRQUFRLEVBQ1JTLGNBQWMsRUFDZGlQLGFBQWEsRUFDYmxQLFdBQVcsR0FZYjZQLEVBQWFoQixFQUFRb0IsTUFBUU4sRUFZN0IsSUFBSU8sRUFBaUIvVSxPQUFPK1UsZUFDeEJDLEVBQXNCaFYsT0FBT2dWLG9CQUM3QkMsRUFBd0JqVixPQUFPaVYsc0JBQy9CQyxFQUEyQmxWLE9BQU9rVix5QkFDbENDLEVBQWlCblYsT0FBT21WLGVBQ3hCQyxFQUFrQnBWLE9BQU8yRCxVQXNDN0IwUixFQUFPQyxRQXJDUCxTQUFTQyxFQUFxQkMsRUFBaUJDLEVBQWlCQyxHQUM5RCxHQUErQixpQkFBcEJELEVBQThCLENBRXZDLEdBQUlMLEVBQWlCLENBQ25CLElBQUlPLEVBQXFCUixFQUFlTSxHQUVwQ0UsR0FBc0JBLElBQXVCUCxHQUMvQ0csRUFBcUJDLEVBQWlCRyxFQUFvQkQsRUFFOUQsQ0FFQSxJQUFJM1QsRUFBT2lULEVBQW9CUyxHQUUzQlIsSUFDRmxULEVBQU9BLEVBQUs2VCxPQUFPWCxFQUFzQlEsS0FNM0MsSUFIQSxJQUFJSSxFQUFnQmxCLEVBQVdhLEdBQzNCTSxFQUFnQm5CLEVBQVdjLEdBRXRCcFUsRUFBSSxFQUFHQSxFQUFJVSxFQUFLTixTQUFVSixFQUFHLENBQ3BDLElBQUlkLEVBQU13QixFQUFLVixHQUVmLEtBQUs4UyxFQUFjNVQsSUFBVW1WLEdBQWFBLEVBQVVuVixJQUFXdVYsR0FBaUJBLEVBQWN2VixJQUFXc1YsR0FBaUJBLEVBQWN0VixJQUFPLENBQzdJLElBQUl3VixFQUFhYixFQUF5Qk8sRUFBaUJsVixHQUUzRCxJQUVFd1UsRUFBZVMsRUFBaUJqVixFQUFLd1YsRUFDdkMsQ0FBRSxNQUFPNVMsR0FBSSxDQUNmLENBQ0YsQ0FDRixDQUVBLE9BQU9xUyxDQUNULGdCQzNGYSxJQUFJUSxFQUFFLG1CQUFvQkMsUUFBUUEsT0FBT0MsSUFBSTlWLEVBQUU0VixFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQixNQUFNQyxFQUFFSCxFQUFFQyxPQUFPQyxJQUFJLGdCQUFnQixNQUFNL1MsRUFBRTZTLEVBQUVDLE9BQU9DLElBQUksa0JBQWtCLE1BQU1FLEVBQUVKLEVBQUVDLE9BQU9DLElBQUkscUJBQXFCLE1BQU1HLEVBQUVMLEVBQUVDLE9BQU9DLElBQUksa0JBQWtCLE1BQU1JLEVBQUVOLEVBQUVDLE9BQU9DLElBQUksa0JBQWtCLE1BQU12VCxFQUFFcVQsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUIsTUFBTUssRUFBRVAsRUFBRUMsT0FBT0MsSUFBSSxvQkFBb0IsTUFBTU0sRUFBRVIsRUFBRUMsT0FBT0MsSUFBSSx5QkFBeUIsTUFBTU8sRUFBRVQsRUFBRUMsT0FBT0MsSUFBSSxxQkFBcUIsTUFBTVEsRUFBRVYsRUFBRUMsT0FBT0MsSUFBSSxrQkFBa0IsTUFBTVMsRUFBRVgsRUFDcGZDLE9BQU9DLElBQUksdUJBQXVCLE1BQU1VLEVBQUVaLEVBQUVDLE9BQU9DLElBQUksY0FBYyxNQUFNNVEsRUFBRTBRLEVBQUVDLE9BQU9DLElBQUksY0FBYyxNQUFNVyxFQUFFYixFQUFFQyxPQUFPQyxJQUFJLGVBQWUsTUFBTVksRUFBRWQsRUFBRUMsT0FBT0MsSUFBSSxxQkFBcUIsTUFBTWEsRUFBRWYsRUFBRUMsT0FBT0MsSUFBSSxtQkFBbUIsTUFBTWMsRUFBRWhCLEVBQUVDLE9BQU9DLElBQUksZUFBZSxNQUNsUSxTQUFTZSxFQUFFQyxHQUFHLEdBQUcsaUJBQWtCQSxHQUFHLE9BQU9BLEVBQUUsQ0FBQyxJQUFJQyxFQUFFRCxFQUFFRSxTQUFTLE9BQU9ELEdBQUcsS0FBSy9XLEVBQUUsT0FBTzhXLEVBQUVBLEVBQUV0TixNQUFRLEtBQUsyTSxFQUFFLEtBQUtDLEVBQUUsS0FBS3JULEVBQUUsS0FBS2tULEVBQUUsS0FBS0QsRUFBRSxLQUFLTSxFQUFFLE9BQU9RLEVBQUUsUUFBUSxPQUFPQSxFQUFFQSxHQUFHQSxFQUFFRSxVQUFZLEtBQUt6VSxFQUFFLEtBQUs4VCxFQUFFLEtBQUtuUixFQUFFLEtBQUtzUixFQUFFLEtBQUtOLEVBQUUsT0FBT1ksRUFBRSxRQUFRLE9BQU9DLEdBQUcsS0FBS2hCLEVBQUUsT0FBT2dCLEVBQUUsQ0FBQyxDQUFDLFNBQVNFLEVBQUVILEdBQUcsT0FBT0QsRUFBRUMsS0FBS1YsQ0FBQyxDQUFDbEIsRUFBUWdDLFVBQVVmLEVBQUVqQixFQUFRaUMsZUFBZWYsRUFBRWxCLEVBQVFrQyxnQkFBZ0I3VSxFQUFFMlMsRUFBUW1DLGdCQUFnQm5CLEVBQUVoQixFQUFRb0MsUUFBUXRYLEVBQUVrVixFQUFRVCxXQUFXNEIsRUFBRW5CLEVBQVFxQyxTQUFTeFUsRUFBRW1TLEVBQVFzQyxLQUFLdFMsRUFBRWdRLEVBQVFSLEtBQUs4QixFQUFFdEIsRUFBUXVDLE9BQU8xQixFQUNoZmIsRUFBUXdDLFNBQVN6QixFQUFFZixFQUFReUMsV0FBVzNCLEVBQUVkLEVBQVEwQyxTQUFTdEIsRUFBRXBCLEVBQVEyQyxZQUFZLFNBQVNmLEdBQUcsT0FBT0csRUFBRUgsSUFBSUQsRUFBRUMsS0FBS1gsQ0FBQyxFQUFFakIsRUFBUTRDLGlCQUFpQmIsRUFBRS9CLEVBQVE2QyxrQkFBa0IsU0FBU2pCLEdBQUcsT0FBT0QsRUFBRUMsS0FBS3ZVLENBQUMsRUFBRTJTLEVBQVE4QyxrQkFBa0IsU0FBU2xCLEdBQUcsT0FBT0QsRUFBRUMsS0FBS1osQ0FBQyxFQUFFaEIsRUFBUStDLFVBQVUsU0FBU25CLEdBQUcsTUFBTSxpQkFBa0JBLEdBQUcsT0FBT0EsR0FBR0EsRUFBRUUsV0FBV2hYLENBQUMsRUFBRWtWLEVBQVFnRCxhQUFhLFNBQVNwQixHQUFHLE9BQU9ELEVBQUVDLEtBQUtULENBQUMsRUFBRW5CLEVBQVFpRCxXQUFXLFNBQVNyQixHQUFHLE9BQU9ELEVBQUVDLEtBQUsvVCxDQUFDLEVBQUVtUyxFQUFRa0QsT0FBTyxTQUFTdEIsR0FBRyxPQUFPRCxFQUFFQyxLQUFLNVIsQ0FBQyxFQUMxZGdRLEVBQVFWLE9BQU8sU0FBU3NDLEdBQUcsT0FBT0QsRUFBRUMsS0FBS04sQ0FBQyxFQUFFdEIsRUFBUW1ELFNBQVMsU0FBU3ZCLEdBQUcsT0FBT0QsRUFBRUMsS0FBS2YsQ0FBQyxFQUFFYixFQUFRb0QsV0FBVyxTQUFTeEIsR0FBRyxPQUFPRCxFQUFFQyxLQUFLYixDQUFDLEVBQUVmLEVBQVFxRCxhQUFhLFNBQVN6QixHQUFHLE9BQU9ELEVBQUVDLEtBQUtkLENBQUMsRUFBRWQsRUFBUXNELFdBQVcsU0FBUzFCLEdBQUcsT0FBT0QsRUFBRUMsS0FBS1IsQ0FBQyxFQUMxT3BCLEVBQVF1RCxtQkFBbUIsU0FBUzNCLEdBQUcsTUFBTSxpQkFBa0JBLEdBQUcsbUJBQW9CQSxHQUFHQSxJQUFJL1QsR0FBRytULElBQUlWLEdBQUdVLElBQUliLEdBQUdhLElBQUlkLEdBQUdjLElBQUlSLEdBQUdRLElBQUlQLEdBQUcsaUJBQWtCTyxHQUFHLE9BQU9BLElBQUlBLEVBQUVFLFdBQVc5UixHQUFHNFIsRUFBRUUsV0FBV1IsR0FBR00sRUFBRUUsV0FBV2QsR0FBR1ksRUFBRUUsV0FBV3pVLEdBQUd1VSxFQUFFRSxXQUFXWCxHQUFHUyxFQUFFRSxXQUFXTixHQUFHSSxFQUFFRSxXQUFXTCxHQUFHRyxFQUFFRSxXQUFXSixHQUFHRSxFQUFFRSxXQUFXUCxFQUFFLEVBQUV2QixFQUFRd0QsT0FBTzdCLGtCQ1hqVTVCLEVBQU9DLFFBQVUsRUFBakIsdUNDRkYsZ0JBQWUsY0FBb0Isc0JDRG5DLFNBQVN5RCxFQUFnQnpULEVBQUduQyxHQUMxQixPQUFPNFYsRUFBa0IvWSxPQUFPZ1osZUFBaUJoWixPQUFPZ1osZUFBZTFXLE9BQVMsU0FBVWdELEVBQUduQyxHQUMzRixPQUFPbUMsRUFBRTJULFVBQVk5VixFQUFHbUMsQ0FDMUIsRUFBR3lULEVBQWdCelQsRUFBR25DLEVBQ3hCLENDSEEsU0FBUytWLEVBQWU1VCxFQUFHNlQsR0FDekI3VCxFQUFFM0IsVUFBWTNELE9BQU9DLE9BQU9rWixFQUFFeFYsV0FBWTJCLEVBQUUzQixVQUFVeVYsWUFBYzlULEVBQUcsRUFBZUEsRUFBRzZULEVBQzNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vdXRpbHMvQ2hpbGRNYXBwaW5nLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL3RvdWNoUmlwcGxlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvVG91Y2hSaXBwbGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL1JpcHBsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvYnV0dG9uQmFzZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL0J1dHRvbkJhc2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VFdmVudENhbGxiYWNrLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRm9ya1JlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VJc0ZvY3VzVmlzaWJsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlzRm9jdXNWaXNpYmxlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VFbmhhbmNlZEVmZmVjdC91c2VFbmhhbmNlZEVmZmVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VFdmVudENhbGxiYWNrL3VzZUV2ZW50Q2FsbGJhY2suanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlRm9ya1JlZi91c2VGb3JrUmVmLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGlsZHJlbiwgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogR2l2ZW4gYHRoaXMucHJvcHMuY2hpbGRyZW5gLCByZXR1cm4gYW4gb2JqZWN0IG1hcHBpbmcga2V5IHRvIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Kn0gY2hpbGRyZW4gYHRoaXMucHJvcHMuY2hpbGRyZW5gXG4gKiBAcmV0dXJuIHtvYmplY3R9IE1hcHBpbmcgb2Yga2V5IHRvIGNoaWxkXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoaWxkTWFwcGluZyhjaGlsZHJlbiwgbWFwRm4pIHtcbiAgdmFyIG1hcHBlciA9IGZ1bmN0aW9uIG1hcHBlcihjaGlsZCkge1xuICAgIHJldHVybiBtYXBGbiAmJiBpc1ZhbGlkRWxlbWVudChjaGlsZCkgPyBtYXBGbihjaGlsZCkgOiBjaGlsZDtcbiAgfTtcblxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGNoaWxkcmVuKSBDaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGM7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgLy8gcnVuIHRoZSBtYXAgZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIHNvIHRoYXQgdGhlIGtleSBpcyB0aGUgY29tcHV0ZWQgb25lXG4gICAgcmVzdWx0W2NoaWxkLmtleV0gPSBtYXBwZXIoY2hpbGQpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogV2hlbiB5b3UncmUgYWRkaW5nIG9yIHJlbW92aW5nIGNoaWxkcmVuIHNvbWUgbWF5IGJlIGFkZGVkIG9yIHJlbW92ZWQgaW4gdGhlXG4gKiBzYW1lIHJlbmRlciBwYXNzLiBXZSB3YW50IHRvIHNob3cgKmJvdGgqIHNpbmNlIHdlIHdhbnQgdG8gc2ltdWx0YW5lb3VzbHlcbiAqIGFuaW1hdGUgZWxlbWVudHMgaW4gYW5kIG91dC4gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHByZXZpb3VzIHNldCBvZiBrZXlzXG4gKiBhbmQgYSBuZXcgc2V0IG9mIGtleXMgYW5kIG1lcmdlcyB0aGVtIHdpdGggaXRzIGJlc3QgZ3Vlc3Mgb2YgdGhlIGNvcnJlY3RcbiAqIG9yZGVyaW5nLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBleHBvc2Ugc29tZSBvZiB0aGUgdXRpbGl0aWVzIGluXG4gKiBSZWFjdE11bHRpQ2hpbGQgdG8gbWFrZSB0aGlzIGVhc3ksIGJ1dCBmb3Igbm93IFJlYWN0IGl0c2VsZiBkb2VzIG5vdFxuICogZGlyZWN0bHkgaGF2ZSB0aGlzIGNvbmNlcHQgb2YgdGhlIHVuaW9uIG9mIHByZXZDaGlsZHJlbiBhbmQgbmV4dENoaWxkcmVuXG4gKiBzbyB3ZSBpbXBsZW1lbnQgaXQgaGVyZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcHJldiBwcmV2IGNoaWxkcmVuIGFzIHJldHVybmVkIGZyb21cbiAqIGBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKClgLlxuICogQHBhcmFtIHtvYmplY3R9IG5leHQgbmV4dCBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tXG4gKiBgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZygpYC5cbiAqIEByZXR1cm4ge29iamVjdH0gYSBrZXkgc2V0IHRoYXQgY29udGFpbnMgYWxsIGtleXMgaW4gYHByZXZgIGFuZCBhbGwga2V5c1xuICogaW4gYG5leHRgIGluIGEgcmVhc29uYWJsZSBvcmRlci5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VDaGlsZE1hcHBpbmdzKHByZXYsIG5leHQpIHtcbiAgcHJldiA9IHByZXYgfHwge307XG4gIG5leHQgPSBuZXh0IHx8IHt9O1xuXG4gIGZ1bmN0aW9uIGdldFZhbHVlRm9yS2V5KGtleSkge1xuICAgIHJldHVybiBrZXkgaW4gbmV4dCA/IG5leHRba2V5XSA6IHByZXZba2V5XTtcbiAgfSAvLyBGb3IgZWFjaCBrZXkgb2YgYG5leHRgLCB0aGUgbGlzdCBvZiBrZXlzIHRvIGluc2VydCBiZWZvcmUgdGhhdCBrZXkgaW5cbiAgLy8gdGhlIGNvbWJpbmVkIGxpc3RcblxuXG4gIHZhciBuZXh0S2V5c1BlbmRpbmcgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgcGVuZGluZ0tleXMgPSBbXTtcblxuICBmb3IgKHZhciBwcmV2S2V5IGluIHByZXYpIHtcbiAgICBpZiAocHJldktleSBpbiBuZXh0KSB7XG4gICAgICBpZiAocGVuZGluZ0tleXMubGVuZ3RoKSB7XG4gICAgICAgIG5leHRLZXlzUGVuZGluZ1twcmV2S2V5XSA9IHBlbmRpbmdLZXlzO1xuICAgICAgICBwZW5kaW5nS2V5cyA9IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZW5kaW5nS2V5cy5wdXNoKHByZXZLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpO1xuICB2YXIgY2hpbGRNYXBwaW5nID0ge307XG5cbiAgZm9yICh2YXIgbmV4dEtleSBpbiBuZXh0KSB7XG4gICAgaWYgKG5leHRLZXlzUGVuZGluZ1tuZXh0S2V5XSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IG5leHRLZXlzUGVuZGluZ1tuZXh0S2V5XS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGVuZGluZ05leHRLZXkgPSBuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV07XG4gICAgICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV1dID0gZ2V0VmFsdWVGb3JLZXkocGVuZGluZ05leHRLZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5XSA9IGdldFZhbHVlRm9yS2V5KG5leHRLZXkpO1xuICB9IC8vIEZpbmFsbHksIGFkZCB0aGUga2V5cyB3aGljaCBkaWRuJ3QgYXBwZWFyIGJlZm9yZSBhbnkga2V5IGluIGBuZXh0YFxuXG5cbiAgZm9yIChpID0gMDsgaSA8IHBlbmRpbmdLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hpbGRNYXBwaW5nW3BlbmRpbmdLZXlzW2ldXSA9IGdldFZhbHVlRm9yS2V5KHBlbmRpbmdLZXlzW2ldKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZE1hcHBpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFByb3AoY2hpbGQsIHByb3AsIHByb3BzKSB7XG4gIHJldHVybiBwcm9wc1twcm9wXSAhPSBudWxsID8gcHJvcHNbcHJvcF0gOiBjaGlsZC5wcm9wc1twcm9wXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxDaGlsZE1hcHBpbmcocHJvcHMsIG9uRXhpdGVkKSB7XG4gIHJldHVybiBnZXRDaGlsZE1hcHBpbmcocHJvcHMuY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIG9uRXhpdGVkOiBvbkV4aXRlZC5iaW5kKG51bGwsIGNoaWxkKSxcbiAgICAgIGluOiB0cnVlLFxuICAgICAgYXBwZWFyOiBnZXRQcm9wKGNoaWxkLCAnYXBwZWFyJywgcHJvcHMpLFxuICAgICAgZW50ZXI6IGdldFByb3AoY2hpbGQsICdlbnRlcicsIHByb3BzKSxcbiAgICAgIGV4aXQ6IGdldFByb3AoY2hpbGQsICdleGl0JywgcHJvcHMpXG4gICAgfSk7XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRDaGlsZE1hcHBpbmcobmV4dFByb3BzLCBwcmV2Q2hpbGRNYXBwaW5nLCBvbkV4aXRlZCkge1xuICB2YXIgbmV4dENoaWxkTWFwcGluZyA9IGdldENoaWxkTWFwcGluZyhuZXh0UHJvcHMuY2hpbGRyZW4pO1xuICB2YXIgY2hpbGRyZW4gPSBtZXJnZUNoaWxkTWFwcGluZ3MocHJldkNoaWxkTWFwcGluZywgbmV4dENoaWxkTWFwcGluZyk7XG4gIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltrZXldO1xuICAgIGlmICghaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSByZXR1cm47XG4gICAgdmFyIGhhc1ByZXYgPSAoa2V5IGluIHByZXZDaGlsZE1hcHBpbmcpO1xuICAgIHZhciBoYXNOZXh0ID0gKGtleSBpbiBuZXh0Q2hpbGRNYXBwaW5nKTtcbiAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkTWFwcGluZ1trZXldO1xuICAgIHZhciBpc0xlYXZpbmcgPSBpc1ZhbGlkRWxlbWVudChwcmV2Q2hpbGQpICYmICFwcmV2Q2hpbGQucHJvcHMuaW47IC8vIGl0ZW0gaXMgbmV3IChlbnRlcmluZylcblxuICAgIGlmIChoYXNOZXh0ICYmICghaGFzUHJldiB8fCBpc0xlYXZpbmcpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnZW50ZXJpbmcnLCBrZXkpXG4gICAgICBjaGlsZHJlbltrZXldID0gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIG9uRXhpdGVkOiBvbkV4aXRlZC5iaW5kKG51bGwsIGNoaWxkKSxcbiAgICAgICAgaW46IHRydWUsXG4gICAgICAgIGV4aXQ6IGdldFByb3AoY2hpbGQsICdleGl0JywgbmV4dFByb3BzKSxcbiAgICAgICAgZW50ZXI6IGdldFByb3AoY2hpbGQsICdlbnRlcicsIG5leHRQcm9wcylcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWhhc05leHQgJiYgaGFzUHJldiAmJiAhaXNMZWF2aW5nKSB7XG4gICAgICAvLyBpdGVtIGlzIG9sZCAoZXhpdGluZylcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdsZWF2aW5nJywga2V5KVxuICAgICAgY2hpbGRyZW5ba2V5XSA9IGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICBpbjogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaGFzTmV4dCAmJiBoYXNQcmV2ICYmIGlzVmFsaWRFbGVtZW50KHByZXZDaGlsZCkpIHtcbiAgICAgIC8vIGl0ZW0gaGFzbid0IGNoYW5nZWQgdHJhbnNpdGlvbiBzdGF0ZXNcbiAgICAgIC8vIGNvcHkgb3ZlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHByb3BzO1xuICAgICAgLy8gY29uc29sZS5sb2coJ3VuY2hhbmdlZCcsIGtleSlcbiAgICAgIGNoaWxkcmVuW2tleV0gPSBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgb25FeGl0ZWQ6IG9uRXhpdGVkLmJpbmQobnVsbCwgY2hpbGQpLFxuICAgICAgICBpbjogcHJldkNoaWxkLnByb3BzLmluLFxuICAgICAgICBleGl0OiBnZXRQcm9wKGNoaWxkLCAnZXhpdCcsIG5leHRQcm9wcyksXG4gICAgICAgIGVudGVyOiBnZXRQcm9wKGNoaWxkLCAnZW50ZXInLCBuZXh0UHJvcHMpXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2hpbGRyZW47XG59IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZVwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHJhbnNpdGlvbkdyb3VwQ29udGV4dCBmcm9tICcuL1RyYW5zaXRpb25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRNYXBwaW5nLCBnZXRJbml0aWFsQ2hpbGRNYXBwaW5nLCBnZXROZXh0Q2hpbGRNYXBwaW5nIH0gZnJvbSAnLi91dGlscy9DaGlsZE1hcHBpbmcnO1xuXG52YXIgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbiAoaykge1xuICAgIHJldHVybiBvYmpba107XG4gIH0pO1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgY29tcG9uZW50OiAnZGl2JyxcbiAgY2hpbGRGYWN0b3J5OiBmdW5jdGlvbiBjaGlsZEZhY3RvcnkoY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cbn07XG4vKipcbiAqIFRoZSBgPFRyYW5zaXRpb25Hcm91cD5gIGNvbXBvbmVudCBtYW5hZ2VzIGEgc2V0IG9mIHRyYW5zaXRpb24gY29tcG9uZW50c1xuICogKGA8VHJhbnNpdGlvbj5gIGFuZCBgPENTU1RyYW5zaXRpb24+YCkgaW4gYSBsaXN0LiBMaWtlIHdpdGggdGhlIHRyYW5zaXRpb25cbiAqIGNvbXBvbmVudHMsIGA8VHJhbnNpdGlvbkdyb3VwPmAgaXMgYSBzdGF0ZSBtYWNoaW5lIGZvciBtYW5hZ2luZyB0aGUgbW91bnRpbmdcbiAqIGFuZCB1bm1vdW50aW5nIG9mIGNvbXBvbmVudHMgb3ZlciB0aW1lLlxuICpcbiAqIENvbnNpZGVyIHRoZSBleGFtcGxlIGJlbG93LiBBcyBpdGVtcyBhcmUgcmVtb3ZlZCBvciBhZGRlZCB0byB0aGUgVG9kb0xpc3QgdGhlXG4gKiBgaW5gIHByb3AgaXMgdG9nZ2xlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBgPFRyYW5zaXRpb25Hcm91cD5gLlxuICpcbiAqIE5vdGUgdGhhdCBgPFRyYW5zaXRpb25Hcm91cD5gICBkb2VzIG5vdCBkZWZpbmUgYW55IGFuaW1hdGlvbiBiZWhhdmlvciFcbiAqIEV4YWN0bHkgX2hvd18gYSBsaXN0IGl0ZW0gYW5pbWF0ZXMgaXMgdXAgdG8gdGhlIGluZGl2aWR1YWwgdHJhbnNpdGlvblxuICogY29tcG9uZW50LiBUaGlzIG1lYW5zIHlvdSBjYW4gbWl4IGFuZCBtYXRjaCBhbmltYXRpb25zIGFjcm9zcyBkaWZmZXJlbnQgbGlzdFxuICogaXRlbXMuXG4gKi9cblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShUcmFuc2l0aW9uR3JvdXAsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb25Hcm91cChwcm9wcywgY29udGV4dCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSB8fCB0aGlzO1xuXG4gICAgdmFyIGhhbmRsZUV4aXRlZCA9IF90aGlzLmhhbmRsZUV4aXRlZC5iaW5kKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTsgLy8gSW5pdGlhbCBjaGlsZHJlbiBzaG91bGQgYWxsIGJlIGVudGVyaW5nLCBkZXBlbmRlbnQgb24gYXBwZWFyXG5cblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgY29udGV4dFZhbHVlOiB7XG4gICAgICAgIGlzTW91bnRpbmc6IHRydWVcbiAgICAgIH0sXG4gICAgICBoYW5kbGVFeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICAgIGZpcnN0UmVuZGVyOiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gVHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZTtcblxuICBfcHJvdG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29udGV4dFZhbHVlOiB7XG4gICAgICAgIGlzTW91bnRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gIH07XG5cbiAgVHJhbnNpdGlvbkdyb3VwLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIF9yZWYpIHtcbiAgICB2YXIgcHJldkNoaWxkTWFwcGluZyA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICAgIGhhbmRsZUV4aXRlZCA9IF9yZWYuaGFuZGxlRXhpdGVkLFxuICAgICAgICBmaXJzdFJlbmRlciA9IF9yZWYuZmlyc3RSZW5kZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoaWxkcmVuOiBmaXJzdFJlbmRlciA/IGdldEluaXRpYWxDaGlsZE1hcHBpbmcobmV4dFByb3BzLCBoYW5kbGVFeGl0ZWQpIDogZ2V0TmV4dENoaWxkTWFwcGluZyhuZXh0UHJvcHMsIHByZXZDaGlsZE1hcHBpbmcsIGhhbmRsZUV4aXRlZCksXG4gICAgICBmaXJzdFJlbmRlcjogZmFsc2VcbiAgICB9O1xuICB9IC8vIG5vZGUgaXMgYHVuZGVmaW5lZGAgd2hlbiB1c2VyIHByb3ZpZGVkIGBub2RlUmVmYCBwcm9wXG4gIDtcblxuICBfcHJvdG8uaGFuZGxlRXhpdGVkID0gZnVuY3Rpb24gaGFuZGxlRXhpdGVkKGNoaWxkLCBub2RlKSB7XG4gICAgdmFyIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBnZXRDaGlsZE1hcHBpbmcodGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgaWYgKGNoaWxkLmtleSBpbiBjdXJyZW50Q2hpbGRNYXBwaW5nKSByZXR1cm47XG5cbiAgICBpZiAoY2hpbGQucHJvcHMub25FeGl0ZWQpIHtcbiAgICAgIGNoaWxkLnByb3BzLm9uRXhpdGVkKG5vZGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vdW50ZWQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IF9leHRlbmRzKHt9LCBzdGF0ZS5jaGlsZHJlbik7XG5cbiAgICAgICAgZGVsZXRlIGNoaWxkcmVuW2NoaWxkLmtleV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBDb21wb25lbnQgPSBfdGhpcyRwcm9wcy5jb21wb25lbnQsXG4gICAgICAgIGNoaWxkRmFjdG9yeSA9IF90aGlzJHByb3BzLmNoaWxkRmFjdG9yeSxcbiAgICAgICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY29tcG9uZW50XCIsIFwiY2hpbGRGYWN0b3J5XCJdKTtcblxuICAgIHZhciBjb250ZXh0VmFsdWUgPSB0aGlzLnN0YXRlLmNvbnRleHRWYWx1ZTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2YWx1ZXModGhpcy5zdGF0ZS5jaGlsZHJlbikubWFwKGNoaWxkRmFjdG9yeSk7XG4gICAgZGVsZXRlIHByb3BzLmFwcGVhcjtcbiAgICBkZWxldGUgcHJvcHMuZW50ZXI7XG4gICAgZGVsZXRlIHByb3BzLmV4aXQ7XG5cbiAgICBpZiAoQ29tcG9uZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogY29udGV4dFZhbHVlXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb25Hcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBjb250ZXh0VmFsdWVcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHByb3BzLCBjaGlsZHJlbikpO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2l0aW9uR3JvdXA7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cblRyYW5zaXRpb25Hcm91cC5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB7XG4gIC8qKlxuICAgKiBgPFRyYW5zaXRpb25Hcm91cD5gIHJlbmRlcnMgYSBgPGRpdj5gIGJ5IGRlZmF1bHQuIFlvdSBjYW4gY2hhbmdlIHRoaXNcbiAgICogYmVoYXZpb3IgYnkgcHJvdmlkaW5nIGEgYGNvbXBvbmVudGAgcHJvcC5cbiAgICogSWYgeW91IHVzZSBSZWFjdCB2MTYrIGFuZCB3b3VsZCBsaWtlIHRvIGF2b2lkIGEgd3JhcHBpbmcgYDxkaXY+YCBlbGVtZW50XG4gICAqIHlvdSBjYW4gcGFzcyBpbiBgY29tcG9uZW50PXtudWxsfWAuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSB3cmFwcGluZyBkaXZcbiAgICogYm9ya3MgeW91ciBjc3Mgc3R5bGVzLlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuYW55LFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBgPFRyYW5zaXRpb24+YCBjb21wb25lbnRzLCB0aGF0IGFyZSB0b2dnbGVkIGBpbmAgYW5kIG91dCBhcyB0aGV5XG4gICAqIGxlYXZlLiB0aGUgYDxUcmFuc2l0aW9uR3JvdXA+YCB3aWxsIGluamVjdCBzcGVjaWZpYyB0cmFuc2l0aW9uIHByb3BzLCBzb1xuICAgKiByZW1lbWJlciB0byBzcHJlYWQgdGhlbSB0aHJvdWdoIGlmIHlvdSBhcmUgd3JhcHBpbmcgdGhlIGA8VHJhbnNpdGlvbj5gIGFzXG4gICAqIHdpdGggb3VyIGA8RmFkZT5gIGV4YW1wbGUuXG4gICAqXG4gICAqIFdoaWxlIHRoaXMgY29tcG9uZW50IGlzIG1lYW50IGZvciBtdWx0aXBsZSBgVHJhbnNpdGlvbmAgb3IgYENTU1RyYW5zaXRpb25gXG4gICAqIGNoaWxkcmVuLCBzb21ldGltZXMgeW91IG1heSB3YW50IHRvIGhhdmUgYSBzaW5nbGUgdHJhbnNpdGlvbiBjaGlsZCB3aXRoXG4gICAqIGNvbnRlbnQgdGhhdCB5b3Ugd2FudCB0byBiZSB0cmFuc2l0aW9uZWQgb3V0IGFuZCBpbiB3aGVuIHlvdSBjaGFuZ2UgaXRcbiAgICogKGUuZy4gcm91dGVzLCBpbWFnZXMgZXRjLikgSW4gdGhhdCBjYXNlIHlvdSBjYW4gY2hhbmdlIHRoZSBga2V5YCBwcm9wIG9mXG4gICAqIHRoZSB0cmFuc2l0aW9uIGNoaWxkIGFzIHlvdSBjaGFuZ2UgaXRzIGNvbnRlbnQsIHRoaXMgd2lsbCBjYXVzZVxuICAgKiBgVHJhbnNpdGlvbkdyb3VwYCB0byB0cmFuc2l0aW9uIHRoZSBjaGlsZCBvdXQgYW5kIGJhY2sgaW4uXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIEEgY29udmVuaWVuY2UgcHJvcCB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgYXBwZWFyIGFuaW1hdGlvbnNcbiAgICogZm9yIGFsbCBjaGlsZHJlbi4gTm90ZSB0aGF0IHNwZWNpZnlpbmcgdGhpcyB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0cyBzZXRcbiAgICogb24gaW5kaXZpZHVhbCBjaGlsZHJlbiBUcmFuc2l0aW9ucy5cbiAgICovXG4gIGFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEEgY29udmVuaWVuY2UgcHJvcCB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgZW50ZXIgYW5pbWF0aW9uc1xuICAgKiBmb3IgYWxsIGNoaWxkcmVuLiBOb3RlIHRoYXQgc3BlY2lmeWluZyB0aGlzIHdpbGwgb3ZlcnJpZGUgYW55IGRlZmF1bHRzIHNldFxuICAgKiBvbiBpbmRpdmlkdWFsIGNoaWxkcmVuIFRyYW5zaXRpb25zLlxuICAgKi9cbiAgZW50ZXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBBIGNvbnZlbmllbmNlIHByb3AgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIGV4aXQgYW5pbWF0aW9uc1xuICAgKiBmb3IgYWxsIGNoaWxkcmVuLiBOb3RlIHRoYXQgc3BlY2lmeWluZyB0aGlzIHdpbGwgb3ZlcnJpZGUgYW55IGRlZmF1bHRzIHNldFxuICAgKiBvbiBpbmRpdmlkdWFsIGNoaWxkcmVuIFRyYW5zaXRpb25zLlxuICAgKi9cbiAgZXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFlvdSBtYXkgbmVlZCB0byBhcHBseSByZWFjdGl2ZSB1cGRhdGVzIHRvIGEgY2hpbGQgYXMgaXQgaXMgZXhpdGluZy5cbiAgICogVGhpcyBpcyBnZW5lcmFsbHkgZG9uZSBieSB1c2luZyBgY2xvbmVFbGVtZW50YCBob3dldmVyIGluIHRoZSBjYXNlIG9mIGFuIGV4aXRpbmdcbiAgICogY2hpbGQgdGhlIGVsZW1lbnQgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGFuZCBub3QgYWNjZXNzaWJsZSB0byB0aGUgY29uc3VtZXIuXG4gICAqXG4gICAqIElmIHlvdSBkbyBuZWVkIHRvIHVwZGF0ZSBhIGNoaWxkIGFzIGl0IGxlYXZlcyB5b3UgY2FuIHByb3ZpZGUgYSBgY2hpbGRGYWN0b3J5YFxuICAgKiB0byB3cmFwIGV2ZXJ5IGNoaWxkLCBldmVuIHRoZSBvbmVzIHRoYXQgYXJlIGxlYXZpbmcuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKGNoaWxkOiBSZWFjdEVsZW1lbnQpIC0+IFJlYWN0RWxlbWVudFxuICAgKi9cbiAgY2hpbGRGYWN0b3J5OiBQcm9wVHlwZXMuZnVuY1xufSA6IHt9O1xuVHJhbnNpdGlvbkdyb3VwLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb25Hcm91cDsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgZGVmYXVsdCB9OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3VjaFJpcHBsZVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpVG91Y2hSaXBwbGUnLCBzbG90KTtcbn1cbmNvbnN0IHRvdWNoUmlwcGxlQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVRvdWNoUmlwcGxlJywgWydyb290JywgJ3JpcHBsZScsICdyaXBwbGVWaXNpYmxlJywgJ3JpcHBsZVB1bHNhdGUnLCAnY2hpbGQnLCAnY2hpbGRMZWF2aW5nJywgJ2NoaWxkUHVsc2F0ZSddKTtcbmV4cG9ydCBkZWZhdWx0IHRvdWNoUmlwcGxlQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjZW50ZXJcIiwgXCJjbGFzc2VzXCIsIFwiY2xhc3NOYW1lXCJdO1xubGV0IF8gPSB0ID0+IHQsXG4gIF90LFxuICBfdDIsXG4gIF90MyxcbiAgX3Q0O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zaXRpb25Hcm91cCB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBrZXlmcmFtZXMgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IFJpcHBsZSBmcm9tICcuL1JpcHBsZSc7XG5pbXBvcnQgdG91Y2hSaXBwbGVDbGFzc2VzIGZyb20gJy4vdG91Y2hSaXBwbGVDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEVVJBVElPTiA9IDU1MDtcbmV4cG9ydCBjb25zdCBERUxBWV9SSVBQTEUgPSA4MDtcbmNvbnN0IGVudGVyS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QgfHwgKF90ID0gX2BcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgb3BhY2l0eTogMC4xO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAwLjM7XG4gIH1cbmApKTtcbmNvbnN0IGV4aXRLZXlmcmFtZSA9IGtleWZyYW1lcyhfdDIgfHwgKF90MiA9IF9gXG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuYCkpO1xuY29uc3QgcHVsc2F0ZUtleWZyYW1lID0ga2V5ZnJhbWVzKF90MyB8fCAoX3QzID0gX2BcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Mik7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG5gKSk7XG5leHBvcnQgY29uc3QgVG91Y2hSaXBwbGVSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpVG91Y2hSaXBwbGUnLFxuICBzbG90OiAnUm9vdCdcbn0pKHtcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB6SW5kZXg6IDAsXG4gIHRvcDogMCxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgbGVmdDogMCxcbiAgYm9yZGVyUmFkaXVzOiAnaW5oZXJpdCdcbn0pO1xuXG4vLyBUaGlzIGBzdHlsZWQoKWAgZnVuY3Rpb24gaW52b2tlcyBrZXlmcmFtZXMuIGBzdHlsZWQtY29tcG9uZW50c2Agb25seSBzdXBwb3J0cyBrZXlmcmFtZXNcbi8vIGluIHN0cmluZyB0ZW1wbGF0ZXMuIERvIG5vdCBjb252ZXJ0IHRoZXNlIHN0eWxlcyBpbiBKUyBvYmplY3QgYXMgaXQgd2lsbCBicmVhay5cbmV4cG9ydCBjb25zdCBUb3VjaFJpcHBsZVJpcHBsZSA9IHN0eWxlZChSaXBwbGUsIHtcbiAgbmFtZTogJ011aVRvdWNoUmlwcGxlJyxcbiAgc2xvdDogJ1JpcHBsZSdcbn0pKF90NCB8fCAoX3Q0ID0gX2BcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICYuJHswfSB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgYW5pbWF0aW9uLW5hbWU6ICR7MH07XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkezB9bXM7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHswfTtcbiAgfVxuXG4gICYuJHswfSB7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkezB9bXM7XG4gIH1cblxuICAmIC4kezB9IHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgJiAuJHswfSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBhbmltYXRpb24tbmFtZTogJHswfTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246ICR7MH1tcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkezB9O1xuICB9XG5cbiAgJiAuJHswfSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIC8qIEBub2ZsaXAgKi9cbiAgICBsZWZ0OiAwcHg7XG4gICAgdG9wOiAwO1xuICAgIGFuaW1hdGlvbi1uYW1lOiAkezB9O1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMjUwMG1zO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICR7MH07XG4gICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAyMDBtcztcbiAgfVxuYCksIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVWaXNpYmxlLCBlbnRlcktleWZyYW1lLCBEVVJBVElPTiwgKHtcbiAgdGhlbWVcbn0pID0+IHRoZW1lLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVQdWxzYXRlLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlciwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRMZWF2aW5nLCBleGl0S2V5ZnJhbWUsIERVUkFUSU9OLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VJbk91dCwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkUHVsc2F0ZSwgcHVsc2F0ZUtleWZyYW1lLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VJbk91dCk7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqXG4gKiBUT0RPIHY1OiBNYWtlIHByaXZhdGVcbiAqL1xuY29uc3QgVG91Y2hSaXBwbGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUb3VjaFJpcHBsZShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpVG91Y2hSaXBwbGUnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjZW50ZXI6IGNlbnRlclByb3AgPSBmYWxzZSxcbiAgICAgIGNsYXNzZXMgPSB7fSxcbiAgICAgIGNsYXNzTmFtZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbcmlwcGxlcywgc2V0UmlwcGxlc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IG5leHRLZXkgPSBSZWFjdC51c2VSZWYoMCk7XG4gIGNvbnN0IHJpcHBsZUNhbGxiYWNrID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyaXBwbGVDYWxsYmFjay5jdXJyZW50KSB7XG4gICAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50KCk7XG4gICAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gIH0sIFtyaXBwbGVzXSk7XG5cbiAgLy8gVXNlZCB0byBmaWx0ZXIgb3V0IG1vdXNlIGVtdWxhdGVkIGV2ZW50cyBvbiBtb2JpbGUuXG4gIGNvbnN0IGlnbm9yaW5nTW91c2VEb3duID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgLy8gV2UgdXNlIGEgdGltZXIgaW4gb3JkZXIgdG8gb25seSBzaG93IHRoZSByaXBwbGVzIGZvciB0b3VjaCBcImNsaWNrXCIgbGlrZSBldmVudHMuXG4gIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSB0aGUgcmlwcGxlIGZvciB0b3VjaCBzY3JvbGwgZXZlbnRzLlxuICBjb25zdCBzdGFydFRpbWVyID0gUmVhY3QudXNlUmVmKDApO1xuXG4gIC8vIFRoaXMgaXMgdGhlIGhvb2sgY2FsbGVkIG9uY2UgdGhlIHByZXZpb3VzIHRpbWVvdXQgaXMgcmVhZHkuXG4gIGNvbnN0IHN0YXJ0VGltZXJDb21taXQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHN0YXJ0VGltZXIuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc3RhcnRUaW1lci5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHN0YXJ0Q29tbWl0ID0gUmVhY3QudXNlQ2FsbGJhY2socGFyYW1zID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBwdWxzYXRlLFxuICAgICAgcmlwcGxlWCxcbiAgICAgIHJpcHBsZVksXG4gICAgICByaXBwbGVTaXplLFxuICAgICAgY2JcbiAgICB9ID0gcGFyYW1zO1xuICAgIHNldFJpcHBsZXMob2xkUmlwcGxlcyA9PiBbLi4ub2xkUmlwcGxlcywgLyojX19QVVJFX18qL19qc3goVG91Y2hSaXBwbGVSaXBwbGUsIHtcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgcmlwcGxlOiBjbHN4KGNsYXNzZXMucmlwcGxlLCB0b3VjaFJpcHBsZUNsYXNzZXMucmlwcGxlKSxcbiAgICAgICAgcmlwcGxlVmlzaWJsZTogY2xzeChjbGFzc2VzLnJpcHBsZVZpc2libGUsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVWaXNpYmxlKSxcbiAgICAgICAgcmlwcGxlUHVsc2F0ZTogY2xzeChjbGFzc2VzLnJpcHBsZVB1bHNhdGUsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVQdWxzYXRlKSxcbiAgICAgICAgY2hpbGQ6IGNsc3goY2xhc3Nlcy5jaGlsZCwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkKSxcbiAgICAgICAgY2hpbGRMZWF2aW5nOiBjbHN4KGNsYXNzZXMuY2hpbGRMZWF2aW5nLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRMZWF2aW5nKSxcbiAgICAgICAgY2hpbGRQdWxzYXRlOiBjbHN4KGNsYXNzZXMuY2hpbGRQdWxzYXRlLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRQdWxzYXRlKVxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IERVUkFUSU9OLFxuICAgICAgcHVsc2F0ZTogcHVsc2F0ZSxcbiAgICAgIHJpcHBsZVg6IHJpcHBsZVgsXG4gICAgICByaXBwbGVZOiByaXBwbGVZLFxuICAgICAgcmlwcGxlU2l6ZTogcmlwcGxlU2l6ZVxuICAgIH0sIG5leHRLZXkuY3VycmVudCldKTtcbiAgICBuZXh0S2V5LmN1cnJlbnQgKz0gMTtcbiAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50ID0gY2I7XG4gIH0sIFtjbGFzc2VzXSk7XG4gIGNvbnN0IHN0YXJ0ID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50ID0ge30sIG9wdGlvbnMgPSB7fSwgY2IgPSAoKSA9PiB7fSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHB1bHNhdGUgPSBmYWxzZSxcbiAgICAgIGNlbnRlciA9IGNlbnRlclByb3AgfHwgb3B0aW9ucy5wdWxzYXRlLFxuICAgICAgZmFrZUVsZW1lbnQgPSBmYWxzZSAvLyBGb3IgdGVzdCBwdXJwb3Nlc1xuICAgIH0gPSBvcHRpb25zO1xuICAgIGlmICgoZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LnR5cGUpID09PSAnbW91c2Vkb3duJyAmJiBpZ25vcmluZ01vdXNlRG93bi5jdXJyZW50KSB7XG4gICAgICBpZ25vcmluZ01vdXNlRG93bi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LnR5cGUpID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIGlnbm9yaW5nTW91c2VEb3duLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50ID0gZmFrZUVsZW1lbnQgPyBudWxsIDogY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQgPyBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDoge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgdG9wOiAwXG4gICAgfTtcblxuICAgIC8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgcmlwcGxlXG4gICAgbGV0IHJpcHBsZVg7XG4gICAgbGV0IHJpcHBsZVk7XG4gICAgbGV0IHJpcHBsZVNpemU7XG4gICAgaWYgKGNlbnRlciB8fCBldmVudCA9PT0gdW5kZWZpbmVkIHx8IGV2ZW50LmNsaWVudFggPT09IDAgJiYgZXZlbnQuY2xpZW50WSA9PT0gMCB8fCAhZXZlbnQuY2xpZW50WCAmJiAhZXZlbnQudG91Y2hlcykge1xuICAgICAgcmlwcGxlWCA9IE1hdGgucm91bmQocmVjdC53aWR0aCAvIDIpO1xuICAgICAgcmlwcGxlWSA9IE1hdGgucm91bmQocmVjdC5oZWlnaHQgLyAyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZXG4gICAgICB9ID0gZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA+IDAgPyBldmVudC50b3VjaGVzWzBdIDogZXZlbnQ7XG4gICAgICByaXBwbGVYID0gTWF0aC5yb3VuZChjbGllbnRYIC0gcmVjdC5sZWZ0KTtcbiAgICAgIHJpcHBsZVkgPSBNYXRoLnJvdW5kKGNsaWVudFkgLSByZWN0LnRvcCk7XG4gICAgfVxuICAgIGlmIChjZW50ZXIpIHtcbiAgICAgIHJpcHBsZVNpemUgPSBNYXRoLnNxcnQoKDIgKiByZWN0LndpZHRoICoqIDIgKyByZWN0LmhlaWdodCAqKiAyKSAvIDMpO1xuXG4gICAgICAvLyBGb3Igc29tZSByZWFzb24gdGhlIGFuaW1hdGlvbiBpcyBicm9rZW4gb24gTW9iaWxlIENocm9tZSBpZiB0aGUgc2l6ZSBpcyBldmVuLlxuICAgICAgaWYgKHJpcHBsZVNpemUgJSAyID09PSAwKSB7XG4gICAgICAgIHJpcHBsZVNpemUgKz0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2l6ZVggPSBNYXRoLm1heChNYXRoLmFicygoZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50V2lkdGggOiAwKSAtIHJpcHBsZVgpLCByaXBwbGVYKSAqIDIgKyAyO1xuICAgICAgY29uc3Qgc2l6ZVkgPSBNYXRoLm1heChNYXRoLmFicygoZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50SGVpZ2h0IDogMCkgLSByaXBwbGVZKSwgcmlwcGxlWSkgKiAyICsgMjtcbiAgICAgIHJpcHBsZVNpemUgPSBNYXRoLnNxcnQoc2l6ZVggKiogMiArIHNpemVZICoqIDIpO1xuICAgIH1cblxuICAgIC8vIFRvdWNoZSBkZXZpY2VzXG4gICAgaWYgKGV2ZW50ICE9IG51bGwgJiYgZXZlbnQudG91Y2hlcykge1xuICAgICAgLy8gY2hlY2sgdGhhdCB0aGlzIGlzbid0IGFub3RoZXIgdG91Y2hzdGFydCBkdWUgdG8gbXVsdGl0b3VjaFxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIHdpbGwgb25seSBjbGVhciBhIHNpbmdsZSB0aW1lciB3aGVuIHVubW91bnRpbmcgd2hpbGUgdHdvXG4gICAgICAvLyBhcmUgcnVubmluZ1xuICAgICAgaWYgKHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICAvLyBQcmVwYXJlIHRoZSByaXBwbGUgZWZmZWN0LlxuICAgICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgICAgICAgc3RhcnRDb21taXQoe1xuICAgICAgICAgICAgcHVsc2F0ZSxcbiAgICAgICAgICAgIHJpcHBsZVgsXG4gICAgICAgICAgICByaXBwbGVZLFxuICAgICAgICAgICAgcmlwcGxlU2l6ZSxcbiAgICAgICAgICAgIGNiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIERlbGF5IHRoZSBleGVjdXRpb24gb2YgdGhlIHJpcHBsZSBlZmZlY3QuXG4gICAgICAgIHN0YXJ0VGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCgpO1xuICAgICAgICAgICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIERFTEFZX1JJUFBMRSk7IC8vIFdlIGhhdmUgdG8gbWFrZSBhIHRyYWRlb2ZmIHdpdGggdGhpcyB2YWx1ZS5cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRDb21taXQoe1xuICAgICAgICBwdWxzYXRlLFxuICAgICAgICByaXBwbGVYLFxuICAgICAgICByaXBwbGVZLFxuICAgICAgICByaXBwbGVTaXplLFxuICAgICAgICBjYlxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY2VudGVyUHJvcCwgc3RhcnRDb21taXRdKTtcbiAgY29uc3QgcHVsc2F0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdGFydCh7fSwge1xuICAgICAgcHVsc2F0ZTogdHJ1ZVxuICAgIH0pO1xuICB9LCBbc3RhcnRdKTtcbiAgY29uc3Qgc3RvcCA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCwgY2IpID0+IHtcbiAgICBjbGVhclRpbWVvdXQoc3RhcnRUaW1lci5jdXJyZW50KTtcblxuICAgIC8vIFRoZSB0b3VjaCBpbnRlcmFjdGlvbiBvY2N1cnMgdG9vIHF1aWNrbHkuXG4gICAgLy8gV2Ugc3RpbGwgd2FudCB0byBzaG93IHJpcHBsZSBlZmZlY3QuXG4gICAgaWYgKChldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQudHlwZSkgPT09ICd0b3VjaGVuZCcgJiYgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50KSB7XG4gICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQoKTtcbiAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9IG51bGw7XG4gICAgICBzdGFydFRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc3RvcChldmVudCwgY2IpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9IG51bGw7XG4gICAgc2V0UmlwcGxlcyhvbGRSaXBwbGVzID0+IHtcbiAgICAgIGlmIChvbGRSaXBwbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIG9sZFJpcHBsZXMuc2xpY2UoMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2xkUmlwcGxlcztcbiAgICB9KTtcbiAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50ID0gY2I7XG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgcHVsc2F0ZSxcbiAgICBzdGFydCxcbiAgICBzdG9wXG4gIH0pLCBbcHVsc2F0ZSwgc3RhcnQsIHN0b3BdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRvdWNoUmlwcGxlUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeCh0b3VjaFJpcHBsZUNsYXNzZXMucm9vdCwgY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIHJlZjogY29udGFpbmVyXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25Hcm91cCwge1xuICAgICAgY29tcG9uZW50OiBudWxsLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNoaWxkcmVuOiByaXBwbGVzXG4gICAgfSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUb3VjaFJpcHBsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgc3RhcnRzIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGNvbXBvbmVudFxuICAgKiByYXRoZXIgdGhhbiBhdCB0aGUgcG9pbnQgb2YgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBjZW50ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBTZWUgW0NTUyBBUEldKCNjc3MpIGJlbG93IGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVG91Y2hSaXBwbGU7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIFJpcHBsZShwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lLFxuICAgIGNsYXNzZXMsXG4gICAgcHVsc2F0ZSA9IGZhbHNlLFxuICAgIHJpcHBsZVgsXG4gICAgcmlwcGxlWSxcbiAgICByaXBwbGVTaXplLFxuICAgIGluOiBpblByb3AsXG4gICAgb25FeGl0ZWQsXG4gICAgdGltZW91dFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtsZWF2aW5nLCBzZXRMZWF2aW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgcmlwcGxlQ2xhc3NOYW1lID0gY2xzeChjbGFzc05hbWUsIGNsYXNzZXMucmlwcGxlLCBjbGFzc2VzLnJpcHBsZVZpc2libGUsIHB1bHNhdGUgJiYgY2xhc3Nlcy5yaXBwbGVQdWxzYXRlKTtcbiAgY29uc3QgcmlwcGxlU3R5bGVzID0ge1xuICAgIHdpZHRoOiByaXBwbGVTaXplLFxuICAgIGhlaWdodDogcmlwcGxlU2l6ZSxcbiAgICB0b3A6IC0ocmlwcGxlU2l6ZSAvIDIpICsgcmlwcGxlWSxcbiAgICBsZWZ0OiAtKHJpcHBsZVNpemUgLyAyKSArIHJpcHBsZVhcbiAgfTtcbiAgY29uc3QgY2hpbGRDbGFzc05hbWUgPSBjbHN4KGNsYXNzZXMuY2hpbGQsIGxlYXZpbmcgJiYgY2xhc3Nlcy5jaGlsZExlYXZpbmcsIHB1bHNhdGUgJiYgY2xhc3Nlcy5jaGlsZFB1bHNhdGUpO1xuICBpZiAoIWluUHJvcCAmJiAhbGVhdmluZykge1xuICAgIHNldExlYXZpbmcodHJ1ZSk7XG4gIH1cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWluUHJvcCAmJiBvbkV4aXRlZCAhPSBudWxsKSB7XG4gICAgICAvLyByZWFjdC10cmFuc2l0aW9uLWdyb3VwI29uRXhpdGVkXG4gICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KG9uRXhpdGVkLCB0aW1lb3V0KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW29uRXhpdGVkLCBpblByb3AsIHRpbWVvdXRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiByaXBwbGVDbGFzc05hbWUsXG4gICAgc3R5bGU6IHJpcHBsZVN0eWxlcyxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogY2hpbGRDbGFzc05hbWVcbiAgICB9KVxuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFJpcHBsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIFNlZSBbQ1NTIEFQSV0oI2NzcykgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZSAtIGluamVjdGVkIGZyb20gVHJhbnNpdGlvbkdyb3VwXG4gICAqL1xuICBpbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlIC0gaW5qZWN0ZWQgZnJvbSBUcmFuc2l0aW9uR3JvdXBcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBwdWxzYXRlcywgdHlwaWNhbGx5IGluZGljYXRpbmcgdGhlIGtleWJvYXJkIGZvY3VzIHN0YXRlIG9mIGFuIGVsZW1lbnQuXG4gICAqL1xuICBwdWxzYXRlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIERpYW1ldGVyIG9mIHRoZSByaXBwbGUuXG4gICAqL1xuICByaXBwbGVTaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgcmlwcGxlIGNlbnRlci5cbiAgICovXG4gIHJpcHBsZVg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgcmlwcGxlIGNlbnRlci5cbiAgICovXG4gIHJpcHBsZVk6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBleGl0IGRlbGF5XG4gICAqL1xuICB0aW1lb3V0OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBSaXBwbGU7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvbkJhc2VVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUJ1dHRvbkJhc2UnLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkJhc2VDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQnV0dG9uQmFzZScsIFsncm9vdCcsICdkaXNhYmxlZCcsICdmb2N1c1Zpc2libGUnXSk7XG5leHBvcnQgZGVmYXVsdCBidXR0b25CYXNlQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhY3Rpb25cIiwgXCJjZW50ZXJSaXBwbGVcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZVJpcHBsZVwiLCBcImRpc2FibGVUb3VjaFJpcHBsZVwiLCBcImZvY3VzUmlwcGxlXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwiTGlua0NvbXBvbmVudFwiLCBcIm9uQmx1clwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNvbnRleHRNZW51XCIsIFwib25EcmFnTGVhdmVcIiwgXCJvbkZvY3VzXCIsIFwib25Gb2N1c1Zpc2libGVcIiwgXCJvbktleURvd25cIiwgXCJvbktleVVwXCIsIFwib25Nb3VzZURvd25cIiwgXCJvbk1vdXNlTGVhdmVcIiwgXCJvbk1vdXNlVXBcIiwgXCJvblRvdWNoRW5kXCIsIFwib25Ub3VjaE1vdmVcIiwgXCJvblRvdWNoU3RhcnRcIiwgXCJ0YWJJbmRleFwiLCBcIlRvdWNoUmlwcGxlUHJvcHNcIiwgXCJ0b3VjaFJpcHBsZVJlZlwiLCBcInR5cGVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZUFjY2VwdGluZ1JlZiwgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGNvbXBvc2VDbGFzc2VzIGZyb20gJ0BtdWkvYmFzZS9jb21wb3NlQ2xhc3Nlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91dGlscy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VJc0ZvY3VzVmlzaWJsZSBmcm9tICcuLi91dGlscy91c2VJc0ZvY3VzVmlzaWJsZSc7XG5pbXBvcnQgVG91Y2hSaXBwbGUgZnJvbSAnLi9Ub3VjaFJpcHBsZSc7XG5pbXBvcnQgYnV0dG9uQmFzZUNsYXNzZXMsIHsgZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQmFzZUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBkaXNhYmxlZCxcbiAgICBmb2N1c1Zpc2libGUsXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGZvY3VzVmlzaWJsZSAmJiAnZm9jdXNWaXNpYmxlJ11cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvbkJhc2VVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICBpZiAoZm9jdXNWaXNpYmxlICYmIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSkge1xuICAgIGNvbXBvc2VkQ2xhc3Nlcy5yb290ICs9IGAgJHtmb2N1c1Zpc2libGVDbGFzc05hbWV9YDtcbiAgfVxuICByZXR1cm4gY29tcG9zZWRDbGFzc2VzO1xufTtcbmV4cG9ydCBjb25zdCBCdXR0b25CYXNlUm9vdCA9IHN0eWxlZCgnYnV0dG9uJywge1xuICBuYW1lOiAnTXVpQnV0dG9uQmFzZScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMucm9vdFxufSkoe1xuICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gIC8vIFJlc2V0IGRlZmF1bHQgdmFsdWVcbiAgLy8gV2UgZGlzYWJsZSB0aGUgZm9jdXMgcmluZyBmb3IgbW91c2UsIHRvdWNoIGFuZCBrZXlib2FyZCB1c2Vycy5cbiAgb3V0bGluZTogMCxcbiAgYm9yZGVyOiAwLFxuICBtYXJnaW46IDAsXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIFNhZmFyaVxuICBib3JkZXJSYWRpdXM6IDAsXG4gIHBhZGRpbmc6IDAsXG4gIC8vIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBGaXJlZm94XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICBNb3pBcHBlYXJhbmNlOiAnbm9uZScsXG4gIC8vIFJlc2V0XG4gIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgLy8gUmVzZXRcbiAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgLy8gU28gd2UgdGFrZSBwcmVjZWRlbnQgb3ZlciB0aGUgc3R5bGUgb2YgYSBuYXRpdmUgPGEgLz4gZWxlbWVudC5cbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgJyY6Oi1tb3otZm9jdXMtaW5uZXInOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdub25lJyAvLyBSZW1vdmUgRmlyZWZveCBkb3R0ZWQgb3V0bGluZS5cbiAgfSxcblxuICBbYCYuJHtidXR0b25CYXNlQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAvLyBEaXNhYmxlIGxpbmsgaW50ZXJhY3Rpb25zXG4gICAgY3Vyc29yOiAnZGVmYXVsdCdcbiAgfSxcbiAgJ0BtZWRpYSBwcmludCc6IHtcbiAgICBjb2xvckFkanVzdDogJ2V4YWN0J1xuICB9XG59KTtcblxuLyoqXG4gKiBgQnV0dG9uQmFzZWAgY29udGFpbnMgYXMgZmV3IHN0eWxlcyBhcyBwb3NzaWJsZS5cbiAqIEl0IGFpbXMgdG8gYmUgYSBzaW1wbGUgYnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgYnV0dG9uLlxuICogSXQgY29udGFpbnMgYSBsb2FkIG9mIHN0eWxlIHJlc2V0IGFuZCBzb21lIGZvY3VzL3JpcHBsZSBsb2dpYy5cbiAqL1xuY29uc3QgQnV0dG9uQmFzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJ1dHRvbkJhc2UoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUJ1dHRvbkJhc2UnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBhY3Rpb24sXG4gICAgICBjZW50ZXJSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ2J1dHRvbicsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVJpcHBsZSA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVRvdWNoUmlwcGxlID0gZmFsc2UsXG4gICAgICBmb2N1c1JpcHBsZSA9IGZhbHNlLFxuICAgICAgTGlua0NvbXBvbmVudCA9ICdhJyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvbkNvbnRleHRNZW51LFxuICAgICAgb25EcmFnTGVhdmUsXG4gICAgICBvbkZvY3VzLFxuICAgICAgb25Gb2N1c1Zpc2libGUsXG4gICAgICBvbktleURvd24sXG4gICAgICBvbktleVVwLFxuICAgICAgb25Nb3VzZURvd24sXG4gICAgICBvbk1vdXNlTGVhdmUsXG4gICAgICBvbk1vdXNlVXAsXG4gICAgICBvblRvdWNoRW5kLFxuICAgICAgb25Ub3VjaE1vdmUsXG4gICAgICBvblRvdWNoU3RhcnQsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBUb3VjaFJpcHBsZVByb3BzLFxuICAgICAgdG91Y2hSaXBwbGVSZWYsXG4gICAgICB0eXBlXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGJ1dHRvblJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgcmlwcGxlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVSaXBwbGVSZWYgPSB1c2VGb3JrUmVmKHJpcHBsZVJlZiwgdG91Y2hSaXBwbGVSZWYpO1xuICBjb25zdCB7XG4gICAgaXNGb2N1c1Zpc2libGVSZWYsXG4gICAgb25Gb2N1czogaGFuZGxlRm9jdXNWaXNpYmxlLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1clZpc2libGUsXG4gICAgcmVmOiBmb2N1c1Zpc2libGVSZWZcbiAgfSA9IHVzZUlzRm9jdXNWaXNpYmxlKCk7XG4gIGNvbnN0IFtmb2N1c1Zpc2libGUsIHNldEZvY3VzVmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGlmIChkaXNhYmxlZCAmJiBmb2N1c1Zpc2libGUpIHtcbiAgICBzZXRGb2N1c1Zpc2libGUoZmFsc2UpO1xuICB9XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoYWN0aW9uLCAoKSA9PiAoe1xuICAgIGZvY3VzVmlzaWJsZTogKCkgPT4ge1xuICAgICAgc2V0Rm9jdXNWaXNpYmxlKHRydWUpO1xuICAgICAgYnV0dG9uUmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0pLCBbXSk7XG4gIGNvbnN0IFttb3VudGVkU3RhdGUsIHNldE1vdW50ZWRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TW91bnRlZFN0YXRlKHRydWUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGVuYWJsZVRvdWNoUmlwcGxlID0gbW91bnRlZFN0YXRlICYmICFkaXNhYmxlUmlwcGxlICYmICFkaXNhYmxlZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9jdXNWaXNpYmxlICYmIGZvY3VzUmlwcGxlICYmICFkaXNhYmxlUmlwcGxlICYmIG1vdW50ZWRTdGF0ZSkge1xuICAgICAgcmlwcGxlUmVmLmN1cnJlbnQucHVsc2F0ZSgpO1xuICAgIH1cbiAgfSwgW2Rpc2FibGVSaXBwbGUsIGZvY3VzUmlwcGxlLCBmb2N1c1Zpc2libGUsIG1vdW50ZWRTdGF0ZV0pO1xuICBmdW5jdGlvbiB1c2VSaXBwbGVIYW5kbGVyKHJpcHBsZUFjdGlvbiwgZXZlbnRDYWxsYmFjaywgc2tpcFJpcHBsZUFjdGlvbiA9IGRpc2FibGVUb3VjaFJpcHBsZSkge1xuICAgIHJldHVybiB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudENhbGxiYWNrKSB7XG4gICAgICAgIGV2ZW50Q2FsbGJhY2soZXZlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3QgaWdub3JlID0gc2tpcFJpcHBsZUFjdGlvbjtcbiAgICAgIGlmICghaWdub3JlICYmIHJpcHBsZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50W3JpcHBsZUFjdGlvbl0oZXZlbnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gdXNlUmlwcGxlSGFuZGxlcignc3RhcnQnLCBvbk1vdXNlRG93bik7XG4gIGNvbnN0IGhhbmRsZUNvbnRleHRNZW51ID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uQ29udGV4dE1lbnUpO1xuICBjb25zdCBoYW5kbGVEcmFnTGVhdmUgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25EcmFnTGVhdmUpO1xuICBjb25zdCBoYW5kbGVNb3VzZVVwID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uTW91c2VVcCk7XG4gIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgZXZlbnQgPT4ge1xuICAgIGlmIChmb2N1c1Zpc2libGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChvbk1vdXNlTGVhdmUpIHtcbiAgICAgIG9uTW91c2VMZWF2ZShldmVudCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlVG91Y2hTdGFydCA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgY29uc3QgaGFuZGxlVG91Y2hFbmQgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25Ub3VjaEVuZCk7XG4gIGNvbnN0IGhhbmRsZVRvdWNoTW92ZSA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBvblRvdWNoTW92ZSk7XG4gIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgZXZlbnQgPT4ge1xuICAgIGhhbmRsZUJsdXJWaXNpYmxlKGV2ZW50KTtcbiAgICBpZiAoaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9PT0gZmFsc2UpIHtcbiAgICAgIHNldEZvY3VzVmlzaWJsZShmYWxzZSk7XG4gICAgfVxuICAgIGlmIChvbkJsdXIpIHtcbiAgICAgIG9uQmx1cihldmVudCk7XG4gICAgfVxuICB9LCBmYWxzZSk7XG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzc3NjlcbiAgICBpZiAoIWJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICBidXR0b25SZWYuY3VycmVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgfVxuICAgIGhhbmRsZUZvY3VzVmlzaWJsZShldmVudCk7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlUmVmLmN1cnJlbnQgPT09IHRydWUpIHtcbiAgICAgIHNldEZvY3VzVmlzaWJsZSh0cnVlKTtcbiAgICAgIGlmIChvbkZvY3VzVmlzaWJsZSkge1xuICAgICAgICBvbkZvY3VzVmlzaWJsZShldmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICBvbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBpc05vbk5hdGl2ZUJ1dHRvbiA9ICgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSBidXR0b25SZWYuY3VycmVudDtcbiAgICByZXR1cm4gY29tcG9uZW50ICYmIGNvbXBvbmVudCAhPT0gJ2J1dHRvbicgJiYgIShidXR0b24udGFnTmFtZSA9PT0gJ0EnICYmIGJ1dHRvbi5ocmVmKTtcbiAgfTtcblxuICAvKipcbiAgICogSUUxMSBzaGltIGZvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9yZXBlYXRcbiAgICovXG4gIGNvbnN0IGtleWRvd25SZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgLy8gQ2hlY2sgaWYga2V5IGlzIGFscmVhZHkgZG93biB0byBhdm9pZCByZXBlYXRzIGJlaW5nIGNvdW50ZWQgYXMgbXVsdGlwbGUgYWN0aXZhdGlvbnNcbiAgICBpZiAoZm9jdXNSaXBwbGUgJiYgIWtleWRvd25SZWYuY3VycmVudCAmJiBmb2N1c1Zpc2libGUgJiYgcmlwcGxlUmVmLmN1cnJlbnQgJiYgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGtleWRvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICByaXBwbGVSZWYuY3VycmVudC5zdG9wKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnN0YXJ0KGV2ZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGlzTm9uTmF0aXZlQnV0dG9uKCkgJiYgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChvbktleURvd24pIHtcbiAgICAgIG9uS2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgYWNjZXNzaWJpbGl0eSBmb3Igbm9uIGludGVyYWN0aXZlIGVsZW1lbnRzXG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBpc05vbk5hdGl2ZUJ1dHRvbigpICYmIGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAob25DbGljaykge1xuICAgICAgICBvbkNsaWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIC8vIGNhbGxpbmcgcHJldmVudERlZmF1bHQgaW4ga2V5VXAgb24gYSA8YnV0dG9uPiB3aWxsIG5vdCBkaXNwYXRjaCBhIGNsaWNrIGV2ZW50IGlmIFNwYWNlIGlzIHByZXNzZWRcbiAgICAvLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvYnV0dG9uLWtleXVwLXByZXZlbnRkZWZhdWx0LWRuN2YwXG4gICAgaWYgKGZvY3VzUmlwcGxlICYmIGV2ZW50LmtleSA9PT0gJyAnICYmIHJpcHBsZVJlZi5jdXJyZW50ICYmIGZvY3VzVmlzaWJsZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAga2V5ZG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByaXBwbGVSZWYuY3VycmVudC5zdG9wKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnB1bHNhdGUoZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChvbktleVVwKSB7XG4gICAgICBvbktleVVwKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBLZXlib2FyZCBhY2Nlc3NpYmlsaXR5IGZvciBub24gaW50ZXJhY3RpdmUgZWxlbWVudHNcbiAgICBpZiAob25DbGljayAmJiBldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNOb25OYXRpdmVCdXR0b24oKSAmJiBldmVudC5rZXkgPT09ICcgJyAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgb25DbGljayhldmVudCk7XG4gICAgfVxuICB9KTtcbiAgbGV0IENvbXBvbmVudFByb3AgPSBjb21wb25lbnQ7XG4gIGlmIChDb21wb25lbnRQcm9wID09PSAnYnV0dG9uJyAmJiAob3RoZXIuaHJlZiB8fCBvdGhlci50bykpIHtcbiAgICBDb21wb25lbnRQcm9wID0gTGlua0NvbXBvbmVudDtcbiAgfVxuICBjb25zdCBidXR0b25Qcm9wcyA9IHt9O1xuICBpZiAoQ29tcG9uZW50UHJvcCA9PT0gJ2J1dHRvbicpIHtcbiAgICBidXR0b25Qcm9wcy50eXBlID0gdHlwZSA9PT0gdW5kZWZpbmVkID8gJ2J1dHRvbicgOiB0eXBlO1xuICAgIGJ1dHRvblByb3BzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFvdGhlci5ocmVmICYmICFvdGhlci50bykge1xuICAgICAgYnV0dG9uUHJvcHMucm9sZSA9ICdidXR0b24nO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGJ1dHRvblByb3BzWydhcmlhLWRpc2FibGVkJ10gPSBkaXNhYmxlZDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihyZWYsIGZvY3VzVmlzaWJsZVJlZiwgYnV0dG9uUmVmKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGVuYWJsZVRvdWNoUmlwcGxlICYmICFyaXBwbGVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBUaGUgYGNvbXBvbmVudGAgcHJvcCBwcm92aWRlZCB0byBCdXR0b25CYXNlIGlzIGludmFsaWQuJywgJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIGNoaWxkcmVuIHByb3AgaXMgcmVuZGVyZWQgaW4gdGhpcyBjdXN0b20gY29tcG9uZW50LiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbZW5hYmxlVG91Y2hSaXBwbGVdKTtcbiAgfVxuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY2VudGVyUmlwcGxlLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlUmlwcGxlLFxuICAgIGRpc2FibGVUb3VjaFJpcHBsZSxcbiAgICBmb2N1c1JpcHBsZSxcbiAgICB0YWJJbmRleCxcbiAgICBmb2N1c1Zpc2libGVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhCdXR0b25CYXNlUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBDb21wb25lbnRQcm9wLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgb25DbGljazogb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51OiBoYW5kbGVDb250ZXh0TWVudSxcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgb25LZXlVcDogaGFuZGxlS2V5VXAsXG4gICAgb25Nb3VzZURvd246IGhhbmRsZU1vdXNlRG93bixcbiAgICBvbk1vdXNlTGVhdmU6IGhhbmRsZU1vdXNlTGVhdmUsXG4gICAgb25Nb3VzZVVwOiBoYW5kbGVNb3VzZVVwLFxuICAgIG9uRHJhZ0xlYXZlOiBoYW5kbGVEcmFnTGVhdmUsXG4gICAgb25Ub3VjaEVuZDogaGFuZGxlVG91Y2hFbmQsXG4gICAgb25Ub3VjaE1vdmU6IGhhbmRsZVRvdWNoTW92ZSxcbiAgICBvblRvdWNoU3RhcnQ6IGhhbmRsZVRvdWNoU3RhcnQsXG4gICAgcmVmOiBoYW5kbGVSZWYsXG4gICAgdGFiSW5kZXg6IGRpc2FibGVkID8gLTEgOiB0YWJJbmRleCxcbiAgICB0eXBlOiB0eXBlXG4gIH0sIGJ1dHRvblByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4sIGVuYWJsZVRvdWNoUmlwcGxlID9cbiAgICAvKiNfX1BVUkVfXyovXG4gICAgLyogVG91Y2hSaXBwbGUgaXMgb25seSBuZWVkZWQgY2xpZW50LXNpZGUsIHgyIGJvb3N0IG9uIHRoZSBzZXJ2ZXIuICovXG4gICAgX2pzeChUb3VjaFJpcHBsZSwgX2V4dGVuZHMoe1xuICAgICAgcmVmOiBoYW5kbGVSaXBwbGVSZWYsXG4gICAgICBjZW50ZXI6IGNlbnRlclJpcHBsZVxuICAgIH0sIFRvdWNoUmlwcGxlUHJvcHMpKSA6IG51bGxdXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQnV0dG9uQmFzZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBIHJlZiBmb3IgaW1wZXJhdGl2ZSBhY3Rpb25zLlxuICAgKiBJdCBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBgZm9jdXNWaXNpYmxlKClgIGFjdGlvbi5cbiAgICovXG4gIGFjdGlvbjogcmVmVHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZXMgYXJlIGNlbnRlcmVkLlxuICAgKiBUaGV5IHdvbid0IHN0YXJ0IGF0IHRoZSBjdXJzb3IgaW50ZXJhY3Rpb24gcG9zaXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjZW50ZXJSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IGVsZW1lbnRUeXBlQWNjZXB0aW5nUmVmLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRvdWNoIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlVG91Y2hSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYmFzZSBidXR0b24gd2lsbCBoYXZlIGEga2V5Ym9hcmQgZm9jdXMgcmlwcGxlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhpcyBwcm9wIGNhbiBoZWxwIGlkZW50aWZ5IHdoaWNoIGVsZW1lbnQgaGFzIGtleWJvYXJkIGZvY3VzLlxuICAgKiBUaGUgY2xhc3MgbmFtZSB3aWxsIGJlIGFwcGxpZWQgd2hlbiB0aGUgZWxlbWVudCBnYWlucyB0aGUgZm9jdXMgdGhyb3VnaCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICogSXQncyBhIHBvbHlmaWxsIGZvciB0aGUgW0NTUyA6Zm9jdXMtdmlzaWJsZSBzZWxlY3Rvcl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3NlbGVjdG9ycy00LyN0aGUtZm9jdXMtdmlzaWJsZS1wc2V1ZG8pLlxuICAgKiBUaGUgcmF0aW9uYWxlIGZvciB1c2luZyB0aGlzIGZlYXR1cmUgW2lzIGV4cGxhaW5lZCBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vV0lDRy9mb2N1cy12aXNpYmxlL2Jsb2IvSEVBRC9leHBsYWluZXIubWQpLlxuICAgKiBBIFtwb2x5ZmlsbCBjYW4gYmUgdXNlZF0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZSkgdG8gYXBwbHkgYSBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgdG8gb3RoZXIgY29tcG9uZW50c1xuICAgKiBpZiBuZWVkZWQuXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5hbnksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIGEgbGluayB3aGVuIHRoZSBgaHJlZmAgcHJvcCBpcyBwcm92aWRlZC5cbiAgICogQGRlZmF1bHQgJ2EnXG4gICAqL1xuICBMaW5rQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbnRleHRNZW51OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRHJhZ0xlYXZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGZvY3VzZWQgd2l0aCBhIGtleWJvYXJkLlxuICAgKiBXZSB0cmlnZ2VyIGEgYG9uRm9jdXNgIGNhbGxiYWNrIHRvby5cbiAgICovXG4gIG9uRm9jdXNWaXNpYmxlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uTW91c2VEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uTW91c2VMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbk1vdXNlVXA6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoTW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBgVG91Y2hSaXBwbGVgIGVsZW1lbnQuXG4gICAqL1xuICBUb3VjaFJpcHBsZVByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQSByZWYgdGhhdCBwb2ludHMgdG8gdGhlIGBUb3VjaFJpcHBsZWAgZWxlbWVudC5cbiAgICovXG4gIHRvdWNoUmlwcGxlUmVmOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW50OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgcHVsc2F0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHN0YXJ0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgc3RvcDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH0pXG4gIH0pXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCdXR0b25CYXNlOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlRXZlbnRDYWxsYmFjayBhcyB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VFdmVudENhbGxiYWNrOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlRm9ya1JlZiBhcyB1c2VGb3JrUmVmIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JrUmVmOyIsIid1c2UgY2xpZW50JztcblxuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZS9ibG9iL3Y0LjEuNS9zcmMvZm9jdXMtdmlzaWJsZS5qc1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xubGV0IGhhZEtleWJvYXJkRXZlbnQgPSB0cnVlO1xubGV0IGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gZmFsc2U7XG5sZXQgaGFkRm9jdXNWaXNpYmxlUmVjZW50bHlUaW1lb3V0O1xuY29uc3QgaW5wdXRUeXBlc1doaXRlbGlzdCA9IHtcbiAgdGV4dDogdHJ1ZSxcbiAgc2VhcmNoOiB0cnVlLFxuICB1cmw6IHRydWUsXG4gIHRlbDogdHJ1ZSxcbiAgZW1haWw6IHRydWUsXG4gIHBhc3N3b3JkOiB0cnVlLFxuICBudW1iZXI6IHRydWUsXG4gIGRhdGU6IHRydWUsXG4gIG1vbnRoOiB0cnVlLFxuICB3ZWVrOiB0cnVlLFxuICB0aW1lOiB0cnVlLFxuICBkYXRldGltZTogdHJ1ZSxcbiAgJ2RhdGV0aW1lLWxvY2FsJzogdHJ1ZVxufTtcblxuLyoqXG4gKiBDb21wdXRlcyB3aGV0aGVyIHRoZSBnaXZlbiBlbGVtZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgdGhlXG4gKiBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgYmVpbmcgYWRkZWQsIGkuZS4gd2hldGhlciBpdCBzaG91bGQgYWx3YXlzIG1hdGNoXG4gKiBgOmZvY3VzLXZpc2libGVgIHdoZW4gZm9jdXNlZC5cbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGZvY3VzVHJpZ2dlcnNLZXlib2FyZE1vZGFsaXR5KG5vZGUpIHtcbiAgY29uc3Qge1xuICAgIHR5cGUsXG4gICAgdGFnTmFtZVxuICB9ID0gbm9kZTtcbiAgaWYgKHRhZ05hbWUgPT09ICdJTlBVVCcgJiYgaW5wdXRUeXBlc1doaXRlbGlzdFt0eXBlXSAmJiAhbm9kZS5yZWFkT25seSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0YWdOYW1lID09PSAnVEVYVEFSRUEnICYmICFub2RlLnJlYWRPbmx5KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG5vZGUuaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogS2VlcCB0cmFjayBvZiBvdXIga2V5Ym9hcmQgbW9kYWxpdHkgc3RhdGUgd2l0aCBgaGFkS2V5Ym9hcmRFdmVudGAuXG4gKiBJZiB0aGUgbW9zdCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiB3YXMgdmlhIHRoZSBrZXlib2FyZDtcbiAqIGFuZCB0aGUga2V5IHByZXNzIGRpZCBub3QgaW5jbHVkZSBhIG1ldGEsIGFsdC9vcHRpb24sIG9yIGNvbnRyb2wga2V5O1xuICogdGhlbiB0aGUgbW9kYWxpdHkgaXMga2V5Ym9hcmQuIE90aGVyd2lzZSwgdGhlIG1vZGFsaXR5IGlzIG5vdCBrZXlib2FyZC5cbiAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnRcbiAqL1xuZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICAgIHJldHVybjtcbiAgfVxuICBoYWRLZXlib2FyZEV2ZW50ID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBJZiBhdCBhbnkgcG9pbnQgYSB1c2VyIGNsaWNrcyB3aXRoIGEgcG9pbnRpbmcgZGV2aWNlLCBlbnN1cmUgdGhhdCB3ZSBjaGFuZ2VcbiAqIHRoZSBtb2RhbGl0eSBhd2F5IGZyb20ga2V5Ym9hcmQuXG4gKiBUaGlzIGF2b2lkcyB0aGUgc2l0dWF0aW9uIHdoZXJlIGEgdXNlciBwcmVzc2VzIGEga2V5IG9uIGFuIGFscmVhZHkgZm9jdXNlZFxuICogZWxlbWVudCwgYW5kIHRoZW4gY2xpY2tzIG9uIGEgZGlmZmVyZW50IGVsZW1lbnQsIGZvY3VzaW5nIGl0IHdpdGggYVxuICogcG9pbnRpbmcgZGV2aWNlLCB3aGlsZSB3ZSBzdGlsbCB0aGluayB3ZSdyZSBpbiBrZXlib2FyZCBtb2RhbGl0eS5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUG9pbnRlckRvd24oKSB7XG4gIGhhZEtleWJvYXJkRXZlbnQgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UoKSB7XG4gIGlmICh0aGlzLnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAvLyBJZiB0aGUgdGFiIGJlY29tZXMgYWN0aXZlIGFnYWluLCB0aGUgYnJvd3NlciB3aWxsIGhhbmRsZSBjYWxsaW5nIGZvY3VzXG4gICAgLy8gb24gdGhlIGVsZW1lbnQgKFNhZmFyaSBhY3R1YWxseSBjYWxscyBpdCB0d2ljZSkuXG4gICAgLy8gSWYgdGhpcyB0YWIgY2hhbmdlIGNhdXNlZCBhIGJsdXIgb24gYW4gZWxlbWVudCB3aXRoIGZvY3VzLXZpc2libGUsXG4gICAgLy8gcmUtYXBwbHkgdGhlIGNsYXNzIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYmFjayB0byB0aGUgdGFiLlxuICAgIGlmIChoYWRGb2N1c1Zpc2libGVSZWNlbnRseSkge1xuICAgICAgaGFkS2V5Ym9hcmRFdmVudCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBwcmVwYXJlKGRvYykge1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93biwgdHJ1ZSk7XG4gIGRvYy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHRydWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRlYXJkb3duKGRvYykge1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93biwgdHJ1ZSk7XG4gIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHRydWUpO1xufVxuZnVuY3Rpb24gaXNGb2N1c1Zpc2libGUoZXZlbnQpIHtcbiAgY29uc3Qge1xuICAgIHRhcmdldFxuICB9ID0gZXZlbnQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRhcmdldC5tYXRjaGVzKCc6Zm9jdXMtdmlzaWJsZScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEJyb3dzZXJzIG5vdCBpbXBsZW1lbnRpbmcgOmZvY3VzLXZpc2libGUgd2lsbCB0aHJvdyBhIFN5bnRheEVycm9yLlxuICAgIC8vIFdlIHVzZSBvdXIgb3duIGhldXJpc3RpYyBmb3IgdGhvc2UgYnJvd3NlcnMuXG4gICAgLy8gUmV0aHJvdyBtaWdodCBiZSBiZXR0ZXIgaWYgaXQncyBub3QgdGhlIGV4cGVjdGVkIGVycm9yIGJ1dCBkbyB3ZSByZWFsbHlcbiAgICAvLyB3YW50IHRvIGNyYXNoIGlmIGZvY3VzLXZpc2libGUgbWFsZnVuY3Rpb25lZD9cbiAgfVxuXG4gIC8vIE5vIG5lZWQgZm9yIHZhbGlkRm9jdXNUYXJnZXQgY2hlY2suIFRoZSB1c2VyIGRvZXMgdGhhdCBieSBhdHRhY2hpbmcgaXQgdG9cbiAgLy8gZm9jdXNhYmxlIGV2ZW50cyBvbmx5LlxuICByZXR1cm4gaGFkS2V5Ym9hcmRFdmVudCB8fCBmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eSh0YXJnZXQpO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSXNGb2N1c1Zpc2libGUoKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9IG51bGwpIHtcbiAgICAgIHByZXBhcmUobm9kZS5vd25lckRvY3VtZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgY29uc3QgaXNGb2N1c1Zpc2libGVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgY2FsbGVkIGlmIGEgYmx1ciBldmVudCBpcyBmaXJlZFxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlQmx1clZpc2libGUoKSB7XG4gICAgLy8gY2hlY2tpbmcgYWdhaW5zdCBwb3RlbnRpYWwgc3RhdGUgdmFyaWFibGUgZG9lcyBub3Qgc3VmZmljZSBpZiB3ZSBmb2N1cyBhbmQgYmx1ciBzeW5jaHJvbm91c2x5LlxuICAgIC8vIFJlYWN0IHdvdWxkbid0IGhhdmUgdGltZSB0byB0cmlnZ2VyIGEgcmUtcmVuZGVyIHNvIGBmb2N1c1Zpc2libGVgIHdvdWxkIGJlIHN0YWxlLlxuICAgIC8vIElkZWFsbHkgd2Ugd291bGQgYWRqdXN0IGBpc0ZvY3VzVmlzaWJsZShldmVudClgIHRvIGxvb2sgYXQgYHJlbGF0ZWRUYXJnZXRgIGZvciBibHVyIGV2ZW50cy5cbiAgICAvLyBUaGlzIGRvZXNuJ3Qgd29yayBpbiBJRTExIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzM3NTFcbiAgICAvLyBUT0RPOiBjaGVjayBhZ2FpbiBpZiBSZWFjdCByZWxlYXNlcyB0aGVpciBpbnRlcm5hbCBjaGFuZ2VzIHRvIGZvY3VzIGV2ZW50IGhhbmRsaW5nIChodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8xOTE4NikuXG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIFRvIGRldGVjdCBhIHRhYi93aW5kb3cgc3dpdGNoLCB3ZSBsb29rIGZvciBhIGJsdXIgZXZlbnQgZm9sbG93ZWRcbiAgICAgIC8vIHJhcGlkbHkgYnkgYSB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAgIC8vIElmIHdlIGRvbid0IHNlZSBhIHZpc2liaWxpdHkgY2hhbmdlIHdpdGhpbiAxMDBtcywgaXQncyBwcm9iYWJseSBhXG4gICAgICAvLyByZWd1bGFyIGZvY3VzIGNoYW5nZS5cbiAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gdHJ1ZTtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoaGFkRm9jdXNWaXNpYmxlUmVjZW50bHlUaW1lb3V0KTtcbiAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkgPSBmYWxzZTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICBpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgaWYgYSBibHVyIGV2ZW50IGlzIGZpcmVkXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVGb2N1c1Zpc2libGUoZXZlbnQpIHtcbiAgICBpZiAoaXNGb2N1c1Zpc2libGUoZXZlbnQpKSB7XG4gICAgICBpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc0ZvY3VzVmlzaWJsZVJlZixcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1Zpc2libGUsXG4gICAgb25CbHVyOiBoYW5kbGVCbHVyVmlzaWJsZSxcbiAgICByZWZcbiAgfTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlzRm9jdXNWaXNpYmxlIGFzIHVzZUlzRm9jdXNWaXNpYmxlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJc0ZvY3VzVmlzaWJsZTsiLCIvKipcbiAqIFRPRE8gdjU6IGNvbnNpZGVyIG1ha2luZyBpdCBwcml2YXRlXG4gKlxuICogcGFzc2VzIHt2YWx1ZX0gdG8ge3JlZn1cbiAqXG4gKiBXQVJOSU5HOiBCZSBzdXJlIHRvIG9ubHkgY2FsbCB0aGlzIGluc2lkZSBhIGNhbGxiYWNrIHRoYXQgaXMgcGFzc2VkIGFzIGEgcmVmLlxuICogT3RoZXJ3aXNlLCBtYWtlIHN1cmUgdG8gY2xlYW51cCB0aGUgcHJldmlvdXMge3JlZn0gaWYgaXQgY2hhbmdlcy4gU2VlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8xMzUzOVxuICpcbiAqIFVzZWZ1bCBpZiB5b3Ugd2FudCB0byBleHBvc2UgdGhlIHJlZiBvZiBhbiBpbm5lciBjb21wb25lbnQgdG8gdGhlIHB1YmxpYyBBUElcbiAqIHdoaWxlIHN0aWxsIHVzaW5nIGl0IGluc2lkZSB0aGUgY29tcG9uZW50LlxuICogQHBhcmFtIHJlZiBBIHJlZiBjYWxsYmFjayBvciByZWYgb2JqZWN0LiBJZiBhbnl0aGluZyBmYWxzeSwgdGhpcyBpcyBhIG5vLW9wLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRSZWYocmVmLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZih2YWx1ZSk7XG4gIH0gZWxzZSBpZiAocmVmKSB7XG4gICAgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgfVxufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgdXNlRW5oYW5jZWRFZmZlY3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/IFJlYWN0LnVzZUxheW91dEVmZmVjdCA6IFJlYWN0LnVzZUVmZmVjdDtcbmV4cG9ydCBkZWZhdWx0IHVzZUVuaGFuY2VkRWZmZWN0OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUVuaGFuY2VkRWZmZWN0IGZyb20gJy4uL3VzZUVuaGFuY2VkRWZmZWN0JztcblxuLyoqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE0MDk5I2lzc3VlY29tbWVudC00NDAwMTM4OTJcbiAqL1xuXG5mdW5jdGlvbiB1c2VFdmVudENhbGxiYWNrKGZuKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZihmbik7XG4gIHVzZUVuaGFuY2VkRWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IGZuO1xuICB9KTtcbiAgcmV0dXJuIFJlYWN0LnVzZUNhbGxiYWNrKCguLi5hcmdzKSA9PlxuICAvLyBAdHMtZXhwZWN0LWVycm9yIGhpZGUgYHRoaXNgXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpiYW4tY29tbWEtb3BlcmF0b3JcbiAgKDAsIHJlZi5jdXJyZW50KSguLi5hcmdzKSwgW10pO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlRXZlbnRDYWxsYmFjazsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzZXRSZWYgZnJvbSAnLi4vc2V0UmVmJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUZvcmtSZWYoLi4ucmVmcykge1xuICAvKipcbiAgICogVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiB0aGUgcmVmcyBwYXNzZWQgdG8gdGhpcyBob29rIGNoYW5nZSBhbmQgYXJlIGFsbCBkZWZpbmVkLlxuICAgKiBUaGlzIG1lYW5zIHJlYWN0IHdpbGwgY2FsbCB0aGUgb2xkIGZvcmtSZWYgd2l0aCBgbnVsbGAgYW5kIHRoZSBuZXcgZm9ya1JlZlxuICAgKiB3aXRoIHRoZSByZWYuIENsZWFudXAgbmF0dXJhbGx5IGVtZXJnZXMgZnJvbSB0aGlzIGJlaGF2aW9yLlxuICAgKi9cbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChyZWZzLmV2ZXJ5KHJlZiA9PiByZWYgPT0gbnVsbCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2UgPT4ge1xuICAgICAgcmVmcy5mb3JFYWNoKHJlZiA9PiB7XG4gICAgICAgIHNldFJlZihyZWYsIGluc3RhbmNlKTtcbiAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCByZWZzKTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbnZhciByZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xudmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG4gIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICBjb250ZXh0VHlwZTogdHJ1ZSxcbiAgY29udGV4dFR5cGVzOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOiB0cnVlLFxuICBtaXhpbnM6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHByb3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3VtZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG52YXIgRk9SV0FSRF9SRUZfU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgcmVuZGVyOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWVcbn07XG52YXIgTUVNT19TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICBjb21wYXJlOiB0cnVlLFxuICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gIGRpc3BsYXlOYW1lOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgVFlQRV9TVEFUSUNTID0ge307XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5Gb3J3YXJkUmVmXSA9IEZPUldBUkRfUkVGX1NUQVRJQ1M7XG5UWVBFX1NUQVRJQ1NbcmVhY3RJcy5NZW1vXSA9IE1FTU9fU1RBVElDUztcblxuZnVuY3Rpb24gZ2V0U3RhdGljcyhjb21wb25lbnQpIHtcbiAgLy8gUmVhY3QgdjE2LjExIGFuZCBiZWxvd1xuICBpZiAocmVhY3RJcy5pc01lbW8oY29tcG9uZW50KSkge1xuICAgIHJldHVybiBNRU1PX1NUQVRJQ1M7XG4gIH0gLy8gUmVhY3QgdjE2LjEyIGFuZCBhYm92ZVxuXG5cbiAgcmV0dXJuIFRZUEVfU1RBVElDU1tjb21wb25lbnRbJyQkdHlwZW9mJ11dIHx8IFJFQUNUX1NUQVRJQ1M7XG59XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5mdW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVudCwgYmxhY2tsaXN0KSB7XG4gIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG4gICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgdmFyIGluaGVyaXRlZENvbXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQgJiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRTdGF0aWNzID0gZ2V0U3RhdGljcyh0YXJnZXRDb21wb25lbnQpO1xuICAgIHZhciBzb3VyY2VTdGF0aWNzID0gZ2V0U3RhdGljcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcblxuICAgICAgaWYgKCFLTk9XTl9TVEFUSUNTW2tleV0gJiYgIShibGFja2xpc3QgJiYgYmxhY2tsaXN0W2tleV0pICYmICEoc291cmNlU3RhdGljcyAmJiBzb3VyY2VTdGF0aWNzW2tleV0pICYmICEodGFyZ2V0U3RhdGljcyAmJiB0YXJnZXRTdGF0aWNzW2tleV0pKSB7XG4gICAgICAgIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZUNvbXBvbmVudCwga2V5KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXRDb21wb25lbnQsIGtleSwgZGVzY3JpcHRvcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBob2lzdE5vblJlYWN0U3RhdGljcztcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7dmFyIGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixjPWI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsZD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsZT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxmPWI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGc9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsaD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxrPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsbD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLG09Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLG49Yj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxxPWI/XG5TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxyPWI/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsdD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LHY9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsdz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx4PWI/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx5PWI/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O1xuZnVuY3Rpb24geihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgdT1hLiQkdHlwZW9mO3N3aXRjaCh1KXtjYXNlIGM6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgbDpjYXNlIG06Y2FzZSBlOmNhc2UgZzpjYXNlIGY6Y2FzZSBwOnJldHVybiBhO2RlZmF1bHQ6c3dpdGNoKGE9YSYmYS4kJHR5cGVvZixhKXtjYXNlIGs6Y2FzZSBuOmNhc2UgdDpjYXNlIHI6Y2FzZSBoOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHV9fWNhc2UgZDpyZXR1cm4gdX19fWZ1bmN0aW9uIEEoYSl7cmV0dXJuIHooYSk9PT1tfWV4cG9ydHMuQXN5bmNNb2RlPWw7ZXhwb3J0cy5Db25jdXJyZW50TW9kZT1tO2V4cG9ydHMuQ29udGV4dENvbnN1bWVyPWs7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9aDtleHBvcnRzLkVsZW1lbnQ9YztleHBvcnRzLkZvcndhcmRSZWY9bjtleHBvcnRzLkZyYWdtZW50PWU7ZXhwb3J0cy5MYXp5PXQ7ZXhwb3J0cy5NZW1vPXI7ZXhwb3J0cy5Qb3J0YWw9ZDtcbmV4cG9ydHMuUHJvZmlsZXI9ZztleHBvcnRzLlN0cmljdE1vZGU9ZjtleHBvcnRzLlN1c3BlbnNlPXA7ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gQShhKXx8eihhKT09PWx9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1BO2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1rfTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09aH07ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWN9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09bn07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZX07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT10fTtcbmV4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cn07ZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWR9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWd9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Zn07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cH07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihhKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGF8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhfHxhPT09ZXx8YT09PW18fGE9PT1nfHxhPT09Znx8YT09PXB8fGE9PT1xfHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXR8fGEuJCR0eXBlb2Y9PT1yfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT1ufHxhLiQkdHlwZW9mPT09d3x8YS4kJHR5cGVvZj09PXh8fGEuJCR0eXBlb2Y9PT15fHxhLiQkdHlwZW9mPT09dil9O2V4cG9ydHMudHlwZU9mPXo7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfc2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2UodCwgbykge1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoby5wcm90b3R5cGUpLCB0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHQsIHNldFByb3RvdHlwZU9mKHQsIG8pO1xufVxuZXhwb3J0IHsgX2luaGVyaXRzTG9vc2UgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6WyJnZXRDaGlsZE1hcHBpbmciLCJjaGlsZHJlbiIsIm1hcEZuIiwicmVzdWx0IiwiT2JqZWN0IiwiY3JlYXRlIiwiQ2hpbGRyZW4iLCJtYXAiLCJjIiwiZm9yRWFjaCIsImNoaWxkIiwia2V5IiwiaXNWYWxpZEVsZW1lbnQiLCJtYXBwZXIiLCJnZXRQcm9wIiwicHJvcCIsInByb3BzIiwiZ2V0TmV4dENoaWxkTWFwcGluZyIsIm5leHRQcm9wcyIsInByZXZDaGlsZE1hcHBpbmciLCJvbkV4aXRlZCIsIm5leHRDaGlsZE1hcHBpbmciLCJwcmV2IiwibmV4dCIsImdldFZhbHVlRm9yS2V5IiwiaSIsIm5leHRLZXlzUGVuZGluZyIsInBlbmRpbmdLZXlzIiwicHJldktleSIsImxlbmd0aCIsInB1c2giLCJjaGlsZE1hcHBpbmciLCJuZXh0S2V5IiwicGVuZGluZ05leHRLZXkiLCJtZXJnZUNoaWxkTWFwcGluZ3MiLCJrZXlzIiwiaGFzUHJldiIsImhhc05leHQiLCJwcmV2Q2hpbGQiLCJpc0xlYXZpbmciLCJpbiIsImNsb25lRWxlbWVudCIsImJpbmQiLCJleGl0IiwiZW50ZXIiLCJ2YWx1ZXMiLCJvYmoiLCJrIiwiVHJhbnNpdGlvbkdyb3VwIiwiX1JlYWN0JENvbXBvbmVudCIsImNvbnRleHQiLCJfdGhpcyIsImhhbmRsZUV4aXRlZCIsImNhbGwiLCJ0aGlzIiwiZSIsIlJlZmVyZW5jZUVycm9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInN0YXRlIiwiY29udGV4dFZhbHVlIiwiaXNNb3VudGluZyIsImZpcnN0UmVuZGVyIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiY29tcG9uZW50RGlkTW91bnQiLCJtb3VudGVkIiwic2V0U3RhdGUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIl9yZWYiLCJhcHBlYXIiLCJub2RlIiwiY3VycmVudENoaWxkTWFwcGluZyIsInJlbmRlciIsIl90aGlzJHByb3BzIiwiQ29tcG9uZW50IiwiY29tcG9uZW50IiwiY2hpbGRGYWN0b3J5IiwiVHJhbnNpdGlvbkdyb3VwQ29udGV4dCIsIlByb3ZpZGVyIiwidmFsdWUiLCJwcm9wVHlwZXMiLCJkZWZhdWx0UHJvcHMiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfIiwidCIsImVudGVyS2V5ZnJhbWUiLCJleGl0S2V5ZnJhbWUiLCJwdWxzYXRlS2V5ZnJhbWUiLCJUb3VjaFJpcHBsZVJvb3QiLCJzdHlsZWQiLCJuYW1lIiwic2xvdCIsIm92ZXJmbG93IiwicG9pbnRlckV2ZW50cyIsInBvc2l0aW9uIiwiekluZGV4IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiYm9yZGVyUmFkaXVzIiwiVG91Y2hSaXBwbGVSaXBwbGUiLCJjbGFzc05hbWUiLCJjbGFzc2VzIiwicHVsc2F0ZSIsInJpcHBsZVgiLCJyaXBwbGVZIiwicmlwcGxlU2l6ZSIsImluUHJvcCIsInRpbWVvdXQiLCJsZWF2aW5nIiwic2V0TGVhdmluZyIsInJpcHBsZUNsYXNzTmFtZSIsInJpcHBsZSIsInJpcHBsZVZpc2libGUiLCJyaXBwbGVQdWxzYXRlIiwicmlwcGxlU3R5bGVzIiwid2lkdGgiLCJoZWlnaHQiLCJjaGlsZENsYXNzTmFtZSIsImNoaWxkTGVhdmluZyIsImNoaWxkUHVsc2F0ZSIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzdHlsZSIsInRoZW1lIiwidHJhbnNpdGlvbnMiLCJlYXNpbmciLCJlYXNlSW5PdXQiLCJkdXJhdGlvbiIsInNob3J0ZXIiLCJpblByb3BzIiwicmVmIiwidXNlVGhlbWVQcm9wcyIsImNlbnRlciIsImNlbnRlclByb3AiLCJvdGhlciIsInJpcHBsZXMiLCJzZXRSaXBwbGVzIiwicmlwcGxlQ2FsbGJhY2siLCJjdXJyZW50IiwiaWdub3JpbmdNb3VzZURvd24iLCJzdGFydFRpbWVyIiwic3RhcnRUaW1lckNvbW1pdCIsImNvbnRhaW5lciIsInN0YXJ0Q29tbWl0IiwicGFyYW1zIiwiY2IiLCJvbGRSaXBwbGVzIiwic3RhcnQiLCJldmVudCIsIm9wdGlvbnMiLCJmYWtlRWxlbWVudCIsInR5cGUiLCJlbGVtZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInVuZGVmaW5lZCIsImNsaWVudFgiLCJjbGllbnRZIiwidG91Y2hlcyIsIk1hdGgiLCJyb3VuZCIsInNxcnQiLCJzaXplWCIsIm1heCIsImFicyIsImNsaWVudFdpZHRoIiwic2l6ZVkiLCJjbGllbnRIZWlnaHQiLCJzdG9wIiwic2xpY2UiLCJyb290IiwiZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyIsIkJ1dHRvbkJhc2VSb290Iiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJzdHlsZXMiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiYm94U2l6aW5nIiwiV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJvdXRsaW5lIiwiYm9yZGVyIiwibWFyZ2luIiwicGFkZGluZyIsImN1cnNvciIsInVzZXJTZWxlY3QiLCJ2ZXJ0aWNhbEFsaWduIiwiTW96QXBwZWFyYW5jZSIsIldlYmtpdEFwcGVhcmFuY2UiLCJ0ZXh0RGVjb3JhdGlvbiIsImNvbG9yIiwiYm9yZGVyU3R5bGUiLCJkaXNhYmxlZCIsImNvbG9yQWRqdXN0IiwiYWN0aW9uIiwiY2VudGVyUmlwcGxlIiwiZGlzYWJsZVJpcHBsZSIsImRpc2FibGVUb3VjaFJpcHBsZSIsImZvY3VzUmlwcGxlIiwiTGlua0NvbXBvbmVudCIsIm9uQmx1ciIsIm9uQ2xpY2siLCJvbkNvbnRleHRNZW51Iiwib25EcmFnTGVhdmUiLCJvbkZvY3VzIiwib25Gb2N1c1Zpc2libGUiLCJvbktleURvd24iLCJvbktleVVwIiwib25Nb3VzZURvd24iLCJvbk1vdXNlTGVhdmUiLCJvbk1vdXNlVXAiLCJvblRvdWNoRW5kIiwib25Ub3VjaE1vdmUiLCJvblRvdWNoU3RhcnQiLCJ0YWJJbmRleCIsIlRvdWNoUmlwcGxlUHJvcHMiLCJ0b3VjaFJpcHBsZVJlZiIsImJ1dHRvblJlZiIsInJpcHBsZVJlZiIsImhhbmRsZVJpcHBsZVJlZiIsInVzZUZvcmtSZWYiLCJpc0ZvY3VzVmlzaWJsZVJlZiIsImhhbmRsZUZvY3VzVmlzaWJsZSIsImhhbmRsZUJsdXJWaXNpYmxlIiwiZm9jdXNWaXNpYmxlUmVmIiwidXNlSXNGb2N1c1Zpc2libGUiLCJmb2N1c1Zpc2libGUiLCJzZXRGb2N1c1Zpc2libGUiLCJmb2N1cyIsIm1vdW50ZWRTdGF0ZSIsInNldE1vdW50ZWRTdGF0ZSIsImVuYWJsZVRvdWNoUmlwcGxlIiwidXNlUmlwcGxlSGFuZGxlciIsInJpcHBsZUFjdGlvbiIsImV2ZW50Q2FsbGJhY2siLCJza2lwUmlwcGxlQWN0aW9uIiwidXNlRXZlbnRDYWxsYmFjayIsImhhbmRsZU1vdXNlRG93biIsImhhbmRsZUNvbnRleHRNZW51IiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlTW91c2VVcCIsImhhbmRsZU1vdXNlTGVhdmUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVRvdWNoU3RhcnQiLCJoYW5kbGVUb3VjaEVuZCIsImhhbmRsZVRvdWNoTW92ZSIsImhhbmRsZUJsdXIiLCJoYW5kbGVGb2N1cyIsImN1cnJlbnRUYXJnZXQiLCJpc05vbk5hdGl2ZUJ1dHRvbiIsImJ1dHRvbiIsInRhZ05hbWUiLCJocmVmIiwia2V5ZG93blJlZiIsImhhbmRsZUtleURvd24iLCJ0YXJnZXQiLCJoYW5kbGVLZXlVcCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJDb21wb25lbnRQcm9wIiwidG8iLCJidXR0b25Qcm9wcyIsInJvbGUiLCJoYW5kbGVSZWYiLCJvd25lclN0YXRlIiwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lIiwic2xvdHMiLCJjb21wb3NlZENsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJoYWRGb2N1c1Zpc2libGVSZWNlbnRseVRpbWVvdXQiLCJoYWRLZXlib2FyZEV2ZW50IiwiaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkiLCJpbnB1dFR5cGVzV2hpdGVsaXN0IiwidGV4dCIsInNlYXJjaCIsInVybCIsInRlbCIsImVtYWlsIiwicGFzc3dvcmQiLCJudW1iZXIiLCJkYXRlIiwibW9udGgiLCJ3ZWVrIiwidGltZSIsImRhdGV0aW1lIiwibWV0YUtleSIsImFsdEtleSIsImN0cmxLZXkiLCJoYW5kbGVQb2ludGVyRG93biIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJ2aXNpYmlsaXR5U3RhdGUiLCJkb2MiLCJvd25lckRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1hdGNoZXMiLCJlcnJvciIsInJlYWRPbmx5IiwiaXNDb250ZW50RWRpdGFibGUiLCJmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eSIsImlzRm9jdXNWaXNpYmxlIiwid2luZG93Iiwic2V0UmVmIiwiZm4iLCJhcmdzIiwicmVmcyIsImV2ZXJ5IiwiaW5zdGFuY2UiLCJyZWFjdElzIiwiUkVBQ1RfU1RBVElDUyIsImNoaWxkQ29udGV4dFR5cGVzIiwiY29udGV4dFR5cGUiLCJjb250ZXh0VHlwZXMiLCJkaXNwbGF5TmFtZSIsImdldERlZmF1bHRQcm9wcyIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsIm1peGlucyIsIktOT1dOX1NUQVRJQ1MiLCJjYWxsZXIiLCJjYWxsZWUiLCJhcmd1bWVudHMiLCJhcml0eSIsIk1FTU9fU1RBVElDUyIsImNvbXBhcmUiLCJUWVBFX1NUQVRJQ1MiLCJnZXRTdGF0aWNzIiwiaXNNZW1vIiwiRm9yd2FyZFJlZiIsIk1lbW8iLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRQcm90b3R5cGVPZiIsIm9iamVjdFByb3RvdHlwZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJob2lzdE5vblJlYWN0U3RhdGljcyIsInRhcmdldENvbXBvbmVudCIsInNvdXJjZUNvbXBvbmVudCIsImJsYWNrbGlzdCIsImluaGVyaXRlZENvbXBvbmVudCIsImNvbmNhdCIsInRhcmdldFN0YXRpY3MiLCJzb3VyY2VTdGF0aWNzIiwiZGVzY3JpcHRvciIsImIiLCJTeW1ib2wiLCJmb3IiLCJkIiwiZiIsImciLCJoIiwibCIsIm0iLCJuIiwicCIsInEiLCJyIiwidiIsInciLCJ4IiwieSIsInoiLCJhIiwidSIsIiQkdHlwZW9mIiwiQSIsIkFzeW5jTW9kZSIsIkNvbmN1cnJlbnRNb2RlIiwiQ29udGV4dENvbnN1bWVyIiwiQ29udGV4dFByb3ZpZGVyIiwiRWxlbWVudCIsIkZyYWdtZW50IiwiTGF6eSIsIlBvcnRhbCIsIlByb2ZpbGVyIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiaXNBc3luY01vZGUiLCJpc0NvbmN1cnJlbnRNb2RlIiwiaXNDb250ZXh0Q29uc3VtZXIiLCJpc0NvbnRleHRQcm92aWRlciIsImlzRWxlbWVudCIsImlzRm9yd2FyZFJlZiIsImlzRnJhZ21lbnQiLCJpc0xhenkiLCJpc1BvcnRhbCIsImlzUHJvZmlsZXIiLCJpc1N0cmljdE1vZGUiLCJpc1N1c3BlbnNlIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwidHlwZU9mIiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHNMb29zZSIsIm8iLCJjb25zdHJ1Y3RvciJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1167.1062705c.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1167.1062705c.js.LICENSE.txt new file mode 100644 index 000000000..6f6f2bb3f --- /dev/null +++ b/react_frontend/static/react_frontend/js/1167.1062705c.js.LICENSE.txt @@ -0,0 +1,8 @@ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1172.178b359c.js b/react_frontend/static/react_frontend/js/1172.178b359c.js new file mode 100644 index 000000000..5f0c2dbf2 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1172.178b359c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1172],{1172:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1195.4089d01b.js b/react_frontend/static/react_frontend/js/1195.4089d01b.js new file mode 100644 index 000000000..e13dec93d --- /dev/null +++ b/react_frontend/static/react_frontend/js/1195.4089d01b.js @@ -0,0 +1,3 @@ +/*! For license information please see 1195.4089d01b.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1195],{1195:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTE5NS4zMTU4YjljNC5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUmtCLFNBQUNBLEdBQ2pCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21hcmtlcl92aXN1YWxfbG9jL3JlYWN0LWNvbXBvbmVudHMvdmlzdWFsTG9jLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy92aXN1YWxMb2MuY3NzXCI7XHJcblxyXG5jb25zdCB2aXN1YWxMb2MgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgdmlzdWFsTG9jOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1195.4089d01b.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1195.4089d01b.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1195.4089d01b.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1259.1625d44a.js b/react_frontend/static/react_frontend/js/1259.1625d44a.js new file mode 100644 index 000000000..3305c9d1b --- /dev/null +++ b/react_frontend/static/react_frontend/js/1259.1625d44a.js @@ -0,0 +1,29 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1259,4668],{7437:(e,t,r)=>{r.d(t,{AH:()=>c,i7:()=>d,mL:()=>l});var o=r(5684),a=r(6540),n=r(41),i=r(1287),s=r(6899),l=(r(4300),r(4146),(0,o.w)((function(e,t){var r=e.styles,l=(0,s.J)([r],void 0,a.useContext(o.T));if(!o.i){for(var c,d=l.name,p=l.styles,u=l.next;void 0!==u;)d+=" "+u.name,p+=u.styles,u=u.next;var m=!0===t.compat,h=t.insert("",{name:d,styles:p},t.sheet,m);return m?null:a.createElement("style",((c={})["data-emotion"]=t.key+"-global "+d,c.dangerouslySetInnerHTML={__html:h},c.nonce=t.sheet.nonce,c))}var v=a.useRef();return(0,i.i)((function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),o=!1,a=document.querySelector('style[data-emotion="'+e+" "+l.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==a&&(o=!0,a.setAttribute("data-emotion",e),r.hydrate([a])),v.current=[r,o],function(){r.flush()}}),[t]),(0,i.i)((function(){var e=v.current,r=e[0];if(e[1])e[1]=!1;else{if(void 0!==l.next&&(0,n.sk)(t,l.next,!0),r.tags.length){var o=r.tags[r.tags.length-1].nextElementSibling;r.before=o,r.flush()}t.insert("",l,r,!1)}}),[t,l.name]),null})));function c(){for(var e=arguments.length,t=new Array(e),r=0;r{r.d(t,{A:()=>c});var o=r(6540),a=r(961),n=r(1523),i=r(1529),s=r(989),l=r(4848);const c=o.forwardRef((function(e,t){const{children:r,container:c,disablePortal:d=!1}=e,[p,u]=o.useState(null),m=(0,n.A)(o.isValidElement(r)?r.ref:null,t);if((0,i.A)((()=>{d||u(function(e){return"function"==typeof e?e():e}(c)||document.body)}),[c,d]),(0,i.A)((()=>{if(p&&!d)return(0,s.A)(t,p),()=>{(0,s.A)(t,null)}}),[t,p,d]),d){if(o.isValidElement(r)){const e={ref:m};return o.cloneElement(r,e)}return(0,l.jsx)(o.Fragment,{children:r})}return(0,l.jsx)(o.Fragment,{children:p?a.createPortal(r,p):p})}))},3636:(e,t,r)=>{r.d(t,{W:()=>i});var o=r(6540);r(4848);const a={disableDefaultClasses:!1},n=o.createContext(a);function i(e){const{disableDefaultClasses:t}=o.useContext(n);return r=>t?"":e(r)}},4856:(e,t,r)=>{r.d(t,{A:()=>n});var o=r(8168),a=r(5419);function n(e,t,r){return void 0===e||(0,a.A)(e)?t:(0,o.A)({},t,{ownerState:(0,o.A)({},t.ownerState,r)})}},5419:(e,t,r)=>{function o(e){return"string"==typeof e}r.d(t,{A:()=>o})},5489:(e,t,r)=>{function o(e,t,r){return"function"==typeof e?e(t,r):e}r.d(t,{A:()=>o})},9977:(e,t,r)=>{r.d(t,{A:()=>p});var o=r(8168),a=r(8587),n=r(1523),i=r(4856),s=r(53);function l(e){if(void 0===e)return{};const t={};return Object.keys(e).filter((t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t]))).forEach((r=>{t[r]=e[r]})),t}var c=r(5489);const d=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function p(e){var t;const{elementType:r,externalSlotProps:p,ownerState:u,skipResolvingSlotProps:m=!1}=e,h=(0,a.A)(e,d),v=m?{}:(0,c.A)(p,u),{props:g,internalRef:f}=function(e){const{getSlotProps:t,additionalProps:r,externalSlotProps:a,externalForwardedProps:n,className:i}=e;if(!t){const e=(0,s.A)(null==n?void 0:n.className,null==a?void 0:a.className,i,null==r?void 0:r.className),t=(0,o.A)({},null==r?void 0:r.style,null==n?void 0:n.style,null==a?void 0:a.style),l=(0,o.A)({},r,n,a);return e.length>0&&(l.className=e),Object.keys(t).length>0&&(l.style=t),{props:l,internalRef:void 0}}const c=function(e,t=[]){if(void 0===e)return{};const r={};return Object.keys(e).filter((r=>r.match(/^on[A-Z]/)&&"function"==typeof e[r]&&!t.includes(r))).forEach((t=>{r[t]=e[t]})),r}((0,o.A)({},n,a)),d=l(a),p=l(n),u=t(c),m=(0,s.A)(null==u?void 0:u.className,null==r?void 0:r.className,i,null==n?void 0:n.className,null==a?void 0:a.className),h=(0,o.A)({},null==u?void 0:u.style,null==r?void 0:r.style,null==n?void 0:n.style,null==a?void 0:a.style),v=(0,o.A)({},u,r,p,d);return m.length>0&&(v.className=m),Object.keys(h).length>0&&(v.style=h),{props:v,internalRef:u.ref}}((0,o.A)({},h,{externalSlotProps:v})),A=(0,n.A)(f,null==v?void 0:v.ref,null==(t=e.additionalProps)?void 0:t.ref);return(0,i.A)(r,(0,o.A)({},g,{ref:A}),u)}},4719:(e,t,r)=>{r.d(t,{A:()=>l});var o=r(7413),a=r(9071),n=r(6544),i=r(8312);const s=(0,n.A)(),l=(0,o.A)({themeId:i.A,defaultTheme:s,defaultClassName:"MuiBox-root",generateClassName:a.A.generate})},1224:(e,t,r)=>{r.d(t,{A:()=>C});var o=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(3726),l=r(5659),c=r(4279),d=r(7577),p=r(4409),u=r(6606),m=r(8466),h=r(8413),v=r(1609);function g(e){return(0,v.A)("MuiButton",e)}const f=(0,h.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var A=r(1848),x=r(4848);const y=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],b=e=>(0,a.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),S=(0,d.Ay)(u.A,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${(0,m.A)(r.color)}`],t[`size${(0,m.A)(r.size)}`],t[`${r.variant}Size${(0,m.A)(r.size)}`],"inherit"===r.color&&t.colorInherit,r.disableElevation&&t.disableElevation,r.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var r,o;const n="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,a.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,a.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${f.focusVisible}`]:(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${f.disabled}`]:(0,a.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,c.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(r=(o=e.palette).getContrastText)?void 0:r.call(o,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:n,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${f.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${f.disabled}`]:{boxShadow:"none"}})),w=(0,d.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.startIcon,t[`iconSize${(0,m.A)(r.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},b(e)))),k=(0,d.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.endIcon,t[`iconSize${(0,m.A)(r.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},b(e)))),C=n.forwardRef((function(e,t){const r=n.useContext(A.A),c=(0,s.A)(r,e),d=(0,p.A)({props:c,name:"MuiButton"}),{children:u,color:h="primary",component:v="button",className:f,disabled:b=!1,disableElevation:C=!1,disableFocusRipple:W=!1,endIcon:z,focusVisibleClassName:M,fullWidth:$=!1,size:R="medium",startIcon:N,type:P,variant:B="text"}=d,D=(0,o.A)(d,y),I=(0,a.A)({},d,{color:h,component:v,disabled:b,disableElevation:C,disableFocusRipple:W,fullWidth:$,size:R,type:P,variant:B}),T=(e=>{const{color:t,disableElevation:r,fullWidth:o,size:n,variant:i,classes:s}=e,c={root:["root",i,`${i}${(0,m.A)(t)}`,`size${(0,m.A)(n)}`,`${i}Size${(0,m.A)(n)}`,"inherit"===t&&"colorInherit",r&&"disableElevation",o&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,m.A)(n)}`],endIcon:["endIcon",`iconSize${(0,m.A)(n)}`]},d=(0,l.A)(c,g,s);return(0,a.A)({},s,d)})(I),E=N&&(0,x.jsx)(w,{className:T.startIcon,ownerState:I,children:N}),j=z&&(0,x.jsx)(k,{className:T.endIcon,ownerState:I,children:z});return(0,x.jsxs)(S,(0,a.A)({ownerState:I,className:(0,i.A)(r.className,T.root,f),component:v,disabled:b,focusRipple:!W,focusVisibleClassName:(0,i.A)(T.focusVisible,M),ref:t,type:P},D,{classes:T,children:[E,u,j]}))}))},1848:(e,t,r)=>{r.d(t,{A:()=>o});const o=r(6540).createContext({})},3357:(e,t,r)=>{r.d(t,{A:()=>z});var o=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(7437),c=r(8466),d=r(4409),p=r(7577),u=r(8413),m=r(1609);function h(e){return(0,m.A)("MuiCircularProgress",e)}(0,u.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var v=r(4848);const g=["className","color","disableShrink","size","style","thickness","value","variant"];let f,A,x,y,b=e=>e;const S=(0,l.i7)(f||(f=b` + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +`)),w=(0,l.i7)(A||(A=b` + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } +`)),k=(0,p.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,c.A)(r.color)}`]]}})((({ownerState:e,theme:t})=>(0,a.A)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,l.AH)(x||(x=b` + animation: ${0} 1.4s linear infinite; + `),S))),C=(0,p.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),W=(0,p.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,c.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,a.A)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,l.AH)(y||(y=b` + animation: ${0} 1.4s ease-in-out infinite; + `),w))),z=n.forwardRef((function(e,t){const r=(0,d.A)({props:e,name:"MuiCircularProgress"}),{className:n,color:l="primary",disableShrink:p=!1,size:u=40,style:m,thickness:f=3.6,value:A=0,variant:x="indeterminate"}=r,y=(0,o.A)(r,g),b=(0,a.A)({},r,{color:l,disableShrink:p,size:u,thickness:f,value:A,variant:x}),S=(e=>{const{classes:t,variant:r,color:o,disableShrink:a}=e,n={root:["root",r,`color${(0,c.A)(o)}`],svg:["svg"],circle:["circle",`circle${(0,c.A)(r)}`,a&&"circleDisableShrink"]};return(0,s.A)(n,h,t)})(b),w={},z={},M={};if("determinate"===x){const e=2*Math.PI*((44-f)/2);w.strokeDasharray=e.toFixed(3),M["aria-valuenow"]=Math.round(A),w.strokeDashoffset=`${((100-A)/100*e).toFixed(3)}px`,z.transform="rotate(-90deg)"}return(0,v.jsx)(k,(0,a.A)({className:(0,i.A)(S.root,n),style:(0,a.A)({width:u,height:u},z,m),ownerState:b,ref:t,role:"progressbar"},M,y,{children:(0,v.jsx)(C,{className:S.svg,ownerState:b,viewBox:"22 22 44 44",children:(0,v.jsx)(W,{className:S.circle,style:w,ownerState:b,cx:44,cy:44,r:(44-f)/2,fill:"none",strokeWidth:f})})}))}))},8031:(e,t,r)=>{r.d(t,{A:()=>M});var o=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(4661),c=r(8466),d=r(3466),p=r(973),u=r(538),m=r(4409),h=r(7577),v=r(8413),g=r(1609);function f(e){return(0,g.A)("MuiDialog",e)}const A=(0,v.A)("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]);var x=r(8102),y=r(7419),b=r(4675),S=r(4848);const w=["aria-describedby","aria-labelledby","BackdropComponent","BackdropProps","children","className","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClose","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps"],k=(0,h.Ay)(y.A,{name:"MuiDialog",slot:"Backdrop",overrides:(e,t)=>t.backdrop})({zIndex:-1}),C=(0,h.Ay)(d.A,{name:"MuiDialog",slot:"Root",overridesResolver:(e,t)=>t.root})({"@media print":{position:"absolute !important"}}),W=(0,h.Ay)("div",{name:"MuiDialog",slot:"Container",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.container,t[`scroll${(0,c.A)(r.scroll)}`]]}})((({ownerState:e})=>(0,a.A)({height:"100%","@media print":{height:"auto"},outline:0},"paper"===e.scroll&&{display:"flex",justifyContent:"center",alignItems:"center"},"body"===e.scroll&&{overflowY:"auto",overflowX:"hidden",textAlign:"center","&:after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}}))),z=(0,h.Ay)(u.A,{name:"MuiDialog",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.paper,t[`scrollPaper${(0,c.A)(r.scroll)}`],t[`paperWidth${(0,c.A)(String(r.maxWidth))}`],r.fullWidth&&t.paperFullWidth,r.fullScreen&&t.paperFullScreen]}})((({theme:e,ownerState:t})=>(0,a.A)({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},"paper"===t.scroll&&{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},"body"===t.scroll&&{display:"inline-block",verticalAlign:"middle",textAlign:"left"},!t.maxWidth&&{maxWidth:"calc(100% - 64px)"},"xs"===t.maxWidth&&{maxWidth:"px"===e.breakpoints.unit?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`,[`&.${A.paperScrollBody}`]:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:"calc(100% - 64px)"}}},t.maxWidth&&"xs"!==t.maxWidth&&{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`,[`&.${A.paperScrollBody}`]:{[e.breakpoints.down(e.breakpoints.values[t.maxWidth]+64)]:{maxWidth:"calc(100% - 64px)"}}},t.fullWidth&&{width:"calc(100% - 64px)"},t.fullScreen&&{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,[`&.${A.paperScrollBody}`]:{margin:0,maxWidth:"100%"}}))),M=n.forwardRef((function(e,t){const r=(0,m.A)({props:e,name:"MuiDialog"}),d=(0,b.A)(),h={enter:d.transitions.duration.enteringScreen,exit:d.transitions.duration.leavingScreen},{"aria-describedby":v,"aria-labelledby":g,BackdropComponent:A,BackdropProps:y,children:M,className:$,disableEscapeKeyDown:R=!1,fullScreen:N=!1,fullWidth:P=!1,maxWidth:B="sm",onBackdropClick:D,onClose:I,open:T,PaperComponent:E=u.A,PaperProps:j={},scroll:F="paper",TransitionComponent:O=p.A,transitionDuration:L=h,TransitionProps:_}=r,V=(0,o.A)(r,w),H=(0,a.A)({},r,{disableEscapeKeyDown:R,fullScreen:N,fullWidth:P,maxWidth:B,scroll:F}),X=(e=>{const{classes:t,scroll:r,maxWidth:o,fullWidth:a,fullScreen:n}=e,i={root:["root"],container:["container",`scroll${(0,c.A)(r)}`],paper:["paper",`paperScroll${(0,c.A)(r)}`,`paperWidth${(0,c.A)(String(o))}`,a&&"paperFullWidth",n&&"paperFullScreen"]};return(0,s.A)(i,f,t)})(H),K=n.useRef(),Y=(0,l.A)(g),J=n.useMemo((()=>({titleId:Y})),[Y]);return(0,S.jsx)(C,(0,a.A)({className:(0,i.A)(X.root,$),closeAfterTransition:!0,components:{Backdrop:k},componentsProps:{backdrop:(0,a.A)({transitionDuration:L,as:A},y)},disableEscapeKeyDown:R,onClose:I,open:T,ref:t,onClick:e=>{K.current&&(K.current=null,D&&D(e),I&&I(e,"backdropClick"))},ownerState:H},V,{children:(0,S.jsx)(O,(0,a.A)({appear:!0,in:T,timeout:L,role:"presentation"},_,{children:(0,S.jsx)(W,{className:(0,i.A)(X.container),onMouseDown:e=>{K.current=e.target===e.currentTarget},ownerState:H,children:(0,S.jsx)(z,(0,a.A)({as:E,elevation:24,role:"dialog","aria-describedby":v,"aria-labelledby":Y},j,{className:(0,i.A)(X.paper,j.className),ownerState:H,children:(0,S.jsx)(x.A.Provider,{value:J,children:M})}))})}))}))}))},8102:(e,t,r)=>{r.d(t,{A:()=>o});const o=r(6540).createContext({})},8763:(e,t,r)=>{r.d(t,{A:()=>g});var o=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(7577),c=r(4409),d=r(8413),p=r(1609);function u(e){return(0,p.A)("MuiDialogActions",e)}(0,d.A)("MuiDialogActions",["root","spacing"]);var m=r(4848);const h=["className","disableSpacing"],v=(0,l.Ay)("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,!r.disableSpacing&&t.spacing]}})((({ownerState:e})=>(0,a.A)({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto"},!e.disableSpacing&&{"& > :not(:first-of-type)":{marginLeft:8}}))),g=n.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiDialogActions"}),{className:n,disableSpacing:l=!1}=r,d=(0,o.A)(r,h),p=(0,a.A)({},r,{disableSpacing:l}),g=(e=>{const{classes:t,disableSpacing:r}=e,o={root:["root",!r&&"spacing"]};return(0,s.A)(o,u,t)})(p);return(0,m.jsx)(v,(0,a.A)({className:(0,i.A)(g.root,n),ownerState:p,ref:t},d))}))},2477:(e,t,r)=>{r.d(t,{A:()=>f});var o=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(7577),c=r(4409),d=r(8413),p=r(1609);function u(e){return(0,p.A)("MuiDialogContent",e)}(0,d.A)("MuiDialogContent",["root","dividers"]);var m=r(1435),h=r(4848);const v=["className","dividers"],g=(0,l.Ay)("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.dividers&&t.dividers]}})((({theme:e,ownerState:t})=>(0,a.A)({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px"},t.dividers?{padding:"16px 24px",borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}:{[`.${m.A.root} + &`]:{paddingTop:0}}))),f=n.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiDialogContent"}),{className:n,dividers:l=!1}=r,d=(0,o.A)(r,v),p=(0,a.A)({},r,{dividers:l}),m=(e=>{const{classes:t,dividers:r}=e,o={root:["root",r&&"dividers"]};return(0,s.A)(o,u,t)})(p);return(0,h.jsx)(g,(0,a.A)({className:(0,i.A)(m.root,n),ownerState:p,ref:t},d))}))},6831:(e,t,r)=>{r.d(t,{A:()=>g});var o=r(8168),a=r(8587),n=r(6540),i=r(53),s=r(5659),l=r(4073),c=r(7577),d=r(4409),p=r(1435),u=r(8102),m=r(4848);const h=["className","id"],v=(0,c.Ay)(l.A,{name:"MuiDialogTitle",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:"16px 24px",flex:"0 0 auto"}),g=n.forwardRef((function(e,t){const r=(0,d.A)({props:e,name:"MuiDialogTitle"}),{className:l,id:c}=r,g=(0,a.A)(r,h),f=r,A=(e=>{const{classes:t}=e;return(0,s.A)({root:["root"]},p.t,t)})(f),{titleId:x=c}=n.useContext(u.A);return(0,m.jsx)(v,(0,o.A)({component:"h2",className:(0,i.A)(A.root,l),ownerState:f,ref:t,variant:"h6",id:null!=c?c:x},g))}))},1435:(e,t,r)=>{r.d(t,{A:()=>i,t:()=>n});var o=r(8413),a=r(1609);function n(e){return(0,a.A)("MuiDialogTitle",e)}const i=(0,o.A)("MuiDialogTitle",["root"])},4073:(e,t,r)=>{r.d(t,{A:()=>y});var o=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(9599),l=r(5659),c=r(7577),d=r(4409),p=r(8466),u=r(8413),m=r(1609);function h(e){return(0,m.A)("MuiTypography",e)}(0,u.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var v=r(4848);const g=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],f=(0,c.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,p.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,a.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),A={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},x={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},y=n.forwardRef((function(e,t){const r=(0,d.A)({props:e,name:"MuiTypography"}),n=(e=>x[e]||e)(r.color),c=(0,s.A)((0,a.A)({},r,{color:n})),{align:u="inherit",className:m,component:y,gutterBottom:b=!1,noWrap:S=!1,paragraph:w=!1,variant:k="body1",variantMapping:C=A}=c,W=(0,o.A)(c,g),z=(0,a.A)({},c,{align:u,color:n,className:m,component:y,gutterBottom:b,noWrap:S,paragraph:w,variant:k,variantMapping:C}),M=y||(w?"p":C[k]||A[k])||"span",$=(e=>{const{align:t,gutterBottom:r,noWrap:o,paragraph:a,variant:n,classes:i}=e,s={root:["root",n,"inherit"!==e.align&&`align${(0,p.A)(t)}`,r&&"gutterBottom",o&&"noWrap",a&&"paragraph"]};return(0,l.A)(s,h,i)})(z);return(0,v.jsx)(f,(0,a.A)({as:M,ref:t,ownerState:z,className:(0,i.A)($.root,m)},W))}))},7413:(e,t,r)=>{r.d(t,{A:()=>m});var o=r(8168),a=r(8587),n=r(6540),i=r(53),s=r(9359),l=r(3571),c=r(9599),d=r(2858),p=r(4848);const u=["className","component"];function m(e={}){const{themeId:t,defaultTheme:r,defaultClassName:m="MuiBox-root",generateClassName:h}=e,v=(0,s.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.A);return n.forwardRef((function(e,n){const s=(0,d.A)(r),l=(0,c.A)(e),{className:g,component:f="div"}=l,A=(0,a.A)(l,u);return(0,p.jsx)(v,(0,o.A)({as:f,ref:n,className:(0,i.A)(g,h?h(m):m),theme:t&&s[t]||s},A))}))}},9599:(e,t,r)=>{r.d(t,{A:()=>c});var o=r(8168),a=r(8587),n=r(3272),i=r(4188);const s=["sx"],l=e=>{var t,r;const o={systemProps:{},otherProps:{}},a=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:i.A;return Object.keys(e).forEach((t=>{a[t]?o.systemProps[t]=e[t]:o.otherProps[t]=e[t]})),o};function c(e){const{sx:t}=e,r=(0,a.A)(e,s),{systemProps:i,otherProps:c}=l(r);let d;return d=Array.isArray(t)?[i,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,n.Q)(r)?(0,o.A)({},i,r):i}:(0,o.A)({},i,t),(0,o.A)({},c,{sx:d})}},2325:(e,t,r)=>{function o(e){return e&&e.ownerDocument||document}r.d(t,{A:()=>o})},4661:(e,t,r)=>{var o;r.d(t,{A:()=>s});var a=r(6540);let n=0;const i=(o||(o=r.t(a,2)))["useId".toString()];function s(e){if(void 0!==i){const t=i();return null!=e?e:t}return function(e){const[t,r]=a.useState(e),o=e||t;return a.useEffect((()=>{null==t&&(n+=1,r(`mui-${n}`))}),[t]),o}(e)}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0VpVCxFQUFXakwsR0FDZixJQUFJeUwsRUFjSixPQVpFQSxFQURFblYsTUFBTW9WLFFBQVFGLEdBQ04sQ0FBQ0osS0FBZ0JJLEdBQ0YsbUJBQVRBLEVBQ04sSUFBSW5WLEtBQ1osTUFBTW1DLEVBQVNnVCxLQUFRblYsR0FDdkIsT0FBSyxPQUFjbUMsSUFHWixPQUFTLENBQUMsRUFBRzRTLEVBQWE1UyxHQUZ4QjRTLENBRStCLEdBR2hDLE9BQVMsQ0FBQyxFQUFHQSxFQUFhSSxJQUUvQixPQUFTLENBQUMsRUFBR3hULEVBQVksQ0FDOUJ1VCxHQUFJRSxHQUVSLEMsaUJDL0NlLFNBQVNFLEVBQWN0VyxHQUNwQyxPQUFPQSxHQUFRQSxFQUFLc1csZUFBaUJyVyxRQUN2QyxDLHNFQ0NBLElBQUlzVyxFQUFXLEVBa0JmLE1BQU1DLEdBQWtCLGlCQUFNLFFBQVFqVixZQU92QixTQUFTNlAsRUFBTXFGLEdBQzVCLFFBQXdCaFksSUFBcEIrWCxFQUErQixDQUNqQyxNQUFNRSxFQUFVRixJQUNoQixPQUFxQixNQUFkQyxFQUFxQkEsRUFBYUMsQ0FDM0MsQ0FFQSxPQTlCRixTQUFxQkQsR0FDbkIsTUFBT0UsRUFBV0MsR0FBZ0IsV0FBZUgsR0FDM0NwRCxFQUFLb0QsR0FBY0UsRUFXekIsT0FWQSxhQUFnQixLQUNHLE1BQWJBLElBS0ZKLEdBQVksRUFDWkssRUFBYSxPQUFPTCxLQUN0QixHQUNDLENBQUNJLElBQ0d0RCxDQUNULENBZ0JTd0QsQ0FBWUosRUFDckIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvUG9ydGFsL1BvcnRhbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvQ2xhc3NOYW1lQ29uZmlndXJhdG9yLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy9hcHBlbmRPd25lclN0YXRlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy9pc0hvc3RDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL3Jlc29sdmVDb21wb25lbnRQcm9wcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvb21pdEV2ZW50SGFuZGxlcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL3VzZVNsb3RQcm9wcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvbWVyZ2VTbG90UHJvcHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL2V4dHJhY3RFdmVudEhhbmRsZXJzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQm94L0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9idXR0b25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uL0J1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NpcmN1bGFyUHJvZ3Jlc3MvY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DaXJjdWxhclByb2dyZXNzL0NpcmN1bGFyUHJvZ3Jlc3MuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9EaWFsb2cvZGlhbG9nQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0RpYWxvZy9EaWFsb2cuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9EaWFsb2cvRGlhbG9nQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnMvZGlhbG9nQWN0aW9uc0NsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zL0RpYWxvZ0FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50L2RpYWxvZ0NvbnRlbnRDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudC9EaWFsb2dDb250ZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGUvRGlhbG9nVGl0bGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZS9kaWFsb2dUaXRsZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L3R5cG9ncmFwaHlDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeS9UeXBvZ3JhcGh5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9jcmVhdGVCb3guanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3N0eWxlRnVuY3Rpb25TeC9leHRlbmRTeFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vb3duZXJEb2N1bWVudC9vd25lckRvY3VtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlkL3VzZUlkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGggYXMgaGFzT3duUHJvcGVydHksIEUgYXMgRW1vdGlvbiwgYyBhcyBjcmVhdGVFbW90aW9uUHJvcHMsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgVCBhcyBUaGVtZUNvbnRleHQsIGkgYXMgaXNCcm93c2VyJDEgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5leHBvcnQgeyBDIGFzIENhY2hlUHJvdmlkZXIsIFQgYXMgVGhlbWVDb250ZXh0LCBhIGFzIFRoZW1lUHJvdmlkZXIsIF8gYXMgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlLCB1IGFzIHVzZVRoZW1lLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIGIgYXMgd2l0aFRoZW1lIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaW5zZXJ0U3R5bGVzLCByZWdpc3RlclN0eWxlcywgZ2V0UmVnaXN0ZXJlZFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnLi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuXG52YXIgcGtnID0ge1xuXHRuYW1lOiBcIkBlbW90aW9uL3JlYWN0XCIsXG5cdHZlcnNpb246IFwiMTEuMTEuMVwiLFxuXHRtYWluOiBcImRpc3QvZW1vdGlvbi1yZWFjdC5janMuanNcIixcblx0bW9kdWxlOiBcImRpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIixcblx0YnJvd3Nlcjoge1xuXHRcdFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIlxuXHR9LFxuXHRleHBvcnRzOiB7XG5cdFx0XCIuXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3Qud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL2pzeC1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL19pc29sYXRlZC1obnJzXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL2pzeC1kZXYtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vcGFja2FnZS5qc29uXCI6IFwiLi9wYWNrYWdlLmpzb25cIixcblx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcIi4vbWFjcm9cIjoge1xuXHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uZC50c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0fVxuXHR9LFxuXHR0eXBlczogXCJ0eXBlcy9pbmRleC5kLnRzXCIsXG5cdGZpbGVzOiBbXG5cdFx0XCJzcmNcIixcblx0XHRcImRpc3RcIixcblx0XHRcImpzeC1ydW50aW1lXCIsXG5cdFx0XCJqc3gtZGV2LXJ1bnRpbWVcIixcblx0XHRcIl9pc29sYXRlZC1obnJzXCIsXG5cdFx0XCJ0eXBlcy8qLmQudHNcIixcblx0XHRcIm1hY3JvLipcIlxuXHRdLFxuXHRzaWRlRWZmZWN0czogZmFsc2UsXG5cdGF1dGhvcjogXCJFbW90aW9uIENvbnRyaWJ1dG9yc1wiLFxuXHRsaWNlbnNlOiBcIk1JVFwiLFxuXHRzY3JpcHRzOiB7XG5cdFx0XCJ0ZXN0OnR5cGVzY3JpcHRcIjogXCJkdHNsaW50IHR5cGVzXCJcblx0fSxcblx0ZGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAYmFiZWwvcnVudGltZVwiOiBcIl43LjE4LjNcIixcblx0XHRcIkBlbW90aW9uL2JhYmVsLXBsdWdpblwiOiBcIl4xMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jYWNoZVwiOiBcIl4xMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJpYWxpemVcIjogXCJeMS4xLjJcIixcblx0XHRcIkBlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzXCI6IFwiXjEuMC4xXCIsXG5cdFx0XCJAZW1vdGlvbi91dGlsc1wiOiBcIl4xLjIuMVwiLFxuXHRcdFwiQGVtb3Rpb24vd2Vhay1tZW1vaXplXCI6IFwiXjAuMy4xXCIsXG5cdFx0XCJob2lzdC1ub24tcmVhY3Qtc3RhdGljc1wiOiBcIl4zLjMuMVwiXG5cdH0sXG5cdHBlZXJEZXBlbmRlbmNpZXM6IHtcblx0XHRyZWFjdDogXCI+PTE2LjguMFwiXG5cdH0sXG5cdHBlZXJEZXBlbmRlbmNpZXNNZXRhOiB7XG5cdFx0XCJAdHlwZXMvcmVhY3RcIjoge1xuXHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHR9XG5cdH0sXG5cdGRldkRlcGVuZGVuY2llczoge1xuXHRcdFwiQGRlZmluaXRlbHl0eXBlZC9kdHNsaW50XCI6IFwiMC4wLjExMlwiLFxuXHRcdFwiQGVtb3Rpb24vY3NzXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY3NzLXByZXR0aWZpZXJcIjogXCIxLjEuM1wiLFxuXHRcdFwiQGVtb3Rpb24vc2VydmVyXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc3R5bGVkXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiaHRtbC10YWctbmFtZXNcIjogXCJeMS4xLjJcIixcblx0XHRyZWFjdDogXCIxNi4xNC4wXCIsXG5cdFx0XCJzdmctdGFnLW5hbWVzXCI6IFwiXjEuMS4xXCIsXG5cdFx0dHlwZXNjcmlwdDogXCJeNC41LjVcIlxuXHR9LFxuXHRyZXBvc2l0b3J5OiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vdHJlZS9tYWluL3BhY2thZ2VzL3JlYWN0XCIsXG5cdHB1Ymxpc2hDb25maWc6IHtcblx0XHRhY2Nlc3M6IFwicHVibGljXCJcblx0fSxcblx0XCJ1bWQ6bWFpblwiOiBcImRpc3QvZW1vdGlvbi1yZWFjdC51bWQubWluLmpzXCIsXG5cdHByZWNvbnN0cnVjdDoge1xuXHRcdGVudHJ5cG9pbnRzOiBbXG5cdFx0XHRcIi4vaW5kZXguanNcIixcblx0XHRcdFwiLi9qc3gtcnVudGltZS5qc1wiLFxuXHRcdFx0XCIuL2pzeC1kZXYtcnVudGltZS5qc1wiLFxuXHRcdFx0XCIuL19pc29sYXRlZC1obnJzLmpzXCJcblx0XHRdLFxuXHRcdHVtZE5hbWU6IFwiZW1vdGlvblJlYWN0XCIsXG5cdFx0ZXhwb3J0czoge1xuXHRcdFx0ZW52Q29uZGl0aW9uczogW1xuXHRcdFx0XHRcImJyb3dzZXJcIixcblx0XHRcdFx0XCJ3b3JrZXJcIlxuXHRcdFx0XSxcblx0XHRcdGV4dHJhOiB7XG5cdFx0XHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFx0XHRcIi4vbWFjcm9cIjoge1xuXHRcdFx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uZC50c1wiXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxudmFyIGpzeCA9IGZ1bmN0aW9uIGpzeCh0eXBlLCBwcm9wcykge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBpZiAocHJvcHMgPT0gbnVsbCB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgJ2NzcycpKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gIH1cblxuICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgY3JlYXRlRWxlbWVudEFyZ0FycmF5ID0gbmV3IEFycmF5KGFyZ3NMZW5ndGgpO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMF0gPSBFbW90aW9uO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMV0gPSBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpO1xuXG4gIGZvciAodmFyIGkgPSAyOyBpIDwgYXJnc0xlbmd0aDsgaSsrKSB7XG4gICAgY3JlYXRlRWxlbWVudEFyZ0FycmF5W2ldID0gYXJnc1tpXTtcbiAgfSAvLyAkRmxvd0ZpeE1lXG5cblxuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShudWxsLCBjcmVhdGVFbGVtZW50QXJnQXJyYXkpO1xufTtcblxudmFyIHdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCA9IGZhbHNlOyAvLyBtYWludGFpbiBwbGFjZSBvdmVyIHJlcmVuZGVycy5cbi8vIGluaXRpYWwgcmVuZGVyIGZyb20gYnJvd3NlciwgaW5zZXJ0QmVmb3JlIGNvbnRleHQuc2hlZXQudGFnc1swXSBvciBpZiBhIHN0eWxlIGhhc24ndCBiZWVuIGluc2VydGVkIHRoZXJlIHlldCwgYXBwZW5kQ2hpbGRcbi8vIGluaXRpYWwgY2xpZW50LXNpZGUgcmVuZGVyIGZyb20gU1NSLCB1c2UgcGxhY2Ugb2YgaHlkcmF0aW5nIHRhZ1xuXG52YXIgR2xvYmFsID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgJiYgKCAvLyBjaGVjayBmb3IgY2xhc3NOYW1lIGFzIHdlbGwgc2luY2UgdGhlIHVzZXIgaXNcbiAgLy8gcHJvYmFibHkgdXNpbmcgdGhlIGN1c3RvbSBjcmVhdGVFbGVtZW50IHdoaWNoXG4gIC8vIG1lYW5zIGl0IHdpbGwgYmUgdHVybmVkIGludG8gYSBjbGFzc05hbWUgcHJvcFxuICAvLyAkRmxvd0ZpeE1lIEkgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gYWRkIGl0IHRvIHRoZSB0eXBlIHNpbmNlIGl0IHNob3VsZG4ndCBiZSB1c2VkXG4gIHByb3BzLmNsYXNzTmFtZSB8fCBwcm9wcy5jc3MpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIHRoZSBjc3MgcHJvcCBvbiBHbG9iYWwsIGRpZCB5b3UgbWVhbiB0byB1c2UgdGhlIHN0eWxlcyBwcm9wIGluc3RlYWQ/XCIpO1xuICAgIHdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCA9IHRydWU7XG4gIH1cblxuICB2YXIgc3R5bGVzID0gcHJvcHMuc3R5bGVzO1xuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhbc3R5bGVzXSwgdW5kZWZpbmVkLCBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCkpO1xuXG4gIGlmICghaXNCcm93c2VyJDEpIHtcbiAgICB2YXIgX3JlZjtcblxuICAgIHZhciBzZXJpYWxpemVkTmFtZXMgPSBzZXJpYWxpemVkLm5hbWU7XG4gICAgdmFyIHNlcmlhbGl6ZWRTdHlsZXMgPSBzZXJpYWxpemVkLnN0eWxlcztcbiAgICB2YXIgbmV4dCA9IHNlcmlhbGl6ZWQubmV4dDtcblxuICAgIHdoaWxlIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlcmlhbGl6ZWROYW1lcyArPSAnICcgKyBuZXh0Lm5hbWU7XG4gICAgICBzZXJpYWxpemVkU3R5bGVzICs9IG5leHQuc3R5bGVzO1xuICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkQ2FjaGUgPSBjYWNoZS5jb21wYXQgPT09IHRydWU7XG4gICAgdmFyIHJ1bGVzID0gY2FjaGUuaW5zZXJ0KFwiXCIsIHtcbiAgICAgIG5hbWU6IHNlcmlhbGl6ZWROYW1lcyxcbiAgICAgIHN0eWxlczogc2VyaWFsaXplZFN0eWxlc1xuICAgIH0sIGNhY2hlLnNoZWV0LCBzaG91bGRDYWNoZSk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIChfcmVmID0ge30sIF9yZWZbXCJkYXRhLWVtb3Rpb25cIl0gPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWwgXCIgKyBzZXJpYWxpemVkTmFtZXMsIF9yZWYuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB7XG4gICAgICBfX2h0bWw6IHJ1bGVzXG4gICAgfSwgX3JlZi5ub25jZSA9IGNhY2hlLnNoZWV0Lm5vbmNlLCBfcmVmKSk7XG4gIH0gLy8geWVzLCBpIGtub3cgdGhlc2UgaG9va3MgYXJlIHVzZWQgY29uZGl0aW9uYWxseVxuICAvLyBidXQgaXQgaXMgYmFzZWQgb24gYSBjb25zdGFudCB0aGF0IHdpbGwgbmV2ZXIgY2hhbmdlIGF0IHJ1bnRpbWVcbiAgLy8gaXQncyBlZmZlY3RpdmVseSBsaWtlIGhhdmluZyB0d28gaW1wbGVtZW50YXRpb25zIGFuZCBzd2l0Y2hpbmcgdGhlbSBvdXRcbiAgLy8gc28gaXQncyBub3QgYWN0dWFsbHkgYnJlYWtpbmcgYW55dGhpbmdcblxuXG4gIHZhciBzaGVldFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBrZXkgPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWxcIjsgLy8gdXNlIGNhc2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi9pc3N1ZXMvMjY3NVxuXG4gICAgdmFyIHNoZWV0ID0gbmV3IGNhY2hlLnNoZWV0LmNvbnN0cnVjdG9yKHtcbiAgICAgIGtleToga2V5LFxuICAgICAgbm9uY2U6IGNhY2hlLnNoZWV0Lm5vbmNlLFxuICAgICAgY29udGFpbmVyOiBjYWNoZS5zaGVldC5jb250YWluZXIsXG4gICAgICBzcGVlZHk6IGNhY2hlLnNoZWV0LmlzU3BlZWR5XG4gICAgfSk7XG4gICAgdmFyIHJlaHlkcmF0aW5nID0gZmFsc2U7IC8vICRGbG93Rml4TWVcblxuICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcInN0eWxlW2RhdGEtZW1vdGlvbj1cXFwiXCIgKyBrZXkgKyBcIiBcIiArIHNlcmlhbGl6ZWQubmFtZSArIFwiXFxcIl1cIik7XG5cbiAgICBpZiAoY2FjaGUuc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGNhY2hlLnNoZWV0LnRhZ3NbMF07XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlaHlkcmF0aW5nID0gdHJ1ZTsgLy8gY2xlYXIgdGhlIGhhc2ggc28gdGhpcyBub2RlIHdvbid0IGJlIHJlY29nbml6YWJsZSBhcyByZWh5ZHJhdGFibGUgYnkgb3RoZXIgPEdsb2JhbC8+c1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywga2V5KTtcbiAgICAgIHNoZWV0Lmh5ZHJhdGUoW25vZGVdKTtcbiAgICB9XG5cbiAgICBzaGVldFJlZi5jdXJyZW50ID0gW3NoZWV0LCByZWh5ZHJhdGluZ107XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfTtcbiAgfSwgW2NhY2hlXSk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0UmVmQ3VycmVudCA9IHNoZWV0UmVmLmN1cnJlbnQ7XG4gICAgdmFyIHNoZWV0ID0gc2hlZXRSZWZDdXJyZW50WzBdLFxuICAgICAgICByZWh5ZHJhdGluZyA9IHNoZWV0UmVmQ3VycmVudFsxXTtcblxuICAgIGlmIChyZWh5ZHJhdGluZykge1xuICAgICAgc2hlZXRSZWZDdXJyZW50WzFdID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZWQubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBpbnNlcnQga2V5ZnJhbWVzXG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQubmV4dCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgdGhlbiBpdCB3aWxsIGJlIG51bGwgc28gdGhlIHN0eWxlIGVsZW1lbnQgd2lsbCBiZSBhcHBlbmRlZFxuICAgICAgdmFyIGVsZW1lbnQgPSBzaGVldC50YWdzW3NoZWV0LnRhZ3MubGVuZ3RoIC0gMV0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgc2hlZXQuYmVmb3JlID0gZWxlbWVudDtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfVxuXG4gICAgY2FjaGUuaW5zZXJ0KFwiXCIsIHNlcmlhbGl6ZWQsIHNoZWV0LCBmYWxzZSk7XG4gIH0sIFtjYWNoZSwgc2VyaWFsaXplZC5uYW1lXSk7XG4gIHJldHVybiBudWxsO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEdsb2JhbC5kaXNwbGF5TmFtZSA9ICdFbW90aW9uR2xvYmFsJztcbn1cblxuZnVuY3Rpb24gY3NzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVN0eWxlcyhhcmdzKTtcbn1cblxudmFyIGtleWZyYW1lcyA9IGZ1bmN0aW9uIGtleWZyYW1lcygpIHtcbiAgdmFyIGluc2VydGFibGUgPSBjc3MuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB2YXIgbmFtZSA9IFwiYW5pbWF0aW9uLVwiICsgaW5zZXJ0YWJsZS5uYW1lOyAvLyAkRmxvd0ZpeE1lXG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogXCJAa2V5ZnJhbWVzIFwiICsgbmFtZSArIFwie1wiICsgaW5zZXJ0YWJsZS5zdHlsZXMgKyBcIn1cIixcbiAgICBhbmltOiAxLFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIl9FTU9fXCIgKyB0aGlzLm5hbWUgKyBcIl9cIiArIHRoaXMuc3R5bGVzICsgXCJfRU1PX1wiO1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBjbGFzc25hbWVzID0gZnVuY3Rpb24gY2xhc3NuYW1lcyhhcmdzKSB7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgY2xzID0gJyc7XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT0gbnVsbCkgY29udGludWU7XG4gICAgdmFyIHRvQWRkID0gdm9pZCAwO1xuXG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgICB0b0FkZCA9IGNsYXNzbmFtZXMoYXJnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgYXJnLnN0eWxlcyAhPT0gdW5kZWZpbmVkICYmIGFyZy5uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignWW91IGhhdmUgcGFzc2VkIHN0eWxlcyBjcmVhdGVkIHdpdGggYGNzc2AgZnJvbSBgQGVtb3Rpb24vcmVhY3RgIHBhY2thZ2UgdG8gdGhlIGBjeGAuXFxuJyArICdgY3hgIGlzIG1lYW50IHRvIGNvbXBvc2UgY2xhc3MgbmFtZXMgKHN0cmluZ3MpIHNvIHlvdSBzaG91bGQgY29udmVydCB0aG9zZSBzdHlsZXMgdG8gYSBjbGFzcyBuYW1lIGJ5IHBhc3NpbmcgdGhlbSB0byB0aGUgYGNzc2AgcmVjZWl2ZWQgZnJvbSA8Q2xhc3NOYW1lcy8+IGNvbXBvbmVudC4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG9BZGQgPSAnJztcblxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhcmcpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ1trXSAmJiBrKSB7XG4gICAgICAgICAgICAgICAgdG9BZGQgJiYgKHRvQWRkICs9ICcgJyk7XG4gICAgICAgICAgICAgICAgdG9BZGQgKz0gaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICB0b0FkZCA9IGFyZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b0FkZCkge1xuICAgICAgY2xzICYmIChjbHMgKz0gJyAnKTtcbiAgICAgIGNscyArPSB0b0FkZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xzO1xufTtcblxuZnVuY3Rpb24gbWVyZ2UocmVnaXN0ZXJlZCwgY3NzLCBjbGFzc05hbWUpIHtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbXTtcbiAgdmFyIHJhd0NsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lKTtcblxuICBpZiAocmVnaXN0ZXJlZFN0eWxlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHJldHVybiByYXdDbGFzc05hbWUgKyBjc3MocmVnaXN0ZXJlZFN0eWxlcyk7XG59XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZEFyciA9IF9yZWYuc2VyaWFsaXplZEFycjtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmlhbGl6ZWRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZEFycltpXSwgZmFsc2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgQ2xhc3NOYW1lcyA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICB2YXIgaGFzUmVuZGVyZWQgPSBmYWxzZTtcbiAgdmFyIHNlcmlhbGl6ZWRBcnIgPSBbXTtcblxuICB2YXIgY3NzID0gZnVuY3Rpb24gY3NzKCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NzcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoYXJncywgY2FjaGUucmVnaXN0ZXJlZCk7XG4gICAgc2VyaWFsaXplZEFyci5wdXNoKHNlcmlhbGl6ZWQpOyAvLyByZWdpc3RyYXRpb24gaGFzIHRvIGhhcHBlbiBoZXJlIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBtaWdodCBnZXQgY29uc3VtZWQgYnkgYGN4YFxuXG4gICAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGZhbHNlKTtcbiAgICByZXR1cm4gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIH07XG5cbiAgdmFyIGN4ID0gZnVuY3Rpb24gY3goKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3ggY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKGNhY2hlLnJlZ2lzdGVyZWQsIGNzcywgY2xhc3NuYW1lcyhhcmdzKSk7XG4gIH07XG5cbiAgdmFyIGNvbnRlbnQgPSB7XG4gICAgY3NzOiBjc3MsXG4gICAgY3g6IGN4LFxuICAgIHRoZW1lOiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbiAgfTtcbiAgdmFyIGVsZSA9IHByb3BzLmNoaWxkcmVuKGNvbnRlbnQpO1xuICBoYXNSZW5kZXJlZCA9IHRydWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWRBcnI6IHNlcmlhbGl6ZWRBcnJcbiAgfSksIGVsZSk7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgQ2xhc3NOYW1lcy5kaXNwbGF5TmFtZSA9ICdFbW90aW9uQ2xhc3NOYW1lcyc7XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBpc0Jyb3dzZXIgPSBcIm9iamVjdFwiICE9PSAndW5kZWZpbmVkJzsgLy8gIzE3MjcsICMyOTA1IGZvciBzb21lIHJlYXNvbiBKZXN0IGFuZCBWaXRlc3QgZXZhbHVhdGUgbW9kdWxlcyB0d2ljZSBpZiBzb21lIGNvbnN1bWluZyBtb2R1bGUgZ2V0cyBtb2NrZWRcblxuICB2YXIgaXNUZXN0RW52ID0gdHlwZW9mIGplc3QgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB2aSAhPT0gJ3VuZGVmaW5lZCc7XG5cbiAgaWYgKGlzQnJvd3NlciAmJiAhaXNUZXN0RW52KSB7XG4gICAgLy8gZ2xvYmFsVGhpcyBoYXMgd2lkZSBicm93c2VyIHN1cHBvcnQgLSBodHRwczovL2Nhbml1c2UuY29tLz9zZWFyY2g9Z2xvYmFsVGhpcywgTm9kZS5qcyAxMiBhbmQgbGF0ZXJcbiAgICB2YXIgZ2xvYmFsQ29udGV4dCA9IC8vICRGbG93SWdub3JlXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgOiBpc0Jyb3dzZXIgPyB3aW5kb3cgOiBnbG9iYWw7XG4gICAgdmFyIGdsb2JhbEtleSA9IFwiX19FTU9USU9OX1JFQUNUX1wiICsgcGtnLnZlcnNpb24uc3BsaXQoJy4nKVswXSArIFwiX19cIjtcblxuICAgIGlmIChnbG9iYWxDb250ZXh0W2dsb2JhbEtleV0pIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGFyZSBsb2FkaW5nIEBlbW90aW9uL3JlYWN0IHdoZW4gaXQgaXMgYWxyZWFkeSBsb2FkZWQuIFJ1bm5pbmcgJyArICdtdWx0aXBsZSBpbnN0YW5jZXMgbWF5IGNhdXNlIHByb2JsZW1zLiBUaGlzIGNhbiBoYXBwZW4gaWYgbXVsdGlwbGUgJyArICd2ZXJzaW9ucyBhcmUgdXNlZCwgb3IgaWYgbXVsdGlwbGUgYnVpbGRzIG9mIHRoZSBzYW1lIHZlcnNpb24gYXJlICcgKyAndXNlZC4nKTtcbiAgICB9XG5cbiAgICBnbG9iYWxDb250ZXh0W2dsb2JhbEtleV0gPSB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCB7IENsYXNzTmFtZXMsIEdsb2JhbCwganN4IGFzIGNyZWF0ZUVsZW1lbnQsIGNzcywganN4LCBrZXlmcmFtZXMgfTtcbiIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBleGFjdFByb3AsIEhUTUxFbGVtZW50VHlwZSwgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgYXMgdXNlRW5oYW5jZWRFZmZlY3QsIHVuc3RhYmxlX3VzZUZvcmtSZWYgYXMgdXNlRm9ya1JlZiwgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIGdldENvbnRhaW5lcihjb250YWluZXIpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb250YWluZXIgPT09ICdmdW5jdGlvbicgPyBjb250YWluZXIoKSA6IGNvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBQb3J0YWxzIHByb3ZpZGUgYSBmaXJzdC1jbGFzcyB3YXkgdG8gcmVuZGVyIGNoaWxkcmVuIGludG8gYSBET00gbm9kZVxuICogdGhhdCBleGlzdHMgb3V0c2lkZSB0aGUgRE9NIGhpZXJhcmNoeSBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqXG4gKiBEZW1vczpcbiAqXG4gKiAtIFtQb3J0YWxdKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LXBvcnRhbC8pXG4gKlxuICogQVBJOlxuICpcbiAqIC0gW1BvcnRhbCBBUEldKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LXBvcnRhbC9jb21wb25lbnRzLWFwaS8jcG9ydGFsKVxuICovXG5jb25zdCBQb3J0YWwgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBQb3J0YWwocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgY29udGFpbmVyLFxuICAgIGRpc2FibGVQb3J0YWwgPSBmYWxzZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFttb3VudE5vZGUsIHNldE1vdW50Tm9kZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIHVwc3RyZWFtIGZpeFxuICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gY2hpbGRyZW4ucmVmIDogbnVsbCwgZm9yd2FyZGVkUmVmKTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZVBvcnRhbCkge1xuICAgICAgc2V0TW91bnROb2RlKGdldENvbnRhaW5lcihjb250YWluZXIpIHx8IGRvY3VtZW50LmJvZHkpO1xuICAgIH1cbiAgfSwgW2NvbnRhaW5lciwgZGlzYWJsZVBvcnRhbF0pO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1vdW50Tm9kZSAmJiAhZGlzYWJsZVBvcnRhbCkge1xuICAgICAgc2V0UmVmKGZvcndhcmRlZFJlZiwgbW91bnROb2RlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHNldFJlZihmb3J3YXJkZWRSZWYsIG51bGwpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW2ZvcndhcmRlZFJlZiwgbW91bnROb2RlLCBkaXNhYmxlUG9ydGFsXSk7XG4gIGlmIChkaXNhYmxlUG9ydGFsKSB7XG4gICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgICBjb25zdCBuZXdQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBoYW5kbGVSZWZcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgbmV3UHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUmVhY3QuRnJhZ21lbnQsIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChSZWFjdC5GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBtb3VudE5vZGUgPyAvKiNfX1BVUkVfXyovUmVhY3RET00uY3JlYXRlUG9ydGFsKGNoaWxkcmVuLCBtb3VudE5vZGUpIDogbW91bnROb2RlXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBQb3J0YWwucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IFR5cGVTY3JpcHQgdHlwZXMgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIHRvIHJlbmRlciBpbnRvIHRoZSBgY29udGFpbmVyYC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEFuIEhUTUwgZWxlbWVudCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lLlxuICAgKiBUaGUgYGNvbnRhaW5lcmAgd2lsbCBoYXZlIHRoZSBwb3J0YWwgY2hpbGRyZW4gYXBwZW5kZWQgdG8gaXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGl0IHVzZXMgdGhlIGJvZHkgb2YgdGhlIHRvcC1sZXZlbCBkb2N1bWVudCBvYmplY3QsXG4gICAqIHNvIGl0J3Mgc2ltcGx5IGBkb2N1bWVudC5ib2R5YCBtb3N0IG9mIHRoZSB0aW1lLlxuICAgKi9cbiAgY29udGFpbmVyOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqXG4gICAqIFRoZSBgY2hpbGRyZW5gIHdpbGwgYmUgdW5kZXIgdGhlIERPTSBoaWVyYXJjaHkgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsOiBQcm9wVHlwZXMuYm9vbFxufSA6IHZvaWQgMDtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBQb3J0YWxbJ3Byb3BUeXBlcycgKyAnJ10gPSBleGFjdFByb3AoUG9ydGFsLnByb3BUeXBlcyk7XG59XG5leHBvcnQgZGVmYXVsdCBQb3J0YWw7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdENvbnRleHRWYWx1ZSA9IHtcbiAgZGlzYWJsZURlZmF1bHRDbGFzc2VzOiBmYWxzZVxufTtcbmNvbnN0IENsYXNzTmFtZUNvbmZpZ3VyYXRvckNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGhvb2suXG4gKlxuICogV3JhcHMgdGhlIGBnZW5lcmF0ZVV0aWxpdHlDbGFzc2AgZnVuY3Rpb24gYW5kIGNvbnRyb2xzIGhvdyB0aGUgY2xhc3NlcyBhcmUgZ2VuZXJhdGVkLlxuICogQ3VycmVudGx5IGl0IG9ubHkgYWZmZWN0cyB3aGV0aGVyIHRoZSBjbGFzc2VzIGFyZSBhcHBsaWVkIG9yIG5vdC5cbiAqXG4gKiBAcmV0dXJucyBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2l0aCB0aGUgYGdlbmVyYXRlVXRpbGl0eUNsYXNzYCBmdW5jdGlvbiBzcGVjaWZpYyB0byBhIGNvbXBvbmVudCB0byBnZW5lcmF0ZSB0aGUgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNsYXNzTmFtZXNPdmVycmlkZShnZW5lcmF0ZVV0aWxpdHlDbGFzcykge1xuICBjb25zdCB7XG4gICAgZGlzYWJsZURlZmF1bHRDbGFzc2VzXG4gIH0gPSBSZWFjdC51c2VDb250ZXh0KENsYXNzTmFtZUNvbmZpZ3VyYXRvckNvbnRleHQpO1xuICByZXR1cm4gc2xvdCA9PiB7XG4gICAgaWYgKGRpc2FibGVEZWZhdWx0Q2xhc3Nlcykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3Moc2xvdCk7XG4gIH07XG59XG5cbi8qKlxuICogQWxsb3dzIHRvIGNvbmZpZ3VyZSB0aGUgY29tcG9uZW50cyB3aXRoaW4gdG8gbm90IGFwcGx5IGFueSBidWlsdC1pbiBjbGFzc2VzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDbGFzc05hbWVDb25maWd1cmF0b3IocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGRpc2FibGVEZWZhdWx0Q2xhc3NlcyxcbiAgICBjaGlsZHJlblxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBkaXNhYmxlRGVmYXVsdENsYXNzZXM6IGRpc2FibGVEZWZhdWx0Q2xhc3NlcyAhPSBudWxsID8gZGlzYWJsZURlZmF1bHRDbGFzc2VzIDogZmFsc2VcbiAgfSksIFtkaXNhYmxlRGVmYXVsdENsYXNzZXNdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENsYXNzTmFtZUNvbmZpZ3VyYXRvckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBpc0hvc3RDb21wb25lbnQgZnJvbSAnLi9pc0hvc3RDb21wb25lbnQnO1xuXG4vKipcbiAqIFR5cGUgb2YgdGhlIG93bmVyU3RhdGUgYmFzZWQgb24gdGhlIHR5cGUgb2YgYW4gZWxlbWVudCBpdCBhcHBsaWVzIHRvLlxuICogVGhpcyByZXNvbHZlcyB0byB0aGUgcHJvdmlkZWQgT3duZXJTdGF0ZSBmb3IgUmVhY3QgY29tcG9uZW50cyBhbmQgYHVuZGVmaW5lZGAgZm9yIGhvc3QgY29tcG9uZW50cy5cbiAqIEZhbGxzIGJhY2sgdG8gYE93bmVyU3RhdGUgfCB1bmRlZmluZWRgIHdoZW4gdGhlIGV4YWN0IHR5cGUgY2FuJ3QgYmUgZGV0ZXJtaW5lZCBpbiBkZXZlbG9wbWVudCB0aW1lLlxuICovXG5cbi8qKlxuICogQXBwZW5kcyB0aGUgb3duZXJTdGF0ZSBvYmplY3QgdG8gdGhlIHByb3BzLCBtZXJnaW5nIHdpdGggdGhlIGV4aXN0aW5nIG9uZSBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIGVsZW1lbnRUeXBlIFR5cGUgb2YgdGhlIGVsZW1lbnQgdGhhdCBvd25zIHRoZSBgZXhpc3RpbmdQcm9wc2AuIElmIHRoZSBlbGVtZW50IGlzIGEgRE9NIG5vZGUgb3IgdW5kZWZpbmVkLCBgb3duZXJTdGF0ZWAgaXMgbm90IGFwcGxpZWQuXG4gKiBAcGFyYW0gb3RoZXJQcm9wcyBQcm9wcyBvZiB0aGUgZWxlbWVudC5cbiAqIEBwYXJhbSBvd25lclN0YXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwcGVuZE93bmVyU3RhdGUoZWxlbWVudFR5cGUsIG90aGVyUHJvcHMsIG93bmVyU3RhdGUpIHtcbiAgaWYgKGVsZW1lbnRUeXBlID09PSB1bmRlZmluZWQgfHwgaXNIb3N0Q29tcG9uZW50KGVsZW1lbnRUeXBlKSkge1xuICAgIHJldHVybiBvdGhlclByb3BzO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3RoZXJQcm9wcywge1xuICAgIG93bmVyU3RhdGU6IF9leHRlbmRzKHt9LCBvdGhlclByb3BzLm93bmVyU3RhdGUsIG93bmVyU3RhdGUpXG4gIH0pO1xufSIsIi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVsZW1lbnQgaXMgYSBET00gZWxlbWVudCBuYW1lIChpLmUuIG5vdCBhIFJlYWN0IGNvbXBvbmVudCkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzSG9zdENvbXBvbmVudChlbGVtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZyc7XG59IiwiLyoqXG4gKiBJZiBgY29tcG9uZW50UHJvcHNgIGlzIGEgZnVuY3Rpb24sIGNhbGxzIGl0IHdpdGggdGhlIHByb3ZpZGVkIGBvd25lclN0YXRlYC5cbiAqIE90aGVyd2lzZSwganVzdCByZXR1cm5zIGBjb21wb25lbnRQcm9wc2AuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRQcm9wcyhjb21wb25lbnRQcm9wcywgb3duZXJTdGF0ZSwgc2xvdFN0YXRlKSB7XG4gIGlmICh0eXBlb2YgY29tcG9uZW50UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY29tcG9uZW50UHJvcHMob3duZXJTdGF0ZSwgc2xvdFN0YXRlKTtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50UHJvcHM7XG59IiwiLyoqXG4gKiBSZW1vdmVzIGV2ZW50IGhhbmRsZXJzIGZyb20gdGhlIGdpdmVuIG9iamVjdC5cbiAqIEEgZmllbGQgaXMgY29uc2lkZXJlZCBhbiBldmVudCBoYW5kbGVyIGlmIGl0IGlzIGEgZnVuY3Rpb24gd2l0aCBhIG5hbWUgYmVnaW5uaW5nIHdpdGggYG9uYC5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IE9iamVjdCB0byByZW1vdmUgZXZlbnQgaGFuZGxlcnMgZnJvbS5cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGV2ZW50IGhhbmRsZXJzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9taXRFdmVudEhhbmRsZXJzKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKG9iamVjdCkuZmlsdGVyKHByb3AgPT4gIShwcm9wLm1hdGNoKC9eb25bQS1aXS8pICYmIHR5cGVvZiBvYmplY3RbcHJvcF0gPT09ICdmdW5jdGlvbicpKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIHJlc3VsdFtwcm9wXSA9IG9iamVjdFtwcm9wXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiZWxlbWVudFR5cGVcIiwgXCJleHRlcm5hbFNsb3RQcm9wc1wiLCBcIm93bmVyU3RhdGVcIiwgXCJza2lwUmVzb2x2aW5nU2xvdFByb3BzXCJdO1xuaW1wb3J0IHsgdW5zdGFibGVfdXNlRm9ya1JlZiBhcyB1c2VGb3JrUmVmIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgYXBwZW5kT3duZXJTdGF0ZSBmcm9tICcuL2FwcGVuZE93bmVyU3RhdGUnO1xuaW1wb3J0IG1lcmdlU2xvdFByb3BzIGZyb20gJy4vbWVyZ2VTbG90UHJvcHMnO1xuaW1wb3J0IHJlc29sdmVDb21wb25lbnRQcm9wcyBmcm9tICcuL3Jlc29sdmVDb21wb25lbnRQcm9wcyc7XG4vKipcbiAqIEBpZ25vcmUgLSBkbyBub3QgZG9jdW1lbnQuXG4gKiBCdWlsZHMgdGhlIHByb3BzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBzbG90IG9mIGFuIHVuc3R5bGVkIGNvbXBvbmVudC5cbiAqIEl0IG1lcmdlcyB0aGUgaW50ZXJuYWwgcHJvcHMgb2YgdGhlIGNvbXBvbmVudCB3aXRoIHRoZSBvbmVzIHN1cHBsaWVkIGJ5IHRoZSB1c2VyLCBhbGxvd2luZyB0byBjdXN0b21pemUgdGhlIGJlaGF2aW9yLlxuICogSWYgdGhlIHNsb3QgY29tcG9uZW50IGlzIG5vdCBhIGhvc3QgY29tcG9uZW50LCBpdCBhbHNvIG1lcmdlcyBpbiB0aGUgYG93bmVyU3RhdGVgLlxuICpcbiAqIEBwYXJhbSBwYXJhbWV0ZXJzLmdldFNsb3RQcm9wcyAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBwcm9wcyB0byBiZSBwYXNzZWQgdG8gdGhlIHNsb3QgY29tcG9uZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTbG90UHJvcHMocGFyYW1ldGVycykge1xuICB2YXIgX3BhcmFtZXRlcnMkYWRkaXRpb25hO1xuICBjb25zdCB7XG4gICAgICBlbGVtZW50VHlwZSxcbiAgICAgIGV4dGVybmFsU2xvdFByb3BzLFxuICAgICAgb3duZXJTdGF0ZSxcbiAgICAgIHNraXBSZXNvbHZpbmdTbG90UHJvcHMgPSBmYWxzZVxuICAgIH0gPSBwYXJhbWV0ZXJzLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwYXJhbWV0ZXJzLCBfZXhjbHVkZWQpO1xuICBjb25zdCByZXNvbHZlZENvbXBvbmVudHNQcm9wcyA9IHNraXBSZXNvbHZpbmdTbG90UHJvcHMgPyB7fSA6IHJlc29sdmVDb21wb25lbnRQcm9wcyhleHRlcm5hbFNsb3RQcm9wcywgb3duZXJTdGF0ZSk7XG4gIGNvbnN0IHtcbiAgICBwcm9wczogbWVyZ2VkUHJvcHMsXG4gICAgaW50ZXJuYWxSZWZcbiAgfSA9IG1lcmdlU2xvdFByb3BzKF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IHJlc29sdmVkQ29tcG9uZW50c1Byb3BzXG4gIH0pKTtcbiAgY29uc3QgcmVmID0gdXNlRm9ya1JlZihpbnRlcm5hbFJlZiwgcmVzb2x2ZWRDb21wb25lbnRzUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc29sdmVkQ29tcG9uZW50c1Byb3BzLnJlZiwgKF9wYXJhbWV0ZXJzJGFkZGl0aW9uYSA9IHBhcmFtZXRlcnMuYWRkaXRpb25hbFByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogX3BhcmFtZXRlcnMkYWRkaXRpb25hLnJlZik7XG4gIGNvbnN0IHByb3BzID0gYXBwZW5kT3duZXJTdGF0ZShlbGVtZW50VHlwZSwgX2V4dGVuZHMoe30sIG1lcmdlZFByb3BzLCB7XG4gICAgcmVmXG4gIH0pLCBvd25lclN0YXRlKTtcbiAgcmV0dXJuIHByb3BzO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgZXh0cmFjdEV2ZW50SGFuZGxlcnMgZnJvbSAnLi9leHRyYWN0RXZlbnRIYW5kbGVycyc7XG5pbXBvcnQgb21pdEV2ZW50SGFuZGxlcnMgZnJvbSAnLi9vbWl0RXZlbnRIYW5kbGVycyc7XG4vKipcbiAqIE1lcmdlcyB0aGUgc2xvdCBjb21wb25lbnQgaW50ZXJuYWwgcHJvcHMgKHVzdWFsbHkgY29taW5nIGZyb20gYSBob29rKVxuICogd2l0aCB0aGUgZXh0ZXJuYWxseSBwcm92aWRlZCBvbmVzLlxuICpcbiAqIFRoZSBtZXJnZSBvcmRlciBpcyAodGhlIGxhdHRlciBvdmVycmlkZXMgdGhlIGZvcm1lcik6XG4gKiAxLiBUaGUgaW50ZXJuYWwgcHJvcHMgKHNwZWNpZmllZCBhcyBhIGdldHRlciBmdW5jdGlvbiB0byB3b3JrIHdpdGggZ2V0KlByb3BzIGhvb2sgcmVzdWx0KVxuICogMi4gQWRkaXRpb25hbCBwcm9wcyAoc3BlY2lmaWVkIGludGVybmFsbHkgb24gYSBCYXNlIFVJIGNvbXBvbmVudClcbiAqIDMuIEV4dGVybmFsIHByb3BzIHNwZWNpZmllZCBvbiB0aGUgb3duZXIgY29tcG9uZW50LiBUaGVzZSBzaG91bGQgb25seSBiZSB1c2VkIG9uIGEgcm9vdCBzbG90LlxuICogNC4gRXh0ZXJuYWwgcHJvcHMgc3BlY2lmaWVkIGluIHRoZSBgc2xvdFByb3BzLipgIHByb3AuXG4gKiA1LiBUaGUgYGNsYXNzTmFtZWAgcHJvcCAtIGNvbWJpbmVkIGZyb20gYWxsIHRoZSBhYm92ZS5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVNsb3RQcm9wcyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHtcbiAgICBnZXRTbG90UHJvcHMsXG4gICAgYWRkaXRpb25hbFByb3BzLFxuICAgIGV4dGVybmFsU2xvdFByb3BzLFxuICAgIGV4dGVybmFsRm9yd2FyZGVkUHJvcHMsXG4gICAgY2xhc3NOYW1lXG4gIH0gPSBwYXJhbWV0ZXJzO1xuICBpZiAoIWdldFNsb3RQcm9wcykge1xuICAgIC8vIFRoZSBzaW1wbGVyIGNhc2UgLSBnZXRTbG90UHJvcHMgaXMgbm90IGRlZmluZWQsIHNvIG5vIGludGVybmFsIGV2ZW50IGhhbmRsZXJzIGFyZSBkZWZpbmVkLFxuICAgIC8vIHNvIHdlIGNhbiBzaW1wbHkgbWVyZ2UgYWxsIHRoZSBwcm9wcyB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCBleHRyYWN0aW5nIGV2ZW50IGhhbmRsZXJzLlxuICAgIGNvbnN0IGpvaW5lZENsYXNzZXMgPSBjbHN4KGV4dGVybmFsRm9yd2FyZGVkUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsRm9yd2FyZGVkUHJvcHMuY2xhc3NOYW1lLCBleHRlcm5hbFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogZXh0ZXJuYWxTbG90UHJvcHMuY2xhc3NOYW1lLCBjbGFzc05hbWUsIGFkZGl0aW9uYWxQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSk7XG4gICAgY29uc3QgbWVyZ2VkU3R5bGUgPSBfZXh0ZW5kcyh7fSwgYWRkaXRpb25hbFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBhZGRpdGlvbmFsUHJvcHMuc3R5bGUsIGV4dGVybmFsRm9yd2FyZGVkUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsRm9yd2FyZGVkUHJvcHMuc3R5bGUsIGV4dGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbFNsb3RQcm9wcy5zdHlsZSk7XG4gICAgY29uc3QgcHJvcHMgPSBfZXh0ZW5kcyh7fSwgYWRkaXRpb25hbFByb3BzLCBleHRlcm5hbEZvcndhcmRlZFByb3BzLCBleHRlcm5hbFNsb3RQcm9wcyk7XG4gICAgaWYgKGpvaW5lZENsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgcHJvcHMuY2xhc3NOYW1lID0gam9pbmVkQ2xhc3NlcztcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKG1lcmdlZFN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICBwcm9wcy5zdHlsZSA9IG1lcmdlZFN0eWxlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcHJvcHMsXG4gICAgICBpbnRlcm5hbFJlZjogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8vIEluIHRoaXMgY2FzZSwgZ2V0U2xvdFByb3BzIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoZSBleHRlcm5hbCBldmVudCBoYW5kbGVycy5cbiAgLy8gV2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIG1lcmdlZCBwcm9wcyBiZWNhdXNlIG9mIHRoaXMuXG5cbiAgY29uc3QgZXZlbnRIYW5kbGVycyA9IGV4dHJhY3RFdmVudEhhbmRsZXJzKF9leHRlbmRzKHt9LCBleHRlcm5hbEZvcndhcmRlZFByb3BzLCBleHRlcm5hbFNsb3RQcm9wcykpO1xuICBjb25zdCBjb21wb25lbnRzUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyA9IG9taXRFdmVudEhhbmRsZXJzKGV4dGVybmFsU2xvdFByb3BzKTtcbiAgY29uc3Qgb3RoZXJQcm9wc1dpdGhvdXRFdmVudEhhbmRsZXJzID0gb21pdEV2ZW50SGFuZGxlcnMoZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcyk7XG4gIGNvbnN0IGludGVybmFsU2xvdFByb3BzID0gZ2V0U2xvdFByb3BzKGV2ZW50SGFuZGxlcnMpO1xuXG4gIC8vIFRoZSBvcmRlciBvZiBjbGFzc2VzIGlzIGltcG9ydGFudCBoZXJlLlxuICAvLyBFbW90aW9uICh0aGF0IHdlIHVzZSBpbiBsaWJyYXJpZXMgY29uc3VtaW5nIEJhc2UgVUkpIGRlcGVuZHMgb24gdGhpcyBvcmRlclxuICAvLyB0byBwcm9wZXJseSBvdmVycmlkZSBzdHlsZS4gSXQgcmVxdWlyZXMgdGhlIG1vc3QgaW1wb3J0YW50IGNsYXNzZXMgdG8gYmUgbGFzdFxuICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvcHVsbC8zMzIwNSkgZm9yIHRoZSByZWxhdGVkIGRpc2N1c3Npb24uXG4gIGNvbnN0IGpvaW5lZENsYXNzZXMgPSBjbHN4KGludGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBpbnRlcm5hbFNsb3RQcm9wcy5jbGFzc05hbWUsIGFkZGl0aW9uYWxQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lLCBleHRlcm5hbEZvcndhcmRlZFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbEZvcndhcmRlZFByb3BzLmNsYXNzTmFtZSwgZXh0ZXJuYWxTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsU2xvdFByb3BzLmNsYXNzTmFtZSk7XG4gIGNvbnN0IG1lcmdlZFN0eWxlID0gX2V4dGVuZHMoe30sIGludGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBpbnRlcm5hbFNsb3RQcm9wcy5zdHlsZSwgYWRkaXRpb25hbFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBhZGRpdGlvbmFsUHJvcHMuc3R5bGUsIGV4dGVybmFsRm9yd2FyZGVkUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsRm9yd2FyZGVkUHJvcHMuc3R5bGUsIGV4dGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbFNsb3RQcm9wcy5zdHlsZSk7XG4gIGNvbnN0IHByb3BzID0gX2V4dGVuZHMoe30sIGludGVybmFsU2xvdFByb3BzLCBhZGRpdGlvbmFsUHJvcHMsIG90aGVyUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycywgY29tcG9uZW50c1Byb3BzV2l0aG91dEV2ZW50SGFuZGxlcnMpO1xuICBpZiAoam9pbmVkQ2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgcHJvcHMuY2xhc3NOYW1lID0gam9pbmVkQ2xhc3NlcztcbiAgfVxuICBpZiAoT2JqZWN0LmtleXMobWVyZ2VkU3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICBwcm9wcy5zdHlsZSA9IG1lcmdlZFN0eWxlO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHJvcHMsXG4gICAgaW50ZXJuYWxSZWY6IGludGVybmFsU2xvdFByb3BzLnJlZlxuICB9O1xufSIsIi8qKlxuICogRXh0cmFjdHMgZXZlbnQgaGFuZGxlcnMgZnJvbSBhIGdpdmVuIG9iamVjdC5cbiAqIEEgcHJvcCBpcyBjb25zaWRlcmVkIGFuIGV2ZW50IGhhbmRsZXIgaWYgaXQgaXMgYSBmdW5jdGlvbiBhbmQgaXRzIG5hbWUgc3RhcnRzIHdpdGggYG9uYC5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0byBleHRyYWN0IGV2ZW50IGhhbmRsZXJzIGZyb20uXG4gKiBAcGFyYW0gZXhjbHVkZUtleXMgQW4gYXJyYXkgb2Yga2V5cyB0byBleGNsdWRlIGZyb20gdGhlIHJldHVybmVkIG9iamVjdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0cmFjdEV2ZW50SGFuZGxlcnMob2JqZWN0LCBleGNsdWRlS2V5cyA9IFtdKSB7XG4gIGlmIChvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5maWx0ZXIocHJvcCA9PiBwcm9wLm1hdGNoKC9eb25bQS1aXS8pICYmIHR5cGVvZiBvYmplY3RbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgIWV4Y2x1ZGVLZXlzLmluY2x1ZGVzKHByb3ApKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIHJlc3VsdFtwcm9wXSA9IG9iamVjdFtwcm9wXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjcmVhdGVCb3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJy4uL2NsYXNzTmFtZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuY29uc3QgZGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCh7XG4gIHRoZW1lSWQ6IFRIRU1FX0lELFxuICBkZWZhdWx0VGhlbWUsXG4gIGRlZmF1bHRDbGFzc05hbWU6ICdNdWlCb3gtcm9vdCcsXG4gIGdlbmVyYXRlQ2xhc3NOYW1lOiBDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGVcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUJ1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgYnV0dG9uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUJ1dHRvbicsIFsncm9vdCcsICd0ZXh0JywgJ3RleHRJbmhlcml0JywgJ3RleHRQcmltYXJ5JywgJ3RleHRTZWNvbmRhcnknLCAndGV4dFN1Y2Nlc3MnLCAndGV4dEVycm9yJywgJ3RleHRJbmZvJywgJ3RleHRXYXJuaW5nJywgJ291dGxpbmVkJywgJ291dGxpbmVkSW5oZXJpdCcsICdvdXRsaW5lZFByaW1hcnknLCAnb3V0bGluZWRTZWNvbmRhcnknLCAnb3V0bGluZWRTdWNjZXNzJywgJ291dGxpbmVkRXJyb3InLCAnb3V0bGluZWRJbmZvJywgJ291dGxpbmVkV2FybmluZycsICdjb250YWluZWQnLCAnY29udGFpbmVkSW5oZXJpdCcsICdjb250YWluZWRQcmltYXJ5JywgJ2NvbnRhaW5lZFNlY29uZGFyeScsICdjb250YWluZWRTdWNjZXNzJywgJ2NvbnRhaW5lZEVycm9yJywgJ2NvbnRhaW5lZEluZm8nLCAnY29udGFpbmVkV2FybmluZycsICdkaXNhYmxlRWxldmF0aW9uJywgJ2ZvY3VzVmlzaWJsZScsICdkaXNhYmxlZCcsICdjb2xvckluaGVyaXQnLCAndGV4dFNpemVTbWFsbCcsICd0ZXh0U2l6ZU1lZGl1bScsICd0ZXh0U2l6ZUxhcmdlJywgJ291dGxpbmVkU2l6ZVNtYWxsJywgJ291dGxpbmVkU2l6ZU1lZGl1bScsICdvdXRsaW5lZFNpemVMYXJnZScsICdjb250YWluZWRTaXplU21hbGwnLCAnY29udGFpbmVkU2l6ZU1lZGl1bScsICdjb250YWluZWRTaXplTGFyZ2UnLCAnc2l6ZU1lZGl1bScsICdzaXplU21hbGwnLCAnc2l6ZUxhcmdlJywgJ2Z1bGxXaWR0aCcsICdzdGFydEljb24nLCAnZW5kSWNvbicsICdpY29uU2l6ZVNtYWxsJywgJ2ljb25TaXplTWVkaXVtJywgJ2ljb25TaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBidXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJjbGFzc05hbWVcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVFbGV2YXRpb25cIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJlbmRJY29uXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwiZnVsbFdpZHRoXCIsIFwic2l6ZVwiLCBcInN0YXJ0SWNvblwiLCBcInR5cGVcIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaW50ZXJuYWxfcmVzb2x2ZVByb3BzIGFzIHJlc29sdmVQcm9wcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBidXR0b25DbGFzc2VzLCB7IGdldEJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgQnV0dG9uR3JvdXBDb250ZXh0IGZyb20gJy4uL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgJHt2YXJpYW50fSR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YCwgYCR7dmFyaWFudH1TaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGNvbG9yID09PSAnaW5oZXJpdCcgJiYgJ2NvbG9ySW5oZXJpdCcsIGRpc2FibGVFbGV2YXRpb24gJiYgJ2Rpc2FibGVFbGV2YXRpb24nLCBmdWxsV2lkdGggJiYgJ2Z1bGxXaWR0aCddLFxuICAgIGxhYmVsOiBbJ2xhYmVsJ10sXG4gICAgc3RhcnRJY29uOiBbJ3N0YXJ0SWNvbicsIGBpY29uU2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXSxcbiAgICBlbmRJY29uOiBbJ2VuZEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBjb21tb25JY29uU3R5bGVzID0gb3duZXJTdGF0ZSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAxOFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdtZWRpdW0nICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYge1xuICAnJiA+ICo6bnRoLW9mLXR5cGUoMSknOiB7XG4gICAgZm9udFNpemU6IDIyXG4gIH1cbn0pO1xuY29uc3QgQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHJvb3RTaG91bGRGb3J3YXJkUHJvcChwcm9wKSB8fCBwcm9wID09PSAnY2xhc3NlcycsXG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9JHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXSwgc3R5bGVzW2Ake293bmVyU3RhdGUudmFyaWFudH1TaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiBzdHlsZXMuY29sb3JJbmhlcml0LCBvd25lclN0YXRlLmRpc2FibGVFbGV2YXRpb24gJiYgc3R5bGVzLmRpc2FibGVFbGV2YXRpb24sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGhdO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3RoZW1lJHBhbGV0dGUkZ2V0Q29uLCBfdGhlbWUkcGFsZXR0ZTtcbiAgY29uc3QgaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleVszMDBdIDogdGhlbWUucGFsZXR0ZS5ncmV5WzgwMF07XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleS5BMTAwIDogdGhlbWUucGFsZXR0ZS5ncmV5WzcwMF07XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgdGhlbWUudHlwb2dyYXBoeS5idXR0b24sIHtcbiAgICBtaW5XaWR0aDogNjQsXG4gICAgcGFkZGluZzogJzZweCAxNnB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFwZS5ib3JkZXJSYWRpdXMsXG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFsnYmFja2dyb3VuZC1jb2xvcicsICdib3gtc2hhZG93JywgJ2JvcmRlci1jb2xvcicsICdjb2xvciddLCB7XG4gICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRcbiAgICB9KSxcbiAgICAnJjpob3Zlcic6IF9leHRlbmRzKHtcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnlDaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWlufWAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuQnV0dG9uLmluaGVyaXRDb250YWluZWRIb3ZlckJnIDogaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s0XSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl0sXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZ3JleVszMDBdXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5kYXJrLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gICAgICB9XG4gICAgfSksXG4gICAgJyY6YWN0aXZlJzogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s4XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzZdXG4gICAgfSksXG4gICAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXTogX2V4dGVuZHMoe1xuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kfWBcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWQsXG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzBdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kXG4gICAgfSlcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICAgIHBhZGRpbmc6ICc2cHggOHB4J1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzVweCAxNXB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgY3VycmVudENvbG9yJ1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBib3JkZXI6IHRoZW1lLnZhcnMgPyBgMXB4IHNvbGlkIHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gMC41KWAgOiBgMXB4IHNvbGlkICR7YWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCAwLjUpfWBcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgY29sb3I6IHRoZW1lLnZhcnMgP1xuICAgIC8vIHRoaXMgaXMgc2FmZSBiZWNhdXNlIGdyZXkgZG9lcyBub3QgY2hhbmdlIGJldHdlZW4gZGVmYXVsdCBsaWdodC9kYXJrIG1vZGVcbiAgICB0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5IDogKF90aGVtZSRwYWxldHRlJGdldENvbiA9IChfdGhlbWUkcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUpLmdldENvbnRyYXN0VGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSRwYWxldHRlJGdldENvbi5jYWxsKF90aGVtZSRwYWxldHRlLCB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSksXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkQmcgOiBpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yLFxuICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl1cbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICBib3JkZXJDb2xvcjogJ2N1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDVweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDExcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICczcHggOXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnN3B4IDIxcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDEwcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDIycHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0pO1xufSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHtcbiAgYm94U2hhZG93OiAnbm9uZScsXG4gICcmOmhvdmVyJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfSxcbiAgJyY6YWN0aXZlJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9XG59KTtcbmNvbnN0IEJ1dHRvblN0YXJ0SWNvbiA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbicsXG4gIHNsb3Q6ICdTdGFydEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnN0YXJ0SWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiA4LFxuICBtYXJnaW5MZWZ0OiAtNFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luTGVmdDogLTJcbn0sIGNvbW1vbkljb25TdHlsZXMob3duZXJTdGF0ZSkpKTtcbmNvbnN0IEJ1dHRvbkVuZEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnRW5kSWNvbicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMuZW5kSWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiAtNCxcbiAgbWFyZ2luTGVmdDogOFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luUmlnaHQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIC8vIHByb3BzIHByaW9yaXR5OiBgaW5Qcm9wc2AgPiBgY29udGV4dFByb3BzYCA+IGB0aGVtZURlZmF1bHRQcm9wc2BcbiAgY29uc3QgY29udGV4dFByb3BzID0gUmVhY3QudXNlQ29udGV4dChCdXR0b25Hcm91cENvbnRleHQpO1xuICBjb25zdCByZXNvbHZlZFByb3BzID0gcmVzb2x2ZVByb3BzKGNvbnRleHRQcm9wcywgaW5Qcm9wcyk7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IHJlc29sdmVkUHJvcHMsXG4gICAgbmFtZTogJ011aUJ1dHRvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBjb21wb25lbnQgPSAnYnV0dG9uJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRWxldmF0aW9uID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGVuZEljb246IGVuZEljb25Qcm9wLFxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICBzaXplID0gJ21lZGl1bScsXG4gICAgICBzdGFydEljb246IHN0YXJ0SWNvblByb3AsXG4gICAgICB0eXBlLFxuICAgICAgdmFyaWFudCA9ICd0ZXh0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgY29tcG9uZW50LFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHR5cGUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBzdGFydEljb24gPSBzdGFydEljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvblN0YXJ0SWNvbiwge1xuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5zdGFydEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogc3RhcnRJY29uUHJvcFxuICB9KTtcbiAgY29uc3QgZW5kSWNvbiA9IGVuZEljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvbkVuZEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuZW5kSWNvbixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBlbmRJY29uUHJvcFxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhCdXR0b25Sb290LCBfZXh0ZW5kcyh7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjbGFzc05hbWU6IGNsc3goY29udGV4dFByb3BzLmNsYXNzTmFtZSwgY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5mb2N1c1Zpc2libGUsIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSksXG4gICAgcmVmOiByZWYsXG4gICAgdHlwZTogdHlwZVxuICB9LCBvdGhlciwge1xuICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgY2hpbGRyZW46IFtzdGFydEljb24sIGNoaWxkcmVuLCBlbmRJY29uXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnc3VjY2VzcycsICdlcnJvcicsICdpbmZvJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG5vIGVsZXZhdGlvbiBpcyB1c2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVsZXZhdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSAga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBFbGVtZW50IHBsYWNlZCBhZnRlciB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBlbmRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJ1dHRvbiB3aWxsIHRha2UgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIGxpbmsgdG8gd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIElmIGRlZmluZWQsIGFuIGBhYCBlbGVtZW50IHdpbGwgYmUgdXNlZCBhcyB0aGUgcm9vdCBub2RlLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIGBzbWFsbGAgaXMgZXF1aXZhbGVudCB0byB0aGUgZGVuc2UgYnV0dG9uIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIHN0YXJ0SWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICd0ZXh0J1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydjb250YWluZWQnLCAnb3V0bGluZWQnLCAndGV4dCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgQnV0dG9uR3JvdXBDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgQnV0dG9uR3JvdXBDb250ZXh0LmRpc3BsYXlOYW1lID0gJ0J1dHRvbkdyb3VwQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBCdXR0b25Hcm91cENvbnRleHQ7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLCBzbG90KTtcbn1cbmNvbnN0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2lyY3VsYXJQcm9ncmVzcycsIFsncm9vdCcsICdkZXRlcm1pbmF0ZScsICdpbmRldGVybWluYXRlJywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdzdmcnLCAnY2lyY2xlJywgJ2NpcmNsZURldGVybWluYXRlJywgJ2NpcmNsZUluZGV0ZXJtaW5hdGUnLCAnY2lyY2xlRGlzYWJsZVNocmluayddKTtcbmV4cG9ydCBkZWZhdWx0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGlzYWJsZVNocmlua1wiLCBcInNpemVcIiwgXCJzdHlsZVwiLCBcInRoaWNrbmVzc1wiLCBcInZhbHVlXCIsIFwidmFyaWFudFwiXTtcbmxldCBfID0gdCA9PiB0LFxuICBfdCxcbiAgX3QyLFxuICBfdDMsXG4gIF90NDtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIGNzcyB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2NpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBTSVpFID0gNDQ7XG5jb25zdCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lID0ga2V5ZnJhbWVzKF90IHx8IChfdCA9IF9gXG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbmApKTtcbmNvbnN0IGNpcmN1bGFyRGFzaEtleWZyYW1lID0ga2V5ZnJhbWVzKF90MiB8fCAoX3QyID0gX2BcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTE1cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjVweDtcbiAgfVxuYCkpO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgdmFyaWFudCxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlU2hyaW5rXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWBdLFxuICAgIHN2ZzogWydzdmcnXSxcbiAgICBjaXJjbGU6IFsnY2lyY2xlJywgYGNpcmNsZSR7Y2FwaXRhbGl6ZSh2YXJpYW50KX1gLCBkaXNhYmxlU2hyaW5rICYmICdjaXJjbGVEaXNhYmxlU2hyaW5rJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBDaXJjdWxhclByb2dyZXNzUm9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJ1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnICYmIHtcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCd0cmFuc2Zvcm0nKVxufSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbn0pLCAoe1xuICBvd25lclN0YXRlXG59KSA9PiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdpbmRldGVybWluYXRlJyAmJiBjc3MoX3QzIHx8IChfdDMgPSBfYFxuICAgICAgYW5pbWF0aW9uOiAkezB9IDEuNHMgbGluZWFyIGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lKSk7XG5jb25zdCBDaXJjdWxhclByb2dyZXNzU1ZHID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJyxcbiAgc2xvdDogJ1N2ZycsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnN2Z1xufSkoe1xuICBkaXNwbGF5OiAnYmxvY2snIC8vIEtlZXBzIHRoZSBwcm9ncmVzcyBjZW50ZXJlZFxufSk7XG5cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUgPSBzdHlsZWQoJ2NpcmNsZScsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnQ2lyY2xlJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5jaXJjbGUsIHN0eWxlc1tgY2lyY2xlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9YF0sIG93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBzdHlsZXMuY2lyY2xlRGlzYWJsZVNocmlua107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcidcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2RldGVybWluYXRlJyAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnKVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYge1xuICAvLyBTb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBsb29rcyBmaW5lIHdhaXRpbmcgZm9yIHRoZSBhbmltYXRpb24gdG8ga2lja3MgaW4uXG4gIHN0cm9rZURhc2hhcnJheTogJzgwcHgsIDIwMHB4JyxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMCAvLyBBZGQgdGhlIHVuaXQgdG8gZml4IGEgRWRnZSAxNiBhbmQgYmVsb3cgYnVnLlxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmICFvd25lclN0YXRlLmRpc2FibGVTaHJpbmsgJiYgY3NzKF90NCB8fCAoX3Q0ID0gX2BcbiAgICAgIGFuaW1hdGlvbjogJHswfSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhckRhc2hLZXlmcmFtZSkpO1xuXG4vKipcbiAqICMjIEFSSUFcbiAqXG4gKiBJZiB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGRlc2NyaWJpbmcgdGhlIGxvYWRpbmcgcHJvZ3Jlc3Mgb2YgYSBwYXJ0aWN1bGFyIHJlZ2lvbiBvZiBhIHBhZ2UsXG4gKiB5b3Ugc2hvdWxkIHVzZSBgYXJpYS1kZXNjcmliZWRieWAgdG8gcG9pbnQgdG8gdGhlIHByb2dyZXNzIGJhciwgYW5kIHNldCB0aGUgYGFyaWEtYnVzeWBcbiAqIGF0dHJpYnV0ZSB0byBgdHJ1ZWAgb24gdGhhdCByZWdpb24gdW50aWwgaXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuXG4gKi9cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3MgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDaXJjdWxhclByb2dyZXNzKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBkaXNhYmxlU2hyaW5rID0gZmFsc2UsXG4gICAgICBzaXplID0gNDAsXG4gICAgICBzdHlsZSxcbiAgICAgIHRoaWNrbmVzcyA9IDMuNixcbiAgICAgIHZhbHVlID0gMCxcbiAgICAgIHZhcmlhbnQgPSAnaW5kZXRlcm1pbmF0ZSdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmssXG4gICAgc2l6ZSxcbiAgICB0aGlja25lc3MsXG4gICAgdmFsdWUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBjaXJjbGVTdHlsZSA9IHt9O1xuICBjb25zdCByb290U3R5bGUgPSB7fTtcbiAgY29uc3Qgcm9vdFByb3BzID0ge307XG4gIGlmICh2YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnKSB7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogKChTSVpFIC0gdGhpY2tuZXNzKSAvIDIpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2UudG9GaXhlZCgzKTtcbiAgICByb290UHJvcHNbJ2FyaWEtdmFsdWVub3cnXSA9IE1hdGgucm91bmQodmFsdWUpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBgJHsoKDEwMCAtIHZhbHVlKSAvIDEwMCAqIGNpcmN1bWZlcmVuY2UpLnRvRml4ZWQoMyl9cHhgO1xuICAgIHJvb3RTdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKC05MGRlZyknO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgaGVpZ2h0OiBzaXplXG4gICAgfSwgcm9vdFN0eWxlLCBzdHlsZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBcInByb2dyZXNzYmFyXCJcbiAgfSwgcm9vdFByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzU1ZHLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3ZnLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHZpZXdCb3g6IGAke1NJWkUgLyAyfSAke1NJWkUgLyAyfSAke1NJWkV9ICR7U0laRX1gLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmNpcmNsZSxcbiAgICAgICAgc3R5bGU6IGNpcmNsZVN0eWxlLFxuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBjeDogU0laRSxcbiAgICAgICAgY3k6IFNJWkUsXG4gICAgICAgIHI6IChTSVpFIC0gdGhpY2tuZXNzKSAvIDIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2VXaWR0aDogdGhpY2tuZXNzXG4gICAgICB9KVxuICAgIH0pXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ2lyY3VsYXJQcm9ncmVzcy5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgc2hyaW5rIGFuaW1hdGlvbiBpcyBkaXNhYmxlZC5cbiAgICogVGhpcyBvbmx5IHdvcmtzIGlmIHZhcmlhbnQgaXMgYGluZGV0ZXJtaW5hdGVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVNocmluazogY2hhaW5Qcm9wVHlwZXMoUHJvcFR5cGVzLmJvb2wsIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMuZGlzYWJsZVNocmluayAmJiBwcm9wcy52YXJpYW50ICYmIHByb3BzLnZhcmlhbnQgIT09ICdpbmRldGVybWluYXRlJykge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignTVVJOiBZb3UgaGF2ZSBwcm92aWRlZCB0aGUgYGRpc2FibGVTaHJpbmtgIHByb3AgJyArICd3aXRoIGEgdmFyaWFudCBvdGhlciB0aGFuIGBpbmRldGVybWluYXRlYC4gVGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJZiB1c2luZyBhIG51bWJlciwgdGhlIHBpeGVsIHVuaXQgaXMgYXNzdW1lZC5cbiAgICogSWYgdXNpbmcgYSBzdHJpbmcsIHlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIENTUyB1bml0LCBlLmcgJzNyZW0nLlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdGhpY2tuZXNzIG9mIHRoZSBjaXJjbGUuXG4gICAqIEBkZWZhdWx0IDMuNlxuICAgKi9cbiAgdGhpY2tuZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgZm9yIHRoZSBkZXRlcm1pbmF0ZSB2YXJpYW50LlxuICAgKiBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIFVzZSBpbmRldGVybWluYXRlIHdoZW4gdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgdmFsdWUuXG4gICAqIEBkZWZhdWx0ICdpbmRldGVybWluYXRlJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnZGV0ZXJtaW5hdGUnLCAnaW5kZXRlcm1pbmF0ZSddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENpcmN1bGFyUHJvZ3Jlc3M7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpYWxvZ1V0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpRGlhbG9nJywgc2xvdCk7XG59XG5jb25zdCBkaWFsb2dDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpRGlhbG9nJywgWydyb290JywgJ3Njcm9sbFBhcGVyJywgJ3Njcm9sbEJvZHknLCAnY29udGFpbmVyJywgJ3BhcGVyJywgJ3BhcGVyU2Nyb2xsUGFwZXInLCAncGFwZXJTY3JvbGxCb2R5JywgJ3BhcGVyV2lkdGhGYWxzZScsICdwYXBlcldpZHRoWHMnLCAncGFwZXJXaWR0aFNtJywgJ3BhcGVyV2lkdGhNZCcsICdwYXBlcldpZHRoTGcnLCAncGFwZXJXaWR0aFhsJywgJ3BhcGVyRnVsbFdpZHRoJywgJ3BhcGVyRnVsbFNjcmVlbiddKTtcbmV4cG9ydCBkZWZhdWx0IGRpYWxvZ0NsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXJpYS1kZXNjcmliZWRieVwiLCBcImFyaWEtbGFiZWxsZWRieVwiLCBcIkJhY2tkcm9wQ29tcG9uZW50XCIsIFwiQmFja2Ryb3BQcm9wc1wiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiZGlzYWJsZUVzY2FwZUtleURvd25cIiwgXCJmdWxsU2NyZWVuXCIsIFwiZnVsbFdpZHRoXCIsIFwibWF4V2lkdGhcIiwgXCJvbkJhY2tkcm9wQ2xpY2tcIiwgXCJvbkNsb3NlXCIsIFwib3BlblwiLCBcIlBhcGVyQ29tcG9uZW50XCIsIFwiUGFwZXJQcm9wc1wiLCBcInNjcm9sbFwiLCBcIlRyYW5zaXRpb25Db21wb25lbnRcIiwgXCJ0cmFuc2l0aW9uRHVyYXRpb25cIiwgXCJUcmFuc2l0aW9uUHJvcHNcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyB1bnN0YWJsZV91c2VJZCBhcyB1c2VJZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgTW9kYWwgZnJvbSAnLi4vTW9kYWwnO1xuaW1wb3J0IEZhZGUgZnJvbSAnLi4vRmFkZSc7XG5pbXBvcnQgUGFwZXIgZnJvbSAnLi4vUGFwZXInO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCBkaWFsb2dDbGFzc2VzLCB7IGdldERpYWxvZ1V0aWxpdHlDbGFzcyB9IGZyb20gJy4vZGlhbG9nQ2xhc3Nlcyc7XG5pbXBvcnQgRGlhbG9nQ29udGV4dCBmcm9tICcuL0RpYWxvZ0NvbnRleHQnO1xuaW1wb3J0IEJhY2tkcm9wIGZyb20gJy4uL0JhY2tkcm9wJztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERpYWxvZ0JhY2tkcm9wID0gc3R5bGVkKEJhY2tkcm9wLCB7XG4gIG5hbWU6ICdNdWlEaWFsb2cnLFxuICBzbG90OiAnQmFja2Ryb3AnLFxuICBvdmVycmlkZXM6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMuYmFja2Ryb3Bcbn0pKHtcbiAgLy8gSW1wcm92ZSBzY3JvbGxhYmxlIGRpYWxvZyBzdXBwb3J0LlxuICB6SW5kZXg6IC0xXG59KTtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIHNjcm9sbCxcbiAgICBtYXhXaWR0aCxcbiAgICBmdWxsV2lkdGgsXG4gICAgZnVsbFNjcmVlblxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290J10sXG4gICAgY29udGFpbmVyOiBbJ2NvbnRhaW5lcicsIGBzY3JvbGwke2NhcGl0YWxpemUoc2Nyb2xsKX1gXSxcbiAgICBwYXBlcjogWydwYXBlcicsIGBwYXBlclNjcm9sbCR7Y2FwaXRhbGl6ZShzY3JvbGwpfWAsIGBwYXBlcldpZHRoJHtjYXBpdGFsaXplKFN0cmluZyhtYXhXaWR0aCkpfWAsIGZ1bGxXaWR0aCAmJiAncGFwZXJGdWxsV2lkdGgnLCBmdWxsU2NyZWVuICYmICdwYXBlckZ1bGxTY3JlZW4nXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldERpYWxvZ1V0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgRGlhbG9nUm9vdCA9IHN0eWxlZChNb2RhbCwge1xuICBuYW1lOiAnTXVpRGlhbG9nJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5yb290XG59KSh7XG4gICdAbWVkaWEgcHJpbnQnOiB7XG4gICAgLy8gVXNlICFpbXBvcnRhbnQgdG8gb3ZlcnJpZGUgdGhlIE1vZGFsIGlubGluZS1zdHlsZS5cbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlICFpbXBvcnRhbnQnXG4gIH1cbn0pO1xuY29uc3QgRGlhbG9nQ29udGFpbmVyID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlEaWFsb2cnLFxuICBzbG90OiAnQ29udGFpbmVyJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5jb250YWluZXIsIHN0eWxlc1tgc2Nyb2xsJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2Nyb2xsKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgaGVpZ2h0OiAnMTAwJScsXG4gICdAbWVkaWEgcHJpbnQnOiB7XG4gICAgaGVpZ2h0OiAnYXV0bydcbiAgfSxcbiAgLy8gV2UgZGlzYWJsZSB0aGUgZm9jdXMgcmluZyBmb3IgbW91c2UsIHRvdWNoIGFuZCBrZXlib2FyZCB1c2Vycy5cbiAgb3V0bGluZTogMFxufSwgb3duZXJTdGF0ZS5zY3JvbGwgPT09ICdwYXBlcicgJiYge1xuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcidcbn0sIG93bmVyU3RhdGUuc2Nyb2xsID09PSAnYm9keScgJiYge1xuICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgb3ZlcmZsb3dYOiAnaGlkZGVuJyxcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgJyY6YWZ0ZXInOiB7XG4gICAgY29udGVudDogJ1wiXCInLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICAgIGhlaWdodDogJzEwMCUnLFxuICAgIHdpZHRoOiAnMCdcbiAgfVxufSkpO1xuY29uc3QgRGlhbG9nUGFwZXIgPSBzdHlsZWQoUGFwZXIsIHtcbiAgbmFtZTogJ011aURpYWxvZycsXG4gIHNsb3Q6ICdQYXBlcicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucGFwZXIsIHN0eWxlc1tgc2Nyb2xsUGFwZXIke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zY3JvbGwpfWBdLCBzdHlsZXNbYHBhcGVyV2lkdGgke2NhcGl0YWxpemUoU3RyaW5nKG93bmVyU3RhdGUubWF4V2lkdGgpKX1gXSwgb3duZXJTdGF0ZS5mdWxsV2lkdGggJiYgc3R5bGVzLnBhcGVyRnVsbFdpZHRoLCBvd25lclN0YXRlLmZ1bGxTY3JlZW4gJiYgc3R5bGVzLnBhcGVyRnVsbFNjcmVlbl07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG1hcmdpbjogMzIsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgLy8gRml4IElFMTEgaXNzdWUsIHRvIHJlbW92ZSBhdCBzb21lIHBvaW50LlxuICAnQG1lZGlhIHByaW50Jzoge1xuICAgIG92ZXJmbG93WTogJ3Zpc2libGUnLFxuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH1cbn0sIG93bmVyU3RhdGUuc2Nyb2xsID09PSAncGFwZXInICYmIHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgbWF4SGVpZ2h0OiAnY2FsYygxMDAlIC0gNjRweCknXG59LCBvd25lclN0YXRlLnNjcm9sbCA9PT0gJ2JvZHknICYmIHtcbiAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICB0ZXh0QWxpZ246ICdsZWZ0JyAvLyAnaW5pdGlhbCcgZG9lc24ndCB3b3JrIG9uIElFMTFcbn0sICFvd25lclN0YXRlLm1heFdpZHRoICYmIHtcbiAgbWF4V2lkdGg6ICdjYWxjKDEwMCUgLSA2NHB4KSdcbn0sIG93bmVyU3RhdGUubWF4V2lkdGggPT09ICd4cycgJiYge1xuICBtYXhXaWR0aDogdGhlbWUuYnJlYWtwb2ludHMudW5pdCA9PT0gJ3B4JyA/IE1hdGgubWF4KHRoZW1lLmJyZWFrcG9pbnRzLnZhbHVlcy54cywgNDQ0KSA6IGBtYXgoJHt0aGVtZS5icmVha3BvaW50cy52YWx1ZXMueHN9JHt0aGVtZS5icmVha3BvaW50cy51bml0fSwgNDQ0cHgpYCxcbiAgW2AmLiR7ZGlhbG9nQ2xhc3Nlcy5wYXBlclNjcm9sbEJvZHl9YF06IHtcbiAgICBbdGhlbWUuYnJlYWtwb2ludHMuZG93bihNYXRoLm1heCh0aGVtZS5icmVha3BvaW50cy52YWx1ZXMueHMsIDQ0NCkgKyAzMiAqIDIpXToge1xuICAgICAgbWF4V2lkdGg6ICdjYWxjKDEwMCUgLSA2NHB4KSdcbiAgICB9XG4gIH1cbn0sIG93bmVyU3RhdGUubWF4V2lkdGggJiYgb3duZXJTdGF0ZS5tYXhXaWR0aCAhPT0gJ3hzJyAmJiB7XG4gIG1heFdpZHRoOiBgJHt0aGVtZS5icmVha3BvaW50cy52YWx1ZXNbb3duZXJTdGF0ZS5tYXhXaWR0aF19JHt0aGVtZS5icmVha3BvaW50cy51bml0fWAsXG4gIFtgJi4ke2RpYWxvZ0NsYXNzZXMucGFwZXJTY3JvbGxCb2R5fWBdOiB7XG4gICAgW3RoZW1lLmJyZWFrcG9pbnRzLmRvd24odGhlbWUuYnJlYWtwb2ludHMudmFsdWVzW293bmVyU3RhdGUubWF4V2lkdGhdICsgMzIgKiAyKV06IHtcbiAgICAgIG1heFdpZHRoOiAnY2FsYygxMDAlIC0gNjRweCknXG4gICAgfVxuICB9XG59LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gIHdpZHRoOiAnY2FsYygxMDAlIC0gNjRweCknXG59LCBvd25lclN0YXRlLmZ1bGxTY3JlZW4gJiYge1xuICBtYXJnaW46IDAsXG4gIHdpZHRoOiAnMTAwJScsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIGhlaWdodDogJzEwMCUnLFxuICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgYm9yZGVyUmFkaXVzOiAwLFxuICBbYCYuJHtkaWFsb2dDbGFzc2VzLnBhcGVyU2Nyb2xsQm9keX1gXToge1xuICAgIG1hcmdpbjogMCxcbiAgICBtYXhXaWR0aDogJzEwMCUnXG4gIH1cbn0pKTtcblxuLyoqXG4gKiBEaWFsb2dzIGFyZSBvdmVybGFpZCBtb2RhbCBwYXBlciBiYXNlZCBjb21wb25lbnRzIHdpdGggYSBiYWNrZHJvcC5cbiAqL1xuY29uc3QgRGlhbG9nID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gRGlhbG9nKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlEaWFsb2cnXG4gIH0pO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGRlZmF1bHRUcmFuc2l0aW9uRHVyYXRpb24gPSB7XG4gICAgZW50ZXI6IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLmVudGVyaW5nU2NyZWVuLFxuICAgIGV4aXQ6IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLmxlYXZpbmdTY3JlZW5cbiAgfTtcbiAgY29uc3Qge1xuICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhRGVzY3JpYmVkYnksXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkYnlQcm9wLFxuICAgICAgQmFja2Ryb3BDb21wb25lbnQsXG4gICAgICBCYWNrZHJvcFByb3BzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlRXNjYXBlS2V5RG93biA9IGZhbHNlLFxuICAgICAgZnVsbFNjcmVlbiA9IGZhbHNlLFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICBtYXhXaWR0aCA9ICdzbScsXG4gICAgICBvbkJhY2tkcm9wQ2xpY2ssXG4gICAgICBvbkNsb3NlLFxuICAgICAgb3BlbixcbiAgICAgIFBhcGVyQ29tcG9uZW50ID0gUGFwZXIsXG4gICAgICBQYXBlclByb3BzID0ge30sXG4gICAgICBzY3JvbGwgPSAncGFwZXInLFxuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudCA9IEZhZGUsXG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb24gPSBkZWZhdWx0VHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgVHJhbnNpdGlvblByb3BzXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBkaXNhYmxlRXNjYXBlS2V5RG93bixcbiAgICBmdWxsU2NyZWVuLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBtYXhXaWR0aCxcbiAgICBzY3JvbGxcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgYmFja2Ryb3BDbGljayA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSBldmVudCA9PiB7XG4gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gY2xpY2tpbmcgdGhlIGRpYWxvZyBjb250ZW50LlxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgZXZlbnQgc3RhcnRzIGFuZCBlbmRzIG9uIHRoZSBzYW1lIERPTSBlbGVtZW50LlxuICAgIGJhY2tkcm9wQ2xpY2suY3VycmVudCA9IGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgfTtcbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IGV2ZW50ID0+IHtcbiAgICAvLyBJZ25vcmUgdGhlIGV2ZW50cyBub3QgY29taW5nIGZyb20gdGhlIFwiYmFja2Ryb3BcIi5cbiAgICBpZiAoIWJhY2tkcm9wQ2xpY2suY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBiYWNrZHJvcENsaWNrLmN1cnJlbnQgPSBudWxsO1xuICAgIGlmIChvbkJhY2tkcm9wQ2xpY2spIHtcbiAgICAgIG9uQmFja2Ryb3BDbGljayhldmVudCk7XG4gICAgfVxuICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICBvbkNsb3NlKGV2ZW50LCAnYmFja2Ryb3BDbGljaycpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYXJpYUxhYmVsbGVkYnkgPSB1c2VJZChhcmlhTGFiZWxsZWRieVByb3ApO1xuICBjb25zdCBkaWFsb2dDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGVJZDogYXJpYUxhYmVsbGVkYnlcbiAgICB9O1xuICB9LCBbYXJpYUxhYmVsbGVkYnldKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KERpYWxvZ1Jvb3QsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNsb3NlQWZ0ZXJUcmFuc2l0aW9uOiB0cnVlLFxuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgIEJhY2tkcm9wOiBEaWFsb2dCYWNrZHJvcFxuICAgIH0sXG4gICAgY29tcG9uZW50c1Byb3BzOiB7XG4gICAgICBiYWNrZHJvcDogX2V4dGVuZHMoe1xuICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICAgIGFzOiBCYWNrZHJvcENvbXBvbmVudFxuICAgICAgfSwgQmFja2Ryb3BQcm9wcylcbiAgICB9LFxuICAgIGRpc2FibGVFc2NhcGVLZXlEb3duOiBkaXNhYmxlRXNjYXBlS2V5RG93bixcbiAgICBvbkNsb3NlOiBvbkNsb3NlLFxuICAgIG9wZW46IG9wZW4sXG4gICAgcmVmOiByZWYsXG4gICAgb25DbGljazogaGFuZGxlQmFja2Ryb3BDbGljayxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25Db21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgIGFwcGVhcjogdHJ1ZSxcbiAgICAgIGluOiBvcGVuLFxuICAgICAgdGltZW91dDogdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgcm9sZTogXCJwcmVzZW50YXRpb25cIlxuICAgIH0sIFRyYW5zaXRpb25Qcm9wcywge1xuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KERpYWxvZ0NvbnRhaW5lciwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5jb250YWluZXIpLFxuICAgICAgICBvbk1vdXNlRG93bjogaGFuZGxlTW91c2VEb3duLFxuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goRGlhbG9nUGFwZXIsIF9leHRlbmRzKHtcbiAgICAgICAgICBhczogUGFwZXJDb21wb25lbnQsXG4gICAgICAgICAgZWxldmF0aW9uOiAyNCxcbiAgICAgICAgICByb2xlOiBcImRpYWxvZ1wiLFxuICAgICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBhcmlhRGVzY3JpYmVkYnksXG4gICAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogYXJpYUxhYmVsbGVkYnlcbiAgICAgICAgfSwgUGFwZXJQcm9wcywge1xuICAgICAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnBhcGVyLCBQYXBlclByb3BzLmNsYXNzTmFtZSksXG4gICAgICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goRGlhbG9nQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IGRpYWxvZ0NvbnRleHRWYWx1ZSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgICAgIH0pXG4gICAgICAgIH0pKVxuICAgICAgfSlcbiAgICB9KSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBEaWFsb2cucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGlkKHMpIG9mIHRoZSBlbGVtZW50KHMpIHRoYXQgZGVzY3JpYmUgdGhlIGRpYWxvZy5cbiAgICovXG4gICdhcmlhLWRlc2NyaWJlZGJ5JzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBpZChzKSBvZiB0aGUgZWxlbWVudChzKSB0aGF0IGxhYmVsIHRoZSBkaWFsb2cuXG4gICAqL1xuICAnYXJpYS1sYWJlbGxlZGJ5JzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEEgYmFja2Ryb3AgY29tcG9uZW50LiBUaGlzIHByb3AgZW5hYmxlcyBjdXN0b20gYmFja2Ryb3AgcmVuZGVyaW5nLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHNsb3RzLmJhY2tkcm9wYCBpbnN0ZWFkLiBXaGlsZSB0aGlzIHByb3AgY3VycmVudGx5IHdvcmtzLCBpdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi5cbiAgICogVXNlIHRoZSBgc2xvdHMuYmFja2Ryb3BgIHByb3AgdG8gbWFrZSB5b3VyIGFwcGxpY2F0aW9uIHJlYWR5IGZvciB0aGUgbmV4dCB2ZXJzaW9uIG9mIE1hdGVyaWFsIFVJLlxuICAgKiBAZGVmYXVsdCBzdHlsZWQoQmFja2Ryb3AsIHtcbiAgICogICBuYW1lOiAnTXVpTW9kYWwnLFxuICAgKiAgIHNsb3Q6ICdCYWNrZHJvcCcsXG4gICAqICAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAqICAgICByZXR1cm4gc3R5bGVzLmJhY2tkcm9wO1xuICAgKiAgIH0sXG4gICAqIH0pKHtcbiAgICogICB6SW5kZXg6IC0xLFxuICAgKiB9KVxuICAgKi9cbiAgQmFja2Ryb3BDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEJhY2tkcm9wUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBEaWFsb2cgY2hpbGRyZW4sIHVzdWFsbHkgdGhlIGluY2x1ZGVkIHN1Yi1jb21wb25lbnRzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaGl0dGluZyBlc2NhcGUgd2lsbCBub3QgZmlyZSB0aGUgYG9uQ2xvc2VgIGNhbGxiYWNrLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVzY2FwZUtleURvd246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZGlhbG9nIGlzIGZ1bGwtc2NyZWVuLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFNjcmVlbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBkaWFsb2cgc3RyZXRjaGVzIHRvIGBtYXhXaWR0aGAuXG4gICAqXG4gICAqIE5vdGljZSB0aGF0IHRoZSBkaWFsb2cgd2lkdGggZ3JvdyBpcyBsaW1pdGVkIGJ5IHRoZSBkZWZhdWx0IG1hcmdpbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIG1heC13aWR0aCBvZiB0aGUgZGlhbG9nLlxuICAgKiBUaGUgZGlhbG9nIHdpZHRoIGdyb3dzIHdpdGggdGhlIHNpemUgb2YgdGhlIHNjcmVlbi5cbiAgICogU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSBgbWF4V2lkdGhgLlxuICAgKiBAZGVmYXVsdCAnc20nXG4gICAqL1xuICBtYXhXaWR0aDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCcsIGZhbHNlXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGJhY2tkcm9wIGlzIGNsaWNrZWQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYG9uQ2xvc2VgIHByb3Agd2l0aCB0aGUgYHJlYXNvbmAgYXJndW1lbnQgdG8gaGFuZGxlIHRoZSBgYmFja2Ryb3BDbGlja2AgZXZlbnRzLlxuICAgKi9cbiAgb25CYWNrZHJvcENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGNvbXBvbmVudCByZXF1ZXN0cyB0byBiZSBjbG9zZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiBDYW4gYmU6IGBcImVzY2FwZUtleURvd25cImAsIGBcImJhY2tkcm9wQ2xpY2tcImAuXG4gICAqL1xuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBzaG93bi5cbiAgICovXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIHRoZSBib2R5IG9mIHRoZSBkaWFsb2cuXG4gICAqIEBkZWZhdWx0IFBhcGVyXG4gICAqL1xuICBQYXBlckNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgW2BQYXBlcmBdKC9tYXRlcmlhbC11aS9hcGkvcGFwZXIvKSBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgUGFwZXJQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgY29udGFpbmVyIGZvciBzY3JvbGxpbmcgdGhlIGRpYWxvZy5cbiAgICogQGRlZmF1bHQgJ3BhcGVyJ1xuICAgKi9cbiAgc2Nyb2xsOiBQcm9wVHlwZXMub25lT2YoWydib2R5JywgJ3BhcGVyJ10pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgdHJhbnNpdGlvbi5cbiAgICogW0ZvbGxvdyB0aGlzIGd1aWRlXSgvbWF0ZXJpYWwtdWkvdHJhbnNpdGlvbnMvI3RyYW5zaXRpb25jb21wb25lbnQtcHJvcCkgdG8gbGVhcm4gbW9yZSBhYm91dCB0aGUgcmVxdWlyZW1lbnRzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgRmFkZVxuICAgKi9cbiAgVHJhbnNpdGlvbkNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGZvciB0aGUgdHJhbnNpdGlvbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zLCBvciBpbmRpdmlkdWFsbHkgd2l0aCBhbiBvYmplY3QuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAqICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlbixcbiAgICogfVxuICAgKi9cbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFwcGVhcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBlbnRlcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBleGl0OiBQcm9wVHlwZXMubnVtYmVyXG4gIH0pXSksXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSB0cmFuc2l0aW9uIGVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBlbGVtZW50IGlzIGJhc2VkIG9uIHRoaXMgW2BUcmFuc2l0aW9uYF0oaHR0cDovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3RyYW5zaXRpb24vKSBjb21wb25lbnQuXG4gICAqL1xuICBUcmFuc2l0aW9uUHJvcHM6IFByb3BUeXBlcy5vYmplY3Rcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBEaWFsb2c7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgRGlhbG9nQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIERpYWxvZ0NvbnRleHQuZGlzcGxheU5hbWUgPSAnRGlhbG9nQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBEaWFsb2dDb250ZXh0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXREaWFsb2dBY3Rpb25zVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlEaWFsb2dBY3Rpb25zJywgc2xvdCk7XG59XG5jb25zdCBkaWFsb2dBY3Rpb25zQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aURpYWxvZ0FjdGlvbnMnLCBbJ3Jvb3QnLCAnc3BhY2luZyddKTtcbmV4cG9ydCBkZWZhdWx0IGRpYWxvZ0FjdGlvbnNDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImRpc2FibGVTcGFjaW5nXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCB7IGdldERpYWxvZ0FjdGlvbnNVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2RpYWxvZ0FjdGlvbnNDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlU3BhY2luZ1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgIWRpc2FibGVTcGFjaW5nICYmICdzcGFjaW5nJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXREaWFsb2dBY3Rpb25zVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBEaWFsb2dBY3Rpb25zUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpRGlhbG9nQWN0aW9ucycsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCAhb3duZXJTdGF0ZS5kaXNhYmxlU3BhY2luZyAmJiBzdHlsZXMuc3BhY2luZ107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgcGFkZGluZzogOCxcbiAganVzdGlmeUNvbnRlbnQ6ICdmbGV4LWVuZCcsXG4gIGZsZXg6ICcwIDAgYXV0bydcbn0sICFvd25lclN0YXRlLmRpc2FibGVTcGFjaW5nICYmIHtcbiAgJyYgPiA6bm90KDpmaXJzdC1vZi10eXBlKSc6IHtcbiAgICBtYXJnaW5MZWZ0OiA4XG4gIH1cbn0pKTtcbmNvbnN0IERpYWxvZ0FjdGlvbnMgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBEaWFsb2dBY3Rpb25zKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlEaWFsb2dBY3Rpb25zJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGlzYWJsZVNwYWNpbmcgPSBmYWxzZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgZGlzYWJsZVNwYWNpbmdcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KERpYWxvZ0FjdGlvbnNSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIHJlZjogcmVmXG4gIH0sIG90aGVyKSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IERpYWxvZ0FjdGlvbnMucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBhY3Rpb25zIGRvIG5vdCBoYXZlIGFkZGl0aW9uYWwgbWFyZ2luLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVNwYWNpbmc6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRGlhbG9nQWN0aW9uczsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGlhbG9nQ29udGVudFV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpRGlhbG9nQ29udGVudCcsIHNsb3QpO1xufVxuY29uc3QgZGlhbG9nQ29udGVudENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlEaWFsb2dDb250ZW50JywgWydyb290JywgJ2RpdmlkZXJzJ10pO1xuZXhwb3J0IGRlZmF1bHQgZGlhbG9nQ29udGVudENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiZGl2aWRlcnNcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHsgZ2V0RGlhbG9nQ29udGVudFV0aWxpdHlDbGFzcyB9IGZyb20gJy4vZGlhbG9nQ29udGVudENsYXNzZXMnO1xuaW1wb3J0IGRpYWxvZ1RpdGxlQ2xhc3NlcyBmcm9tICcuLi9EaWFsb2dUaXRsZS9kaWFsb2dUaXRsZUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGRpdmlkZXJzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBkaXZpZGVycyAmJiAnZGl2aWRlcnMnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldERpYWxvZ0NvbnRlbnRVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IERpYWxvZ0NvbnRlbnRSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlEaWFsb2dDb250ZW50JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuZGl2aWRlcnMgJiYgc3R5bGVzLmRpdmlkZXJzXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZmxleDogJzEgMSBhdXRvJyxcbiAgLy8gQWRkIGlPUyBtb21lbnR1bSBzY3JvbGxpbmcgZm9yIGlPUyA8IDEzLjBcbiAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCcsXG4gIG92ZXJmbG93WTogJ2F1dG8nLFxuICBwYWRkaW5nOiAnMjBweCAyNHB4J1xufSwgb3duZXJTdGF0ZS5kaXZpZGVycyA/IHtcbiAgcGFkZGluZzogJzE2cHggMjRweCcsXG4gIGJvcmRlclRvcDogYDFweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmRpdmlkZXJ9YCxcbiAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gXG59IDoge1xuICBbYC4ke2RpYWxvZ1RpdGxlQ2xhc3Nlcy5yb290fSArICZgXToge1xuICAgIHBhZGRpbmdUb3A6IDBcbiAgfVxufSkpO1xuY29uc3QgRGlhbG9nQ29udGVudCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIERpYWxvZ0NvbnRlbnQoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aURpYWxvZ0NvbnRlbnQnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXZpZGVycyA9IGZhbHNlXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBkaXZpZGVyc1xuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRGlhbG9nQ29udGVudFJvb3QsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgcmVmOiByZWZcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gRGlhbG9nQ29udGVudC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIERpc3BsYXkgdGhlIHRvcCBhbmQgYm90dG9tIGRpdmlkZXJzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGl2aWRlcnM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRGlhbG9nQ29udGVudDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJpZFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBUeXBvZ3JhcGh5IGZyb20gJy4uL1R5cG9ncmFwaHknO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCB7IGdldERpYWxvZ1RpdGxlVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9kaWFsb2dUaXRsZUNsYXNzZXMnO1xuaW1wb3J0IERpYWxvZ0NvbnRleHQgZnJvbSAnLi4vRGlhbG9nL0RpYWxvZ0NvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldERpYWxvZ1RpdGxlVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBEaWFsb2dUaXRsZVJvb3QgPSBzdHlsZWQoVHlwb2dyYXBoeSwge1xuICBuYW1lOiAnTXVpRGlhbG9nVGl0bGUnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnJvb3Rcbn0pKHtcbiAgcGFkZGluZzogJzE2cHggMjRweCcsXG4gIGZsZXg6ICcwIDAgYXV0bydcbn0pO1xuY29uc3QgRGlhbG9nVGl0bGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBEaWFsb2dUaXRsZShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpRGlhbG9nVGl0bGUnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBpZDogaWRQcm9wXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBwcm9wcztcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCB7XG4gICAgdGl0bGVJZCA9IGlkUHJvcFxuICB9ID0gUmVhY3QudXNlQ29udGV4dChEaWFsb2dDb250ZXh0KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KERpYWxvZ1RpdGxlUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNvbXBvbmVudDogXCJoMlwiLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICB2YXJpYW50OiBcImg2XCIsXG4gICAgaWQ6IGlkUHJvcCAhPSBudWxsID8gaWRQcm9wIDogdGl0bGVJZFxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBEaWFsb2dUaXRsZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRGlhbG9nVGl0bGU7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpYWxvZ1RpdGxlVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlEaWFsb2dUaXRsZScsIHNsb3QpO1xufVxuY29uc3QgZGlhbG9nVGl0bGVDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpRGlhbG9nVGl0bGUnLCBbJ3Jvb3QnXSk7XG5leHBvcnQgZGVmYXVsdCBkaWFsb2dUaXRsZUNsYXNzZXM7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVR5cG9ncmFwaHknLCBzbG90KTtcbn1cbmNvbnN0IHR5cG9ncmFwaHlDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVHlwb2dyYXBoeScsIFsncm9vdCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdzdWJ0aXRsZTEnLCAnc3VidGl0bGUyJywgJ2JvZHkxJywgJ2JvZHkyJywgJ2luaGVyaXQnLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnb3ZlcmxpbmUnLCAnYWxpZ25MZWZ0JywgJ2FsaWduUmlnaHQnLCAnYWxpZ25DZW50ZXInLCAnYWxpZ25KdXN0aWZ5JywgJ25vV3JhcCcsICdndXR0ZXJCb3R0b20nLCAncGFyYWdyYXBoJ10pO1xuZXhwb3J0IGRlZmF1bHQgdHlwb2dyYXBoeUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWxpZ25cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJndXR0ZXJCb3R0b21cIiwgXCJub1dyYXBcIiwgXCJwYXJhZ3JhcGhcIiwgXCJ2YXJpYW50XCIsIFwidmFyaWFudE1hcHBpbmdcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9leHRlbmRTeFByb3AgYXMgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHsgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vdHlwb2dyYXBoeUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbGlnbixcbiAgICBndXR0ZXJCb3R0b20sXG4gICAgbm9XcmFwLFxuICAgIHBhcmFncmFwaCxcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBgYWxpZ24ke2NhcGl0YWxpemUoYWxpZ24pfWAsIGd1dHRlckJvdHRvbSAmJiAnZ3V0dGVyQm90dG9tJywgbm9XcmFwICYmICdub1dyYXAnLCBwYXJhZ3JhcGggJiYgJ3BhcmFncmFwaCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuZXhwb3J0IGNvbnN0IFR5cG9ncmFwaHlSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpVHlwb2dyYXBoeScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGFsaWduJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuYWxpZ24pfWBdLCBvd25lclN0YXRlLm5vV3JhcCAmJiBzdHlsZXMubm9XcmFwLCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiBzdHlsZXMuZ3V0dGVyQm90dG9tLCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiBzdHlsZXMucGFyYWdyYXBoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgbWFyZ2luOiAwXG59LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgdGhlbWUudHlwb2dyYXBoeVtvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYge1xuICB0ZXh0QWxpZ246IG93bmVyU3RhdGUuYWxpZ25cbn0sIG93bmVyU3RhdGUubm9XcmFwICYmIHtcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnXG59LCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiB7XG4gIG1hcmdpbkJvdHRvbTogJzAuMzVlbSdcbn0sIG93bmVyU3RhdGUucGFyYWdyYXBoICYmIHtcbiAgbWFyZ2luQm90dG9tOiAxNlxufSkpO1xuY29uc3QgZGVmYXVsdFZhcmlhbnRNYXBwaW5nID0ge1xuICBoMTogJ2gxJyxcbiAgaDI6ICdoMicsXG4gIGgzOiAnaDMnLFxuICBoNDogJ2g0JyxcbiAgaDU6ICdoNScsXG4gIGg2OiAnaDYnLFxuICBzdWJ0aXRsZTE6ICdoNicsXG4gIHN1YnRpdGxlMjogJ2g2JyxcbiAgYm9keTE6ICdwJyxcbiAgYm9keTI6ICdwJyxcbiAgaW5oZXJpdDogJ3AnXG59O1xuXG4vLyBUT0RPIHY2OiBkZXByZWNhdGUgdGhlc2UgY29sb3IgdmFsdWVzIGluIHY1LnggYW5kIHJlbW92ZSB0aGUgdHJhbnNmb3JtYXRpb24gaW4gdjZcbmNvbnN0IGNvbG9yVHJhbnNmb3JtYXRpb25zID0ge1xuICBwcmltYXJ5OiAncHJpbWFyeS5tYWluJyxcbiAgdGV4dFByaW1hcnk6ICd0ZXh0LnByaW1hcnknLFxuICBzZWNvbmRhcnk6ICdzZWNvbmRhcnkubWFpbicsXG4gIHRleHRTZWNvbmRhcnk6ICd0ZXh0LnNlY29uZGFyeScsXG4gIGVycm9yOiAnZXJyb3IubWFpbidcbn07XG5jb25zdCB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzID0gY29sb3IgPT4ge1xuICByZXR1cm4gY29sb3JUcmFuc2Zvcm1hdGlvbnNbY29sb3JdIHx8IGNvbG9yO1xufTtcbmNvbnN0IFR5cG9ncmFwaHkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUeXBvZ3JhcGh5KGluUHJvcHMsIHJlZikge1xuICBjb25zdCB0aGVtZVByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVR5cG9ncmFwaHknXG4gIH0pO1xuICBjb25zdCBjb2xvciA9IHRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnModGhlbWVQcm9wcy5jb2xvcik7XG4gIGNvbnN0IHByb3BzID0gZXh0ZW5kU3hQcm9wKF9leHRlbmRzKHt9LCB0aGVtZVByb3BzLCB7XG4gICAgY29sb3JcbiAgfSkpO1xuICBjb25zdCB7XG4gICAgICBhbGlnbiA9ICdpbmhlcml0JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGd1dHRlckJvdHRvbSA9IGZhbHNlLFxuICAgICAgbm9XcmFwID0gZmFsc2UsXG4gICAgICBwYXJhZ3JhcGggPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAnYm9keTEnLFxuICAgICAgdmFyaWFudE1hcHBpbmcgPSBkZWZhdWx0VmFyaWFudE1hcHBpbmdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFsaWduLFxuICAgIGNvbG9yLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb21wb25lbnQsXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICB2YXJpYW50TWFwcGluZ1xuICB9KTtcbiAgY29uc3QgQ29tcG9uZW50ID0gY29tcG9uZW50IHx8IChwYXJhZ3JhcGggPyAncCcgOiB2YXJpYW50TWFwcGluZ1t2YXJpYW50XSB8fCBkZWZhdWx0VmFyaWFudE1hcHBpbmdbdmFyaWFudF0pIHx8ICdzcGFuJztcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHlwb2dyYXBoeVJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogQ29tcG9uZW50LFxuICAgIHJlZjogcmVmLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKVxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUeXBvZ3JhcGh5LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFNldCB0aGUgdGV4dC1hbGlnbiBvbiB0aGUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCAnaW5oZXJpdCdcbiAgICovXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoWydjZW50ZXInLCAnaW5oZXJpdCcsICdqdXN0aWZ5JywgJ2xlZnQnLCAncmlnaHQnXSksXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dCB3aWxsIGhhdmUgYSBib3R0b20gbWFyZ2luLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZ3V0dGVyQm90dG9tOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBub3Qgd3JhcCwgYnV0IGluc3RlYWQgd2lsbCB0cnVuY2F0ZSB3aXRoIGEgdGV4dCBvdmVyZmxvdyBlbGxpcHNpcy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRleHQgb3ZlcmZsb3cgY2FuIG9ubHkgaGFwcGVuIHdpdGggYmxvY2sgb3IgaW5saW5lLWJsb2NrIGxldmVsIGVsZW1lbnRzXG4gICAqICh0aGUgZWxlbWVudCBuZWVkcyB0byBoYXZlIGEgd2lkdGggaW4gb3JkZXIgdG8gb3ZlcmZsb3cpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9XcmFwOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGVsZW1lbnQgd2lsbCBiZSBhIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcGFyYWdyYXBoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHRoZW1lIHR5cG9ncmFwaHkgc3R5bGVzLlxuICAgKiBAZGVmYXVsdCAnYm9keTEnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2JvZHkxJywgJ2JvZHkyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2luaGVyaXQnLCAnb3ZlcmxpbmUnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMiddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCBtYXBzIHRoZSB2YXJpYW50IHByb3AgdG8gYSByYW5nZSBvZiBkaWZmZXJlbnQgSFRNTCBlbGVtZW50IHR5cGVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIHN1YnRpdGxlMSB0byBgPGg2PmAuXG4gICAqIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGF0IG1hcHBpbmcsIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93bi5cbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGBjb21wb25lbnRgIHByb3AuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBoMTogJ2gxJyxcbiAgICogICBoMjogJ2gyJyxcbiAgICogICBoMzogJ2gzJyxcbiAgICogICBoNDogJ2g0JyxcbiAgICogICBoNTogJ2g1JyxcbiAgICogICBoNjogJ2g2JyxcbiAgICogICBzdWJ0aXRsZTE6ICdoNicsXG4gICAqICAgc3VidGl0bGUyOiAnaDYnLFxuICAgKiAgIGJvZHkxOiAncCcsXG4gICAqICAgYm9keTI6ICdwJyxcbiAgICogICBpbmhlcml0OiAncCcsXG4gICAqIH1cbiAgICovXG4gIHZhcmlhbnRNYXBwaW5nOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vYmplY3Rcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUeXBvZ3JhcGh5OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAbXVpL3N0eWxlZC1lbmdpbmUnO1xuaW1wb3J0IHN0eWxlRnVuY3Rpb25TeCwgeyBleHRlbmRTeFByb3AgfSBmcm9tICcuL3N0eWxlRnVuY3Rpb25TeCc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi91c2VUaGVtZSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQm94KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGhlbWVJZCxcbiAgICBkZWZhdWx0VGhlbWUsXG4gICAgZGVmYXVsdENsYXNzTmFtZSA9ICdNdWlCb3gtcm9vdCcsXG4gICAgZ2VuZXJhdGVDbGFzc05hbWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IEJveFJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiBwcm9wICE9PSAndGhlbWUnICYmIHByb3AgIT09ICdzeCcgJiYgcHJvcCAhPT0gJ2FzJ1xuICB9KShzdHlsZUZ1bmN0aW9uU3gpO1xuICBjb25zdCBCb3ggPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCb3goaW5Qcm9wcywgcmVmKSB7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZShkZWZhdWx0VGhlbWUpO1xuICAgIGNvbnN0IF9leHRlbmRTeFByb3AgPSBleHRlbmRTeFByb3AoaW5Qcm9wcyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgY29tcG9uZW50ID0gJ2RpdidcbiAgICAgIH0gPSBfZXh0ZW5kU3hQcm9wLFxuICAgICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfZXh0ZW5kU3hQcm9wLCBfZXhjbHVkZWQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChCb3hSb290LCBfZXh0ZW5kcyh7XG4gICAgICBhczogY29tcG9uZW50LFxuICAgICAgcmVmOiByZWYsXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3NOYW1lLCBnZW5lcmF0ZUNsYXNzTmFtZSA/IGdlbmVyYXRlQ2xhc3NOYW1lKGRlZmF1bHRDbGFzc05hbWUpIDogZGVmYXVsdENsYXNzTmFtZSksXG4gICAgICB0aGVtZTogdGhlbWVJZCA/IHRoZW1lW3RoZW1lSWRdIHx8IHRoZW1lIDogdGhlbWVcbiAgICB9LCBvdGhlcikpO1xuICB9KTtcbiAgcmV0dXJuIEJveDtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wic3hcIl07XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZGVmYXVsdFN4Q29uZmlnIGZyb20gJy4vZGVmYXVsdFN4Q29uZmlnJztcbmNvbnN0IHNwbGl0UHJvcHMgPSBwcm9wcyA9PiB7XG4gIHZhciBfcHJvcHMkdGhlbWUkdW5zdGFibGUsIF9wcm9wcyR0aGVtZTtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHN5c3RlbVByb3BzOiB7fSxcbiAgICBvdGhlclByb3BzOiB7fVxuICB9O1xuICBjb25zdCBjb25maWcgPSAoX3Byb3BzJHRoZW1lJHVuc3RhYmxlID0gcHJvcHMgPT0gbnVsbCB8fCAoX3Byb3BzJHRoZW1lID0gcHJvcHMudGhlbWUpID09IG51bGwgPyB2b2lkIDAgOiBfcHJvcHMkdGhlbWUudW5zdGFibGVfc3hDb25maWcpICE9IG51bGwgPyBfcHJvcHMkdGhlbWUkdW5zdGFibGUgOiBkZWZhdWx0U3hDb25maWc7XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIGlmIChjb25maWdbcHJvcF0pIHtcbiAgICAgIHJlc3VsdC5zeXN0ZW1Qcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQub3RoZXJQcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0ZW5kU3hQcm9wKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICAgIHN4OiBpblN4XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHtcbiAgICBzeXN0ZW1Qcm9wcyxcbiAgICBvdGhlclByb3BzXG4gIH0gPSBzcGxpdFByb3BzKG90aGVyKTtcbiAgbGV0IGZpbmFsU3g7XG4gIGlmIChBcnJheS5pc0FycmF5KGluU3gpKSB7XG4gICAgZmluYWxTeCA9IFtzeXN0ZW1Qcm9wcywgLi4uaW5TeF07XG4gIH0gZWxzZSBpZiAodHlwZW9mIGluU3ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBmaW5hbFN4ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluU3goLi4uYXJncyk7XG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gc3lzdGVtUHJvcHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCByZXN1bHQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZmluYWxTeCA9IF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgaW5TeCk7XG4gIH1cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdGhlclByb3BzLCB7XG4gICAgc3g6IGZpbmFsU3hcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3duZXJEb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBnbG9iYWxJZCA9IDA7XG5mdW5jdGlvbiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKSB7XG4gIGNvbnN0IFtkZWZhdWx0SWQsIHNldERlZmF1bHRJZF0gPSBSZWFjdC51c2VTdGF0ZShpZE92ZXJyaWRlKTtcbiAgY29uc3QgaWQgPSBpZE92ZXJyaWRlIHx8IGRlZmF1bHRJZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdElkID09IG51bGwpIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHRoaXMgZGVmYXVsdCBpZCB3aGVuIHBvc3NpYmxlLlxuICAgICAgLy8gVXNlIHRoZSBpbmNyZW1lbnRpbmcgdmFsdWUgZm9yIGNsaWVudC1zaWRlIHJlbmRlcmluZyBvbmx5LlxuICAgICAgLy8gV2UgY2FuJ3QgdXNlIGl0IHNlcnZlci1zaWRlLlxuICAgICAgLy8gSWYgeW91IHdhbnQgdG8gdXNlIHJhbmRvbSB2YWx1ZXMgcGxlYXNlIGNvbnNpZGVyIHRoZSBCaXJ0aGRheSBQcm9ibGVtOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaXJ0aGRheV9wcm9ibGVtXG4gICAgICBnbG9iYWxJZCArPSAxO1xuICAgICAgc2V0RGVmYXVsdElkKGBtdWktJHtnbG9iYWxJZH1gKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0SWRdKTtcbiAgcmV0dXJuIGlkO1xufVxuXG4vLyBkb3duc3RyZWFtIGJ1bmRsZXJzIG1heSByZW1vdmUgdW5uZWNlc3NhcnkgY29uY2F0ZW5hdGlvbiwgYnV0IHdvbid0IHJlbW92ZSB0b1N0cmluZyBjYWxsIC0tIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svaXNzdWVzLzE0ODE0XG5jb25zdCBtYXliZVJlYWN0VXNlSWQgPSBSZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldO1xuLyoqXG4gKlxuICogQGV4YW1wbGUgPGRpdiBpZD17dXNlSWQoKX0gLz5cbiAqIEBwYXJhbSBpZE92ZXJyaWRlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VJZChpZE92ZXJyaWRlKSB7XG4gIGlmIChtYXliZVJlYWN0VXNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHJlYWN0SWQgPSBtYXliZVJlYWN0VXNlSWQoKTtcbiAgICByZXR1cm4gaWRPdmVycmlkZSAhPSBudWxsID8gaWRPdmVycmlkZSA6IHJlYWN0SWQ7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIC0tIGBSZWFjdC51c2VJZGAgaXMgaW52YXJpYW50IGF0IHJ1bnRpbWUuXG4gIHJldHVybiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKTtcbn0iXSwibmFtZXMiOlsiR2xvYmFsIiwidyIsInByb3BzIiwiY2FjaGUiLCJzdHlsZXMiLCJzZXJpYWxpemVkIiwidW5kZWZpbmVkIiwiVCIsImkiLCJfcmVmIiwic2VyaWFsaXplZE5hbWVzIiwibmFtZSIsInNlcmlhbGl6ZWRTdHlsZXMiLCJuZXh0Iiwic2hvdWxkQ2FjaGUiLCJjb21wYXQiLCJydWxlcyIsImluc2VydCIsInNoZWV0Iiwia2V5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJub25jZSIsInNoZWV0UmVmIiwiY29uc3RydWN0b3IiLCJjb250YWluZXIiLCJzcGVlZHkiLCJpc1NwZWVkeSIsInJlaHlkcmF0aW5nIiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInRhZ3MiLCJsZW5ndGgiLCJiZWZvcmUiLCJzZXRBdHRyaWJ1dGUiLCJoeWRyYXRlIiwiY3VycmVudCIsImZsdXNoIiwic2hlZXRSZWZDdXJyZW50IiwiZWxlbWVudCIsIm5leHRFbGVtZW50U2libGluZyIsImNzcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5Iiwia2V5ZnJhbWVzIiwiaW5zZXJ0YWJsZSIsImFwcGx5IiwiYW5pbSIsInRvU3RyaW5nIiwidGhpcyIsImZvcndhcmRlZFJlZiIsImNoaWxkcmVuIiwiZGlzYWJsZVBvcnRhbCIsIm1vdW50Tm9kZSIsInNldE1vdW50Tm9kZSIsImhhbmRsZVJlZiIsInJlZiIsImdldENvbnRhaW5lciIsImJvZHkiLCJuZXdQcm9wcyIsImRlZmF1bHRDb250ZXh0VmFsdWUiLCJkaXNhYmxlRGVmYXVsdENsYXNzZXMiLCJDbGFzc05hbWVDb25maWd1cmF0b3JDb250ZXh0IiwidXNlQ2xhc3NOYW1lc092ZXJyaWRlIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJzbG90IiwiYXBwZW5kT3duZXJTdGF0ZSIsImVsZW1lbnRUeXBlIiwib3RoZXJQcm9wcyIsIm93bmVyU3RhdGUiLCJpc0hvc3RDb21wb25lbnQiLCJyZXNvbHZlQ29tcG9uZW50UHJvcHMiLCJjb21wb25lbnRQcm9wcyIsInNsb3RTdGF0ZSIsIm9taXRFdmVudEhhbmRsZXJzIiwib2JqZWN0IiwicmVzdWx0IiwiT2JqZWN0Iiwia2V5cyIsImZpbHRlciIsInByb3AiLCJtYXRjaCIsImZvckVhY2giLCJfZXhjbHVkZWQiLCJ1c2VTbG90UHJvcHMiLCJwYXJhbWV0ZXJzIiwiX3BhcmFtZXRlcnMkYWRkaXRpb25hIiwiZXh0ZXJuYWxTbG90UHJvcHMiLCJza2lwUmVzb2x2aW5nU2xvdFByb3BzIiwicmVzdCIsInJlc29sdmVkQ29tcG9uZW50c1Byb3BzIiwibWVyZ2VkUHJvcHMiLCJpbnRlcm5hbFJlZiIsImdldFNsb3RQcm9wcyIsImFkZGl0aW9uYWxQcm9wcyIsImV4dGVybmFsRm9yd2FyZGVkUHJvcHMiLCJjbGFzc05hbWUiLCJqb2luZWRDbGFzc2VzIiwibWVyZ2VkU3R5bGUiLCJzdHlsZSIsImV2ZW50SGFuZGxlcnMiLCJleGNsdWRlS2V5cyIsImluY2x1ZGVzIiwiZXh0cmFjdEV2ZW50SGFuZGxlcnMiLCJjb21wb25lbnRzUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyIsIm90aGVyUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyIsImludGVybmFsU2xvdFByb3BzIiwibWVyZ2VTbG90UHJvcHMiLCJ1c2VGb3JrUmVmIiwiZGVmYXVsdFRoZW1lIiwidGhlbWVJZCIsImRlZmF1bHRDbGFzc05hbWUiLCJnZW5lcmF0ZUNsYXNzTmFtZSIsImdlbmVyYXRlIiwiZ2V0QnV0dG9uVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsImNvbW1vbkljb25TdHlsZXMiLCJzaXplIiwiZm9udFNpemUiLCJCdXR0b25Sb290Iiwic3R5bGVkIiwiQnV0dG9uQmFzZSIsInNob3VsZEZvcndhcmRQcm9wIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJyb290IiwidmFyaWFudCIsImNhcGl0YWxpemUiLCJjb2xvciIsImNvbG9ySW5oZXJpdCIsImRpc2FibGVFbGV2YXRpb24iLCJmdWxsV2lkdGgiLCJ0aGVtZSIsIl90aGVtZSRwYWxldHRlJGdldENvbiIsIl90aGVtZSRwYWxldHRlIiwiaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJtb2RlIiwiZ3JleSIsImluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciIsIkExMDAiLCJ0eXBvZ3JhcGh5IiwiYnV0dG9uIiwibWluV2lkdGgiLCJwYWRkaW5nIiwiYm9yZGVyUmFkaXVzIiwidmFycyIsInNoYXBlIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiZHVyYXRpb24iLCJzaG9ydCIsInRleHREZWNvcmF0aW9uIiwiYmFja2dyb3VuZENvbG9yIiwidGV4dCIsInByaW1hcnlDaGFubmVsIiwiYWN0aW9uIiwiaG92ZXJPcGFjaXR5IiwicHJpbWFyeSIsIm1haW5DaGFubmVsIiwibWFpbiIsImJvcmRlciIsIkJ1dHRvbiIsImluaGVyaXRDb250YWluZWRIb3ZlckJnIiwiYm94U2hhZG93Iiwic2hhZG93cyIsImRhcmsiLCJmb2N1c1Zpc2libGUiLCJkaXNhYmxlZCIsImRpc2FibGVkQmFja2dyb3VuZCIsImdldENvbnRyYXN0VGV4dCIsImNhbGwiLCJpbmhlcml0Q29udGFpbmVkQmciLCJjb250cmFzdFRleHQiLCJib3JkZXJDb2xvciIsInB4VG9SZW0iLCJ3aWR0aCIsIkJ1dHRvblN0YXJ0SWNvbiIsInN0YXJ0SWNvbiIsImRpc3BsYXkiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJCdXR0b25FbmRJY29uIiwiZW5kSWNvbiIsImluUHJvcHMiLCJjb250ZXh0UHJvcHMiLCJCdXR0b25Hcm91cENvbnRleHQiLCJyZXNvbHZlZFByb3BzIiwicmVzb2x2ZVByb3BzIiwidXNlVGhlbWVQcm9wcyIsImNvbXBvbmVudCIsImRpc2FibGVGb2N1c1JpcHBsZSIsImVuZEljb25Qcm9wIiwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lIiwic3RhcnRJY29uUHJvcCIsInR5cGUiLCJvdGhlciIsImNsYXNzZXMiLCJzbG90cyIsImxhYmVsIiwiY29tcG9zZWRDbGFzc2VzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImZvY3VzUmlwcGxlIiwiZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiXyIsInQiLCJjaXJjdWxhclJvdGF0ZUtleWZyYW1lIiwiY2lyY3VsYXJEYXNoS2V5ZnJhbWUiLCJDaXJjdWxhclByb2dyZXNzUm9vdCIsIkNpcmN1bGFyUHJvZ3Jlc3NTVkciLCJzdmciLCJDaXJjdWxhclByb2dyZXNzQ2lyY2xlIiwiY2lyY2xlIiwiZGlzYWJsZVNocmluayIsImNpcmNsZURpc2FibGVTaHJpbmsiLCJzdHJva2UiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0IiwidGhpY2tuZXNzIiwidmFsdWUiLCJjaXJjbGVTdHlsZSIsInJvb3RTdHlsZSIsInJvb3RQcm9wcyIsImNpcmN1bWZlcmVuY2UiLCJNYXRoIiwiUEkiLCJ0b0ZpeGVkIiwicm91bmQiLCJ0cmFuc2Zvcm0iLCJoZWlnaHQiLCJyb2xlIiwidmlld0JveCIsImN4IiwiY3kiLCJyIiwiZmlsbCIsInN0cm9rZVdpZHRoIiwiZ2V0RGlhbG9nVXRpbGl0eUNsYXNzIiwiRGlhbG9nQmFja2Ryb3AiLCJCYWNrZHJvcCIsIm92ZXJyaWRlcyIsImJhY2tkcm9wIiwiekluZGV4IiwiRGlhbG9nUm9vdCIsIk1vZGFsIiwicG9zaXRpb24iLCJEaWFsb2dDb250YWluZXIiLCJzY3JvbGwiLCJvdXRsaW5lIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwidGV4dEFsaWduIiwiY29udGVudCIsInZlcnRpY2FsQWxpZ24iLCJEaWFsb2dQYXBlciIsIlBhcGVyIiwicGFwZXIiLCJTdHJpbmciLCJtYXhXaWR0aCIsInBhcGVyRnVsbFdpZHRoIiwiZnVsbFNjcmVlbiIsInBhcGVyRnVsbFNjcmVlbiIsIm1hcmdpbiIsImZsZXhEaXJlY3Rpb24iLCJtYXhIZWlnaHQiLCJicmVha3BvaW50cyIsInVuaXQiLCJtYXgiLCJ2YWx1ZXMiLCJ4cyIsInBhcGVyU2Nyb2xsQm9keSIsImRvd24iLCJ1c2VUaGVtZSIsImRlZmF1bHRUcmFuc2l0aW9uRHVyYXRpb24iLCJlbnRlciIsImVudGVyaW5nU2NyZWVuIiwiZXhpdCIsImxlYXZpbmdTY3JlZW4iLCJhcmlhRGVzY3JpYmVkYnkiLCJhcmlhTGFiZWxsZWRieVByb3AiLCJCYWNrZHJvcENvbXBvbmVudCIsIkJhY2tkcm9wUHJvcHMiLCJkaXNhYmxlRXNjYXBlS2V5RG93biIsIm9uQmFja2Ryb3BDbGljayIsIm9uQ2xvc2UiLCJvcGVuIiwiUGFwZXJDb21wb25lbnQiLCJQYXBlclByb3BzIiwiVHJhbnNpdGlvbkNvbXBvbmVudCIsIkZhZGUiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJUcmFuc2l0aW9uUHJvcHMiLCJiYWNrZHJvcENsaWNrIiwiYXJpYUxhYmVsbGVkYnkiLCJ1c2VJZCIsImRpYWxvZ0NvbnRleHRWYWx1ZSIsInRpdGxlSWQiLCJjbG9zZUFmdGVyVHJhbnNpdGlvbiIsImNvbXBvbmVudHMiLCJjb21wb25lbnRzUHJvcHMiLCJhcyIsIm9uQ2xpY2siLCJldmVudCIsImFwcGVhciIsImluIiwidGltZW91dCIsIm9uTW91c2VEb3duIiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImVsZXZhdGlvbiIsIkRpYWxvZ0NvbnRleHQiLCJQcm92aWRlciIsImdldERpYWxvZ0FjdGlvbnNVdGlsaXR5Q2xhc3MiLCJEaWFsb2dBY3Rpb25zUm9vdCIsImRpc2FibGVTcGFjaW5nIiwic3BhY2luZyIsImZsZXgiLCJnZXREaWFsb2dDb250ZW50VXRpbGl0eUNsYXNzIiwiRGlhbG9nQ29udGVudFJvb3QiLCJkaXZpZGVycyIsIldlYmtpdE92ZXJmbG93U2Nyb2xsaW5nIiwiYm9yZGVyVG9wIiwiZGl2aWRlciIsImJvcmRlckJvdHRvbSIsImRpYWxvZ1RpdGxlQ2xhc3NlcyIsInBhZGRpbmdUb3AiLCJEaWFsb2dUaXRsZVJvb3QiLCJpZCIsImlkUHJvcCIsImdldERpYWxvZ1RpdGxlVXRpbGl0eUNsYXNzIiwiZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyIsIlR5cG9ncmFwaHlSb290IiwiYWxpZ24iLCJub1dyYXAiLCJndXR0ZXJCb3R0b20iLCJwYXJhZ3JhcGgiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsIndoaXRlU3BhY2UiLCJtYXJnaW5Cb3R0b20iLCJkZWZhdWx0VmFyaWFudE1hcHBpbmciLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJzdWJ0aXRsZTEiLCJzdWJ0aXRsZTIiLCJib2R5MSIsImJvZHkyIiwiaW5oZXJpdCIsImNvbG9yVHJhbnNmb3JtYXRpb25zIiwidGV4dFByaW1hcnkiLCJzZWNvbmRhcnkiLCJ0ZXh0U2Vjb25kYXJ5IiwiZXJyb3IiLCJ0aGVtZVByb3BzIiwidHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyIsImV4dGVuZFN4UHJvcCIsInZhcmlhbnRNYXBwaW5nIiwiQ29tcG9uZW50IiwiY3JlYXRlQm94Iiwib3B0aW9ucyIsIkJveFJvb3QiLCJfZXh0ZW5kU3hQcm9wIiwic3BsaXRQcm9wcyIsIl9wcm9wcyR0aGVtZSR1bnN0YWJsZSIsIl9wcm9wcyR0aGVtZSIsInN5c3RlbVByb3BzIiwiY29uZmlnIiwidW5zdGFibGVfc3hDb25maWciLCJzeCIsImluU3giLCJmaW5hbFN4IiwiaXNBcnJheSIsIm93bmVyRG9jdW1lbnQiLCJnbG9iYWxJZCIsIm1heWJlUmVhY3RVc2VJZCIsImlkT3ZlcnJpZGUiLCJyZWFjdElkIiwiZGVmYXVsdElkIiwic2V0RGVmYXVsdElkIiwidXNlR2xvYmFsSWQiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1261.01296c0f.js b/react_frontend/static/react_frontend/js/1261.01296c0f.js new file mode 100644 index 000000000..f60705952 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1261.01296c0f.js @@ -0,0 +1,30 @@ +/*! For license information please see 1261.01296c0f.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1261],{7437:(e,t,r)=>{"use strict";r.d(t,{AH:()=>l,i7:()=>u,mL:()=>c});var o=r(5684),n=r(6540),a=r(41),s=r(1287),i=r(6899),c=(r(4300),r(4146),(0,o.w)((function(e,t){var r=e.styles,c=(0,i.J)([r],void 0,n.useContext(o.T));if(!o.i){for(var l,u=c.name,p=c.styles,f=c.next;void 0!==f;)u+=" "+f.name,p+=f.styles,f=f.next;var m=!0===t.compat,y=t.insert("",{name:u,styles:p},t.sheet,m);return m?null:n.createElement("style",((l={})["data-emotion"]=t.key+"-global "+u,l.dangerouslySetInnerHTML={__html:y},l.nonce=t.sheet.nonce,l))}var h=n.useRef();return(0,s.i)((function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),o=!1,n=document.querySelector('style[data-emotion="'+e+" "+c.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==n&&(o=!0,n.setAttribute("data-emotion",e),r.hydrate([n])),h.current=[r,o],function(){r.flush()}}),[t]),(0,s.i)((function(){var e=h.current,r=e[0];if(e[1])e[1]=!1;else{if(void 0!==c.next&&(0,a.sk)(t,c.next,!0),r.tags.length){var o=r.tags[r.tags.length-1].nextElementSibling;r.before=o,r.flush()}t.insert("",c,r,!1)}}),[t,c.name]),null})));function l(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";r.d(t,{A:()=>C});var o=r(8587),n=r(8168),a=r(6540),s=r(53),i=r(5659),c=r(7437),l=r(8466),u=r(4409),p=r(7577),f=r(8413),m=r(1609);function y(e){return(0,m.A)("MuiCircularProgress",e)}(0,f.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var h=r(4848);const d=["className","color","disableShrink","size","style","thickness","value","variant"];let g,v,b,A,x=e=>e;const S=(0,c.i7)(g||(g=x` + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +`)),w=(0,c.i7)(v||(v=x` + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } +`)),k=(0,p.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,l.A)(r.color)}`]]}})((({ownerState:e,theme:t})=>(0,n.A)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,c.AH)(b||(b=x` + animation: ${0} 1.4s linear infinite; + `),S))),$=(0,p.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),P=(0,p.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,l.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,n.A)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,c.AH)(A||(A=x` + animation: ${0} 1.4s ease-in-out infinite; + `),w))),C=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiCircularProgress"}),{className:a,color:c="primary",disableShrink:p=!1,size:f=40,style:m,thickness:g=3.6,value:v=0,variant:b="indeterminate"}=r,A=(0,o.A)(r,d),x=(0,n.A)({},r,{color:c,disableShrink:p,size:f,thickness:g,value:v,variant:b}),S=(e=>{const{classes:t,variant:r,color:o,disableShrink:n}=e,a={root:["root",r,`color${(0,l.A)(o)}`],svg:["svg"],circle:["circle",`circle${(0,l.A)(r)}`,n&&"circleDisableShrink"]};return(0,i.A)(a,y,t)})(x),w={},C={},M={};if("determinate"===b){const e=2*Math.PI*((44-g)/2);w.strokeDasharray=e.toFixed(3),M["aria-valuenow"]=Math.round(v),w.strokeDashoffset=`${((100-v)/100*e).toFixed(3)}px`,C.transform="rotate(-90deg)"}return(0,h.jsx)(k,(0,n.A)({className:(0,s.A)(S.root,a),style:(0,n.A)({width:f,height:f},C,m),ownerState:x,ref:t,role:"progressbar"},M,A,{children:(0,h.jsx)($,{className:S.svg,ownerState:x,viewBox:"22 22 44 44",children:(0,h.jsx)(P,{className:S.circle,style:w,ownerState:x,cx:44,cy:44,r:(44-g)/2,fill:"none",strokeWidth:g})})}))}))},4073:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var o=r(8587),n=r(8168),a=r(6540),s=r(53),i=r(9599),c=r(5659),l=r(7577),u=r(4409),p=r(8466),f=r(8413),m=r(1609);function y(e){return(0,m.A)("MuiTypography",e)}(0,f.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var h=r(4848);const d=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],g=(0,l.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,p.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,n.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),v={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},b={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},A=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiTypography"}),a=(e=>b[e]||e)(r.color),l=(0,i.A)((0,n.A)({},r,{color:a})),{align:f="inherit",className:m,component:A,gutterBottom:x=!1,noWrap:S=!1,paragraph:w=!1,variant:k="body1",variantMapping:$=v}=l,P=(0,o.A)(l,d),C=(0,n.A)({},l,{align:f,color:a,className:m,component:A,gutterBottom:x,noWrap:S,paragraph:w,variant:k,variantMapping:$}),M=A||(w?"p":$[k]||v[k])||"span",T=(e=>{const{align:t,gutterBottom:r,noWrap:o,paragraph:n,variant:a,classes:s}=e,i={root:["root",a,"inherit"!==e.align&&`align${(0,p.A)(t)}`,r&&"gutterBottom",o&&"noWrap",n&&"paragraph"]};return(0,c.A)(i,y,s)})(C);return(0,h.jsx)(g,(0,n.A)({as:M,ref:t,ownerState:C,className:(0,s.A)(T.root,m)},P))}))},5687:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});const o=(0,r(7413).A)()},7413:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var o=r(8168),n=r(8587),a=r(6540),s=r(53),i=r(9359),c=r(3571),l=r(9599),u=r(2858),p=r(4848);const f=["className","component"];function m(e={}){const{themeId:t,defaultTheme:r,defaultClassName:m="MuiBox-root",generateClassName:y}=e,h=(0,i.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(c.A);return a.forwardRef((function(e,a){const i=(0,u.A)(r),c=(0,l.A)(e),{className:d,component:g="div"}=c,v=(0,n.A)(c,f);return(0,p.jsx)(h,(0,o.A)({as:g,ref:a,className:(0,s.A)(d,y?y(m):m),theme:t&&i[t]||i},v))}))}},9599:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var o=r(8168),n=r(8587),a=r(3272),s=r(4188);const i=["sx"],c=e=>{var t,r;const o={systemProps:{},otherProps:{}},n=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:s.A;return Object.keys(e).forEach((t=>{n[t]?o.systemProps[t]=e[t]:o.otherProps[t]=e[t]})),o};function l(e){const{sx:t}=e,r=(0,n.A)(e,i),{systemProps:s,otherProps:l}=c(r);let u;return u=Array.isArray(t)?[s,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,a.Q)(r)?(0,o.A)({},s,r):s}:(0,o.A)({},s,t),(0,o.A)({},l,{sx:u})}},1261:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var o=r(6540),n=r(5556),a=r.n(n),s=r(5687),i=r(4073),c=r(3357),l=r(4848);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r{"use strict";var o=r(3404),n={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function c(e){return o.isMemo(e)?s:i[e.$$typeof]||n}i[o.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[o.Memo]=s;var l=Object.defineProperty,u=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,y=Object.prototype;e.exports=function e(t,r,o){if("string"!=typeof r){if(y){var n=m(r);n&&n!==y&&e(t,n,o)}var s=u(r);p&&(s=s.concat(p(r)));for(var i=c(t),h=c(r),d=0;d{"use strict";var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,n=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,s=r?Symbol.for("react.strict_mode"):60108,i=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,l=r?Symbol.for("react.context"):60110,u=r?Symbol.for("react.async_mode"):60111,p=r?Symbol.for("react.concurrent_mode"):60111,f=r?Symbol.for("react.forward_ref"):60112,m=r?Symbol.for("react.suspense"):60113,y=r?Symbol.for("react.suspense_list"):60120,h=r?Symbol.for("react.memo"):60115,d=r?Symbol.for("react.lazy"):60116,g=r?Symbol.for("react.block"):60121,v=r?Symbol.for("react.fundamental"):60117,b=r?Symbol.for("react.responder"):60118,A=r?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case u:case p:case a:case i:case s:case m:return e;default:switch(e=e&&e.$$typeof){case l:case f:case d:case h:case c:return e;default:return t}}case n:return t}}}function S(e){return x(e)===p}t.AsyncMode=u,t.ConcurrentMode=p,t.ContextConsumer=l,t.ContextProvider=c,t.Element=o,t.ForwardRef=f,t.Fragment=a,t.Lazy=d,t.Memo=h,t.Portal=n,t.Profiler=i,t.StrictMode=s,t.Suspense=m,t.isAsyncMode=function(e){return S(e)||x(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return x(e)===l},t.isContextProvider=function(e){return x(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===a},t.isLazy=function(e){return x(e)===d},t.isMemo=function(e){return x(e)===h},t.isPortal=function(e){return x(e)===n},t.isProfiler=function(e){return x(e)===i},t.isStrictMode=function(e){return x(e)===s},t.isSuspense=function(e){return x(e)===m},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===i||e===s||e===m||e===y||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===h||e.$$typeof===c||e.$$typeof===l||e.$$typeof===f||e.$$typeof===v||e.$$typeof===b||e.$$typeof===A||e.$$typeof===g)},t.typeOf=x},3404:(e,t,r)=>{"use strict";e.exports=r(3072)},2694:(e,t,r)=>{"use strict";var o=r(6925);function n(){}function a(){}a.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,a,s){if(s!==o){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:n};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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dFIsUUFBUzhRLEVBQ1RxQixZQUFhckIsRUFDYnNCLFdBQVlkLEVBQ1pqUyxLQUFNeVIsRUFDTnVCLFNBQVVmLEVBQ1ZnQixNQUFPaEIsRUFDUGlCLFVBQVdqQixFQUNYa0IsTUFBT2xCLEVBQ1BtQixNQUFPbkIsRUFFUG9CLGVBQWdCOUIsRUFDaEJDLGtCQUFtQkYsR0FLckIsT0FGQWEsRUFBZXpHLFVBQVl5RyxFQUVwQkEsQ0FDVCxrQkMvQ0V6RSxFQUFPQyxRQUFVLEVBQVEsS0FBUiwwQkNObkJELEVBQU9DLFFBRm9CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQ2lyY3VsYXJQcm9ncmVzcy9jaXJjdWxhclByb2dyZXNzQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NpcmN1bGFyUHJvZ3Jlc3MvQ2lyY3VsYXJQcm9ncmVzcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvdHlwb2dyYXBoeUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L1R5cG9ncmFwaHkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL0JveC9Cb3guanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZUJveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L2V4dGVuZFN4UHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL3Zpc3VhbGl6ZXJzL0NvbnNvbGVWaWV3ZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvZGlzdC9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy5janMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9ob2lzdC1ub24tcmVhY3Qtc3RhdGljcy9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoIGFzIGhhc093blByb3BlcnR5LCBFIGFzIEVtb3Rpb24sIGMgYXMgY3JlYXRlRW1vdGlvblByb3BzLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIFQgYXMgVGhlbWVDb250ZXh0LCBpIGFzIGlzQnJvd3NlciQxIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuZXhwb3J0IHsgQyBhcyBDYWNoZVByb3ZpZGVyLCBUIGFzIFRoZW1lQ29udGV4dCwgYSBhcyBUaGVtZVByb3ZpZGVyLCBfIGFzIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSwgdSBhcyB1c2VUaGVtZSwgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBiIGFzIHdpdGhUaGVtZSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxudmFyIHBrZyA9IHtcblx0bmFtZTogXCJAZW1vdGlvbi9yZWFjdFwiLFxuXHR2ZXJzaW9uOiBcIjExLjExLjFcIixcblx0bWFpbjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCIsXG5cdG1vZHVsZTogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCIsXG5cdGJyb3dzZXI6IHtcblx0XHRcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCJcblx0fSxcblx0ZXhwb3J0czoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0Lndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9faXNvbGF0ZWQtaG5yc1wiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL3BhY2thZ2UuanNvblwiOiBcIi4vcGFja2FnZS5qc29uXCIsXG5cdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdH1cblx0fSxcblx0dHlwZXM6IFwidHlwZXMvaW5kZXguZC50c1wiLFxuXHRmaWxlczogW1xuXHRcdFwic3JjXCIsXG5cdFx0XCJkaXN0XCIsXG5cdFx0XCJqc3gtcnVudGltZVwiLFxuXHRcdFwianN4LWRldi1ydW50aW1lXCIsXG5cdFx0XCJfaXNvbGF0ZWQtaG5yc1wiLFxuXHRcdFwidHlwZXMvKi5kLnRzXCIsXG5cdFx0XCJtYWNyby4qXCJcblx0XSxcblx0c2lkZUVmZmVjdHM6IGZhbHNlLFxuXHRhdXRob3I6IFwiRW1vdGlvbiBDb250cmlidXRvcnNcIixcblx0bGljZW5zZTogXCJNSVRcIixcblx0c2NyaXB0czoge1xuXHRcdFwidGVzdDp0eXBlc2NyaXB0XCI6IFwiZHRzbGludCB0eXBlc1wiXG5cdH0sXG5cdGRlcGVuZGVuY2llczoge1xuXHRcdFwiQGJhYmVsL3J1bnRpbWVcIjogXCJeNy4xOC4zXCIsXG5cdFx0XCJAZW1vdGlvbi9iYWJlbC1wbHVnaW5cIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY2FjaGVcIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc2VyaWFsaXplXCI6IFwiXjEuMS4yXCIsXG5cdFx0XCJAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrc1wiOiBcIl4xLjAuMVwiLFxuXHRcdFwiQGVtb3Rpb24vdXRpbHNcIjogXCJeMS4yLjFcIixcblx0XHRcIkBlbW90aW9uL3dlYWstbWVtb2l6ZVwiOiBcIl4wLjMuMVwiLFxuXHRcdFwiaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3NcIjogXCJeMy4zLjFcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzOiB7XG5cdFx0cmVhY3Q6IFwiPj0xNi44LjBcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzTWV0YToge1xuXHRcdFwiQHR5cGVzL3JlYWN0XCI6IHtcblx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0fVxuXHR9LFxuXHRkZXZEZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBkZWZpbml0ZWx5dHlwZWQvZHRzbGludFwiOiBcIjAuMC4xMTJcIixcblx0XHRcIkBlbW90aW9uL2Nzc1wiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2Nzcy1wcmV0dGlmaWVyXCI6IFwiMS4xLjNcIixcblx0XHRcIkBlbW90aW9uL3NlcnZlclwiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3N0eWxlZFwiOiBcIjExLjExLjBcIixcblx0XHRcImh0bWwtdGFnLW5hbWVzXCI6IFwiXjEuMS4yXCIsXG5cdFx0cmVhY3Q6IFwiMTYuMTQuMFwiLFxuXHRcdFwic3ZnLXRhZy1uYW1lc1wiOiBcIl4xLjEuMVwiLFxuXHRcdHR5cGVzY3JpcHQ6IFwiXjQuNS41XCJcblx0fSxcblx0cmVwb3NpdG9yeTogXCJodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdFwiLFxuXHRwdWJsaXNoQ29uZmlnOiB7XG5cdFx0YWNjZXNzOiBcInB1YmxpY1wiXG5cdH0sXG5cdFwidW1kOm1haW5cIjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QudW1kLm1pbi5qc1wiLFxuXHRwcmVjb25zdHJ1Y3Q6IHtcblx0XHRlbnRyeXBvaW50czogW1xuXHRcdFx0XCIuL2luZGV4LmpzXCIsXG5cdFx0XHRcIi4vanN4LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9faXNvbGF0ZWQtaG5ycy5qc1wiXG5cdFx0XSxcblx0XHR1bWROYW1lOiBcImVtb3Rpb25SZWFjdFwiLFxuXHRcdGV4cG9ydHM6IHtcblx0XHRcdGVudkNvbmRpdGlvbnM6IFtcblx0XHRcdFx0XCJicm93c2VyXCIsXG5cdFx0XHRcdFwid29ya2VyXCJcblx0XHRcdF0sXG5cdFx0XHRleHRyYToge1xuXHRcdFx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbnZhciBqc3ggPSBmdW5jdGlvbiBqc3godHlwZSwgcHJvcHMpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgaWYgKHByb3BzID09IG51bGwgfHwgIWhhc093blByb3BlcnR5LmNhbGwocHJvcHMsICdjc3MnKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICB9XG5cbiAgdmFyIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSA9IG5ldyBBcnJheShhcmdzTGVuZ3RoKTtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzBdID0gRW1vdGlvbjtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzFdID0gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3NMZW5ndGg7IGkrKykge1xuICAgIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVtpXSA9IGFyZ3NbaV07XG4gIH0gLy8gJEZsb3dGaXhNZVxuXG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbnZhciB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSBmYWxzZTsgLy8gbWFpbnRhaW4gcGxhY2Ugb3ZlciByZXJlbmRlcnMuXG4vLyBpbml0aWFsIHJlbmRlciBmcm9tIGJyb3dzZXIsIGluc2VydEJlZm9yZSBjb250ZXh0LnNoZWV0LnRhZ3NbMF0gb3IgaWYgYSBzdHlsZSBoYXNuJ3QgYmVlbiBpbnNlcnRlZCB0aGVyZSB5ZXQsIGFwcGVuZENoaWxkXG4vLyBpbml0aWFsIGNsaWVudC1zaWRlIHJlbmRlciBmcm9tIFNTUiwgdXNlIHBsYWNlIG9mIGh5ZHJhdGluZyB0YWdcblxudmFyIEdsb2JhbCA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsICYmICggLy8gY2hlY2sgZm9yIGNsYXNzTmFtZSBhcyB3ZWxsIHNpbmNlIHRoZSB1c2VyIGlzXG4gIC8vIHByb2JhYmx5IHVzaW5nIHRoZSBjdXN0b20gY3JlYXRlRWxlbWVudCB3aGljaFxuICAvLyBtZWFucyBpdCB3aWxsIGJlIHR1cm5lZCBpbnRvIGEgY2xhc3NOYW1lIHByb3BcbiAgLy8gJEZsb3dGaXhNZSBJIGRvbid0IHJlYWxseSB3YW50IHRvIGFkZCBpdCB0byB0aGUgdHlwZSBzaW5jZSBpdCBzaG91bGRuJ3QgYmUgdXNlZFxuICBwcm9wcy5jbGFzc05hbWUgfHwgcHJvcHMuY3NzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgY3NzIHByb3Agb24gR2xvYmFsLCBkaWQgeW91IG1lYW4gdG8gdXNlIHRoZSBzdHlsZXMgcHJvcCBpbnN0ZWFkP1wiKTtcbiAgICB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBpZiAoIWlzQnJvd3NlciQxKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgc2VyaWFsaXplZE5hbWVzID0gc2VyaWFsaXplZC5uYW1lO1xuICAgIHZhciBzZXJpYWxpemVkU3R5bGVzID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gICAgdmFyIG5leHQgPSBzZXJpYWxpemVkLm5leHQ7XG5cbiAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXJpYWxpemVkTmFtZXMgKz0gJyAnICsgbmV4dC5uYW1lO1xuICAgICAgc2VyaWFsaXplZFN0eWxlcyArPSBuZXh0LnN0eWxlcztcbiAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZENhY2hlID0gY2FjaGUuY29tcGF0ID09PSB0cnVlO1xuICAgIHZhciBydWxlcyA9IGNhY2hlLmluc2VydChcIlwiLCB7XG4gICAgICBuYW1lOiBzZXJpYWxpemVkTmFtZXMsXG4gICAgICBzdHlsZXM6IHNlcmlhbGl6ZWRTdHlsZXNcbiAgICB9LCBjYWNoZS5zaGVldCwgc2hvdWxkQ2FjaGUpO1xuXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCAoX3JlZiA9IHt9LCBfcmVmW1wiZGF0YS1lbW90aW9uXCJdID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsIFwiICsgc2VyaWFsaXplZE5hbWVzLCBfcmVmLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgX19odG1sOiBydWxlc1xuICAgIH0sIF9yZWYubm9uY2UgPSBjYWNoZS5zaGVldC5ub25jZSwgX3JlZikpO1xuICB9IC8vIHllcywgaSBrbm93IHRoZXNlIGhvb2tzIGFyZSB1c2VkIGNvbmRpdGlvbmFsbHlcbiAgLy8gYnV0IGl0IGlzIGJhc2VkIG9uIGEgY29uc3RhbnQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZSBhdCBydW50aW1lXG4gIC8vIGl0J3MgZWZmZWN0aXZlbHkgbGlrZSBoYXZpbmcgdHdvIGltcGxlbWVudGF0aW9ucyBhbmQgc3dpdGNoaW5nIHRoZW0gb3V0XG4gIC8vIHNvIGl0J3Mgbm90IGFjdHVhbGx5IGJyZWFraW5nIGFueXRoaW5nXG5cblxuICB2YXIgc2hlZXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5ID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsXCI7IC8vIHVzZSBjYXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vaXNzdWVzLzI2NzVcblxuICAgIHZhciBzaGVldCA9IG5ldyBjYWNoZS5zaGVldC5jb25zdHJ1Y3Rvcih7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIG5vbmNlOiBjYWNoZS5zaGVldC5ub25jZSxcbiAgICAgIGNvbnRhaW5lcjogY2FjaGUuc2hlZXQuY29udGFpbmVyLFxuICAgICAgc3BlZWR5OiBjYWNoZS5zaGVldC5pc1NwZWVkeVxuICAgIH0pO1xuICAgIHZhciByZWh5ZHJhdGluZyA9IGZhbHNlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJzdHlsZVtkYXRhLWVtb3Rpb249XFxcIlwiICsga2V5ICsgXCIgXCIgKyBzZXJpYWxpemVkLm5hbWUgKyBcIlxcXCJdXCIpO1xuXG4gICAgaWYgKGNhY2hlLnNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICBzaGVldC5iZWZvcmUgPSBjYWNoZS5zaGVldC50YWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICByZWh5ZHJhdGluZyA9IHRydWU7IC8vIGNsZWFyIHRoZSBoYXNoIHNvIHRoaXMgbm9kZSB3b24ndCBiZSByZWNvZ25pemFibGUgYXMgcmVoeWRyYXRhYmxlIGJ5IG90aGVyIDxHbG9iYWwvPnNcblxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIGtleSk7XG4gICAgICBzaGVldC5oeWRyYXRlKFtub2RlXSk7XG4gICAgfVxuXG4gICAgc2hlZXRSZWYuY3VycmVudCA9IFtzaGVldCwgcmVoeWRyYXRpbmddO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH07XG4gIH0sIFtjYWNoZV0pO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldFJlZkN1cnJlbnQgPSBzaGVldFJlZi5jdXJyZW50O1xuICAgIHZhciBzaGVldCA9IHNoZWV0UmVmQ3VycmVudFswXSxcbiAgICAgICAgcmVoeWRyYXRpbmcgPSBzaGVldFJlZkN1cnJlbnRbMV07XG5cbiAgICBpZiAocmVoeWRyYXRpbmcpIHtcbiAgICAgIHNoZWV0UmVmQ3VycmVudFsxXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZXJpYWxpemVkLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5zZXJ0IGtleWZyYW1lc1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLm5leHQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChzaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgLy8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0IHRoZW4gaXQgd2lsbCBiZSBudWxsIHNvIHRoZSBzdHlsZSBlbGVtZW50IHdpbGwgYmUgYXBwZW5kZWRcbiAgICAgIHZhciBlbGVtZW50ID0gc2hlZXQudGFnc1tzaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZztcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGVsZW1lbnQ7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH1cblxuICAgIGNhY2hlLmluc2VydChcIlwiLCBzZXJpYWxpemVkLCBzaGVldCwgZmFsc2UpO1xuICB9LCBbY2FjaGUsIHNlcmlhbGl6ZWQubmFtZV0pO1xuICByZXR1cm4gbnVsbDtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBHbG9iYWwuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkdsb2JhbCc7XG59XG5cbmZ1bmN0aW9uIGNzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTdHlsZXMoYXJncyk7XG59XG5cbnZhciBrZXlmcmFtZXMgPSBmdW5jdGlvbiBrZXlmcmFtZXMoKSB7XG4gIHZhciBpbnNlcnRhYmxlID0gY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgdmFyIG5hbWUgPSBcImFuaW1hdGlvbi1cIiArIGluc2VydGFibGUubmFtZTsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBzdHlsZXM6IFwiQGtleWZyYW1lcyBcIiArIG5hbWUgKyBcIntcIiArIGluc2VydGFibGUuc3R5bGVzICsgXCJ9XCIsXG4gICAgYW5pbTogMSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJfRU1PX1wiICsgdGhpcy5uYW1lICsgXCJfXCIgKyB0aGlzLnN0eWxlcyArIFwiX0VNT19cIjtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uIGNsYXNzbmFtZXMoYXJncykge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFyZy5zdHlsZXMgIT09IHVuZGVmaW5lZCAmJiBhcmcubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdSBoYXZlIHBhc3NlZCBzdHlsZXMgY3JlYXRlZCB3aXRoIGBjc3NgIGZyb20gYEBlbW90aW9uL3JlYWN0YCBwYWNrYWdlIHRvIHRoZSBgY3hgLlxcbicgKyAnYGN4YCBpcyBtZWFudCB0byBjb21wb3NlIGNsYXNzIG5hbWVzIChzdHJpbmdzKSBzbyB5b3Ugc2hvdWxkIGNvbnZlcnQgdGhvc2Ugc3R5bGVzIHRvIGEgY2xhc3MgbmFtZSBieSBwYXNzaW5nIHRoZW0gdG8gdGhlIGBjc3NgIHJlY2VpdmVkIGZyb20gPENsYXNzTmFtZXMvPiBjb21wb25lbnQuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvQWRkID0gJyc7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gYXJnKSB7XG4gICAgICAgICAgICAgIGlmIChhcmdba10gJiYgaykge1xuICAgICAgICAgICAgICAgIHRvQWRkICYmICh0b0FkZCArPSAnICcpO1xuICAgICAgICAgICAgICAgIHRvQWRkICs9IGs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgdG9BZGQgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9BZGQpIHtcbiAgICAgIGNscyAmJiAoY2xzICs9ICcgJyk7XG4gICAgICBjbHMgKz0gdG9BZGQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNscztcbn07XG5cbmZ1bmN0aW9uIG1lcmdlKHJlZ2lzdGVyZWQsIGNzcywgY2xhc3NOYW1lKSB7XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW107XG4gIHZhciByYXdDbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZSk7XG5cbiAgaWYgKHJlZ2lzdGVyZWRTdHlsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICByZXR1cm4gcmF3Q2xhc3NOYW1lICsgY3NzKHJlZ2lzdGVyZWRTdHlsZXMpO1xufVxuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWRBcnIgPSBfcmVmLnNlcmlhbGl6ZWRBcnI7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWRBcnJbaV0sIGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIENsYXNzTmFtZXMgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgdmFyIGhhc1JlbmRlcmVkID0gZmFsc2U7XG4gIHZhciBzZXJpYWxpemVkQXJyID0gW107XG5cbiAgdmFyIGNzcyA9IGZ1bmN0aW9uIGNzcygpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjc3MgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIGNhY2hlLnJlZ2lzdGVyZWQpO1xuICAgIHNlcmlhbGl6ZWRBcnIucHVzaChzZXJpYWxpemVkKTsgLy8gcmVnaXN0cmF0aW9uIGhhcyB0byBoYXBwZW4gaGVyZSBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWlnaHQgZ2V0IGNvbnN1bWVkIGJ5IGBjeGBcblxuICAgIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB9O1xuXG4gIHZhciBjeCA9IGZ1bmN0aW9uIGN4KCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2N4IGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZShjYWNoZS5yZWdpc3RlcmVkLCBjc3MsIGNsYXNzbmFtZXMoYXJncykpO1xuICB9O1xuXG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNzczogY3NzLFxuICAgIGN4OiBjeCxcbiAgICB0aGVtZTogUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG4gIH07XG4gIHZhciBlbGUgPSBwcm9wcy5jaGlsZHJlbihjb250ZW50KTtcbiAgaGFzUmVuZGVyZWQgPSB0cnVlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkQXJyOiBzZXJpYWxpemVkQXJyXG4gIH0pLCBlbGUpO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIENsYXNzTmFtZXMuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkNsYXNzTmFtZXMnO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaXNCcm93c2VyID0gXCJvYmplY3RcIiAhPT0gJ3VuZGVmaW5lZCc7IC8vICMxNzI3LCAjMjkwNSBmb3Igc29tZSByZWFzb24gSmVzdCBhbmQgVml0ZXN0IGV2YWx1YXRlIG1vZHVsZXMgdHdpY2UgaWYgc29tZSBjb25zdW1pbmcgbW9kdWxlIGdldHMgbW9ja2VkXG5cbiAgdmFyIGlzVGVzdEVudiA9IHR5cGVvZiBqZXN0ICE9PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgdmkgIT09ICd1bmRlZmluZWQnO1xuXG4gIGlmIChpc0Jyb3dzZXIgJiYgIWlzVGVzdEVudikge1xuICAgIC8vIGdsb2JhbFRoaXMgaGFzIHdpZGUgYnJvd3NlciBzdXBwb3J0IC0gaHR0cHM6Ly9jYW5pdXNlLmNvbS8/c2VhcmNoPWdsb2JhbFRoaXMsIE5vZGUuanMgMTIgYW5kIGxhdGVyXG4gICAgdmFyIGdsb2JhbENvbnRleHQgPSAvLyAkRmxvd0lnbm9yZVxuICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgIDogaXNCcm93c2VyID8gd2luZG93IDogZ2xvYmFsO1xuICAgIHZhciBnbG9iYWxLZXkgPSBcIl9fRU1PVElPTl9SRUFDVF9cIiArIHBrZy52ZXJzaW9uLnNwbGl0KCcuJylbMF0gKyBcIl9fXCI7XG5cbiAgICBpZiAoZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBhcmUgbG9hZGluZyBAZW1vdGlvbi9yZWFjdCB3aGVuIGl0IGlzIGFscmVhZHkgbG9hZGVkLiBSdW5uaW5nICcgKyAnbXVsdGlwbGUgaW5zdGFuY2VzIG1heSBjYXVzZSBwcm9ibGVtcy4gVGhpcyBjYW4gaGFwcGVuIGlmIG11bHRpcGxlICcgKyAndmVyc2lvbnMgYXJlIHVzZWQsIG9yIGlmIG11bHRpcGxlIGJ1aWxkcyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFyZSAnICsgJ3VzZWQuJyk7XG4gICAgfVxuXG4gICAgZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldID0gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgeyBDbGFzc05hbWVzLCBHbG9iYWwsIGpzeCBhcyBjcmVhdGVFbGVtZW50LCBjc3MsIGpzeCwga2V5ZnJhbWVzIH07XG4iLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQ2lyY3VsYXJQcm9ncmVzcycsIHNsb3QpO1xufVxuY29uc3QgY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlDaXJjdWxhclByb2dyZXNzJywgWydyb290JywgJ2RldGVybWluYXRlJywgJ2luZGV0ZXJtaW5hdGUnLCAnY29sb3JQcmltYXJ5JywgJ2NvbG9yU2Vjb25kYXJ5JywgJ3N2ZycsICdjaXJjbGUnLCAnY2lyY2xlRGV0ZXJtaW5hdGUnLCAnY2lyY2xlSW5kZXRlcm1pbmF0ZScsICdjaXJjbGVEaXNhYmxlU2hyaW5rJ10pO1xuZXhwb3J0IGRlZmF1bHQgY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJkaXNhYmxlU2hyaW5rXCIsIFwic2l6ZVwiLCBcInN0eWxlXCIsIFwidGhpY2tuZXNzXCIsIFwidmFsdWVcIiwgXCJ2YXJpYW50XCJdO1xubGV0IF8gPSB0ID0+IHQsXG4gIF90LFxuICBfdDIsXG4gIF90MyxcbiAgX3Q0O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGtleWZyYW1lcywgY3NzIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyB9IGZyb20gJy4vY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IFNJWkUgPSA0NDtcbmNvbnN0IGNpcmN1bGFyUm90YXRlS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QgfHwgKF90ID0gX2BcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxuYCkpO1xuY29uc3QgY2lyY3VsYXJEYXNoS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QyIHx8IChfdDIgPSBfYFxuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMXB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcbiAgfVxuXG4gIDUwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMTAwcHgsIDIwMHB4O1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMTVweDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTEyNXB4O1xuICB9XG5gKSk7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICB2YXJpYW50LFxuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmtcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YF0sXG4gICAgc3ZnOiBbJ3N2ZyddLFxuICAgIGNpcmNsZTogWydjaXJjbGUnLCBgY2lyY2xlJHtjYXBpdGFsaXplKHZhcmlhbnQpfWAsIGRpc2FibGVTaHJpbmsgJiYgJ2NpcmNsZURpc2FibGVTaHJpbmsnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQ2lyY3VsYXJQcm9ncmVzcycsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snXG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdkZXRlcm1pbmF0ZScgJiYge1xuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ3RyYW5zZm9ybScpXG59LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmIGNzcyhfdDMgfHwgKF90MyA9IF9gXG4gICAgICBhbmltYXRpb246ICR7MH0gMS40cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgYCksIGNpcmN1bGFyUm90YXRlS2V5ZnJhbWUpKTtcbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NTVkcgPSBzdHlsZWQoJ3N2ZycsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnU3ZnJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMuc3ZnXG59KSh7XG4gIGRpc3BsYXk6ICdibG9jaycgLy8gS2VlcHMgdGhlIHByb2dyZXNzIGNlbnRlcmVkXG59KTtcblxuY29uc3QgQ2lyY3VsYXJQcm9ncmVzc0NpcmNsZSA9IHN0eWxlZCgnY2lyY2xlJywge1xuICBuYW1lOiAnTXVpQ2lyY3VsYXJQcm9ncmVzcycsXG4gIHNsb3Q6ICdDaXJjbGUnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmNpcmNsZSwgc3R5bGVzW2BjaXJjbGUke2NhcGl0YWxpemUob3duZXJTdGF0ZS52YXJpYW50KX1gXSwgb3duZXJTdGF0ZS5kaXNhYmxlU2hyaW5rICYmIHN0eWxlcy5jaXJjbGVEaXNhYmxlU2hyaW5rXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZSxcbiAgdGhlbWVcbn0pID0+IF9leHRlbmRzKHtcbiAgc3Ryb2tlOiAnY3VycmVudENvbG9yJ1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnICYmIHtcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdzdHJva2UtZGFzaG9mZnNldCcpXG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdpbmRldGVybWluYXRlJyAmJiB7XG4gIC8vIFNvbWUgZGVmYXVsdCB2YWx1ZSB0aGF0IGxvb2tzIGZpbmUgd2FpdGluZyBmb3IgdGhlIGFuaW1hdGlvbiB0byBraWNrcyBpbi5cbiAgc3Ryb2tlRGFzaGFycmF5OiAnODBweCwgMjAwcHgnLFxuICBzdHJva2VEYXNob2Zmc2V0OiAwIC8vIEFkZCB0aGUgdW5pdCB0byBmaXggYSBFZGdlIDE2IGFuZCBiZWxvdyBidWcuXG59KSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYgIW93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBjc3MoX3Q0IHx8IChfdDQgPSBfYFxuICAgICAgYW5pbWF0aW9uOiAkezB9IDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG4gICAgYCksIGNpcmN1bGFyRGFzaEtleWZyYW1lKSk7XG5cbi8qKlxuICogIyMgQVJJQVxuICpcbiAqIElmIHRoZSBwcm9ncmVzcyBiYXIgaXMgZGVzY3JpYmluZyB0aGUgbG9hZGluZyBwcm9ncmVzcyBvZiBhIHBhcnRpY3VsYXIgcmVnaW9uIG9mIGEgcGFnZSxcbiAqIHlvdSBzaG91bGQgdXNlIGBhcmlhLWRlc2NyaWJlZGJ5YCB0byBwb2ludCB0byB0aGUgcHJvZ3Jlc3MgYmFyLCBhbmQgc2V0IHRoZSBgYXJpYS1idXN5YFxuICogYXR0cmlidXRlIHRvIGB0cnVlYCBvbiB0aGF0IHJlZ2lvbiB1bnRpbCBpdCBoYXMgZmluaXNoZWQgbG9hZGluZy5cbiAqL1xuY29uc3QgQ2lyY3VsYXJQcm9ncmVzcyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENpcmN1bGFyUHJvZ3Jlc3MoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgICAgIGRpc2FibGVTaHJpbmsgPSBmYWxzZSxcbiAgICAgIHNpemUgPSA0MCxcbiAgICAgIHN0eWxlLFxuICAgICAgdGhpY2tuZXNzID0gMy42LFxuICAgICAgdmFsdWUgPSAwLFxuICAgICAgdmFyaWFudCA9ICdpbmRldGVybWluYXRlJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgZGlzYWJsZVNocmluayxcbiAgICBzaXplLFxuICAgIHRoaWNrbmVzcyxcbiAgICB2YWx1ZSxcbiAgICB2YXJpYW50XG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IGNpcmNsZVN0eWxlID0ge307XG4gIGNvbnN0IHJvb3RTdHlsZSA9IHt9O1xuICBjb25zdCByb290UHJvcHMgPSB7fTtcbiAgaWYgKHZhcmlhbnQgPT09ICdkZXRlcm1pbmF0ZScpIHtcbiAgICBjb25zdCBjaXJjdW1mZXJlbmNlID0gMiAqIE1hdGguUEkgKiAoKFNJWkUgLSB0aGlja25lc3MpIC8gMik7XG4gICAgY2lyY2xlU3R5bGUuc3Ryb2tlRGFzaGFycmF5ID0gY2lyY3VtZmVyZW5jZS50b0ZpeGVkKDMpO1xuICAgIHJvb3RQcm9wc1snYXJpYS12YWx1ZW5vdyddID0gTWF0aC5yb3VuZCh2YWx1ZSk7XG4gICAgY2lyY2xlU3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IGAkeygoMTAwIC0gdmFsdWUpIC8gMTAwICogY2lyY3VtZmVyZW5jZSkudG9GaXhlZCgzKX1weGA7XG4gICAgcm9vdFN0eWxlLnRyYW5zZm9ybSA9ICdyb3RhdGUoLTkwZGVnKSc7XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogX2V4dGVuZHMoe1xuICAgICAgd2lkdGg6IHNpemUsXG4gICAgICBoZWlnaHQ6IHNpemVcbiAgICB9LCByb290U3R5bGUsIHN0eWxlKSxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIHJlZjogcmVmLFxuICAgIHJvbGU6IFwicHJvZ3Jlc3NiYXJcIlxuICB9LCByb290UHJvcHMsIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NTVkcsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5zdmcsXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgdmlld0JveDogYCR7U0laRSAvIDJ9ICR7U0laRSAvIDJ9ICR7U0laRX0gJHtTSVpFfWAsXG4gICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQ2lyY3VsYXJQcm9ncmVzc0NpcmNsZSwge1xuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMuY2lyY2xlLFxuICAgICAgICBzdHlsZTogY2lyY2xlU3R5bGUsXG4gICAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICAgIGN4OiBTSVpFLFxuICAgICAgICBjeTogU0laRSxcbiAgICAgICAgcjogKFNJWkUgLSB0aGlja25lc3MpIC8gMixcbiAgICAgICAgZmlsbDogXCJub25lXCIsXG4gICAgICAgIHN0cm9rZVdpZHRoOiB0aGlja25lc3NcbiAgICAgIH0pXG4gICAgfSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDaXJjdWxhclByb2dyZXNzLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzaHJpbmsgYW5pbWF0aW9uIGlzIGRpc2FibGVkLlxuICAgKiBUaGlzIG9ubHkgd29ya3MgaWYgdmFyaWFudCBpcyBgaW5kZXRlcm1pbmF0ZWAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlU2hyaW5rOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMuYm9vbCwgcHJvcHMgPT4ge1xuICAgIGlmIChwcm9wcy5kaXNhYmxlU2hyaW5rICYmIHByb3BzLnZhcmlhbnQgJiYgcHJvcHMudmFyaWFudCAhPT0gJ2luZGV0ZXJtaW5hdGUnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdNVUk6IFlvdSBoYXZlIHByb3ZpZGVkIHRoZSBgZGlzYWJsZVNocmlua2AgcHJvcCAnICsgJ3dpdGggYSB2YXJpYW50IG90aGVyIHRoYW4gYGluZGV0ZXJtaW5hdGVgLiBUaGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuJyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIElmIHVzaW5nIGEgbnVtYmVyLCB0aGUgcGl4ZWwgdW5pdCBpcyBhc3N1bWVkLlxuICAgKiBJZiB1c2luZyBhIHN0cmluZywgeW91IG5lZWQgdG8gcHJvdmlkZSB0aGUgQ1NTIHVuaXQsIGUuZyAnM3JlbScuXG4gICAqIEBkZWZhdWx0IDQwXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB0aGlja25lc3Mgb2YgdGhlIGNpcmNsZS5cbiAgICogQGRlZmF1bHQgMy42XG4gICAqL1xuICB0aGlja25lc3M6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGluZGljYXRvciBmb3IgdGhlIGRldGVybWluYXRlIHZhcmlhbnQuXG4gICAqIFZhbHVlIGJldHdlZW4gMCBhbmQgMTAwLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogVXNlIGluZGV0ZXJtaW5hdGUgd2hlbiB0aGVyZSBpcyBubyBwcm9ncmVzcyB2YWx1ZS5cbiAgICogQGRlZmF1bHQgJ2luZGV0ZXJtaW5hdGUnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydkZXRlcm1pbmF0ZScsICdpbmRldGVybWluYXRlJ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQ2lyY3VsYXJQcm9ncmVzczsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpVHlwb2dyYXBoeScsIHNsb3QpO1xufVxuY29uc3QgdHlwb2dyYXBoeUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlUeXBvZ3JhcGh5JywgWydyb290JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ3N1YnRpdGxlMScsICdzdWJ0aXRsZTInLCAnYm9keTEnLCAnYm9keTInLCAnaW5oZXJpdCcsICdidXR0b24nLCAnY2FwdGlvbicsICdvdmVybGluZScsICdhbGlnbkxlZnQnLCAnYWxpZ25SaWdodCcsICdhbGlnbkNlbnRlcicsICdhbGlnbkp1c3RpZnknLCAnbm9XcmFwJywgJ2d1dHRlckJvdHRvbScsICdwYXJhZ3JhcGgnXSk7XG5leHBvcnQgZGVmYXVsdCB0eXBvZ3JhcGh5Q2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhbGlnblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiLCBcImd1dHRlckJvdHRvbVwiLCBcIm5vV3JhcFwiLCBcInBhcmFncmFwaFwiLCBcInZhcmlhbnRcIiwgXCJ2YXJpYW50TWFwcGluZ1wiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2V4dGVuZFN4UHJvcCBhcyBleHRlbmRTeFByb3AgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgeyBnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzIH0gZnJvbSAnLi90eXBvZ3JhcGh5Q2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGFsaWduLFxuICAgIGd1dHRlckJvdHRvbSxcbiAgICBub1dyYXAsXG4gICAgcGFyYWdyYXBoLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgb3duZXJTdGF0ZS5hbGlnbiAhPT0gJ2luaGVyaXQnICYmIGBhbGlnbiR7Y2FwaXRhbGl6ZShhbGlnbil9YCwgZ3V0dGVyQm90dG9tICYmICdndXR0ZXJCb3R0b20nLCBub1dyYXAgJiYgJ25vV3JhcCcsIHBhcmFncmFwaCAmJiAncGFyYWdyYXBoJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5leHBvcnQgY29uc3QgVHlwb2dyYXBoeVJvb3QgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlUeXBvZ3JhcGh5JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUudmFyaWFudCAmJiBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgb3duZXJTdGF0ZS5hbGlnbiAhPT0gJ2luaGVyaXQnICYmIHN0eWxlc1tgYWxpZ24ke2NhcGl0YWxpemUob3duZXJTdGF0ZS5hbGlnbil9YF0sIG93bmVyU3RhdGUubm9XcmFwICYmIHN0eWxlcy5ub1dyYXAsIG93bmVyU3RhdGUuZ3V0dGVyQm90dG9tICYmIHN0eWxlcy5ndXR0ZXJCb3R0b20sIG93bmVyU3RhdGUucGFyYWdyYXBoICYmIHN0eWxlcy5wYXJhZ3JhcGhdO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBtYXJnaW46IDBcbn0sIG93bmVyU3RhdGUudmFyaWFudCAmJiB0aGVtZS50eXBvZ3JhcGh5W293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiB7XG4gIHRleHRBbGlnbjogb3duZXJTdGF0ZS5hbGlnblxufSwgb3duZXJTdGF0ZS5ub1dyYXAgJiYge1xuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCdcbn0sIG93bmVyU3RhdGUuZ3V0dGVyQm90dG9tICYmIHtcbiAgbWFyZ2luQm90dG9tOiAnMC4zNWVtJ1xufSwgb3duZXJTdGF0ZS5wYXJhZ3JhcGggJiYge1xuICBtYXJnaW5Cb3R0b206IDE2XG59KSk7XG5jb25zdCBkZWZhdWx0VmFyaWFudE1hcHBpbmcgPSB7XG4gIGgxOiAnaDEnLFxuICBoMjogJ2gyJyxcbiAgaDM6ICdoMycsXG4gIGg0OiAnaDQnLFxuICBoNTogJ2g1JyxcbiAgaDY6ICdoNicsXG4gIHN1YnRpdGxlMTogJ2g2JyxcbiAgc3VidGl0bGUyOiAnaDYnLFxuICBib2R5MTogJ3AnLFxuICBib2R5MjogJ3AnLFxuICBpbmhlcml0OiAncCdcbn07XG5cbi8vIFRPRE8gdjY6IGRlcHJlY2F0ZSB0aGVzZSBjb2xvciB2YWx1ZXMgaW4gdjUueCBhbmQgcmVtb3ZlIHRoZSB0cmFuc2Zvcm1hdGlvbiBpbiB2NlxuY29uc3QgY29sb3JUcmFuc2Zvcm1hdGlvbnMgPSB7XG4gIHByaW1hcnk6ICdwcmltYXJ5Lm1haW4nLFxuICB0ZXh0UHJpbWFyeTogJ3RleHQucHJpbWFyeScsXG4gIHNlY29uZGFyeTogJ3NlY29uZGFyeS5tYWluJyxcbiAgdGV4dFNlY29uZGFyeTogJ3RleHQuc2Vjb25kYXJ5JyxcbiAgZXJyb3I6ICdlcnJvci5tYWluJ1xufTtcbmNvbnN0IHRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnMgPSBjb2xvciA9PiB7XG4gIHJldHVybiBjb2xvclRyYW5zZm9ybWF0aW9uc1tjb2xvcl0gfHwgY29sb3I7XG59O1xuY29uc3QgVHlwb2dyYXBoeSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFR5cG9ncmFwaHkoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHRoZW1lUHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpVHlwb2dyYXBoeSdcbiAgfSk7XG4gIGNvbnN0IGNvbG9yID0gdHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyh0aGVtZVByb3BzLmNvbG9yKTtcbiAgY29uc3QgcHJvcHMgPSBleHRlbmRTeFByb3AoX2V4dGVuZHMoe30sIHRoZW1lUHJvcHMsIHtcbiAgICBjb2xvclxuICB9KSk7XG4gIGNvbnN0IHtcbiAgICAgIGFsaWduID0gJ2luaGVyaXQnLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50LFxuICAgICAgZ3V0dGVyQm90dG9tID0gZmFsc2UsXG4gICAgICBub1dyYXAgPSBmYWxzZSxcbiAgICAgIHBhcmFncmFwaCA9IGZhbHNlLFxuICAgICAgdmFyaWFudCA9ICdib2R5MScsXG4gICAgICB2YXJpYW50TWFwcGluZyA9IGRlZmF1bHRWYXJpYW50TWFwcGluZ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgYWxpZ24sXG4gICAgY29sb3IsXG4gICAgY2xhc3NOYW1lLFxuICAgIGNvbXBvbmVudCxcbiAgICBndXR0ZXJCb3R0b20sXG4gICAgbm9XcmFwLFxuICAgIHBhcmFncmFwaCxcbiAgICB2YXJpYW50LFxuICAgIHZhcmlhbnRNYXBwaW5nXG4gIH0pO1xuICBjb25zdCBDb21wb25lbnQgPSBjb21wb25lbnQgfHwgKHBhcmFncmFwaCA/ICdwJyA6IHZhcmlhbnRNYXBwaW5nW3ZhcmlhbnRdIHx8IGRlZmF1bHRWYXJpYW50TWFwcGluZ1t2YXJpYW50XSkgfHwgJ3NwYW4nO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUeXBvZ3JhcGh5Um9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBDb21wb25lbnQsXG4gICAgcmVmOiByZWYsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpXG4gIH0sIG90aGVyKSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFR5cG9ncmFwaHkucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogU2V0IHRoZSB0ZXh0LWFsaWduIG9uIHRoZSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0ICdpbmhlcml0J1xuICAgKi9cbiAgYWxpZ246IFByb3BUeXBlcy5vbmVPZihbJ2NlbnRlcicsICdpbmhlcml0JywgJ2p1c3RpZnknLCAnbGVmdCcsICdyaWdodCddKSxcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0ZXh0IHdpbGwgaGF2ZSBhIGJvdHRvbSBtYXJnaW4uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBndXR0ZXJCb3R0b206IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dCB3aWxsIG5vdCB3cmFwLCBidXQgaW5zdGVhZCB3aWxsIHRydW5jYXRlIHdpdGggYSB0ZXh0IG92ZXJmbG93IGVsbGlwc2lzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGV4dCBvdmVyZmxvdyBjYW4gb25seSBoYXBwZW4gd2l0aCBibG9jayBvciBpbmxpbmUtYmxvY2sgbGV2ZWwgZWxlbWVudHNcbiAgICogKHRoZSBlbGVtZW50IG5lZWRzIHRvIGhhdmUgYSB3aWR0aCBpbiBvcmRlciB0byBvdmVyZmxvdykuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBub1dyYXA6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZWxlbWVudCB3aWxsIGJlIGEgcGFyYWdyYXBoIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwYXJhZ3JhcGg6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQXBwbGllcyB0aGUgdGhlbWUgdHlwb2dyYXBoeSBzdHlsZXMuXG4gICAqIEBkZWZhdWx0ICdib2R5MSdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnYm9keTEnLCAnYm9keTInLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaW5oZXJpdCcsICdvdmVybGluZScsICdzdWJ0aXRsZTEnLCAnc3VidGl0bGUyJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IG1hcHMgdGhlIHZhcmlhbnQgcHJvcCB0byBhIHJhbmdlIG9mIGRpZmZlcmVudCBIVE1MIGVsZW1lbnQgdHlwZXMuXG4gICAqIEZvciBpbnN0YW5jZSwgc3VidGl0bGUxIHRvIGA8aDY+YC5cbiAgICogSWYgeW91IHdpc2ggdG8gY2hhbmdlIHRoYXQgbWFwcGluZywgeW91IGNhbiBwcm92aWRlIHlvdXIgb3duLlxuICAgKiBBbHRlcm5hdGl2ZWx5LCB5b3UgY2FuIHVzZSB0aGUgYGNvbXBvbmVudGAgcHJvcC5cbiAgICogQGRlZmF1bHQge1xuICAgKiAgIGgxOiAnaDEnLFxuICAgKiAgIGgyOiAnaDInLFxuICAgKiAgIGgzOiAnaDMnLFxuICAgKiAgIGg0OiAnaDQnLFxuICAgKiAgIGg1OiAnaDUnLFxuICAgKiAgIGg2OiAnaDYnLFxuICAgKiAgIHN1YnRpdGxlMTogJ2g2JyxcbiAgICogICBzdWJ0aXRsZTI6ICdoNicsXG4gICAqICAgYm9keTE6ICdwJyxcbiAgICogICBib2R5MjogJ3AnLFxuICAgKiAgIGluaGVyaXQ6ICdwJyxcbiAgICogfVxuICAgKi9cbiAgdmFyaWFudE1hcHBpbmc6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9iamVjdFxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFR5cG9ncmFwaHk7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNyZWF0ZUJveCBmcm9tICcuLi9jcmVhdGVCb3gnO1xuY29uc3QgQm94ID0gY3JlYXRlQm94KCk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCb3gucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCb3g7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BtdWkvc3R5bGVkLWVuZ2luZSc7XG5pbXBvcnQgc3R5bGVGdW5jdGlvblN4LCB7IGV4dGVuZFN4UHJvcCB9IGZyb20gJy4vc3R5bGVGdW5jdGlvblN4JztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuL3VzZVRoZW1lJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVCb3gob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZUlkLFxuICAgIGRlZmF1bHRUaGVtZSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lID0gJ011aUJveC1yb290JyxcbiAgICBnZW5lcmF0ZUNsYXNzTmFtZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgQm94Um9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICAgIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHByb3AgIT09ICd0aGVtZScgJiYgcHJvcCAhPT0gJ3N4JyAmJiBwcm9wICE9PSAnYXMnXG4gIH0pKHN0eWxlRnVuY3Rpb25TeCk7XG4gIGNvbnN0IEJveCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJveChpblByb3BzLCByZWYpIHtcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgY29uc3QgX2V4dGVuZFN4UHJvcCA9IGV4dGVuZFN4UHJvcChpblByb3BzKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBjb21wb25lbnQgPSAnZGl2J1xuICAgICAgfSA9IF9leHRlbmRTeFByb3AsXG4gICAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9leHRlbmRTeFByb3AsIF9leGNsdWRlZCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEJveFJvb3QsIF9leHRlbmRzKHtcbiAgICAgIGFzOiBjb21wb25lbnQsXG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc05hbWUsIGdlbmVyYXRlQ2xhc3NOYW1lID8gZ2VuZXJhdGVDbGFzc05hbWUoZGVmYXVsdENsYXNzTmFtZSkgOiBkZWZhdWx0Q2xhc3NOYW1lKSxcbiAgICAgIHRoZW1lOiB0aGVtZUlkID8gdGhlbWVbdGhlbWVJZF0gfHwgdGhlbWUgOiB0aGVtZVxuICAgIH0sIG90aGVyKSk7XG4gIH0pO1xuICByZXR1cm4gQm94O1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJzeFwiXTtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBkZWZhdWx0U3hDb25maWcgZnJvbSAnLi9kZWZhdWx0U3hDb25maWcnO1xuY29uc3Qgc3BsaXRQcm9wcyA9IHByb3BzID0+IHtcbiAgdmFyIF9wcm9wcyR0aGVtZSR1bnN0YWJsZSwgX3Byb3BzJHRoZW1lO1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgc3lzdGVtUHJvcHM6IHt9LFxuICAgIG90aGVyUHJvcHM6IHt9XG4gIH07XG4gIGNvbnN0IGNvbmZpZyA9IChfcHJvcHMkdGhlbWUkdW5zdGFibGUgPSBwcm9wcyA9PSBudWxsIHx8IChfcHJvcHMkdGhlbWUgPSBwcm9wcy50aGVtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wcm9wcyR0aGVtZS51bnN0YWJsZV9zeENvbmZpZykgIT0gbnVsbCA/IF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA6IGRlZmF1bHRTeENvbmZpZztcbiAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgaWYgKGNvbmZpZ1twcm9wXSkge1xuICAgICAgcmVzdWx0LnN5c3RlbVByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5vdGhlclByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlbmRTeFByb3AocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgICAgc3g6IGluU3hcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qge1xuICAgIHN5c3RlbVByb3BzLFxuICAgIG90aGVyUHJvcHNcbiAgfSA9IHNwbGl0UHJvcHMob3RoZXIpO1xuICBsZXQgZmluYWxTeDtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5TeCkpIHtcbiAgICBmaW5hbFN4ID0gW3N5c3RlbVByb3BzLCAuLi5pblN4XTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5TeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZpbmFsU3ggPSAoLi4uYXJncykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5TeCguLi5hcmdzKTtcbiAgICAgIGlmICghaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBzeXN0ZW1Qcm9wcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIHJlc3VsdCk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBmaW5hbFN4ID0gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCBpblN4KTtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICBzeDogZmluYWxTeFxuICB9KTtcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9zeXN0ZW1cIjtcclxuaW1wb3J0IHsgQ2lyY3VsYXJQcm9ncmVzcywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XHJcblxyXG5mdW5jdGlvbiBWbmNDb25zb2xlVmlld2VyKCkge1xyXG4gIGNvbnN0IFthY3RpdmUsIHNldEFjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiKSB7XHJcbiAgICAgICAgc2V0QWN0aXZlKHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAge2FjdGl2ZSA/IChcclxuICAgICAgICA8Qm94IGNsYXNzTmFtZT1cImdhemViby12aWV3XCIgc3g9e3sgaGVpZ2h0OiBcIjEwMCVcIiB9fT5cclxuICAgICAgICAgIDxpZnJhbWVcclxuICAgICAgICAgICAgaWQ9e1wiaWZyYW1lLWNvbnNvbGVcIn1cclxuICAgICAgICAgICAgc3JjPXtcclxuICAgICAgICAgICAgICBcImh0dHA6Ly8xMjcuMC4wLjE6MTEwOC92bmMuaHRtbD9yZXNpemU9cmVtb3RlJmF1dG9jb25uZWN0PXRydWUmcmVjb25uZWN0PXRydWVcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvQm94PlxyXG4gICAgICApIDogKFxyXG4gICAgICAgIDxCb3hcclxuICAgICAgICAgIHN4PXt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5PntcIkxvYWRpbmcgY29uc29sZSAgIFwifSA8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8Q2lyY3VsYXJQcm9ncmVzcyBzaXplPXsyMH0gLz5cclxuICAgICAgICA8L0JveD5cclxuICAgICAgKX1cclxuICAgIDwvPlxyXG4gICk7XHJcbn1cclxuVm5jQ29uc29sZVZpZXdlci5wcm9wVHlwZXMgPSB7XHJcbiAgY29udGV4dDogUHJvcFR5cGVzLmFueSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFZuY0NvbnNvbGVWaWV3ZXI7XHJcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iXSwibmFtZXMiOlsiR2xvYmFsIiwidyIsInByb3BzIiwiY2FjaGUiLCJzdHlsZXMiLCJzZXJpYWxpemVkIiwidW5kZWZpbmVkIiwiVCIsImkiLCJfcmVmIiwic2VyaWFsaXplZE5hbWVzIiwibmFtZSIsInNlcmlhbGl6ZWRTdHlsZXMiLCJuZXh0Iiwic2hvdWxkQ2FjaGUiLCJjb21wYXQiLCJydWxlcyIsImluc2VydCIsInNoZWV0Iiwia2V5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJub25jZSIsInNoZWV0UmVmIiwiY29uc3RydWN0b3IiLCJjb250YWluZXIiLCJzcGVlZHkiLCJpc1NwZWVkeSIsInJlaHlkcmF0aW5nIiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInRhZ3MiLCJsZW5ndGgiLCJiZWZvcmUiLCJzZXRBdHRyaWJ1dGUiLCJoeWRyYXRlIiwiY3VycmVudCIsImZsdXNoIiwic2hlZXRSZWZDdXJyZW50IiwiZWxlbWVudCIsIm5leHRFbGVtZW50U2libGluZyIsImNzcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5Iiwia2V5ZnJhbWVzIiwiaW5zZXJ0YWJsZSIsImFwcGx5IiwiYW5pbSIsInRvU3RyaW5nIiwidGhpcyIsImdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MiLCJzbG90IiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfIiwidCIsImNpcmN1bGFyUm90YXRlS2V5ZnJhbWUiLCJjaXJjdWxhckRhc2hLZXlmcmFtZSIsIkNpcmN1bGFyUHJvZ3Jlc3NSb290Iiwic3R5bGVkIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJvd25lclN0YXRlIiwicm9vdCIsInZhcmlhbnQiLCJjYXBpdGFsaXplIiwiY29sb3IiLCJ0aGVtZSIsImRpc3BsYXkiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJ2YXJzIiwicGFsZXR0ZSIsIm1haW4iLCJDaXJjdWxhclByb2dyZXNzU1ZHIiwic3ZnIiwiQ2lyY3VsYXJQcm9ncmVzc0NpcmNsZSIsImNpcmNsZSIsImRpc2FibGVTaHJpbmsiLCJjaXJjbGVEaXNhYmxlU2hyaW5rIiwic3Ryb2tlIiwic3Ryb2tlRGFzaGFycmF5Iiwic3Ryb2tlRGFzaG9mZnNldCIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiY2xhc3NOYW1lIiwic2l6ZSIsInN0eWxlIiwidGhpY2tuZXNzIiwidmFsdWUiLCJvdGhlciIsImNsYXNzZXMiLCJzbG90cyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJjaXJjbGVTdHlsZSIsInJvb3RTdHlsZSIsInJvb3RQcm9wcyIsImNpcmN1bWZlcmVuY2UiLCJNYXRoIiwiUEkiLCJ0b0ZpeGVkIiwicm91bmQiLCJ0cmFuc2Zvcm0iLCJ3aWR0aCIsImhlaWdodCIsInJvbGUiLCJjaGlsZHJlbiIsInZpZXdCb3giLCJjeCIsImN5IiwiciIsImZpbGwiLCJzdHJva2VXaWR0aCIsImdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MiLCJUeXBvZ3JhcGh5Um9vdCIsImFsaWduIiwibm9XcmFwIiwiZ3V0dGVyQm90dG9tIiwicGFyYWdyYXBoIiwibWFyZ2luIiwidHlwb2dyYXBoeSIsInRleHRBbGlnbiIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93Iiwid2hpdGVTcGFjZSIsIm1hcmdpbkJvdHRvbSIsImRlZmF1bHRWYXJpYW50TWFwcGluZyIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsInN1YnRpdGxlMSIsInN1YnRpdGxlMiIsImJvZHkxIiwiYm9keTIiLCJpbmhlcml0IiwiY29sb3JUcmFuc2Zvcm1hdGlvbnMiLCJwcmltYXJ5IiwidGV4dFByaW1hcnkiLCJzZWNvbmRhcnkiLCJ0ZXh0U2Vjb25kYXJ5IiwiZXJyb3IiLCJ0aGVtZVByb3BzIiwidHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyIsImV4dGVuZFN4UHJvcCIsImNvbXBvbmVudCIsInZhcmlhbnRNYXBwaW5nIiwiQ29tcG9uZW50IiwiYXMiLCJjcmVhdGVCb3giLCJvcHRpb25zIiwidGhlbWVJZCIsImRlZmF1bHRUaGVtZSIsImRlZmF1bHRDbGFzc05hbWUiLCJnZW5lcmF0ZUNsYXNzTmFtZSIsIkJveFJvb3QiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJfZXh0ZW5kU3hQcm9wIiwic3BsaXRQcm9wcyIsIl9wcm9wcyR0aGVtZSR1bnN0YWJsZSIsIl9wcm9wcyR0aGVtZSIsInJlc3VsdCIsInN5c3RlbVByb3BzIiwib3RoZXJQcm9wcyIsImNvbmZpZyIsInVuc3RhYmxlX3N4Q29uZmlnIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzeCIsImluU3giLCJmaW5hbFN4IiwiaXNBcnJheSIsIlZuY0NvbnNvbGVWaWV3ZXIiLCJfUmVhY3QkdXNlU3RhdGUyIiwiUmVhY3QiLCJhY3RpdmUiLCJzZXRBY3RpdmUiLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJkYXRhIiwic3RhdGUiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInN1YnNjcmliZSIsImV2ZW50cyIsIlNUQVRFX0NIQU5HRUQiLCJ1bnN1YnNjcmliZSIsIl9qc3giLCJfRnJhZ21lbnQiLCJCb3giLCJpZCIsInNyYyIsIl9qc3hzIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiVHlwb2dyYXBoeSIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJwcm9wVHlwZXMiLCJjb250ZXh0IiwiUHJvcFR5cGVzIiwicmVhY3RJcyIsIlJFQUNUX1NUQVRJQ1MiLCJjaGlsZENvbnRleHRUeXBlcyIsImNvbnRleHRUeXBlIiwiY29udGV4dFR5cGVzIiwiZGVmYXVsdFByb3BzIiwiZGlzcGxheU5hbWUiLCJnZXREZWZhdWx0UHJvcHMiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJtaXhpbnMiLCJ0eXBlIiwiS05PV05fU1RBVElDUyIsInByb3RvdHlwZSIsImNhbGxlciIsImNhbGxlZSIsImFyaXR5IiwiTUVNT19TVEFUSUNTIiwiY29tcGFyZSIsIlRZUEVfU1RBVElDUyIsImdldFN0YXRpY3MiLCJpc01lbW8iLCJGb3J3YXJkUmVmIiwicmVuZGVyIiwiTWVtbyIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldFByb3RvdHlwZU9mIiwib2JqZWN0UHJvdG90eXBlIiwibW9kdWxlIiwiZXhwb3J0cyIsImhvaXN0Tm9uUmVhY3RTdGF0aWNzIiwidGFyZ2V0Q29tcG9uZW50Iiwic291cmNlQ29tcG9uZW50IiwiYmxhY2tsaXN0IiwiaW5oZXJpdGVkQ29tcG9uZW50IiwiY29uY2F0IiwidGFyZ2V0U3RhdGljcyIsInNvdXJjZVN0YXRpY3MiLCJkZXNjcmlwdG9yIiwiZSIsImIiLCJTeW1ib2wiLCJmb3IiLCJjIiwiZCIsImYiLCJnIiwiaCIsImsiLCJsIiwibSIsIm4iLCJwIiwicSIsInYiLCJ4IiwieSIsInoiLCJhIiwidSIsIiQkdHlwZW9mIiwiQSIsIkFzeW5jTW9kZSIsIkNvbmN1cnJlbnRNb2RlIiwiQ29udGV4dENvbnN1bWVyIiwiQ29udGV4dFByb3ZpZGVyIiwiRWxlbWVudCIsIkZyYWdtZW50IiwiTGF6eSIsIlBvcnRhbCIsIlByb2ZpbGVyIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiaXNBc3luY01vZGUiLCJpc0NvbmN1cnJlbnRNb2RlIiwiaXNDb250ZXh0Q29uc3VtZXIiLCJpc0NvbnRleHRQcm92aWRlciIsImlzRWxlbWVudCIsImlzRm9yd2FyZFJlZiIsImlzRnJhZ21lbnQiLCJpc0xhenkiLCJpc1BvcnRhbCIsImlzUHJvZmlsZXIiLCJpc1N0cmljdE1vZGUiLCJpc1N1c3BlbnNlIiwiaXNWYWxpZEVsZW1lbnRUeXBlIiwidHlwZU9mIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1261.01296c0f.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1261.01296c0f.js.LICENSE.txt new file mode 100644 index 000000000..6f6f2bb3f --- /dev/null +++ b/react_frontend/static/react_frontend/js/1261.01296c0f.js.LICENSE.txt @@ -0,0 +1,8 @@ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1279.dcda7626.js b/react_frontend/static/react_frontend/js/1279.dcda7626.js new file mode 100644 index 000000000..88e57c650 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1279.dcda7626.js @@ -0,0 +1,3 @@ +/*! For license information please see 1279.dcda7626.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1279],{1347:(t,e,r)=>{r.d(e,{A:()=>a,K:()=>i});var n=r(8413),o=r(1609);function i(t){return(0,o.A)("MuiDivider",t)}const a=(0,n.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"])},6554:(t,e,r)=>{r.d(e,{A:()=>L});var n=r(8587),o=r(8168),i=r(6540),a=r(53),s=r(5659),c=r(4279),l=r(7577),u=r(4409),d=r(2850),f=r(6606),p=r(2778),h=r(6852),m=r(1347),v=r(8413);const y=(0,v.A)("MuiListItemIcon",["root","alignItemsFlexStart"]),g=(0,v.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);var b=r(1609);function w(t){return(0,b.A)("MuiMenuItem",t)}const x=(0,v.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);var A=r(4848);const E=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],C=(0,l.Ay)(f.A,{shouldForwardProp:t=>(0,l.ep)(t)||"classes"===t,name:"MuiMenuItem",slot:"Root",overridesResolver:(t,e)=>{const{ownerState:r}=t;return[e.root,r.dense&&e.dense,r.divider&&e.divider,!r.disableGutters&&e.gutters]}})((({theme:t,ownerState:e})=>(0,o.A)({},t.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!e.disableGutters&&{paddingLeft:16,paddingRight:16},e.divider&&{borderBottom:`1px solid ${(t.vars||t).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${x.selected}`]:{backgroundColor:t.vars?`rgba(${t.vars.palette.primary.mainChannel} / ${t.vars.palette.action.selectedOpacity})`:(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),[`&.${x.focusVisible}`]:{backgroundColor:t.vars?`rgba(${t.vars.palette.primary.mainChannel} / calc(${t.vars.palette.action.selectedOpacity} + ${t.vars.palette.action.focusOpacity}))`:(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},[`&.${x.selected}:hover`]:{backgroundColor:t.vars?`rgba(${t.vars.palette.primary.mainChannel} / calc(${t.vars.palette.action.selectedOpacity} + ${t.vars.palette.action.hoverOpacity}))`:(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?`rgba(${t.vars.palette.primary.mainChannel} / ${t.vars.palette.action.selectedOpacity})`:(0,c.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}},[`&.${x.focusVisible}`]:{backgroundColor:(t.vars||t).palette.action.focus},[`&.${x.disabled}`]:{opacity:(t.vars||t).palette.action.disabledOpacity},[`& + .${m.A.root}`]:{marginTop:t.spacing(1),marginBottom:t.spacing(1)},[`& + .${m.A.inset}`]:{marginLeft:52},[`& .${g.root}`]:{marginTop:0,marginBottom:0},[`& .${g.inset}`]:{paddingLeft:36},[`& .${y.root}`]:{minWidth:36}},!e.dense&&{[t.breakpoints.up("sm")]:{minHeight:"auto"}},e.dense&&(0,o.A)({minHeight:32,paddingTop:4,paddingBottom:4},t.typography.body2,{[`& .${y.root} svg`]:{fontSize:"1.25rem"}})))),L=i.forwardRef((function(t,e){const r=(0,u.A)({props:t,name:"MuiMenuItem"}),{autoFocus:c=!1,component:l="li",dense:f=!1,divider:m=!1,disableGutters:v=!1,focusVisibleClassName:y,role:g="menuitem",tabIndex:b,className:x}=r,L=(0,n.A)(r,E),S=i.useContext(d.A),O=i.useMemo((()=>({dense:f||S.dense||!1,disableGutters:v})),[S.dense,f,v]),M=i.useRef(null);(0,p.A)((()=>{c&&M.current&&M.current.focus()}),[c]);const j=(0,o.A)({},r,{dense:O.dense,divider:m,disableGutters:v}),_=(t=>{const{disabled:e,dense:r,divider:n,disableGutters:i,selected:a,classes:c}=t,l={root:["root",r&&"dense",e&&"disabled",!i&&"gutters",n&&"divider",a&&"selected"]},u=(0,s.A)(l,w,c);return(0,o.A)({},c,u)})(r),k=(0,h.A)(M,e);let $;return r.disabled||($=void 0!==b?b:-1),(0,A.jsx)(d.A.Provider,{value:O,children:(0,A.jsx)(C,(0,o.A)({ref:k,role:g,tabIndex:$,component:l,focusVisibleClassName:(0,a.A)(_.focusVisible,y),className:(0,a.A)(_.root,x)},L,{ownerState:j,classes:_}))})}))},1279:(t,e,r)=>{r.r(e),r.d(e,{default:()=>v});var n=r(6540),o=r(6554),i=r(4719),a=r(779),s=r(4433),c=r(2071),l=r(2543),u=r(4848);function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}function f(){f=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function u(t,e,r,n){var i=e&&e.prototype instanceof b?e:b,a=Object.create(i.prototype),s=new $(n||[]);return o(a,"_invoke",{value:M(t,r,s)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=u;var h="suspendedStart",m="suspendedYield",v="executing",y="completed",g={};function b(){}function w(){}function x(){}var A={};l(A,a,(function(){return this}));var E=Object.getPrototypeOf,C=E&&E(E(I([])));C&&C!==r&&n.call(C,a)&&(A=C);var L=x.prototype=b.prototype=Object.create(A);function S(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function O(t,e){function r(o,i,a,s){var c=p(t[o],t,i);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==d(u)&&n.call(u,"__await")?e.resolve(u.__await).then((function(t){r("next",t,a,s)}),(function(t){r("throw",t,a,s)})):e.resolve(u).then((function(t){l.value=t,a(l)}),(function(t){return r("throw",t,a,s)}))}s(c.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function M(e,r,n){var o=h;return function(i,a){if(o===v)throw Error("Generator is already running");if(o===y){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var s=n.delegate;if(s){var c=j(s,n);if(c){if(c===g)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=y,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=v;var l=p(e,r,n);if("normal"===l.type){if(o=n.done?y:m,l.arg===g)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=y,n.method="throw",n.arg=l.arg)}}}function j(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,j(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,g;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,g):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,g)}function _(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function $(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,this),this.reset(!0)}function I(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:I(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function p(t,e,r,n,o,i,a){try{var s=t[i](a),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function h(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);c=!0);}catch(t){l=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(t,e)||function(t,e){if(t){if("string"==typeof t)return m(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0?(0,u.jsx)(i.A,{children:(0,u.jsxs)(a.A,{sx:{m:1,minWidth:120,maxWidth:150,backgroundColor:d?"#f57f51":"#4caf50",textOverFlow:"clip"},size:"small",children:[(0,u.jsx)(s.A,{id:"universe-selector-label",children:"Universe"}),(0,u.jsx)(c.A,{disabled:d,value:y,labelId:"universe-selector-label",id:"universe-selector",label:"Universe",onChange:function(t){x(t.target.value)},children:w.map((function(t){return(0,u.jsx)(o.A,{value:t,children:t.name},t.name)}))})]})}):null}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFBRCxVQUFBLEtBOEJwQixPQUFPbkQsRUFBZW5DLE9BQVMsR0FDN0IyRixFQUFBQSxFQUFBQSxLQUFDQyxFQUFBQSxFQUFHLENBQUEzSyxVQUNGNEssRUFBQUEsRUFBQUEsTUFBQ0MsRUFBQUEsRUFBVyxDQUNWQyxHQUFJLENBQ0ZDLEVBQUcsRUFDSC9NLFNBQVUsSUFDVmdOLFNBQVUsSUFDVnJPLGdCQUFpQlksRUFBVyxVQUFZLFVBQ3hDME4sYUFBYyxRQUVoQkMsS0FBSyxRQUFPbEwsU0FBQSxFQUVaMEssRUFBQUEsRUFBQUEsS0FBQ1MsRUFBQUEsRUFBVSxDQUFDQyxHQUFJLDBCQUEwQnBMLFNBQUMsY0FDM0MwSyxFQUFBQSxFQUFBQSxLQUFDVyxFQUFBQSxFQUFNLENBQ0w5TixTQUFVQSxFQUNWd0MsTUFBTzZILEVBQ1AwRCxRQUFRLDBCQUNSRixHQUFJLG9CQUNKRyxNQUFPLFdBQ1BDLFNBQVUsU0FBQ3RMLEdBQ1QySSxFQUFlM0ksRUFBRXVMLE9BQU8xTCxNQUMxQixFQUFFQyxTQUVEK0gsRUFBZTJELEtBQUksU0FBQ0MsR0FBTSxPQUN6QmpCLEVBQUFBLEVBQUFBLEtBQUNrQixFQUFBQSxFQUFRLENBQW1CN0wsTUFBTzRMLEVBQU8zTCxTQUN2QzJMLEVBQU83USxNQURLNlEsRUFBTzdRLEtBRVgsV0FLakIsSUFDTiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRGl2aWRlci9kaXZpZGVyQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0xpc3RJdGVtSWNvbi9saXN0SXRlbUljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvTGlzdEl0ZW1UZXh0L2xpc3RJdGVtVGV4dENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9NZW51SXRlbS9tZW51SXRlbUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9NZW51SXRlbS9NZW51SXRlbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL3Zpc3VhbGl6ZXJzL1dvcmxkU2VsZWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmlkZXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aURpdmlkZXInLCBzbG90KTtcbn1cbmNvbnN0IGRpdmlkZXJDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpRGl2aWRlcicsIFsncm9vdCcsICdhYnNvbHV0ZScsICdmdWxsV2lkdGgnLCAnaW5zZXQnLCAnbWlkZGxlJywgJ2ZsZXhJdGVtJywgJ2xpZ2h0JywgJ3ZlcnRpY2FsJywgJ3dpdGhDaGlsZHJlbicsICd3aXRoQ2hpbGRyZW5WZXJ0aWNhbCcsICd0ZXh0QWxpZ25SaWdodCcsICd0ZXh0QWxpZ25MZWZ0JywgJ3dyYXBwZXInLCAnd3JhcHBlclZlcnRpY2FsJ10pO1xuZXhwb3J0IGRlZmF1bHQgZGl2aWRlckNsYXNzZXM7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3RJdGVtSWNvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpTGlzdEl0ZW1JY29uJywgc2xvdCk7XG59XG5jb25zdCBsaXN0SXRlbUljb25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpTGlzdEl0ZW1JY29uJywgWydyb290JywgJ2FsaWduSXRlbXNGbGV4U3RhcnQnXSk7XG5leHBvcnQgZGVmYXVsdCBsaXN0SXRlbUljb25DbGFzc2VzOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRMaXN0SXRlbVRleHRVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUxpc3RJdGVtVGV4dCcsIHNsb3QpO1xufVxuY29uc3QgbGlzdEl0ZW1UZXh0Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUxpc3RJdGVtVGV4dCcsIFsncm9vdCcsICdtdWx0aWxpbmUnLCAnZGVuc2UnLCAnaW5zZXQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknXSk7XG5leHBvcnQgZGVmYXVsdCBsaXN0SXRlbVRleHRDbGFzc2VzOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51SXRlbVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpTWVudUl0ZW0nLCBzbG90KTtcbn1cbmNvbnN0IG1lbnVJdGVtQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aU1lbnVJdGVtJywgWydyb290JywgJ2ZvY3VzVmlzaWJsZScsICdkZW5zZScsICdkaXNhYmxlZCcsICdkaXZpZGVyJywgJ2d1dHRlcnMnLCAnc2VsZWN0ZWQnXSk7XG5leHBvcnQgZGVmYXVsdCBtZW51SXRlbUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXV0b0ZvY3VzXCIsIFwiY29tcG9uZW50XCIsIFwiZGVuc2VcIiwgXCJkaXZpZGVyXCIsIFwiZGlzYWJsZUd1dHRlcnNcIiwgXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIiwgXCJyb2xlXCIsIFwidGFiSW5kZXhcIiwgXCJjbGFzc05hbWVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgTGlzdENvbnRleHQgZnJvbSAnLi4vTGlzdC9MaXN0Q29udGV4dCc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCB1c2VFbmhhbmNlZEVmZmVjdCBmcm9tICcuLi91dGlscy91c2VFbmhhbmNlZEVmZmVjdCc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCB7IGRpdmlkZXJDbGFzc2VzIH0gZnJvbSAnLi4vRGl2aWRlcic7XG5pbXBvcnQgeyBsaXN0SXRlbUljb25DbGFzc2VzIH0gZnJvbSAnLi4vTGlzdEl0ZW1JY29uJztcbmltcG9ydCB7IGxpc3RJdGVtVGV4dENsYXNzZXMgfSBmcm9tICcuLi9MaXN0SXRlbVRleHQnO1xuaW1wb3J0IG1lbnVJdGVtQ2xhc3NlcywgeyBnZXRNZW51SXRlbVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vbWVudUl0ZW1DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgY29uc3Qgb3ZlcnJpZGVzUmVzb2x2ZXIgPSAocHJvcHMsIHN0eWxlcykgPT4ge1xuICBjb25zdCB7XG4gICAgb3duZXJTdGF0ZVxuICB9ID0gcHJvcHM7XG4gIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuZGVuc2UgJiYgc3R5bGVzLmRlbnNlLCBvd25lclN0YXRlLmRpdmlkZXIgJiYgc3R5bGVzLmRpdmlkZXIsICFvd25lclN0YXRlLmRpc2FibGVHdXR0ZXJzICYmIHN0eWxlcy5ndXR0ZXJzXTtcbn07XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgZGlzYWJsZWQsXG4gICAgZGVuc2UsXG4gICAgZGl2aWRlcixcbiAgICBkaXNhYmxlR3V0dGVycyxcbiAgICBzZWxlY3RlZCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBkZW5zZSAmJiAnZGVuc2UnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCAhZGlzYWJsZUd1dHRlcnMgJiYgJ2d1dHRlcnMnLCBkaXZpZGVyICYmICdkaXZpZGVyJywgc2VsZWN0ZWQgJiYgJ3NlbGVjdGVkJ11cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldE1lbnVJdGVtVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBjbGFzc2VzLCBjb21wb3NlZENsYXNzZXMpO1xufTtcbmNvbnN0IE1lbnVJdGVtUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHJvb3RTaG91bGRGb3J3YXJkUHJvcChwcm9wKSB8fCBwcm9wID09PSAnY2xhc3NlcycsXG4gIG5hbWU6ICdNdWlNZW51SXRlbScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXJcbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7fSwgdGhlbWUudHlwb2dyYXBoeS5ib2R5MSwge1xuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnZmxleC1zdGFydCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgbWluSGVpZ2h0OiA0OCxcbiAgcGFkZGluZ1RvcDogNixcbiAgcGFkZGluZ0JvdHRvbTogNixcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnXG59LCAhb3duZXJTdGF0ZS5kaXNhYmxlR3V0dGVycyAmJiB7XG4gIHBhZGRpbmdMZWZ0OiAxNixcbiAgcGFkZGluZ1JpZ2h0OiAxNlxufSwgb3duZXJTdGF0ZS5kaXZpZGVyICYmIHtcbiAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gLFxuICBiYWNrZ3JvdW5kQ2xpcDogJ3BhZGRpbmctYm94J1xufSwge1xuICAnJjpob3Zlcic6IHtcbiAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmhvdmVyLFxuICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgfVxuICB9LFxuICBbYCYuJHttZW51SXRlbUNsYXNzZXMuc2VsZWN0ZWR9YF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5wcmltYXJ5Lm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5KSxcbiAgICBbYCYuJHttZW51SXRlbUNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5wcmltYXJ5Lm1haW5DaGFubmVsfSAvIGNhbGMoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eX0gKyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uZm9jdXNPcGFjaXR5fSkpYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHkgKyB0aGVtZS5wYWxldHRlLmFjdGlvbi5mb2N1c09wYWNpdHkpXG4gICAgfVxuICB9LFxuICBbYCYuJHttZW51SXRlbUNsYXNzZXMuc2VsZWN0ZWR9OmhvdmVyYF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5wcmltYXJ5Lm1haW5DaGFubmVsfSAvIGNhbGMoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eX0gKyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSkpYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHkgKyB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUucHJpbWFyeS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eSlcbiAgICB9XG4gIH0sXG4gIFtgJi4ke21lbnVJdGVtQ2xhc3Nlcy5mb2N1c1Zpc2libGV9YF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5mb2N1c1xuICB9LFxuICBbYCYuJHttZW51SXRlbUNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBvcGFjaXR5OiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRPcGFjaXR5XG4gIH0sXG4gIFtgJiArIC4ke2RpdmlkZXJDbGFzc2VzLnJvb3R9YF06IHtcbiAgICBtYXJnaW5Ub3A6IHRoZW1lLnNwYWNpbmcoMSksXG4gICAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nKDEpXG4gIH0sXG4gIFtgJiArIC4ke2RpdmlkZXJDbGFzc2VzLmluc2V0fWBdOiB7XG4gICAgbWFyZ2luTGVmdDogNTJcbiAgfSxcbiAgW2AmIC4ke2xpc3RJdGVtVGV4dENsYXNzZXMucm9vdH1gXToge1xuICAgIG1hcmdpblRvcDogMCxcbiAgICBtYXJnaW5Cb3R0b206IDBcbiAgfSxcbiAgW2AmIC4ke2xpc3RJdGVtVGV4dENsYXNzZXMuaW5zZXR9YF06IHtcbiAgICBwYWRkaW5nTGVmdDogMzZcbiAgfSxcbiAgW2AmIC4ke2xpc3RJdGVtSWNvbkNsYXNzZXMucm9vdH1gXToge1xuICAgIG1pbldpZHRoOiAzNlxuICB9XG59LCAhb3duZXJTdGF0ZS5kZW5zZSAmJiB7XG4gIFt0aGVtZS5icmVha3BvaW50cy51cCgnc20nKV06IHtcbiAgICBtaW5IZWlnaHQ6ICdhdXRvJ1xuICB9XG59LCBvd25lclN0YXRlLmRlbnNlICYmIF9leHRlbmRzKHtcbiAgbWluSGVpZ2h0OiAzMixcbiAgLy8gaHR0cHM6Ly9tMi5tYXRlcmlhbC5pby9jb21wb25lbnRzL21lbnVzI3NwZWNzID4gRGVuc2VcbiAgcGFkZGluZ1RvcDogNCxcbiAgcGFkZGluZ0JvdHRvbTogNFxufSwgdGhlbWUudHlwb2dyYXBoeS5ib2R5Miwge1xuICBbYCYgLiR7bGlzdEl0ZW1JY29uQ2xhc3Nlcy5yb290fSBzdmdgXToge1xuICAgIGZvbnRTaXplOiAnMS4yNXJlbSdcbiAgfVxufSkpKTtcbmNvbnN0IE1lbnVJdGVtID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTWVudUl0ZW0oaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aU1lbnVJdGVtJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgYXV0b0ZvY3VzID0gZmFsc2UsXG4gICAgICBjb21wb25lbnQgPSAnbGknLFxuICAgICAgZGVuc2UgPSBmYWxzZSxcbiAgICAgIGRpdmlkZXIgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVHdXR0ZXJzID0gZmFsc2UsXG4gICAgICBmb2N1c1Zpc2libGVDbGFzc05hbWUsXG4gICAgICByb2xlID0gJ21lbnVpdGVtJyxcbiAgICAgIHRhYkluZGV4OiB0YWJJbmRleFByb3AsXG4gICAgICBjbGFzc05hbWVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoTGlzdENvbnRleHQpO1xuICBjb25zdCBjaGlsZENvbnRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZGVuc2U6IGRlbnNlIHx8IGNvbnRleHQuZGVuc2UgfHwgZmFsc2UsXG4gICAgZGlzYWJsZUd1dHRlcnNcbiAgfSksIFtjb250ZXh0LmRlbnNlLCBkZW5zZSwgZGlzYWJsZUd1dHRlcnNdKTtcbiAgY29uc3QgbWVudUl0ZW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIHVzZUVuaGFuY2VkRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXV0b0ZvY3VzKSB7XG4gICAgICBpZiAobWVudUl0ZW1SZWYuY3VycmVudCkge1xuICAgICAgICBtZW51SXRlbVJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTVVJOiBVbmFibGUgdG8gc2V0IGZvY3VzIHRvIGEgTWVudUl0ZW0gd2hvc2UgY29tcG9uZW50IGhhcyBub3QgYmVlbiByZW5kZXJlZC4nKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthdXRvRm9jdXNdKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGRlbnNlOiBjaGlsZENvbnRleHQuZGVuc2UsXG4gICAgZGl2aWRlcixcbiAgICBkaXNhYmxlR3V0dGVyc1xuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKHByb3BzKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihtZW51SXRlbVJlZiwgcmVmKTtcbiAgbGV0IHRhYkluZGV4O1xuICBpZiAoIXByb3BzLmRpc2FibGVkKSB7XG4gICAgdGFiSW5kZXggPSB0YWJJbmRleFByb3AgIT09IHVuZGVmaW5lZCA/IHRhYkluZGV4UHJvcCA6IC0xO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChMaXN0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjaGlsZENvbnRleHQsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KE1lbnVJdGVtUm9vdCwgX2V4dGVuZHMoe1xuICAgICAgcmVmOiBoYW5kbGVSZWYsXG4gICAgICByb2xlOiByb2xlLFxuICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5mb2N1c1Zpc2libGUsIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSksXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpXG4gICAgfSwgb3RoZXIsIHtcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjbGFzc2VzOiBjbGFzc2VzXG4gICAgfSkpXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBNZW51SXRlbS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsaXN0IGl0ZW0gaXMgZm9jdXNlZCBkdXJpbmcgdGhlIGZpcnN0IG1vdW50LlxuICAgKiBGb2N1cyB3aWxsIGFsc28gYmUgdHJpZ2dlcmVkIGlmIHRoZSB2YWx1ZSBjaGFuZ2VzIGZyb20gZmFsc2UgdG8gdHJ1ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGNvbXBhY3QgdmVydGljYWwgcGFkZGluZyBkZXNpZ25lZCBmb3Iga2V5Ym9hcmQgYW5kIG1vdXNlIGlucHV0IGlzIHVzZWQuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IE1lbnUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGVuc2U6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbGVmdCBhbmQgcmlnaHQgcGFkZGluZyBpcyByZW1vdmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUd1dHRlcnM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBhIDFweCBsaWdodCBib3JkZXIgaXMgYWRkZWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgbWVudSBpdGVtLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGl2aWRlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGlzIHByb3AgY2FuIGhlbHAgaWRlbnRpZnkgd2hpY2ggZWxlbWVudCBoYXMga2V5Ym9hcmQgZm9jdXMuXG4gICAqIFRoZSBjbGFzcyBuYW1lIHdpbGwgYmUgYXBwbGllZCB3aGVuIHRoZSBlbGVtZW50IGdhaW5zIHRoZSBmb2N1cyB0aHJvdWdoIGtleWJvYXJkIGludGVyYWN0aW9uLlxuICAgKiBJdCdzIGEgcG9seWZpbGwgZm9yIHRoZSBbQ1NTIDpmb2N1cy12aXNpYmxlIHNlbGVjdG9yXShodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvc2VsZWN0b3JzLTQvI3RoZS1mb2N1cy12aXNpYmxlLXBzZXVkbykuXG4gICAqIFRoZSByYXRpb25hbGUgZm9yIHVzaW5nIHRoaXMgZmVhdHVyZSBbaXMgZXhwbGFpbmVkIGhlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL2ZvY3VzLXZpc2libGUvYmxvYi9IRUFEL2V4cGxhaW5lci5tZCkuXG4gICAqIEEgW3BvbHlmaWxsIGNhbiBiZSB1c2VkXShodHRwczovL2dpdGh1Yi5jb20vV0lDRy9mb2N1cy12aXNpYmxlKSB0byBhcHBseSBhIGBmb2N1cy12aXNpYmxlYCBjbGFzcyB0byBvdGhlciBjb21wb25lbnRzXG4gICAqIGlmIG5lZWRlZC5cbiAgICovXG4gIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHJvbGU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBzZWxlY3RlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHNlbGVjdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgTWVudUl0ZW07IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IE1lbnVJdGVtIGZyb20gXCJAbXVpL21hdGVyaWFsL01lbnVJdGVtXCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBTZWxlY3QsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XHJcbmltcG9ydCB7bWVyZ2V9IGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFdvcmxkU2VsZWN0b3IocHJvcHMpIHtcclxuICBjb25zdCBleGVyY2lzZUNvbmZpZyA9IEpTT04ucGFyc2UoXHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImV4ZXJjaXNlLWNvbmZpZ1wiKS50ZXh0Q29udGVudFxyXG4gICk7XHJcbiAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICBjb25zdCBbc2VsZWN0ZWRVbml2ZXJzZSwgc2V0U2VsZWN0ZWRVbml2ZXJzZV0gPSB1c2VTdGF0ZShleGVyY2lzZUNvbmZpZ1swXSk7XHJcbiAgY29uc3QgW2NvbmZpZ3VyYXRpb25zLCBzZXRDb25maWd1cmF0aW9uc10gPSB1c2VTdGF0ZShleGVyY2lzZUNvbmZpZyk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb250ZXh0Lm1hcFNlbGVjdGVkID0gZXhlcmNpc2VDb25maWdbMF0ubmFtZTtcclxuXHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEuc3RhdGUgIT09IFwiY29ubmVjdGVkXCIpIHtcclxuICAgICAgICBzZXREaXNhYmxlZChmYWxzZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2V0RGlzYWJsZWQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICBjb25zdCBoYW5kbGVVbml2ZXJzZSA9IGFzeW5jIChjb25maWcpID0+IHtcclxuICAgIGNvbnRleHQubWFwU2VsZWN0ZWQgPSBjb25maWcubmFtZTtcclxuICAgIHNldFNlbGVjdGVkVW5pdmVyc2UoY29uZmlnKTtcclxuXHJcbiAgICBhd2FpdCB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnRlcm1pbmF0ZV9hcHBsaWNhdGlvbigpO1xyXG4gICAgYXdhaXQgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci50ZXJtaW5hdGVfdG9vbHMoKTtcclxuICAgIGF3YWl0IHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudGVybWluYXRlX3VuaXZlcnNlKCk7XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMuTWVzc2FnZVN5c3RlbS5Mb2FkaW5nLnNob3dMb2FkaW5nKFxyXG4gICAgICBcIkxhdW5jaGluZyBVbml2ZXJzZVwiXHJcbiAgICApO1xyXG5cclxuICAgIHZhciB0b29sc19jb25maWdfYmFzZSA9IGNvbmZpZy50b29sc19jb25maWdcclxuICAgIHZhciB0b29sc19jb25maWdfd29ybGQgPSBjb25maWcud29ybGQudG9vbHNfY29uZmlnXHJcbiAgICBjb25zdCB0b29sc19jb25maWcgPSBtZXJnZSh0b29sc19jb25maWdfYmFzZSwgdG9vbHNfY29uZmlnX3dvcmxkKVxyXG5cclxuICAgIGF3YWl0IHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIubGF1bmNoV29ybGQoe1xyXG4gICAgICB3b3JsZDogY29uZmlnLndvcmxkLFxyXG4gICAgICByb2JvdDogY29uZmlnLnJvYm90LFxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnByZXBhcmVUb29scyh7XHJcbiAgICAgIHRvb2xzOiBjb25maWcudG9vbHMsXHJcbiAgICAgIGNvbmZpZzogdG9vbHNfY29uZmlnLFxyXG4gICAgfSk7XHJcbiAgICBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5NZXNzYWdlU3lzdGVtLkxvYWRpbmcuaGlkZUxvYWRpbmcoKTtcclxuICAgIFJvYm90aWNzUmVhY3RDb21wb25lbnRzLk1lc3NhZ2VTeXN0ZW0uQWxlcnQuc2hvd0FsZXJ0KFxyXG4gICAgICBcIkV4ZXJjaXNlIGxvYWRlZCBzdWNjZXNzZnVsbHkuXCIsXHJcbiAgICAgIFwic3VjY2Vzc1wiXHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBleGVyY2lzZUNvbmZpZy5sZW5ndGggPiAwID8gKFxyXG4gICAgPEJveD5cclxuICAgICAgPEZvcm1Db250cm9sXHJcbiAgICAgICAgc3g9e3tcclxuICAgICAgICAgIG06IDEsXHJcbiAgICAgICAgICBtaW5XaWR0aDogMTIwLFxyXG4gICAgICAgICAgbWF4V2lkdGg6IDE1MCxcclxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZGlzYWJsZWQgPyBcIiNmNTdmNTFcIiA6IFwiIzRjYWY1MFwiLFxyXG4gICAgICAgICAgdGV4dE92ZXJGbG93OiBcImNsaXBcIixcclxuICAgICAgICB9fVxyXG4gICAgICAgIHNpemU9XCJzbWFsbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17XCJ1bml2ZXJzZS1zZWxlY3Rvci1sYWJlbFwifT5Vbml2ZXJzZTwvSW5wdXRMYWJlbD5cclxuICAgICAgICA8U2VsZWN0XHJcbiAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XHJcbiAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRVbml2ZXJzZX1cclxuICAgICAgICAgIGxhYmVsSWQ9XCJ1bml2ZXJzZS1zZWxlY3Rvci1sYWJlbFwiXHJcbiAgICAgICAgICBpZD17XCJ1bml2ZXJzZS1zZWxlY3RvclwifVxyXG4gICAgICAgICAgbGFiZWw9e1wiVW5pdmVyc2VcIn1cclxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICBoYW5kbGVVbml2ZXJzZShlLnRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtjb25maWd1cmF0aW9ucy5tYXAoKG9wdGlvbikgPT4gKFxyXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcHRpb24ubmFtZX0gdmFsdWU9e29wdGlvbn0+XHJcbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxyXG4gICAgICAgICAgICA8L01lbnVJdGVtPlxyXG4gICAgICAgICAgKSl9XHJcbiAgICAgICAgPC9TZWxlY3Q+XHJcbiAgICAgIDwvRm9ybUNvbnRyb2w+XHJcbiAgICA8L0JveD5cclxuICApIDogbnVsbDtcclxufVxyXG4iXSwibmFtZXMiOlsiZ2V0RGl2aWRlclV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiZ2V0TWVudUl0ZW1VdGlsaXR5Q2xhc3MiLCJfZXhjbHVkZWQiLCJNZW51SXRlbVJvb3QiLCJzdHlsZWQiLCJCdXR0b25CYXNlIiwic2hvdWxkRm9yd2FyZFByb3AiLCJwcm9wIiwibmFtZSIsIm92ZXJyaWRlc1Jlc29sdmVyIiwicHJvcHMiLCJzdHlsZXMiLCJvd25lclN0YXRlIiwicm9vdCIsImRlbnNlIiwiZGl2aWRlciIsImRpc2FibGVHdXR0ZXJzIiwiZ3V0dGVycyIsInRoZW1lIiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsInBvc2l0aW9uIiwidGV4dERlY29yYXRpb24iLCJtaW5IZWlnaHQiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImJveFNpemluZyIsIndoaXRlU3BhY2UiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsImJvcmRlckJvdHRvbSIsInZhcnMiLCJwYWxldHRlIiwiYmFja2dyb3VuZENsaXAiLCJiYWNrZ3JvdW5kQ29sb3IiLCJhY3Rpb24iLCJob3ZlciIsInNlbGVjdGVkIiwicHJpbWFyeSIsIm1haW5DaGFubmVsIiwic2VsZWN0ZWRPcGFjaXR5IiwibWFpbiIsImZvY3VzVmlzaWJsZSIsImZvY3VzT3BhY2l0eSIsImhvdmVyT3BhY2l0eSIsImZvY3VzIiwiZGlzYWJsZWQiLCJvcGFjaXR5IiwiZGlzYWJsZWRPcGFjaXR5IiwiZGl2aWRlckNsYXNzZXMiLCJtYXJnaW5Ub3AiLCJzcGFjaW5nIiwibWFyZ2luQm90dG9tIiwiaW5zZXQiLCJtYXJnaW5MZWZ0IiwibWluV2lkdGgiLCJicmVha3BvaW50cyIsInVwIiwiYm9keTIiLCJmb250U2l6ZSIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiYXV0b0ZvY3VzIiwiY29tcG9uZW50IiwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lIiwicm9sZSIsInRhYkluZGV4IiwidGFiSW5kZXhQcm9wIiwiY2xhc3NOYW1lIiwib3RoZXIiLCJjb250ZXh0IiwiTGlzdENvbnRleHQiLCJjaGlsZENvbnRleHQiLCJtZW51SXRlbVJlZiIsInVzZUVuaGFuY2VkRWZmZWN0IiwiY3VycmVudCIsImNsYXNzZXMiLCJzbG90cyIsImNvbXBvc2VkQ2xhc3NlcyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJoYW5kbGVSZWYiLCJ1c2VGb3JrUmVmIiwidW5kZWZpbmVkIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsImNoaWxkcmVuIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9zbGljZWRUb0FycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIldvcmxkU2VsZWN0b3IiLCJleGVyY2lzZUNvbmZpZyIsIkpTT04iLCJwYXJzZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0ZXh0Q29udGVudCIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsInNldERpc2FibGVkIiwiX3VzZVN0YXRlNCIsInNlbGVjdGVkVW5pdmVyc2UiLCJzZXRTZWxlY3RlZFVuaXZlcnNlIiwiX3VzZVN0YXRlNiIsImNvbmZpZ3VyYXRpb25zIiwidXNlRWZmZWN0IiwibWFwU2VsZWN0ZWQiLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJkYXRhIiwic3RhdGUiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInN1YnNjcmliZSIsImV2ZW50cyIsIlNUQVRFX0NIQU5HRUQiLCJ1bnN1YnNjcmliZSIsImhhbmRsZVVuaXZlcnNlIiwiX3JlZiIsIl9jYWxsZWUiLCJjb25maWciLCJ0b29sc19jb25maWdfYmFzZSIsInRvb2xzX2NvbmZpZ193b3JsZCIsInRvb2xzX2NvbmZpZyIsIl9jb250ZXh0IiwidGVybWluYXRlX2FwcGxpY2F0aW9uIiwidGVybWluYXRlX3Rvb2xzIiwidGVybWluYXRlX3VuaXZlcnNlIiwiUm9ib3RpY3NSZWFjdENvbXBvbmVudHMiLCJNZXNzYWdlU3lzdGVtIiwiTG9hZGluZyIsInNob3dMb2FkaW5nIiwid29ybGQiLCJtZXJnZSIsImxhdW5jaFdvcmxkIiwicm9ib3QiLCJwcmVwYXJlVG9vbHMiLCJ0b29scyIsImhpZGVMb2FkaW5nIiwiQWxlcnQiLCJzaG93QWxlcnQiLCJhcmd1bWVudHMiLCJhcHBseSIsIl9uZXh0IiwiX3Rocm93IiwiX3giLCJfanN4IiwiQm94IiwiX2pzeHMiLCJGb3JtQ29udHJvbCIsInN4IiwibSIsIm1heFdpZHRoIiwidGV4dE92ZXJGbG93Iiwic2l6ZSIsIklucHV0TGFiZWwiLCJpZCIsIlNlbGVjdCIsImxhYmVsSWQiLCJsYWJlbCIsIm9uQ2hhbmdlIiwidGFyZ2V0IiwibWFwIiwib3B0aW9uIiwiTWVudUl0ZW0iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1279.dcda7626.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1279.dcda7626.js.LICENSE.txt new file mode 100644 index 000000000..ae386fb79 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1279.dcda7626.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/react_frontend/static/react_frontend/js/1289.5e2d750d.js b/react_frontend/static/react_frontend/js/1289.5e2d750d.js new file mode 100644 index 000000000..1281211c1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1289.5e2d750d.js @@ -0,0 +1,3 @@ +/*! For license information please see 1289.5e2d750d.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1289],{1289:(e,n,o)=>{o.r(n),o.d(n,{default:()=>a});var t=o(6540),s=o(2597),r=o(4848);const a=function(e){return t.useEffect((function(){console.log("TestShowScreen subscribing to ['update'] events");var e=function(e){if(e.data.update.image){var n=document.getElementById("gui_canvas"),o=JSON.parse(e.data.update.image),t=(r=o.image,decodeURIComponent(escape(r))),s=o.shape;""!=t&&s instanceof Array&&(n.src="data:image/jpeg;base64,"+t,n.width=s[1],n.height=s[0])}var r;window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),(0,r.jsx)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative",justifyContent:"center"},children:(0,r.jsx)("img",{className:"image",id:"gui_canvas",src:s})})}},1020:(e,n,o)=>{var t=o(6540),s=Symbol.for("react.element"),r=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,i=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,n,o){var t,r={},u=null,d=null;for(t in void 0!==o&&(u=""+o),void 0!==n.key&&(u=""+n.key),void 0!==n.ref&&(d=n.ref),n)a.call(n,t)&&!c.hasOwnProperty(t)&&(r[t]=n[t]);if(e&&e.defaultProps)for(t in n=e.defaultProps)void 0===r[t]&&(r[t]=n[t]);return{$$typeof:s,type:e,key:u,ref:d,props:r,_owner:i.current}}n.Fragment=r,n.jsx=u,n.jsxs=u},4848:(e,n,o)=>{e.exports=o(1020)},2597:(e,n,o)=>{e.exports=o.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTI4OS5lODhhMzFjYi5qcyIsIm1hcHBpbmdzIjoiO2dMQXVEQSxRQWxEQSxTQUF3Q0EsR0EyQ3RDLE9BMUNBQyxFQUFBQSxXQUFnQixXQUNkQyxRQUFRQyxJQUFJLG1EQUNaLElBQU1DLEVBQVcsU0FBQ0MsR0FFaEIsR0FBSUEsRUFBUUMsS0FBS0MsT0FBT0MsTUFBTyxDQUc3QixJQUZJQyxFQUFTQyxTQUFTQyxlQUFlLGNBUWpDQyxFQUFhQyxLQUFLQyxNQUFNVCxFQUFRQyxLQUFLQyxPQUFPQyxPQUM5Q08sR0FObUJDLEVBTUVKLEVBQVdKLE1BTHZCUyxtQkFBbUJDLE9BQU9GLEtBTW5DRyxFQUFRUCxFQUFXTyxNQUVQLElBQVZKLEdBQWdCSSxhQUFpQkMsUUFDbkNYLEVBQU9ZLElBQU0sMEJBQTRCTixFQUN6Q04sRUFBT2EsTUFBUUgsRUFBTSxHQUNyQlYsRUFBT2MsT0FBU0osRUFBTSxHQUUxQixDQWRFLElBQXFCSCxFQWlCdkJRLE9BQU9DLDJCQUEyQkMsYUFBYUMsS0FBSyxNQUFPLE1BQzdELEVBT0EsT0FMQUgsT0FBT0MsMkJBQTJCQyxhQUFhRSxVQUM3QyxDQUFDSixPQUFPQywyQkFBMkJDLGFBQWFHLE9BQU9DLFFBQ3ZEMUIsR0FHSyxXQUNMRixRQUFRQyxJQUFJLDhEQUNacUIsT0FBT0MsMkJBQTJCQyxhQUFhSyxZQUM3QyxDQUFDUCxPQUFPQywyQkFBMkJDLGFBQWFHLE9BQU9DLFFBQ3ZEMUIsRUFFSixDQUNGLEdBQUcsS0FHRDRCLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsTUFBTyxDQUFDQyxRQUFTLE9BQVFaLE1BQU8sT0FBUUMsT0FBUSxPQUFRWSxTQUFTLFdBQVlDLGVBQWdCLFVBQVVDLFVBQzFHTCxFQUFBQSxFQUFBQSxLQUFBLE9BQUtNLFVBQVUsUUFBUUMsR0FBRyxhQUFhbEIsSUFBS21CLEtBR2xELGtCQzVDYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRWpFLE1BQU0rRCxFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUUMsU0FBUzVCLEVBQUUyQixFQUFRRSxJQUFJaEIsRUFBRWMsRUFBUUcsS0FBS2pCLGtCQ1B4V2tCLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9kaWdpdGFsX2ltYWdlX3Byb2Nlc3NpbmcvcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY0RpZ2l0YWxJbWFnZVByb2Nlc3NpbmcuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgbm9JbWFnZSBmcm9tIFwiLi4vLi4vYXNzZXRzL2ltZy9ub0ltYWdlLnBuZ1wiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvR1VJQ2FudmFzLmNzc1wiXHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY0RpZ2l0YWxJbWFnZVByb2Nlc3NpbmcocHJvcHMpIHtcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuXHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKSB7XHJcbiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc1wiKTtcclxuXHJcbiAgICAgICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgICAgIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKSxcclxuICAgICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG5cclxuICAgICAgICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2VuZCB0aGUgQUNLIG9mIHRoZSBtc2dcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwiYWNrXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsIHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiwgcG9zaXRpb246XCJyZWxhdGl2ZVwiLCBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIn19PlxyXG4gICAgICA8aW1nIGNsYXNzTmFtZT1cImltYWdlXCIgaWQ9XCJndWlfY2FudmFzXCIgc3JjPXtub0ltYWdlfS8+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY0RpZ2l0YWxJbWFnZVByb2Nlc3Npbmc7XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIlJlYWN0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJpbWFnZSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpbWFnZV9kYXRhIiwiSlNPTiIsInBhcnNlIiwic291cmNlIiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsInNoYXBlIiwiQXJyYXkiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsInVuc3Vic2NyaWJlIiwiX2pzeCIsInN0eWxlIiwiZGlzcGxheSIsInBvc2l0aW9uIiwianVzdGlmeUNvbnRlbnQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImlkIiwibm9JbWFnZSIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1289.5e2d750d.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1289.5e2d750d.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1289.5e2d750d.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1381.1e5ca14d.js b/react_frontend/static/react_frontend/js/1381.1e5ca14d.js new file mode 100644 index 000000000..0b2a4ff3d --- /dev/null +++ b/react_frontend/static/react_frontend/js/1381.1e5ca14d.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1381],{1381:(e,a,t)=>{function n(e){return decodeURIComponent(escape(e))}t.r(a),t.d(a,{drawImage:()=>o,drawLeftImage:()=>d});var i=new Image,r=new Image;function o(e){var a=document.getElementById("gui_canvas_right"),t=a.getContext("2d");function r(){window.requestAnimationFrame(r),t.drawImage(i,0,0)}i.onload=function(){r()};var o=JSON.parse(e.image),d=n(o.image),g=o.shape;""!=d&&(i.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}function d(e){var a=document.getElementById("gui_canvas_left"),t=a.getContext("2d");function i(){window.requestAnimationFrame(i),t.drawImage(r,0,0)}r.onload=function(){i()};var o=JSON.parse(e.image_left),d=n(o.image_left),g=o.shape;""!=d&&(r.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTM4MS5hZmE2ODRmOS5qcyIsIm1hcHBpbmdzIjoiZ0hBQ0EsU0FBU0EsRUFBWUMsR0FDakIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNyQyxDLG9EQUVBLElBQUlHLEVBQVEsSUFBSUMsTUFDWkMsRUFBYSxJQUFJRCxNQUVkLFNBQVNFLEVBQVdDLEdBQ3ZCLElBQUlDLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0xDLE9BQU9DLHNCQUFzQkYsR0FDN0JGLEVBQVFMLFVBQVVILEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNYSxPQUFTLFdBQ1hILEdBQ0osRUFTQSxJQUFJSSxFQUFhQyxLQUFLQyxNQUFNWixFQUFLSixPQUM3QmlCLEVBQVNyQixFQUFZa0IsRUFBV2QsT0FDaENrQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NqQixFQUFNbUIsSUFBTSwwQkFBNEJGLEVBQ3hDWixFQUFPZSxNQUFRRixFQUFNLEdBQ3JCYixFQUFPZ0IsT0FBU0gsRUFBTSxHQUU5QixDQUVPLFNBQVNJLEVBQWVsQixHQUMzQixJQUFJbUIsRUFBY2pCLFNBQVNDLGVBQWUsbUJBQzFDaUIsRUFBZUQsRUFBWWQsV0FBVyxNQVF0QyxTQUFTZ0IsSUFDTGQsT0FBT0Msc0JBQXNCYSxHQUM3QkQsRUFBYXJCLFVBQVVELEVBQVksRUFBRyxFQUMxQyxDQVJBQSxFQUFXVyxPQUFTLFdBQ2hCWSxHQUNKLEVBU0EsSUFBSVgsRUFBYUMsS0FBS0MsTUFBTVosRUFBS0YsWUFDN0JlLEVBQVNyQixFQUFZa0IsRUFBV1osWUFDaENnQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NmLEVBQVdpQixJQUFNLDBCQUE0QkYsRUFDN0NNLEVBQVlILE1BQVFGLEVBQU0sR0FDMUJLLEVBQVlGLE9BQVNILEVBQU0sR0FFbkMsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvc2l0aW9uX2NvbnRyb2xfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc1Bvc2l0aW9uQ29udHJvbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iXSwibmFtZXMiOlsiZGVjb2RlX3V0ZjgiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwiaW1hZ2UiLCJJbWFnZSIsImltYWdlX2xlZnQiLCJkcmF3SW1hZ2UiLCJkYXRhIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwidXBkYXRlX2ltYWdlIiwid2luZG93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib25sb2FkIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsInNvdXJjZSIsInNoYXBlIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiLCJkcmF3TGVmdEltYWdlIiwiY2FudmFzX2xlZnQiLCJjb250ZXh0X2xlZnQiLCJ1cGRhdGVfbGVmdF9pbWFnZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1475.e9dfcf38.js b/react_frontend/static/react_frontend/js/1475.e9dfcf38.js new file mode 100644 index 000000000..e425229c5 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1475.e9dfcf38.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1475,6377],{4943:(e,t,r)=>{r.r(t);var n=r(6540),c=r(4731),d=r(5338),a=(r(9163),r(4848)),s=document.getElementById("app");(0,d.H)(s).render((0,a.jsx)(n.StrictMode,{children:(0,a.jsx)(c.default,{})}))}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTQ3NS5lNDYyNmEzOC5qcyIsIm1hcHBpbmdzIjoia0xBTU1BLEVBQVlDLFNBQVNDLGVBQWUsUUFDN0JDLEVBQUFBLEVBQUFBLEdBQVdILEdBQ25CSSxRQUNIQyxFQUFBQSxFQUFBQSxLQUFDQyxFQUFBQSxXQUFnQixDQUFBQyxVQUNmRixFQUFBQSxFQUFBQSxLQUFDRyxFQUFBQSxRQUFHLE0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgJy4vaW5kZXguY3NzJztcclxuaW1wb3J0IEFwcCBmcm9tICcuL2NvbXBvbmVudHMvQXBwJztcclxuaW1wb3J0IHtjcmVhdGVSb290fSBmcm9tIFwicmVhY3QtZG9tL2NsaWVudFwiO1xyXG5pbXBvcnQgJy4vbGlicy90b29scy5qcyc7XHJcblxyXG5jb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXBwJyk7XHJcbmNvbnN0IHJvb3QgPSBjcmVhdGVSb290KGNvbnRhaW5lcik7XHJcbnJvb3QucmVuZGVyKFxyXG4gIDxSZWFjdC5TdHJpY3RNb2RlPlxyXG4gICAgPEFwcCAvPlxyXG4gIDwvUmVhY3QuU3RyaWN0TW9kZT5cclxuKTtcclxuIl0sIm5hbWVzIjpbImNvbnRhaW5lciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjcmVhdGVSb290IiwicmVuZGVyIiwiX2pzeCIsIlJlYWN0IiwiY2hpbGRyZW4iLCJBcHAiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1497.9cc132bc.js b/react_frontend/static/react_frontend/js/1497.9cc132bc.js new file mode 100644 index 000000000..d9d455c57 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1497.9cc132bc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1497],{1497:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1512.c7915f21.js b/react_frontend/static/react_frontend/js/1512.c7915f21.js new file mode 100644 index 000000000..0a9ab448b --- /dev/null +++ b/react_frontend/static/react_frontend/js/1512.c7915f21.js @@ -0,0 +1,30 @@ +/*! For license information please see 1512.c7915f21.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1512],{7437:(e,t,r)=>{"use strict";r.d(t,{AH:()=>l,i7:()=>u,mL:()=>c});var n=r(5684),o=r(6540),a=r(41),s=r(1287),i=r(6899),c=(r(4300),r(4146),(0,n.w)((function(e,t){var r=e.styles,c=(0,i.J)([r],void 0,o.useContext(n.T));if(!n.i){for(var l,u=c.name,p=c.styles,f=c.next;void 0!==f;)u+=" "+f.name,p+=f.styles,f=f.next;var m=!0===t.compat,y=t.insert("",{name:u,styles:p},t.sheet,m);return m?null:o.createElement("style",((l={})["data-emotion"]=t.key+"-global "+u,l.dangerouslySetInnerHTML={__html:y},l.nonce=t.sheet.nonce,l))}var h=o.useRef();return(0,s.i)((function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,o=document.querySelector('style[data-emotion="'+e+" "+c.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==o&&(n=!0,o.setAttribute("data-emotion",e),r.hydrate([o])),h.current=[r,n],function(){r.flush()}}),[t]),(0,s.i)((function(){var e=h.current,r=e[0];if(e[1])e[1]=!1;else{if(void 0!==c.next&&(0,a.sk)(t,c.next,!0),r.tags.length){var n=r.tags[r.tags.length-1].nextElementSibling;r.before=n,r.flush()}t.insert("",c,r,!1)}}),[t,c.name]),null})));function l(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";r.d(t,{A:()=>C});var n=r(8587),o=r(8168),a=r(6540),s=r(53),i=r(5659),c=r(7437),l=r(8466),u=r(4409),p=r(7577),f=r(8413),m=r(1609);function y(e){return(0,m.A)("MuiCircularProgress",e)}(0,f.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var h=r(4848);const d=["className","color","disableShrink","size","style","thickness","value","variant"];let g,v,b,A,x=e=>e;const S=(0,c.i7)(g||(g=x` + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +`)),w=(0,c.i7)(v||(v=x` + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } +`)),k=(0,p.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,l.A)(r.color)}`]]}})((({ownerState:e,theme:t})=>(0,o.A)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,c.AH)(b||(b=x` + animation: ${0} 1.4s linear infinite; + `),S))),$=(0,p.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),P=(0,p.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,l.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,o.A)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,c.AH)(A||(A=x` + animation: ${0} 1.4s ease-in-out infinite; + `),w))),C=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiCircularProgress"}),{className:a,color:c="primary",disableShrink:p=!1,size:f=40,style:m,thickness:g=3.6,value:v=0,variant:b="indeterminate"}=r,A=(0,n.A)(r,d),x=(0,o.A)({},r,{color:c,disableShrink:p,size:f,thickness:g,value:v,variant:b}),S=(e=>{const{classes:t,variant:r,color:n,disableShrink:o}=e,a={root:["root",r,`color${(0,l.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,l.A)(r)}`,o&&"circleDisableShrink"]};return(0,i.A)(a,y,t)})(x),w={},C={},M={};if("determinate"===b){const e=2*Math.PI*((44-g)/2);w.strokeDasharray=e.toFixed(3),M["aria-valuenow"]=Math.round(v),w.strokeDashoffset=`${((100-v)/100*e).toFixed(3)}px`,C.transform="rotate(-90deg)"}return(0,h.jsx)(k,(0,o.A)({className:(0,s.A)(S.root,a),style:(0,o.A)({width:f,height:f},C,m),ownerState:x,ref:t,role:"progressbar"},M,A,{children:(0,h.jsx)($,{className:S.svg,ownerState:x,viewBox:"22 22 44 44",children:(0,h.jsx)(P,{className:S.circle,style:w,ownerState:x,cx:44,cy:44,r:(44-g)/2,fill:"none",strokeWidth:g})})}))}))},4073:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var n=r(8587),o=r(8168),a=r(6540),s=r(53),i=r(9599),c=r(5659),l=r(7577),u=r(4409),p=r(8466),f=r(8413),m=r(1609);function y(e){return(0,m.A)("MuiTypography",e)}(0,f.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var h=r(4848);const d=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],g=(0,l.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,p.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,o.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),v={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},b={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},A=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiTypography"}),a=(e=>b[e]||e)(r.color),l=(0,i.A)((0,o.A)({},r,{color:a})),{align:f="inherit",className:m,component:A,gutterBottom:x=!1,noWrap:S=!1,paragraph:w=!1,variant:k="body1",variantMapping:$=v}=l,P=(0,n.A)(l,d),C=(0,o.A)({},l,{align:f,color:a,className:m,component:A,gutterBottom:x,noWrap:S,paragraph:w,variant:k,variantMapping:$}),M=A||(w?"p":$[k]||v[k])||"span",T=(e=>{const{align:t,gutterBottom:r,noWrap:n,paragraph:o,variant:a,classes:s}=e,i={root:["root",a,"inherit"!==e.align&&`align${(0,p.A)(t)}`,r&&"gutterBottom",n&&"noWrap",o&&"paragraph"]};return(0,c.A)(i,y,s)})(C);return(0,h.jsx)(g,(0,o.A)({as:M,ref:t,ownerState:C,className:(0,s.A)(T.root,m)},P))}))},5687:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=(0,r(7413).A)()},7413:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(8168),o=r(8587),a=r(6540),s=r(53),i=r(9359),c=r(3571),l=r(9599),u=r(2858),p=r(4848);const f=["className","component"];function m(e={}){const{themeId:t,defaultTheme:r,defaultClassName:m="MuiBox-root",generateClassName:y}=e,h=(0,i.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(c.A);return a.forwardRef((function(e,a){const i=(0,u.A)(r),c=(0,l.A)(e),{className:d,component:g="div"}=c,v=(0,o.A)(c,f);return(0,p.jsx)(h,(0,n.A)({as:g,ref:a,className:(0,s.A)(d,y?y(m):m),theme:t&&i[t]||i},v))}))}},9599:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(8168),o=r(8587),a=r(3272),s=r(4188);const i=["sx"],c=e=>{var t,r;const n={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:s.A;return Object.keys(e).forEach((t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]})),n};function l(e){const{sx:t}=e,r=(0,o.A)(e,i),{systemProps:s,otherProps:l}=c(r);let u;return u=Array.isArray(t)?[s,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,a.Q)(r)?(0,n.A)({},s,r):s}:(0,n.A)({},s,t),(0,n.A)({},l,{sx:u})}},1512:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n=r(6540),o=r(5556),a=r.n(o),s=r(5687),i=r(4073),c=r(3357),l=r(4848);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";var n=r(3404),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function c(e){return n.isMemo(e)?s:i[e.$$typeof]||o}i[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[n.Memo]=s;var l=Object.defineProperty,u=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,m=Object.getPrototypeOf,y=Object.prototype;e.exports=function e(t,r,n){if("string"!=typeof r){if(y){var o=m(r);o&&o!==y&&e(t,o,n)}var s=u(r);p&&(s=s.concat(p(r)));for(var i=c(t),h=c(r),d=0;d{"use strict";var r="function"==typeof Symbol&&Symbol.for,n=r?Symbol.for("react.element"):60103,o=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,s=r?Symbol.for("react.strict_mode"):60108,i=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,l=r?Symbol.for("react.context"):60110,u=r?Symbol.for("react.async_mode"):60111,p=r?Symbol.for("react.concurrent_mode"):60111,f=r?Symbol.for("react.forward_ref"):60112,m=r?Symbol.for("react.suspense"):60113,y=r?Symbol.for("react.suspense_list"):60120,h=r?Symbol.for("react.memo"):60115,d=r?Symbol.for("react.lazy"):60116,g=r?Symbol.for("react.block"):60121,v=r?Symbol.for("react.fundamental"):60117,b=r?Symbol.for("react.responder"):60118,A=r?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case u:case p:case a:case i:case s:case m:return e;default:switch(e=e&&e.$$typeof){case l:case f:case d:case h:case c:return e;default:return t}}case o:return t}}}function S(e){return x(e)===p}t.AsyncMode=u,t.ConcurrentMode=p,t.ContextConsumer=l,t.ContextProvider=c,t.Element=n,t.ForwardRef=f,t.Fragment=a,t.Lazy=d,t.Memo=h,t.Portal=o,t.Profiler=i,t.StrictMode=s,t.Suspense=m,t.isAsyncMode=function(e){return S(e)||x(e)===u},t.isConcurrentMode=S,t.isContextConsumer=function(e){return x(e)===l},t.isContextProvider=function(e){return x(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===a},t.isLazy=function(e){return x(e)===d},t.isMemo=function(e){return x(e)===h},t.isPortal=function(e){return x(e)===o},t.isProfiler=function(e){return x(e)===i},t.isStrictMode=function(e){return x(e)===s},t.isSuspense=function(e){return x(e)===m},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===p||e===i||e===s||e===m||e===y||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===h||e.$$typeof===c||e.$$typeof===l||e.$$typeof===f||e.$$typeof===v||e.$$typeof===b||e.$$typeof===A||e.$$typeof===g)},t.typeOf=x},3404:(e,t,r)=>{"use strict";e.exports=r(3072)},2694:(e,t,r)=>{"use strict";var n=r(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,a,s){if(s!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixPQUFRaEIsRUFDUmlCLE9BQVFqQixFQUNSa0IsT0FBUWxCLEVBRVJtQixJQUFLbkIsRUFDTG9CLFFBQVNaLEVBQ1R2UixRQUFTK1EsRUFDVHFCLFlBQWFyQixFQUNic0IsV0FBWWQsRUFDWmxTLEtBQU0wUixFQUNOdUIsU0FBVWYsRUFDVmdCLE1BQU9oQixFQUNQaUIsVUFBV2pCLEVBQ1hrQixNQUFPbEIsRUFDUG1CLE1BQU9uQixFQUVQb0IsZUFBZ0I5QixFQUNoQkMsa0JBQW1CRixHQUtyQixPQUZBYSxFQUFlekcsVUFBWXlHLEVBRXBCQSxDQUNULGtCQy9DRXpFLEVBQU9DLFFBQVUsRUFBUSxLQUFSLDBCQ05uQkQsRUFBT0MsUUFGb0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DaXJjdWxhclByb2dyZXNzL2NpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQ2lyY3VsYXJQcm9ncmVzcy9DaXJjdWxhclByb2dyZXNzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeS90eXBvZ3JhcGh5Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvVHlwb2dyYXBoeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vQm94L0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3JlYXRlQm94LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zdHlsZUZ1bmN0aW9uU3gvZXh0ZW5kU3hQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsaXplcnMvR2F6ZWJvVmlld2VyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLCBzbG90KTtcbn1cbmNvbnN0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2lyY3VsYXJQcm9ncmVzcycsIFsncm9vdCcsICdkZXRlcm1pbmF0ZScsICdpbmRldGVybWluYXRlJywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdzdmcnLCAnY2lyY2xlJywgJ2NpcmNsZURldGVybWluYXRlJywgJ2NpcmNsZUluZGV0ZXJtaW5hdGUnLCAnY2lyY2xlRGlzYWJsZVNocmluayddKTtcbmV4cG9ydCBkZWZhdWx0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGlzYWJsZVNocmlua1wiLCBcInNpemVcIiwgXCJzdHlsZVwiLCBcInRoaWNrbmVzc1wiLCBcInZhbHVlXCIsIFwidmFyaWFudFwiXTtcbmxldCBfID0gdCA9PiB0LFxuICBfdCxcbiAgX3QyLFxuICBfdDMsXG4gIF90NDtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIGNzcyB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2NpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBTSVpFID0gNDQ7XG5jb25zdCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lID0ga2V5ZnJhbWVzKF90IHx8IChfdCA9IF9gXG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbmApKTtcbmNvbnN0IGNpcmN1bGFyRGFzaEtleWZyYW1lID0ga2V5ZnJhbWVzKF90MiB8fCAoX3QyID0gX2BcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTE1cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjVweDtcbiAgfVxuYCkpO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgdmFyaWFudCxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlU2hyaW5rXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWBdLFxuICAgIHN2ZzogWydzdmcnXSxcbiAgICBjaXJjbGU6IFsnY2lyY2xlJywgYGNpcmNsZSR7Y2FwaXRhbGl6ZSh2YXJpYW50KX1gLCBkaXNhYmxlU2hyaW5rICYmICdjaXJjbGVEaXNhYmxlU2hyaW5rJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBDaXJjdWxhclByb2dyZXNzUm9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJ1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnICYmIHtcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCd0cmFuc2Zvcm0nKVxufSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbn0pLCAoe1xuICBvd25lclN0YXRlXG59KSA9PiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdpbmRldGVybWluYXRlJyAmJiBjc3MoX3QzIHx8IChfdDMgPSBfYFxuICAgICAgYW5pbWF0aW9uOiAkezB9IDEuNHMgbGluZWFyIGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lKSk7XG5jb25zdCBDaXJjdWxhclByb2dyZXNzU1ZHID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJyxcbiAgc2xvdDogJ1N2ZycsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnN2Z1xufSkoe1xuICBkaXNwbGF5OiAnYmxvY2snIC8vIEtlZXBzIHRoZSBwcm9ncmVzcyBjZW50ZXJlZFxufSk7XG5cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUgPSBzdHlsZWQoJ2NpcmNsZScsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnQ2lyY2xlJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5jaXJjbGUsIHN0eWxlc1tgY2lyY2xlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9YF0sIG93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBzdHlsZXMuY2lyY2xlRGlzYWJsZVNocmlua107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcidcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2RldGVybWluYXRlJyAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnKVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYge1xuICAvLyBTb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBsb29rcyBmaW5lIHdhaXRpbmcgZm9yIHRoZSBhbmltYXRpb24gdG8ga2lja3MgaW4uXG4gIHN0cm9rZURhc2hhcnJheTogJzgwcHgsIDIwMHB4JyxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMCAvLyBBZGQgdGhlIHVuaXQgdG8gZml4IGEgRWRnZSAxNiBhbmQgYmVsb3cgYnVnLlxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmICFvd25lclN0YXRlLmRpc2FibGVTaHJpbmsgJiYgY3NzKF90NCB8fCAoX3Q0ID0gX2BcbiAgICAgIGFuaW1hdGlvbjogJHswfSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhckRhc2hLZXlmcmFtZSkpO1xuXG4vKipcbiAqICMjIEFSSUFcbiAqXG4gKiBJZiB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGRlc2NyaWJpbmcgdGhlIGxvYWRpbmcgcHJvZ3Jlc3Mgb2YgYSBwYXJ0aWN1bGFyIHJlZ2lvbiBvZiBhIHBhZ2UsXG4gKiB5b3Ugc2hvdWxkIHVzZSBgYXJpYS1kZXNjcmliZWRieWAgdG8gcG9pbnQgdG8gdGhlIHByb2dyZXNzIGJhciwgYW5kIHNldCB0aGUgYGFyaWEtYnVzeWBcbiAqIGF0dHJpYnV0ZSB0byBgdHJ1ZWAgb24gdGhhdCByZWdpb24gdW50aWwgaXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuXG4gKi9cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3MgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDaXJjdWxhclByb2dyZXNzKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBkaXNhYmxlU2hyaW5rID0gZmFsc2UsXG4gICAgICBzaXplID0gNDAsXG4gICAgICBzdHlsZSxcbiAgICAgIHRoaWNrbmVzcyA9IDMuNixcbiAgICAgIHZhbHVlID0gMCxcbiAgICAgIHZhcmlhbnQgPSAnaW5kZXRlcm1pbmF0ZSdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmssXG4gICAgc2l6ZSxcbiAgICB0aGlja25lc3MsXG4gICAgdmFsdWUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBjaXJjbGVTdHlsZSA9IHt9O1xuICBjb25zdCByb290U3R5bGUgPSB7fTtcbiAgY29uc3Qgcm9vdFByb3BzID0ge307XG4gIGlmICh2YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnKSB7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogKChTSVpFIC0gdGhpY2tuZXNzKSAvIDIpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2UudG9GaXhlZCgzKTtcbiAgICByb290UHJvcHNbJ2FyaWEtdmFsdWVub3cnXSA9IE1hdGgucm91bmQodmFsdWUpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBgJHsoKDEwMCAtIHZhbHVlKSAvIDEwMCAqIGNpcmN1bWZlcmVuY2UpLnRvRml4ZWQoMyl9cHhgO1xuICAgIHJvb3RTdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKC05MGRlZyknO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgaGVpZ2h0OiBzaXplXG4gICAgfSwgcm9vdFN0eWxlLCBzdHlsZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBcInByb2dyZXNzYmFyXCJcbiAgfSwgcm9vdFByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzU1ZHLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3ZnLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHZpZXdCb3g6IGAke1NJWkUgLyAyfSAke1NJWkUgLyAyfSAke1NJWkV9ICR7U0laRX1gLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmNpcmNsZSxcbiAgICAgICAgc3R5bGU6IGNpcmNsZVN0eWxlLFxuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBjeDogU0laRSxcbiAgICAgICAgY3k6IFNJWkUsXG4gICAgICAgIHI6IChTSVpFIC0gdGhpY2tuZXNzKSAvIDIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2VXaWR0aDogdGhpY2tuZXNzXG4gICAgICB9KVxuICAgIH0pXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ2lyY3VsYXJQcm9ncmVzcy5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgc2hyaW5rIGFuaW1hdGlvbiBpcyBkaXNhYmxlZC5cbiAgICogVGhpcyBvbmx5IHdvcmtzIGlmIHZhcmlhbnQgaXMgYGluZGV0ZXJtaW5hdGVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVNocmluazogY2hhaW5Qcm9wVHlwZXMoUHJvcFR5cGVzLmJvb2wsIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMuZGlzYWJsZVNocmluayAmJiBwcm9wcy52YXJpYW50ICYmIHByb3BzLnZhcmlhbnQgIT09ICdpbmRldGVybWluYXRlJykge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignTVVJOiBZb3UgaGF2ZSBwcm92aWRlZCB0aGUgYGRpc2FibGVTaHJpbmtgIHByb3AgJyArICd3aXRoIGEgdmFyaWFudCBvdGhlciB0aGFuIGBpbmRldGVybWluYXRlYC4gVGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJZiB1c2luZyBhIG51bWJlciwgdGhlIHBpeGVsIHVuaXQgaXMgYXNzdW1lZC5cbiAgICogSWYgdXNpbmcgYSBzdHJpbmcsIHlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIENTUyB1bml0LCBlLmcgJzNyZW0nLlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdGhpY2tuZXNzIG9mIHRoZSBjaXJjbGUuXG4gICAqIEBkZWZhdWx0IDMuNlxuICAgKi9cbiAgdGhpY2tuZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgZm9yIHRoZSBkZXRlcm1pbmF0ZSB2YXJpYW50LlxuICAgKiBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIFVzZSBpbmRldGVybWluYXRlIHdoZW4gdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgdmFsdWUuXG4gICAqIEBkZWZhdWx0ICdpbmRldGVybWluYXRlJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnZGV0ZXJtaW5hdGUnLCAnaW5kZXRlcm1pbmF0ZSddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENpcmN1bGFyUHJvZ3Jlc3M7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVR5cG9ncmFwaHknLCBzbG90KTtcbn1cbmNvbnN0IHR5cG9ncmFwaHlDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVHlwb2dyYXBoeScsIFsncm9vdCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdzdWJ0aXRsZTEnLCAnc3VidGl0bGUyJywgJ2JvZHkxJywgJ2JvZHkyJywgJ2luaGVyaXQnLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnb3ZlcmxpbmUnLCAnYWxpZ25MZWZ0JywgJ2FsaWduUmlnaHQnLCAnYWxpZ25DZW50ZXInLCAnYWxpZ25KdXN0aWZ5JywgJ25vV3JhcCcsICdndXR0ZXJCb3R0b20nLCAncGFyYWdyYXBoJ10pO1xuZXhwb3J0IGRlZmF1bHQgdHlwb2dyYXBoeUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWxpZ25cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJndXR0ZXJCb3R0b21cIiwgXCJub1dyYXBcIiwgXCJwYXJhZ3JhcGhcIiwgXCJ2YXJpYW50XCIsIFwidmFyaWFudE1hcHBpbmdcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9leHRlbmRTeFByb3AgYXMgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHsgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vdHlwb2dyYXBoeUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbGlnbixcbiAgICBndXR0ZXJCb3R0b20sXG4gICAgbm9XcmFwLFxuICAgIHBhcmFncmFwaCxcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBgYWxpZ24ke2NhcGl0YWxpemUoYWxpZ24pfWAsIGd1dHRlckJvdHRvbSAmJiAnZ3V0dGVyQm90dG9tJywgbm9XcmFwICYmICdub1dyYXAnLCBwYXJhZ3JhcGggJiYgJ3BhcmFncmFwaCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuZXhwb3J0IGNvbnN0IFR5cG9ncmFwaHlSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpVHlwb2dyYXBoeScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGFsaWduJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuYWxpZ24pfWBdLCBvd25lclN0YXRlLm5vV3JhcCAmJiBzdHlsZXMubm9XcmFwLCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiBzdHlsZXMuZ3V0dGVyQm90dG9tLCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiBzdHlsZXMucGFyYWdyYXBoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgbWFyZ2luOiAwXG59LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgdGhlbWUudHlwb2dyYXBoeVtvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYge1xuICB0ZXh0QWxpZ246IG93bmVyU3RhdGUuYWxpZ25cbn0sIG93bmVyU3RhdGUubm9XcmFwICYmIHtcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnXG59LCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiB7XG4gIG1hcmdpbkJvdHRvbTogJzAuMzVlbSdcbn0sIG93bmVyU3RhdGUucGFyYWdyYXBoICYmIHtcbiAgbWFyZ2luQm90dG9tOiAxNlxufSkpO1xuY29uc3QgZGVmYXVsdFZhcmlhbnRNYXBwaW5nID0ge1xuICBoMTogJ2gxJyxcbiAgaDI6ICdoMicsXG4gIGgzOiAnaDMnLFxuICBoNDogJ2g0JyxcbiAgaDU6ICdoNScsXG4gIGg2OiAnaDYnLFxuICBzdWJ0aXRsZTE6ICdoNicsXG4gIHN1YnRpdGxlMjogJ2g2JyxcbiAgYm9keTE6ICdwJyxcbiAgYm9keTI6ICdwJyxcbiAgaW5oZXJpdDogJ3AnXG59O1xuXG4vLyBUT0RPIHY2OiBkZXByZWNhdGUgdGhlc2UgY29sb3IgdmFsdWVzIGluIHY1LnggYW5kIHJlbW92ZSB0aGUgdHJhbnNmb3JtYXRpb24gaW4gdjZcbmNvbnN0IGNvbG9yVHJhbnNmb3JtYXRpb25zID0ge1xuICBwcmltYXJ5OiAncHJpbWFyeS5tYWluJyxcbiAgdGV4dFByaW1hcnk6ICd0ZXh0LnByaW1hcnknLFxuICBzZWNvbmRhcnk6ICdzZWNvbmRhcnkubWFpbicsXG4gIHRleHRTZWNvbmRhcnk6ICd0ZXh0LnNlY29uZGFyeScsXG4gIGVycm9yOiAnZXJyb3IubWFpbidcbn07XG5jb25zdCB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzID0gY29sb3IgPT4ge1xuICByZXR1cm4gY29sb3JUcmFuc2Zvcm1hdGlvbnNbY29sb3JdIHx8IGNvbG9yO1xufTtcbmNvbnN0IFR5cG9ncmFwaHkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUeXBvZ3JhcGh5KGluUHJvcHMsIHJlZikge1xuICBjb25zdCB0aGVtZVByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVR5cG9ncmFwaHknXG4gIH0pO1xuICBjb25zdCBjb2xvciA9IHRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnModGhlbWVQcm9wcy5jb2xvcik7XG4gIGNvbnN0IHByb3BzID0gZXh0ZW5kU3hQcm9wKF9leHRlbmRzKHt9LCB0aGVtZVByb3BzLCB7XG4gICAgY29sb3JcbiAgfSkpO1xuICBjb25zdCB7XG4gICAgICBhbGlnbiA9ICdpbmhlcml0JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGd1dHRlckJvdHRvbSA9IGZhbHNlLFxuICAgICAgbm9XcmFwID0gZmFsc2UsXG4gICAgICBwYXJhZ3JhcGggPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAnYm9keTEnLFxuICAgICAgdmFyaWFudE1hcHBpbmcgPSBkZWZhdWx0VmFyaWFudE1hcHBpbmdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFsaWduLFxuICAgIGNvbG9yLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb21wb25lbnQsXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICB2YXJpYW50TWFwcGluZ1xuICB9KTtcbiAgY29uc3QgQ29tcG9uZW50ID0gY29tcG9uZW50IHx8IChwYXJhZ3JhcGggPyAncCcgOiB2YXJpYW50TWFwcGluZ1t2YXJpYW50XSB8fCBkZWZhdWx0VmFyaWFudE1hcHBpbmdbdmFyaWFudF0pIHx8ICdzcGFuJztcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHlwb2dyYXBoeVJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogQ29tcG9uZW50LFxuICAgIHJlZjogcmVmLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKVxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUeXBvZ3JhcGh5LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFNldCB0aGUgdGV4dC1hbGlnbiBvbiB0aGUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCAnaW5oZXJpdCdcbiAgICovXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoWydjZW50ZXInLCAnaW5oZXJpdCcsICdqdXN0aWZ5JywgJ2xlZnQnLCAncmlnaHQnXSksXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dCB3aWxsIGhhdmUgYSBib3R0b20gbWFyZ2luLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZ3V0dGVyQm90dG9tOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBub3Qgd3JhcCwgYnV0IGluc3RlYWQgd2lsbCB0cnVuY2F0ZSB3aXRoIGEgdGV4dCBvdmVyZmxvdyBlbGxpcHNpcy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRleHQgb3ZlcmZsb3cgY2FuIG9ubHkgaGFwcGVuIHdpdGggYmxvY2sgb3IgaW5saW5lLWJsb2NrIGxldmVsIGVsZW1lbnRzXG4gICAqICh0aGUgZWxlbWVudCBuZWVkcyB0byBoYXZlIGEgd2lkdGggaW4gb3JkZXIgdG8gb3ZlcmZsb3cpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9XcmFwOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGVsZW1lbnQgd2lsbCBiZSBhIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcGFyYWdyYXBoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHRoZW1lIHR5cG9ncmFwaHkgc3R5bGVzLlxuICAgKiBAZGVmYXVsdCAnYm9keTEnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2JvZHkxJywgJ2JvZHkyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2luaGVyaXQnLCAnb3ZlcmxpbmUnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMiddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCBtYXBzIHRoZSB2YXJpYW50IHByb3AgdG8gYSByYW5nZSBvZiBkaWZmZXJlbnQgSFRNTCBlbGVtZW50IHR5cGVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIHN1YnRpdGxlMSB0byBgPGg2PmAuXG4gICAqIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGF0IG1hcHBpbmcsIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93bi5cbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGBjb21wb25lbnRgIHByb3AuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBoMTogJ2gxJyxcbiAgICogICBoMjogJ2gyJyxcbiAgICogICBoMzogJ2gzJyxcbiAgICogICBoNDogJ2g0JyxcbiAgICogICBoNTogJ2g1JyxcbiAgICogICBoNjogJ2g2JyxcbiAgICogICBzdWJ0aXRsZTE6ICdoNicsXG4gICAqICAgc3VidGl0bGUyOiAnaDYnLFxuICAgKiAgIGJvZHkxOiAncCcsXG4gICAqICAgYm9keTI6ICdwJyxcbiAgICogICBpbmhlcml0OiAncCcsXG4gICAqIH1cbiAgICovXG4gIHZhcmlhbnRNYXBwaW5nOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vYmplY3Rcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUeXBvZ3JhcGh5OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjcmVhdGVCb3ggZnJvbSAnLi4vY3JlYXRlQm94JztcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCgpO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAbXVpL3N0eWxlZC1lbmdpbmUnO1xuaW1wb3J0IHN0eWxlRnVuY3Rpb25TeCwgeyBleHRlbmRTeFByb3AgfSBmcm9tICcuL3N0eWxlRnVuY3Rpb25TeCc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi91c2VUaGVtZSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQm94KG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdGhlbWVJZCxcbiAgICBkZWZhdWx0VGhlbWUsXG4gICAgZGVmYXVsdENsYXNzTmFtZSA9ICdNdWlCb3gtcm9vdCcsXG4gICAgZ2VuZXJhdGVDbGFzc05hbWVcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IEJveFJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiBwcm9wICE9PSAndGhlbWUnICYmIHByb3AgIT09ICdzeCcgJiYgcHJvcCAhPT0gJ2FzJ1xuICB9KShzdHlsZUZ1bmN0aW9uU3gpO1xuICBjb25zdCBCb3ggPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCb3goaW5Qcm9wcywgcmVmKSB7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZShkZWZhdWx0VGhlbWUpO1xuICAgIGNvbnN0IF9leHRlbmRTeFByb3AgPSBleHRlbmRTeFByb3AoaW5Qcm9wcyksXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgY29tcG9uZW50ID0gJ2RpdidcbiAgICAgIH0gPSBfZXh0ZW5kU3hQcm9wLFxuICAgICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfZXh0ZW5kU3hQcm9wLCBfZXhjbHVkZWQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChCb3hSb290LCBfZXh0ZW5kcyh7XG4gICAgICBhczogY29tcG9uZW50LFxuICAgICAgcmVmOiByZWYsXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3NOYW1lLCBnZW5lcmF0ZUNsYXNzTmFtZSA/IGdlbmVyYXRlQ2xhc3NOYW1lKGRlZmF1bHRDbGFzc05hbWUpIDogZGVmYXVsdENsYXNzTmFtZSksXG4gICAgICB0aGVtZTogdGhlbWVJZCA/IHRoZW1lW3RoZW1lSWRdIHx8IHRoZW1lIDogdGhlbWVcbiAgICB9LCBvdGhlcikpO1xuICB9KTtcbiAgcmV0dXJuIEJveDtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wic3hcIl07XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZGVmYXVsdFN4Q29uZmlnIGZyb20gJy4vZGVmYXVsdFN4Q29uZmlnJztcbmNvbnN0IHNwbGl0UHJvcHMgPSBwcm9wcyA9PiB7XG4gIHZhciBfcHJvcHMkdGhlbWUkdW5zdGFibGUsIF9wcm9wcyR0aGVtZTtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHN5c3RlbVByb3BzOiB7fSxcbiAgICBvdGhlclByb3BzOiB7fVxuICB9O1xuICBjb25zdCBjb25maWcgPSAoX3Byb3BzJHRoZW1lJHVuc3RhYmxlID0gcHJvcHMgPT0gbnVsbCB8fCAoX3Byb3BzJHRoZW1lID0gcHJvcHMudGhlbWUpID09IG51bGwgPyB2b2lkIDAgOiBfcHJvcHMkdGhlbWUudW5zdGFibGVfc3hDb25maWcpICE9IG51bGwgPyBfcHJvcHMkdGhlbWUkdW5zdGFibGUgOiBkZWZhdWx0U3hDb25maWc7XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIGlmIChjb25maWdbcHJvcF0pIHtcbiAgICAgIHJlc3VsdC5zeXN0ZW1Qcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQub3RoZXJQcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0ZW5kU3hQcm9wKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICAgIHN4OiBpblN4XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHtcbiAgICBzeXN0ZW1Qcm9wcyxcbiAgICBvdGhlclByb3BzXG4gIH0gPSBzcGxpdFByb3BzKG90aGVyKTtcbiAgbGV0IGZpbmFsU3g7XG4gIGlmIChBcnJheS5pc0FycmF5KGluU3gpKSB7XG4gICAgZmluYWxTeCA9IFtzeXN0ZW1Qcm9wcywgLi4uaW5TeF07XG4gIH0gZWxzZSBpZiAodHlwZW9mIGluU3ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBmaW5hbFN4ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluU3goLi4uYXJncyk7XG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gc3lzdGVtUHJvcHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCByZXN1bHQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZmluYWxTeCA9IF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgaW5TeCk7XG4gIH1cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdGhlclByb3BzLCB7XG4gICAgc3g6IGZpbmFsU3hcbiAgfSk7XG59IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvc3lzdGVtXCI7XHJcbmltcG9ydCB7IENpcmN1bGFyUHJvZ3Jlc3MsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5cclxuZnVuY3Rpb24gR2F6ZWJvVmlld2VyKHByb3BzKSB7XHJcbiAgY29uc3QgW2VuYWJsZUdhemVibywgaGFuZGxlRW5hYmxlR2F6ZWJvXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZiAobWVzc2FnZS5kYXRhLnN0YXRlID09PSBcInRvb2xzX3JlYWR5XCIpIHtcclxuICAgICAgICBoYW5kbGVFbmFibGVHYXplYm8odHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8PlxyXG4gICAgICB7ZW5hYmxlR2F6ZWJvID8gKFxyXG4gICAgICAgIDxCb3hcclxuICAgICAgICAgIHN4PXt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgICAgICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxpZnJhbWVcclxuICAgICAgICAgICAgaWQ9e1wiaWZyYW1lXCJ9XHJcbiAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHNyYz17XHJcbiAgICAgICAgICAgICAgXCJodHRwOi8vMTI3LjAuMC4xOjYwODAvdm5jLmh0bWw/cmVzaXplPXJlbW90ZSZhdXRvY29ubmVjdD10cnVlJnJlY29ubmVjdD10cnVlXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L0JveD5cclxuICAgICAgKSA6IChcclxuICAgICAgICA8Qm94XHJcbiAgICAgICAgICBzeD17e1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcclxuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXHJcblxyXG4gICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgICAgICAgIGhlaWdodDogXCIxMDAlXCIsXHJcbiAgICAgICAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+e1wiTG9hZGluZyBzaW11bGF0aW9uICAgXCJ9IDwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgIDxDaXJjdWxhclByb2dyZXNzIHNpemU9ezIwfSAvPlxyXG4gICAgICAgIDwvQm94PlxyXG4gICAgICApfVxyXG4gICAgPC8+XHJcbiAgKTtcclxufVxyXG5HYXplYm9WaWV3ZXIucHJvcFR5cGVzID0ge1xyXG4gIGNvbnRleHQ6IFByb3BUeXBlcy5hbnksXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBHYXplYm9WaWV3ZXI7XHJcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iXSwibmFtZXMiOlsiR2xvYmFsIiwidyIsInByb3BzIiwiY2FjaGUiLCJzdHlsZXMiLCJzZXJpYWxpemVkIiwidW5kZWZpbmVkIiwiVCIsImkiLCJfcmVmIiwic2VyaWFsaXplZE5hbWVzIiwibmFtZSIsInNlcmlhbGl6ZWRTdHlsZXMiLCJuZXh0Iiwic2hvdWxkQ2FjaGUiLCJjb21wYXQiLCJydWxlcyIsImluc2VydCIsInNoZWV0Iiwia2V5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJub25jZSIsInNoZWV0UmVmIiwiY29uc3RydWN0b3IiLCJjb250YWluZXIiLCJzcGVlZHkiLCJpc1NwZWVkeSIsInJlaHlkcmF0aW5nIiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInRhZ3MiLCJsZW5ndGgiLCJiZWZvcmUiLCJzZXRBdHRyaWJ1dGUiLCJoeWRyYXRlIiwiY3VycmVudCIsImZsdXNoIiwic2hlZXRSZWZDdXJyZW50IiwiZWxlbWVudCIsIm5leHRFbGVtZW50U2libGluZyIsImNzcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5Iiwia2V5ZnJhbWVzIiwiaW5zZXJ0YWJsZSIsImFwcGx5IiwiYW5pbSIsInRvU3RyaW5nIiwidGhpcyIsImdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MiLCJzbG90IiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfIiwidCIsImNpcmN1bGFyUm90YXRlS2V5ZnJhbWUiLCJjaXJjdWxhckRhc2hLZXlmcmFtZSIsIkNpcmN1bGFyUHJvZ3Jlc3NSb290Iiwic3R5bGVkIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJvd25lclN0YXRlIiwicm9vdCIsInZhcmlhbnQiLCJjYXBpdGFsaXplIiwiY29sb3IiLCJ0aGVtZSIsImRpc3BsYXkiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJ2YXJzIiwicGFsZXR0ZSIsIm1haW4iLCJDaXJjdWxhclByb2dyZXNzU1ZHIiwic3ZnIiwiQ2lyY3VsYXJQcm9ncmVzc0NpcmNsZSIsImNpcmNsZSIsImRpc2FibGVTaHJpbmsiLCJjaXJjbGVEaXNhYmxlU2hyaW5rIiwic3Ryb2tlIiwic3Ryb2tlRGFzaGFycmF5Iiwic3Ryb2tlRGFzaG9mZnNldCIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiY2xhc3NOYW1lIiwic2l6ZSIsInN0eWxlIiwidGhpY2tuZXNzIiwidmFsdWUiLCJvdGhlciIsImNsYXNzZXMiLCJzbG90cyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJjaXJjbGVTdHlsZSIsInJvb3RTdHlsZSIsInJvb3RQcm9wcyIsImNpcmN1bWZlcmVuY2UiLCJNYXRoIiwiUEkiLCJ0b0ZpeGVkIiwicm91bmQiLCJ0cmFuc2Zvcm0iLCJ3aWR0aCIsImhlaWdodCIsInJvbGUiLCJjaGlsZHJlbiIsInZpZXdCb3giLCJjeCIsImN5IiwiciIsImZpbGwiLCJzdHJva2VXaWR0aCIsImdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MiLCJUeXBvZ3JhcGh5Um9vdCIsImFsaWduIiwibm9XcmFwIiwiZ3V0dGVyQm90dG9tIiwicGFyYWdyYXBoIiwibWFyZ2luIiwidHlwb2dyYXBoeSIsInRleHRBbGlnbiIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93Iiwid2hpdGVTcGFjZSIsIm1hcmdpbkJvdHRvbSIsImRlZmF1bHRWYXJpYW50TWFwcGluZyIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsInN1YnRpdGxlMSIsInN1YnRpdGxlMiIsImJvZHkxIiwiYm9keTIiLCJpbmhlcml0IiwiY29sb3JUcmFuc2Zvcm1hdGlvbnMiLCJwcmltYXJ5IiwidGV4dFByaW1hcnkiLCJzZWNvbmRhcnkiLCJ0ZXh0U2Vjb25kYXJ5IiwiZXJyb3IiLCJ0aGVtZVByb3BzIiwidHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyIsImV4dGVuZFN4UHJvcCIsImNvbXBvbmVudCIsInZhcmlhbnRNYXBwaW5nIiwiQ29tcG9uZW50IiwiYXMiLCJjcmVhdGVCb3giLCJvcHRpb25zIiwidGhlbWVJZCIsImRlZmF1bHRUaGVtZSIsImRlZmF1bHRDbGFzc05hbWUiLCJnZW5lcmF0ZUNsYXNzTmFtZSIsIkJveFJvb3QiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJfZXh0ZW5kU3hQcm9wIiwic3BsaXRQcm9wcyIsIl9wcm9wcyR0aGVtZSR1bnN0YWJsZSIsIl9wcm9wcyR0aGVtZSIsInJlc3VsdCIsInN5c3RlbVByb3BzIiwib3RoZXJQcm9wcyIsImNvbmZpZyIsInVuc3RhYmxlX3N4Q29uZmlnIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJzeCIsImluU3giLCJmaW5hbFN4IiwiaXNBcnJheSIsIkdhemVib1ZpZXdlciIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJSZWFjdCIsImVuYWJsZUdhemVibyIsImhhbmRsZUVuYWJsZUdhemVibyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJzdGF0ZSIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiU1RBVEVfQ0hBTkdFRCIsInVuc3Vic2NyaWJlIiwiX2pzeCIsIl9GcmFnbWVudCIsIkJveCIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsIm1heEhlaWdodCIsImlkIiwic3JjIiwiX2pzeHMiLCJUeXBvZ3JhcGh5IiwiQ2lyY3VsYXJQcm9ncmVzcyIsInByb3BUeXBlcyIsImNvbnRleHQiLCJQcm9wVHlwZXMiLCJyZWFjdElzIiwiUkVBQ1RfU1RBVElDUyIsImNoaWxkQ29udGV4dFR5cGVzIiwiY29udGV4dFR5cGUiLCJjb250ZXh0VHlwZXMiLCJkZWZhdWx0UHJvcHMiLCJkaXNwbGF5TmFtZSIsImdldERlZmF1bHRQcm9wcyIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm1peGlucyIsInR5cGUiLCJLTk9XTl9TVEFUSUNTIiwicHJvdG90eXBlIiwiY2FsbGVyIiwiY2FsbGVlIiwiYXJpdHkiLCJNRU1PX1NUQVRJQ1MiLCJjb21wYXJlIiwiVFlQRV9TVEFUSUNTIiwiZ2V0U3RhdGljcyIsImlzTWVtbyIsIkZvcndhcmRSZWYiLCJyZW5kZXIiLCJNZW1vIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0UHJvdG90eXBlT2YiLCJvYmplY3RQcm90b3R5cGUiLCJtb2R1bGUiLCJleHBvcnRzIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJpbmhlcml0ZWRDb21wb25lbnQiLCJjb25jYXQiLCJ0YXJnZXRTdGF0aWNzIiwic291cmNlU3RhdGljcyIsImRlc2NyaXB0b3IiLCJlIiwiYiIsIlN5bWJvbCIsImZvciIsImMiLCJkIiwiZiIsImciLCJoIiwiayIsImwiLCJtIiwibiIsInAiLCJxIiwidiIsIngiLCJ5IiwieiIsImEiLCJ1IiwiJCR0eXBlb2YiLCJBIiwiQXN5bmNNb2RlIiwiQ29uY3VycmVudE1vZGUiLCJDb250ZXh0Q29uc3VtZXIiLCJDb250ZXh0UHJvdmlkZXIiLCJFbGVtZW50IiwiRnJhZ21lbnQiLCJMYXp5IiwiUG9ydGFsIiwiUHJvZmlsZXIiLCJTdHJpY3RNb2RlIiwiU3VzcGVuc2UiLCJpc0FzeW5jTW9kZSIsImlzQ29uY3VycmVudE1vZGUiLCJpc0NvbnRleHRDb25zdW1lciIsImlzQ29udGV4dFByb3ZpZGVyIiwiaXNFbGVtZW50IiwiaXNGb3J3YXJkUmVmIiwiaXNGcmFnbWVudCIsImlzTGF6eSIsImlzUG9ydGFsIiwiaXNQcm9maWxlciIsImlzU3RyaWN0TW9kZSIsImlzU3VzcGVuc2UiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ0eXBlT2YiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1512.c7915f21.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1512.c7915f21.js.LICENSE.txt new file mode 100644 index 000000000..6f6f2bb3f --- /dev/null +++ b/react_frontend/static/react_frontend/js/1512.c7915f21.js.LICENSE.txt @@ -0,0 +1,8 @@ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1530.963cc910.js b/react_frontend/static/react_frontend/js/1530.963cc910.js new file mode 100644 index 000000000..d72115aae --- /dev/null +++ b/react_frontend/static/react_frontend/js/1530.963cc910.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1530],{1530:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1629.97ea6021.js b/react_frontend/static/react_frontend/js/1629.97ea6021.js new file mode 100644 index 000000000..ce6c5823d --- /dev/null +++ b/react_frontend/static/react_frontend/js/1629.97ea6021.js @@ -0,0 +1,3 @@ +/*! For license information please see 1629.97ea6021.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1629],{1629:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTYyOS5hZjEwM2YzYi5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjRCLFNBQUNBLEdBQzNCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL01vbnRlY2FybG9WaXN1YWxMb2MuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL01vbnRlY2FybG9WaXN1YWxMb2MuY3NzXCI7XHJcblxyXG5jb25zdCBNb250ZWNhcmxvVmlzdWFsTG9jID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1vbnRlY2FybG9WaXN1YWxMb2M7XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1629.97ea6021.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1629.97ea6021.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1629.97ea6021.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1644.a52b5796.js b/react_frontend/static/react_frontend/js/1644.a52b5796.js new file mode 100644 index 000000000..5aa28fd7f --- /dev/null +++ b/react_frontend/static/react_frontend/js/1644.a52b5796.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1644],{1644:(e,n,r)=>{r.r(n),r.d(n,{useUnload:()=>u});var t=r(6540),u=function(e){var n=(0,t.useRef)(e);(0,t.useEffect)((function(){var e=n.current;return window.addEventListener("beforeunload",e),function(){window.removeEventListener("beforeunload",e)}}),[n])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTY0NC4yYzMxNDVjMC5qcyIsIm1hcHBpbmdzIjoiOEpBRWFBLEVBQVksU0FBQ0MsR0FDeEIsSUFBTUMsR0FBS0MsRUFBQUEsRUFBQUEsUUFBT0YsSUFFbEJHLEVBQUFBLEVBQUFBLFlBQVUsV0FDUixJQUFNQyxFQUFXSCxFQUFHSSxRQUVwQixPQURBQyxPQUFPQyxpQkFBaUIsZUFBZ0JILEdBQ2pDLFdBQ0xFLE9BQU9FLG9CQUFvQixlQUFnQkosRUFDN0MsQ0FDRixHQUFHLENBQUNILEdBQ04sQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2hvb2tzL3VzZVVubG9hZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IHVzZVVubG9hZCA9IChmbikgPT4ge1xyXG4gIGNvbnN0IGNiID0gdXNlUmVmKGZuKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IG9uVW5sb2FkID0gY2IuY3VycmVudDtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIG9uVW5sb2FkKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsIG9uVW5sb2FkKTtcclxuICAgIH07XHJcbiAgfSwgW2NiXSk7XHJcbn07XHJcbiJdLCJuYW1lcyI6WyJ1c2VVbmxvYWQiLCJmbiIsImNiIiwidXNlUmVmIiwidXNlRWZmZWN0Iiwib25VbmxvYWQiLCJjdXJyZW50Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1653.6a994e92.js b/react_frontend/static/react_frontend/js/1653.6a994e92.js new file mode 100644 index 000000000..971cc0bf6 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1653.6a994e92.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1653],{7620:(e,t,r)=>{var a=r(4994);t.A=void 0;var o=a(r(2032)),n=r(4848),i=(0,o.default)((0,n.jsx)("path",{d:"M21 6h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1zm-4 6V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1z"}),"Forum");t.A=i},2274:(e,t,r)=>{var a=r(4994);t.A=void 0;var o=a(r(2032)),n=r(4848),i=(0,o.default)((0,n.jsx)("path",{d:"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"}),"Menu");t.A=i},1224:(e,t,r)=>{r.d(t,{A:()=>k});var a=r(8587),o=r(8168),n=r(6540),i=r(53),l=r(3726),s=r(5659),d=r(4279),c=r(7577),p=r(4409),h=r(6606),u=r(8466),v=r(8413),m=r(1609);function g(e){return(0,m.A)("MuiButton",e)}const f=(0,v.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var b=r(1848),x=r(4848);const A=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],y=e=>(0,o.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),w=(0,c.Ay)(h.A,{shouldForwardProp:e=>(0,c.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`${r.variant}${(0,u.A)(r.color)}`],t[`size${(0,u.A)(r.size)}`],t[`${r.variant}Size${(0,u.A)(r.size)}`],"inherit"===r.color&&t.colorInherit,r.disableElevation&&t.disableElevation,r.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var r,a;const n="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,o.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,o.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,o.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${f.focusVisible}`]:(0,o.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${f.disabled}`]:(0,o.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,d.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(r=(a=e.palette).getContrastText)?void 0:r.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:n,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${f.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${f.disabled}`]:{boxShadow:"none"}})),S=(0,c.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.startIcon,t[`iconSize${(0,u.A)(r.size)}`]]}})((({ownerState:e})=>(0,o.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},y(e)))),$=(0,c.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.endIcon,t[`iconSize${(0,u.A)(r.size)}`]]}})((({ownerState:e})=>(0,o.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},y(e)))),k=n.forwardRef((function(e,t){const r=n.useContext(b.A),d=(0,l.A)(r,e),c=(0,p.A)({props:d,name:"MuiButton"}),{children:h,color:v="primary",component:m="button",className:f,disabled:y=!1,disableElevation:k=!1,disableFocusRipple:z=!1,endIcon:C,focusVisibleClassName:I,fullWidth:R=!1,size:B="medium",startIcon:E,type:M,variant:T="text"}=c,W=(0,a.A)(c,A),N=(0,o.A)({},c,{color:v,component:m,disabled:y,disableElevation:k,disableFocusRipple:z,fullWidth:R,size:B,type:M,variant:T}),L=(e=>{const{color:t,disableElevation:r,fullWidth:a,size:n,variant:i,classes:l}=e,d={root:["root",i,`${i}${(0,u.A)(t)}`,`size${(0,u.A)(n)}`,`${i}Size${(0,u.A)(n)}`,"inherit"===t&&"colorInherit",r&&"disableElevation",a&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,u.A)(n)}`],endIcon:["endIcon",`iconSize${(0,u.A)(n)}`]},c=(0,s.A)(d,g,l);return(0,o.A)({},l,c)})(N),P=E&&(0,x.jsx)(S,{className:L.startIcon,ownerState:N,children:E}),D=C&&(0,x.jsx)($,{className:L.endIcon,ownerState:N,children:C});return(0,x.jsxs)(w,(0,o.A)({ownerState:N,className:(0,i.A)(r.className,L.root,f),component:m,disabled:y,focusRipple:!z,focusVisibleClassName:(0,i.A)(L.focusVisible,I),ref:t,type:M},W,{classes:L,children:[P,h,D]}))}))},1543:(e,t,r)=>{r.d(t,{A:()=>g});var a=r(8587),o=r(8168),n=r(6540),i=r(53),l=r(5659),s=r(4279),d=r(7577),c=r(4409),p=r(1347),h=r(4848);const u=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],v=(0,d.Ay)("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.absolute&&t.absolute,t[r.variant],r.light&&t.light,"vertical"===r.orientation&&t.vertical,r.flexItem&&t.flexItem,r.children&&t.withChildren,r.children&&"vertical"===r.orientation&&t.withChildrenVertical,"right"===r.textAlign&&"vertical"!==r.orientation&&t.textAlignRight,"left"===r.textAlign&&"vertical"!==r.orientation&&t.textAlignLeft]}})((({theme:e,ownerState:t})=>(0,o.A)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(e.vars||e).palette.divider,borderBottomWidth:"thin"},t.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},t.light&&{borderColor:e.vars?`rgba(${e.vars.palette.dividerChannel} / 0.08)`:(0,s.X4)(e.palette.divider,.08)},"inset"===t.variant&&{marginLeft:72},"middle"===t.variant&&"horizontal"===t.orientation&&{marginLeft:e.spacing(2),marginRight:e.spacing(2)},"middle"===t.variant&&"vertical"===t.orientation&&{marginTop:e.spacing(1),marginBottom:e.spacing(1)},"vertical"===t.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},t.flexItem&&{alignSelf:"stretch",height:"auto"})),(({ownerState:e})=>(0,o.A)({},e.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,"&::before, &::after":{content:'""',alignSelf:"center"}})),(({theme:e,ownerState:t})=>(0,o.A)({},t.children&&"vertical"!==t.orientation&&{"&::before, &::after":{width:"100%",borderTop:`thin solid ${(e.vars||e).palette.divider}`}})),(({theme:e,ownerState:t})=>(0,o.A)({},t.children&&"vertical"===t.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:`thin solid ${(e.vars||e).palette.divider}`}})),(({ownerState:e})=>(0,o.A)({},"right"===e.textAlign&&"vertical"!==e.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===e.textAlign&&"vertical"!==e.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}}))),m=(0,d.Ay)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.wrapper,"vertical"===r.orientation&&t.wrapperVertical]}})((({theme:e,ownerState:t})=>(0,o.A)({display:"inline-block",paddingLeft:`calc(${e.spacing(1)} * 1.2)`,paddingRight:`calc(${e.spacing(1)} * 1.2)`},"vertical"===t.orientation&&{paddingTop:`calc(${e.spacing(1)} * 1.2)`,paddingBottom:`calc(${e.spacing(1)} * 1.2)`}))),g=n.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiDivider"}),{absolute:n=!1,children:s,className:d,component:g=(s?"div":"hr"),flexItem:f=!1,light:b=!1,orientation:x="horizontal",role:A=("hr"!==g?"separator":void 0),textAlign:y="center",variant:w="fullWidth"}=r,S=(0,a.A)(r,u),$=(0,o.A)({},r,{absolute:n,component:g,flexItem:f,light:b,orientation:x,role:A,textAlign:y,variant:w}),k=(e=>{const{absolute:t,children:r,classes:a,flexItem:o,light:n,orientation:i,textAlign:s,variant:d}=e,c={root:["root",t&&"absolute",d,n&&"light","vertical"===i&&"vertical",o&&"flexItem",r&&"withChildren",r&&"vertical"===i&&"withChildrenVertical","right"===s&&"vertical"!==i&&"textAlignRight","left"===s&&"vertical"!==i&&"textAlignLeft"],wrapper:["wrapper","vertical"===i&&"wrapperVertical"]};return(0,l.A)(c,p.K,a)})($);return(0,h.jsx)(v,(0,o.A)({as:g,className:(0,i.A)(k.root,d),role:A,ref:t,ownerState:$},S,{children:s?(0,h.jsx)(m,{className:k.wrapper,ownerState:$,children:s}):null}))}))},8620:(e,t,r)=>{r.d(t,{Ay:()=>T});var a=r(8587),o=r(8168),n=r(6540),i=r(53),l=r(5659),s=r(3466),d=r(7353),c=r(1935),p=r(6852),h=r(4675),u=r(5186),v=r(3749),m=r(4848);const g=["addEndListener","appear","children","container","direction","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function f(e,t,r){var a;const o=function(e,t,r){const a=t.getBoundingClientRect(),o=r&&r.getBoundingClientRect(),n=(0,v.A)(t);let i;if(t.fakeTransform)i=t.fakeTransform;else{const e=n.getComputedStyle(t);i=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("transform")}let l=0,s=0;if(i&&"none"!==i&&"string"==typeof i){const e=i.split("(")[1].split(")")[0].split(",");l=parseInt(e[4],10),s=parseInt(e[5],10)}return"left"===e?o?`translateX(${o.right+l-a.left}px)`:`translateX(${n.innerWidth+l-a.left}px)`:"right"===e?o?`translateX(-${a.right-o.left-l}px)`:`translateX(-${a.left+a.width-l}px)`:"up"===e?o?`translateY(${o.bottom+s-a.top}px)`:`translateY(${n.innerHeight+s-a.top}px)`:o?`translateY(-${a.top-o.top+a.height-s}px)`:`translateY(-${a.top+a.height-s}px)`}(e,t,"function"==typeof(a=r)?a():a);o&&(t.style.webkitTransform=o,t.style.transform=o)}const b=n.forwardRef((function(e,t){const r=(0,h.A)(),i={enter:r.transitions.easing.easeOut,exit:r.transitions.easing.sharp},l={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{addEndListener:s,appear:b=!0,children:x,container:A,direction:y="down",easing:w=i,in:S,onEnter:$,onEntered:k,onEntering:z,onExit:C,onExited:I,onExiting:R,style:B,timeout:E=l,TransitionComponent:M=d.Ay}=e,T=(0,a.A)(e,g),W=n.useRef(null),N=(0,p.A)(x.ref,W,t),L=e=>t=>{e&&(void 0===t?e(W.current):e(W.current,t))},P=L(((e,t)=>{f(y,e,A),(0,u.q)(e),$&&$(e,t)})),D=L(((e,t)=>{const a=(0,u.c)({timeout:E,style:B,easing:w},{mode:"enter"});e.style.webkitTransition=r.transitions.create("-webkit-transform",(0,o.A)({},a)),e.style.transition=r.transitions.create("transform",(0,o.A)({},a)),e.style.webkitTransform="none",e.style.transform="none",z&&z(e,t)})),V=L(k),O=L(R),j=L((e=>{const t=(0,u.c)({timeout:E,style:B,easing:w},{mode:"exit"});e.style.webkitTransition=r.transitions.create("-webkit-transform",t),e.style.transition=r.transitions.create("transform",t),f(y,e,A),C&&C(e)})),X=L((e=>{e.style.webkitTransition="",e.style.transition="",I&&I(e)})),F=n.useCallback((()=>{W.current&&f(y,W.current,A)}),[y,A]);return n.useEffect((()=>{if(S||"down"===y||"right"===y)return;const e=(0,c.A)((()=>{W.current&&f(y,W.current,A)})),t=(0,v.A)(W.current);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}}),[y,S,A]),n.useEffect((()=>{S||F()}),[S,F]),(0,m.jsx)(M,(0,o.A)({nodeRef:W,onEnter:P,onEntered:V,onEntering:D,onExit:j,onExited:X,onExiting:O,addEndListener:e=>{s&&s(W.current,e)},appear:b,in:S,timeout:E},T,{children:(e,t)=>n.cloneElement(x,(0,o.A)({ref:N,style:(0,o.A)({visibility:"exited"!==e||S?void 0:"hidden"},B,x.props.style)},t))}))}));var x=r(538),A=r(8466),y=r(4409),w=r(7577),S=r(8413),$=r(1609);function k(e){return(0,$.A)("MuiDrawer",e)}(0,S.A)("MuiDrawer",["root","docked","paper","paperAnchorLeft","paperAnchorRight","paperAnchorTop","paperAnchorBottom","paperAnchorDockedLeft","paperAnchorDockedRight","paperAnchorDockedTop","paperAnchorDockedBottom","modal"]);const z=["BackdropProps"],C=["anchor","BackdropProps","children","className","elevation","hideBackdrop","ModalProps","onClose","open","PaperProps","SlideProps","TransitionComponent","transitionDuration","variant"],I=(e,t)=>{const{ownerState:r}=e;return[t.root,("permanent"===r.variant||"persistent"===r.variant)&&t.docked,t.modal]},R=(0,w.Ay)(s.A,{name:"MuiDrawer",slot:"Root",overridesResolver:I})((({theme:e})=>({zIndex:(e.vars||e).zIndex.drawer}))),B=(0,w.Ay)("div",{shouldForwardProp:w.ep,name:"MuiDrawer",slot:"Docked",skipVariantsResolver:!1,overridesResolver:I})({flex:"0 0 auto"}),E=(0,w.Ay)(x.A,{name:"MuiDrawer",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.paper,t[`paperAnchor${(0,A.A)(r.anchor)}`],"temporary"!==r.variant&&t[`paperAnchorDocked${(0,A.A)(r.anchor)}`]]}})((({theme:e,ownerState:t})=>(0,o.A)({overflowY:"auto",display:"flex",flexDirection:"column",height:"100%",flex:"1 0 auto",zIndex:(e.vars||e).zIndex.drawer,WebkitOverflowScrolling:"touch",position:"fixed",top:0,outline:0},"left"===t.anchor&&{left:0},"top"===t.anchor&&{top:0,left:0,right:0,height:"auto",maxHeight:"100%"},"right"===t.anchor&&{right:0},"bottom"===t.anchor&&{top:"auto",left:0,bottom:0,right:0,height:"auto",maxHeight:"100%"},"left"===t.anchor&&"temporary"!==t.variant&&{borderRight:`1px solid ${(e.vars||e).palette.divider}`},"top"===t.anchor&&"temporary"!==t.variant&&{borderBottom:`1px solid ${(e.vars||e).palette.divider}`},"right"===t.anchor&&"temporary"!==t.variant&&{borderLeft:`1px solid ${(e.vars||e).palette.divider}`},"bottom"===t.anchor&&"temporary"!==t.variant&&{borderTop:`1px solid ${(e.vars||e).palette.divider}`}))),M={left:"right",right:"left",top:"down",bottom:"up"},T=n.forwardRef((function(e,t){const r=(0,y.A)({props:e,name:"MuiDrawer"}),s=(0,h.A)(),d={enter:s.transitions.duration.enteringScreen,exit:s.transitions.duration.leavingScreen},{anchor:c="left",BackdropProps:p,children:u,className:v,elevation:g=16,hideBackdrop:f=!1,ModalProps:{BackdropProps:x}={},onClose:w,open:S=!1,PaperProps:$={},SlideProps:I,TransitionComponent:T=b,transitionDuration:W=d,variant:N="temporary"}=r,L=(0,a.A)(r.ModalProps,z),P=(0,a.A)(r,C),D=n.useRef(!1);n.useEffect((()=>{D.current=!0}),[]);const V=function(e,t){return"rtl"===e.direction&&function(e){return-1!==["left","right"].indexOf(e)}(t)?M[t]:t}(s,c),O=c,j=(0,o.A)({},r,{anchor:O,elevation:g,open:S,variant:N},P),X=(e=>{const{classes:t,anchor:r,variant:a}=e,o={root:["root"],docked:[("permanent"===a||"persistent"===a)&&"docked"],modal:["modal"],paper:["paper",`paperAnchor${(0,A.A)(r)}`,"temporary"!==a&&`paperAnchorDocked${(0,A.A)(r)}`]};return(0,l.A)(o,k,t)})(j),F=(0,m.jsx)(E,(0,o.A)({elevation:"temporary"===N?g:0,square:!0},$,{className:(0,i.A)(X.paper,$.className),ownerState:j,children:u}));if("permanent"===N)return(0,m.jsx)(B,(0,o.A)({className:(0,i.A)(X.root,X.docked,v),ownerState:j,ref:t},P,{children:F}));const H=(0,m.jsx)(T,(0,o.A)({in:S,direction:M[V],timeout:W,appear:D.current},I,{children:F}));return"persistent"===N?(0,m.jsx)(B,(0,o.A)({className:(0,i.A)(X.root,X.docked,v),ownerState:j,ref:t},P,{children:H})):(0,m.jsx)(R,(0,o.A)({BackdropProps:(0,o.A)({},p,x,{transitionDuration:W}),className:(0,i.A)(X.root,X.modal,v),open:S,ownerState:j,onClose:w,hideBackdrop:f,ref:t},P,L,{children:H}))}))},2969:(e,t,r)=>{r.d(t,{A:()=>w});var a=r(8587),o=r(8168),n=r(6540),i=r(53),l=r(5659),s=r(4279),d=r(7577),c=r(4409),p=r(6606),h=r(2778),u=r(6852),v=r(2850),m=r(8413),g=r(1609);function f(e){return(0,g.A)("MuiListItemButton",e)}const b=(0,m.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]);var x=r(4848);const A=["alignItems","autoFocus","component","children","dense","disableGutters","divider","focusVisibleClassName","selected","className"],y=(0,d.Ay)(p.A,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiListItemButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.dense&&t.dense,"flex-start"===r.alignItems&&t.alignItemsFlexStart,r.divider&&t.divider,!r.disableGutters&&t.gutters]}})((({theme:e,ownerState:t})=>(0,o.A)({display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${b.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${b.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,s.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${b.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,s.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,s.X4)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${b.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${b.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}},t.divider&&{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"},"flex-start"===t.alignItems&&{alignItems:"flex-start"},!t.disableGutters&&{paddingLeft:16,paddingRight:16},t.dense&&{paddingTop:4,paddingBottom:4}))),w=n.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiListItemButton"}),{alignItems:s="center",autoFocus:d=!1,component:p="div",children:m,dense:g=!1,disableGutters:b=!1,divider:w=!1,focusVisibleClassName:S,selected:$=!1,className:k}=r,z=(0,a.A)(r,A),C=n.useContext(v.A),I=n.useMemo((()=>({dense:g||C.dense||!1,alignItems:s,disableGutters:b})),[s,C.dense,g,b]),R=n.useRef(null);(0,h.A)((()=>{d&&R.current&&R.current.focus()}),[d]);const B=(0,o.A)({},r,{alignItems:s,dense:I.dense,disableGutters:b,divider:w,selected:$}),E=(e=>{const{alignItems:t,classes:r,dense:a,disabled:n,disableGutters:i,divider:s,selected:d}=e,c={root:["root",a&&"dense",!i&&"gutters",s&&"divider",n&&"disabled","flex-start"===t&&"alignItemsFlexStart",d&&"selected"]},p=(0,l.A)(c,f,r);return(0,o.A)({},r,p)})(B),M=(0,u.A)(R,t);return(0,x.jsx)(v.A.Provider,{value:I,children:(0,x.jsx)(y,(0,o.A)({ref:M,href:z.href||z.to,component:(z.href||z.to)&&"div"===p?"button":p,focusVisibleClassName:(0,i.A)(E.focusVisible,S),ownerState:B,className:(0,i.A)(E.root,k)},z,{classes:E,children:m}))})}))},4073:(e,t,r)=>{r.d(t,{A:()=>A});var a=r(8587),o=r(8168),n=r(6540),i=r(53),l=r(9599),s=r(5659),d=r(7577),c=r(4409),p=r(8466),h=r(8413),u=r(1609);function v(e){return(0,u.A)("MuiTypography",e)}(0,h.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var m=r(4848);const g=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],f=(0,d.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,p.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,o.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),b={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},x={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},A=n.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiTypography"}),n=(e=>x[e]||e)(r.color),d=(0,l.A)((0,o.A)({},r,{color:n})),{align:h="inherit",className:u,component:A,gutterBottom:y=!1,noWrap:w=!1,paragraph:S=!1,variant:$="body1",variantMapping:k=b}=d,z=(0,a.A)(d,g),C=(0,o.A)({},d,{align:h,color:n,className:u,component:A,gutterBottom:y,noWrap:w,paragraph:S,variant:$,variantMapping:k}),I=A||(S?"p":k[$]||b[$])||"span",R=(e=>{const{align:t,gutterBottom:r,noWrap:a,paragraph:o,variant:n,classes:i}=e,l={root:["root",n,"inherit"!==e.align&&`align${(0,p.A)(t)}`,r&&"gutterBottom",a&&"noWrap",o&&"paragraph"]};return(0,s.A)(l,v,i)})(C);return(0,m.jsx)(f,(0,o.A)({as:I,ref:t,ownerState:C,className:(0,i.A)(R.root,u)},z))}))}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixZQUFyQmIsRUFBV2dTLE9BQXVCLFNBQVEsRUFBQWxSLEVBQUEsR0FBV2tSLEtBQVVFLEdBQWdCLGVBQWdCRCxHQUFVLFNBQVVFLEdBQWEsY0FFMUosT0FBTyxFQUFBdk0sRUFBQSxHQUFlSCxFQUFPcU0sRUFBMkJ0TSxFQUFRLEVBb0ZoREssQ0FBa0I3RixHQUNsQyxPQUFvQixTQUFLK1IsR0FBZ0IsT0FBUyxDQUNoRHZKLEdBQUltTCxFQUNKbFAsSUFBS0EsRUFDTHpFLFdBQVlBLEVBQ1ppRixXQUFXLE9BQUtPLEVBQVE1RSxLQUFNcUUsSUFDN0JNLEdBQ0wsRyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvRm9ydW0uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9pY29ucy1tYXRlcmlhbC9NZW51LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uL2J1dHRvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b24vQnV0dG9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRGl2aWRlci9EaXZpZGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU2xpZGUvU2xpZGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9EcmF3ZXIvZHJhd2VyQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0RyYXdlci9EcmF3ZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9MaXN0SXRlbUJ1dHRvbi9saXN0SXRlbUJ1dHRvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9MaXN0SXRlbUJ1dHRvbi9MaXN0SXRlbUJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvdHlwb2dyYXBoeUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L1R5cG9ncmFwaHkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTIxIDZoLTJ2OUg2djJjMCAuNTUuNDUgMSAxIDFoMTFsNCA0VjdjMC0uNTUtLjQ1LTEtMS0xem0tNCA2VjNjMC0uNTUtLjQ1LTEtMS0xSDNjLS41NSAwLTEgLjQ1LTEgMXYxNGw0LTRoMTBjLjU1IDAgMS0uNDUgMS0xelwiXG59KSwgJ0ZvcnVtJyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblwidXNlIGNsaWVudFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2NyZWF0ZVN2Z0ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL2NyZWF0ZVN2Z0ljb25cIikpO1xudmFyIF9qc3hSdW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xudmFyIF9kZWZhdWx0ID0gKDAsIF9jcmVhdGVTdmdJY29uLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9qc3hSdW50aW1lLmpzeCkoXCJwYXRoXCIsIHtcbiAgZDogXCJNMyAxOGgxOHYtMkgzdjJ6bTAtNWgxOHYtMkgzdjJ6bTAtN3YyaDE4VjZIM3pcIlxufSksICdNZW51Jyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlCdXR0b24nLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCdXR0b24nLCBbJ3Jvb3QnLCAndGV4dCcsICd0ZXh0SW5oZXJpdCcsICd0ZXh0UHJpbWFyeScsICd0ZXh0U2Vjb25kYXJ5JywgJ3RleHRTdWNjZXNzJywgJ3RleHRFcnJvcicsICd0ZXh0SW5mbycsICd0ZXh0V2FybmluZycsICdvdXRsaW5lZCcsICdvdXRsaW5lZEluaGVyaXQnLCAnb3V0bGluZWRQcmltYXJ5JywgJ291dGxpbmVkU2Vjb25kYXJ5JywgJ291dGxpbmVkU3VjY2VzcycsICdvdXRsaW5lZEVycm9yJywgJ291dGxpbmVkSW5mbycsICdvdXRsaW5lZFdhcm5pbmcnLCAnY29udGFpbmVkJywgJ2NvbnRhaW5lZEluaGVyaXQnLCAnY29udGFpbmVkUHJpbWFyeScsICdjb250YWluZWRTZWNvbmRhcnknLCAnY29udGFpbmVkU3VjY2VzcycsICdjb250YWluZWRFcnJvcicsICdjb250YWluZWRJbmZvJywgJ2NvbnRhaW5lZFdhcm5pbmcnLCAnZGlzYWJsZUVsZXZhdGlvbicsICdmb2N1c1Zpc2libGUnLCAnZGlzYWJsZWQnLCAnY29sb3JJbmhlcml0JywgJ3RleHRTaXplU21hbGwnLCAndGV4dFNpemVNZWRpdW0nLCAndGV4dFNpemVMYXJnZScsICdvdXRsaW5lZFNpemVTbWFsbCcsICdvdXRsaW5lZFNpemVNZWRpdW0nLCAnb3V0bGluZWRTaXplTGFyZ2UnLCAnY29udGFpbmVkU2l6ZVNtYWxsJywgJ2NvbnRhaW5lZFNpemVNZWRpdW0nLCAnY29udGFpbmVkU2l6ZUxhcmdlJywgJ3NpemVNZWRpdW0nLCAnc2l6ZVNtYWxsJywgJ3NpemVMYXJnZScsICdmdWxsV2lkdGgnLCAnc3RhcnRJY29uJywgJ2VuZEljb24nLCAnaWNvblNpemVTbWFsbCcsICdpY29uU2l6ZU1lZGl1bScsICdpY29uU2l6ZUxhcmdlJ10pO1xuZXhwb3J0IGRlZmF1bHQgYnV0dG9uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiY2xhc3NOYW1lXCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlRWxldmF0aW9uXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwiZW5kSWNvblwiLCBcImZvY3VzVmlzaWJsZUNsYXNzTmFtZVwiLCBcImZ1bGxXaWR0aFwiLCBcInNpemVcIiwgXCJzdGFydEljb25cIiwgXCJ0eXBlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGludGVybmFsX3Jlc29sdmVQcm9wcyBhcyByZXNvbHZlUHJvcHMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCwgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJy4uL0J1dHRvbkJhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgYnV0dG9uQ2xhc3NlcywgeyBnZXRCdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2J1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IEJ1dHRvbkdyb3VwQ29udGV4dCBmcm9tICcuLi9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgYCR7dmFyaWFudH0ke2NhcGl0YWxpemUoY29sb3IpfWAsIGBzaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGAke3ZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gLCBjb2xvciA9PT0gJ2luaGVyaXQnICYmICdjb2xvckluaGVyaXQnLCBkaXNhYmxlRWxldmF0aW9uICYmICdkaXNhYmxlRWxldmF0aW9uJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnXSxcbiAgICBsYWJlbDogWydsYWJlbCddLFxuICAgIHN0YXJ0SWNvbjogWydzdGFydEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF0sXG4gICAgZW5kSWNvbjogWydlbmRJY29uJywgYGljb25TaXplJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRCdXR0b25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgY29tbW9uSWNvblN0eWxlcyA9IG93bmVyU3RhdGUgPT4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMThcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbWVkaXVtJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMjBcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMlxuICB9XG59KTtcbmNvbnN0IEJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBzdHlsZXNbYCR7b3duZXJTdGF0ZS52YXJpYW50fSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2BzaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdLCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYgc3R5bGVzLmNvbG9ySW5oZXJpdCwgb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHN0eWxlcy5kaXNhYmxlRWxldmF0aW9uLCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiBzdHlsZXMuZnVsbFdpZHRoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSRwYWxldHRlJGdldENvbiwgX3RoZW1lJHBhbGV0dGU7XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSA6IHRoZW1lLnBhbGV0dGUuZ3JleVs4MDBdO1xuICBjb25zdCBpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXkuQTEwMCA6IHRoZW1lLnBhbGV0dGUuZ3JleVs3MDBdO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYnV0dG9uLCB7XG4gICAgbWluV2lkdGg6IDY0LFxuICAgIHBhZGRpbmc6ICc2cHggMTZweCcsXG4gICAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ2JhY2tncm91bmQtY29sb3InLCAnYm94LXNoYWRvdycsICdib3JkZXItY29sb3InLCAnY29sb3InXSwge1xuICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0XG4gICAgfSksXG4gICAgJyY6aG92ZXInOiBfZXh0ZW5kcyh7XG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5Q2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbn1gLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkSG92ZXJCZyA6IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbNF0sXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmdyZXlbMzAwXVxuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uZGFyayxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICAgICAgfVxuICAgIH0pLFxuICAgICcmOmFjdGl2ZSc6IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbOF1cbiAgICB9KSxcbiAgICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXTogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s2XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IF9leHRlbmRzKHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZH1gXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1swXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZFxuICAgIH0pXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNnB4IDhweCdcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc1cHggMTVweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkIGN1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sXG4gICAgYm9yZGVyOiB0aGVtZS52YXJzID8gYDFweCBzb2xpZCByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvIDAuNSlgIDogYDFweCBzb2xpZCAke2FscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgMC41KX1gXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIGNvbG9yOiB0aGVtZS52YXJzID9cbiAgICAvLyB0aGlzIGlzIHNhZmUgYmVjYXVzZSBncmV5IGRvZXMgbm90IGNoYW5nZSBiZXR3ZWVuIGRlZmF1bHQgbGlnaHQvZGFyayBtb2RlXG4gICAgdGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeSA6IChfdGhlbWUkcGFsZXR0ZSRnZXRDb24gPSAoX3RoZW1lJHBhbGV0dGUgPSB0aGVtZS5wYWxldHRlKS5nZXRDb250cmFzdFRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkcGFsZXR0ZSRnZXRDb24uY2FsbChfdGhlbWUkcGFsZXR0ZSwgdGhlbWUucGFsZXR0ZS5ncmV5WzMwMF0pLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5CdXR0b24uaW5oZXJpdENvbnRhaW5lZEJnIDogaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvcixcbiAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uY29udHJhc3RUZXh0LFxuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgYm9yZGVyQ29sb3I6ICdjdXJyZW50Q29sb3InXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzRweCA1cHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAxMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnM3B4IDlweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzdweCAyMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzRweCAxMHB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAyMnB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9KTtcbn0sICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUuZGlzYWJsZUVsZXZhdGlvbiAmJiB7XG4gIGJveFNoYWRvdzogJ25vbmUnLFxuICAnJjpob3Zlcic6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gICcmOmFjdGl2ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfVxufSk7XG5jb25zdCBCdXR0b25TdGFydEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnU3RhcnRJY29uJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5zdGFydEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogOCxcbiAgbWFyZ2luTGVmdDogLTRcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpbkxlZnQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b25FbmRJY29uID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ0VuZEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmVuZEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogLTQsXG4gIG1hcmdpbkxlZnQ6IDhcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpblJpZ2h0OiAtMlxufSwgY29tbW9uSWNvblN0eWxlcyhvd25lclN0YXRlKSkpO1xuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICAvLyBwcm9wcyBwcmlvcml0eTogYGluUHJvcHNgID4gYGNvbnRleHRQcm9wc2AgPiBgdGhlbWVEZWZhdWx0UHJvcHNgXG4gIGNvbnN0IGNvbnRleHRQcm9wcyA9IFJlYWN0LnVzZUNvbnRleHQoQnV0dG9uR3JvdXBDb250ZXh0KTtcbiAgY29uc3QgcmVzb2x2ZWRQcm9wcyA9IHJlc29sdmVQcm9wcyhjb250ZXh0UHJvcHMsIGluUHJvcHMpO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiByZXNvbHZlZFByb3BzLFxuICAgIG5hbWU6ICdNdWlCdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgY29tcG9uZW50ID0gJ2J1dHRvbicsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUVsZXZhdGlvbiA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBlbmRJY29uOiBlbmRJY29uUHJvcCxcbiAgICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSxcbiAgICAgIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nLFxuICAgICAgc3RhcnRJY29uOiBzdGFydEljb25Qcm9wLFxuICAgICAgdHlwZSxcbiAgICAgIHZhcmlhbnQgPSAndGV4dCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmdWxsV2lkdGgsXG4gICAgc2l6ZSxcbiAgICB0eXBlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3Qgc3RhcnRJY29uID0gc3RhcnRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25TdGFydEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3RhcnRJY29uLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IHN0YXJ0SWNvblByb3BcbiAgfSk7XG4gIGNvbnN0IGVuZEljb24gPSBlbmRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25FbmRJY29uLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLmVuZEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogZW5kSWNvblByb3BcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNvbnRleHRQcm9wcy5jbGFzc05hbWUsIGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgZm9jdXNSaXBwbGU6ICFkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuZm9jdXNWaXNpYmxlLCBmb2N1c1Zpc2libGVDbGFzc05hbWUpLFxuICAgIHJlZjogcmVmLFxuICAgIHR5cGU6IHR5cGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzLFxuICAgIGNoaWxkcmVuOiBbc3RhcnRJY29uLCBjaGlsZHJlbiwgZW5kSWNvbl1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCdXR0b24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnaW5mbycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBubyBlbGV2YXRpb24gaXMgdXNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVFbGV2YXRpb246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgIGtleWJvYXJkIGZvY3VzIHJpcHBsZSBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVGb2N1c1JpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgZWZmZWN0IGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiDimqDvuI8gV2l0aG91dCBhIHJpcHBsZSB0aGVyZSBpcyBubyBzdHlsaW5nIGZvciA6Zm9jdXMtdmlzaWJsZSBieSBkZWZhdWx0LiBCZSBzdXJlXG4gICAqIHRvIGhpZ2hsaWdodCB0aGUgZWxlbWVudCBieSBhcHBseWluZyBzZXBhcmF0ZSBzdHlsZXMgd2l0aCB0aGUgYC5NdWktZm9jdXNWaXNpYmxlYCBjbGFzcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgZW5kSWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBidXR0b24gd2lsbCB0YWtlIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmdWxsV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIFVSTCB0byBsaW5rIHRvIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBJZiBkZWZpbmVkLCBhbiBgYWAgZWxlbWVudCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJvb3Qgbm9kZS5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBgc21hbGxgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRlbnNlIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBzdGFydEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAndGV4dCdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnY29udGFpbmVkJywgJ291dGxpbmVkJywgJ3RleHQnXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhYnNvbHV0ZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZmxleEl0ZW1cIiwgXCJsaWdodFwiLCBcIm9yaWVudGF0aW9uXCIsIFwicm9sZVwiLCBcInRleHRBbGlnblwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgeyBnZXREaXZpZGVyVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9kaXZpZGVyQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGFic29sdXRlLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzZXMsXG4gICAgZmxleEl0ZW0sXG4gICAgbGlnaHQsXG4gICAgb3JpZW50YXRpb24sXG4gICAgdGV4dEFsaWduLFxuICAgIHZhcmlhbnRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGFic29sdXRlICYmICdhYnNvbHV0ZScsIHZhcmlhbnQsIGxpZ2h0ICYmICdsaWdodCcsIG9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmICd2ZXJ0aWNhbCcsIGZsZXhJdGVtICYmICdmbGV4SXRlbScsIGNoaWxkcmVuICYmICd3aXRoQ2hpbGRyZW4nLCBjaGlsZHJlbiAmJiBvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiAnd2l0aENoaWxkcmVuVmVydGljYWwnLCB0ZXh0QWxpZ24gPT09ICdyaWdodCcgJiYgb3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCcgJiYgJ3RleHRBbGlnblJpZ2h0JywgdGV4dEFsaWduID09PSAnbGVmdCcgJiYgb3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCcgJiYgJ3RleHRBbGlnbkxlZnQnXSxcbiAgICB3cmFwcGVyOiBbJ3dyYXBwZXInLCBvcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiAnd3JhcHBlclZlcnRpY2FsJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXREaXZpZGVyVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBEaXZpZGVyUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpRGl2aWRlcicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmFic29sdXRlICYmIHN0eWxlcy5hYnNvbHV0ZSwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUubGlnaHQgJiYgc3R5bGVzLmxpZ2h0LCBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHN0eWxlcy52ZXJ0aWNhbCwgb3duZXJTdGF0ZS5mbGV4SXRlbSAmJiBzdHlsZXMuZmxleEl0ZW0sIG93bmVyU3RhdGUuY2hpbGRyZW4gJiYgc3R5bGVzLndpdGhDaGlsZHJlbiwgb3duZXJTdGF0ZS5jaGlsZHJlbiAmJiBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHN0eWxlcy53aXRoQ2hpbGRyZW5WZXJ0aWNhbCwgb3duZXJTdGF0ZS50ZXh0QWxpZ24gPT09ICdyaWdodCcgJiYgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJyAmJiBzdHlsZXMudGV4dEFsaWduUmlnaHQsIG93bmVyU3RhdGUudGV4dEFsaWduID09PSAnbGVmdCcgJiYgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJyAmJiBzdHlsZXMudGV4dEFsaWduTGVmdF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG1hcmdpbjogMCxcbiAgLy8gUmVzZXQgYnJvd3NlciBkZWZhdWx0IHN0eWxlLlxuICBmbGV4U2hyaW5rOiAwLFxuICBib3JkZXJXaWR0aDogMCxcbiAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gIGJvcmRlckNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5kaXZpZGVyLFxuICBib3JkZXJCb3R0b21XaWR0aDogJ3RoaW4nXG59LCBvd25lclN0YXRlLmFic29sdXRlICYmIHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIGJvdHRvbTogMCxcbiAgbGVmdDogMCxcbiAgd2lkdGg6ICcxMDAlJ1xufSwgb3duZXJTdGF0ZS5saWdodCAmJiB7XG4gIGJvcmRlckNvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuZGl2aWRlckNoYW5uZWx9IC8gMC4wOClgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5kaXZpZGVyLCAwLjA4KVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5zZXQnICYmIHtcbiAgbWFyZ2luTGVmdDogNzJcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ21pZGRsZScgJiYgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIHtcbiAgbWFyZ2luTGVmdDogdGhlbWUuc3BhY2luZygyKSxcbiAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMilcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ21pZGRsZScgJiYgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiB7XG4gIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygxKSxcbiAgbWFyZ2luQm90dG9tOiB0aGVtZS5zcGFjaW5nKDEpXG59LCBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHtcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIGJvcmRlckJvdHRvbVdpZHRoOiAwLFxuICBib3JkZXJSaWdodFdpZHRoOiAndGhpbidcbn0sIG93bmVyU3RhdGUuZmxleEl0ZW0gJiYge1xuICBhbGlnblNlbGY6ICdzdHJldGNoJyxcbiAgaGVpZ2h0OiAnYXV0bydcbn0pLCAoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jaGlsZHJlbiAmJiB7XG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIGJvcmRlcjogMCxcbiAgJyY6OmJlZm9yZSwgJjo6YWZ0ZXInOiB7XG4gICAgY29udGVudDogJ1wiXCInLFxuICAgIGFsaWduU2VsZjogJ2NlbnRlcidcbiAgfVxufSksICh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jaGlsZHJlbiAmJiBvd25lclN0YXRlLm9yaWVudGF0aW9uICE9PSAndmVydGljYWwnICYmIHtcbiAgJyY6OmJlZm9yZSwgJjo6YWZ0ZXInOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBib3JkZXJUb3A6IGB0aGluIHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gXG4gIH1cbn0pLCAoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuY2hpbGRyZW4gJiYgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiB7XG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAnJjo6YmVmb3JlLCAmOjphZnRlcic6IHtcbiAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICBib3JkZXJMZWZ0OiBgdGhpbiBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmRpdmlkZXJ9YFxuICB9XG59KSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudGV4dEFsaWduID09PSAncmlnaHQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gIT09ICd2ZXJ0aWNhbCcgJiYge1xuICAnJjo6YmVmb3JlJzoge1xuICAgIHdpZHRoOiAnOTAlJ1xuICB9LFxuICAnJjo6YWZ0ZXInOiB7XG4gICAgd2lkdGg6ICcxMCUnXG4gIH1cbn0sIG93bmVyU3RhdGUudGV4dEFsaWduID09PSAnbGVmdCcgJiYgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiAhPT0gJ3ZlcnRpY2FsJyAmJiB7XG4gICcmOjpiZWZvcmUnOiB7XG4gICAgd2lkdGg6ICcxMCUnXG4gIH0sXG4gICcmOjphZnRlcic6IHtcbiAgICB3aWR0aDogJzkwJSdcbiAgfVxufSkpO1xuY29uc3QgRGl2aWRlcldyYXBwZXIgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlEaXZpZGVyJyxcbiAgc2xvdDogJ1dyYXBwZXInLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLndyYXBwZXIsIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgc3R5bGVzLndyYXBwZXJWZXJ0aWNhbF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICBwYWRkaW5nTGVmdDogYGNhbGMoJHt0aGVtZS5zcGFjaW5nKDEpfSAqIDEuMilgLFxuICBwYWRkaW5nUmlnaHQ6IGBjYWxjKCR7dGhlbWUuc3BhY2luZygxKX0gKiAxLjIpYFxufSwgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiB7XG4gIHBhZGRpbmdUb3A6IGBjYWxjKCR7dGhlbWUuc3BhY2luZygxKX0gKiAxLjIpYCxcbiAgcGFkZGluZ0JvdHRvbTogYGNhbGMoJHt0aGVtZS5zcGFjaW5nKDEpfSAqIDEuMilgXG59KSk7XG5jb25zdCBEaXZpZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gRGl2aWRlcihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpRGl2aWRlcidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGFic29sdXRlID0gZmFsc2UsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9IGNoaWxkcmVuID8gJ2RpdicgOiAnaHInLFxuICAgICAgZmxleEl0ZW0gPSBmYWxzZSxcbiAgICAgIGxpZ2h0ID0gZmFsc2UsXG4gICAgICBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJyxcbiAgICAgIHJvbGUgPSBjb21wb25lbnQgIT09ICdocicgPyAnc2VwYXJhdG9yJyA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRBbGlnbiA9ICdjZW50ZXInLFxuICAgICAgdmFyaWFudCA9ICdmdWxsV2lkdGgnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBhYnNvbHV0ZSxcbiAgICBjb21wb25lbnQsXG4gICAgZmxleEl0ZW0sXG4gICAgbGlnaHQsXG4gICAgb3JpZW50YXRpb24sXG4gICAgcm9sZSxcbiAgICB0ZXh0QWxpZ24sXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRGl2aWRlclJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcm9sZTogcm9sZSxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuID8gLyojX19QVVJFX18qL19qc3goRGl2aWRlcldyYXBwZXIsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy53cmFwcGVyLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pIDogbnVsbFxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IERpdmlkZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQWJzb2x1dGVseSBwb3NpdGlvbiB0aGUgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGFic29sdXRlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGEgdmVydGljYWwgZGl2aWRlciB3aWxsIGhhdmUgdGhlIGNvcnJlY3QgaGVpZ2h0IHdoZW4gdXNlZCBpbiBmbGV4IGNvbnRhaW5lci5cbiAgICogKEJ5IGRlZmF1bHQsIGEgdmVydGljYWwgZGl2aWRlciB3aWxsIGhhdmUgYSBjYWxjdWxhdGVkIGhlaWdodCBvZiBgMHB4YCBpZiBpdCBpcyB0aGUgY2hpbGQgb2YgYSBmbGV4IGNvbnRhaW5lci4pXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmbGV4SXRlbTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBkaXZpZGVyIHdpbGwgaGF2ZSBhIGxpZ2h0ZXIgY29sb3IuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IG9yaWVudGF0aW9uLlxuICAgKiBAZGVmYXVsdCAnaG9yaXpvbnRhbCdcbiAgICovXG4gIG9yaWVudGF0aW9uOiBQcm9wVHlwZXMub25lT2YoWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcm9sZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIHRleHQgYWxpZ25tZW50LlxuICAgKiBAZGVmYXVsdCAnY2VudGVyJ1xuICAgKi9cbiAgdGV4dEFsaWduOiBQcm9wVHlwZXMub25lT2YoWydjZW50ZXInLCAnbGVmdCcsICdyaWdodCddKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ2Z1bGxXaWR0aCdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZnVsbFdpZHRoJywgJ2luc2V0JywgJ21pZGRsZSddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRGl2aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhZGRFbmRMaXN0ZW5lclwiLCBcImFwcGVhclwiLCBcImNoaWxkcmVuXCIsIFwiY29udGFpbmVyXCIsIFwiZGlyZWN0aW9uXCIsIFwiZWFzaW5nXCIsIFwiaW5cIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmVkXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGVkXCIsIFwib25FeGl0aW5nXCIsIFwic3R5bGVcIiwgXCJ0aW1lb3V0XCIsIFwiVHJhbnNpdGlvbkNvbXBvbmVudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBlbGVtZW50QWNjZXB0aW5nUmVmLCBIVE1MRWxlbWVudFR5cGUsIGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnLi4vdXRpbHMvZGVib3VuY2UnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lJztcbmltcG9ydCB7IHJlZmxvdywgZ2V0VHJhbnNpdGlvblByb3BzIH0gZnJvbSAnLi4vdHJhbnNpdGlvbnMvdXRpbHMnO1xuaW1wb3J0IHsgb3duZXJXaW5kb3cgfSBmcm9tICcuLi91dGlscyc7XG5cbi8vIFRyYW5zbGF0ZSB0aGUgbm9kZSBzbyBpdCBjYW4ndCBiZSBzZWVuIG9uIHRoZSBzY3JlZW4uXG4vLyBMYXRlciwgd2UncmUgZ29pbmcgdG8gdHJhbnNsYXRlIHRoZSBub2RlIGJhY2sgdG8gaXRzIG9yaWdpbmFsIGxvY2F0aW9uIHdpdGggYG5vbmVgLlxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIGdldFRyYW5zbGF0ZVZhbHVlKGRpcmVjdGlvbiwgbm9kZSwgcmVzb2x2ZWRDb250YWluZXIpIHtcbiAgY29uc3QgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlY3QgPSByZXNvbHZlZENvbnRhaW5lciAmJiByZXNvbHZlZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgY29udGFpbmVyV2luZG93ID0gb3duZXJXaW5kb3cobm9kZSk7XG4gIGxldCB0cmFuc2Zvcm07XG4gIGlmIChub2RlLmZha2VUcmFuc2Zvcm0pIHtcbiAgICB0cmFuc2Zvcm0gPSBub2RlLmZha2VUcmFuc2Zvcm07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGNvbnRhaW5lcldpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgIHRyYW5zZm9ybSA9IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10cmFuc2Zvcm0nKSB8fCBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3RyYW5zZm9ybScpO1xuICB9XG4gIGxldCBvZmZzZXRYID0gMDtcbiAgbGV0IG9mZnNldFkgPSAwO1xuICBpZiAodHJhbnNmb3JtICYmIHRyYW5zZm9ybSAhPT0gJ25vbmUnICYmIHR5cGVvZiB0cmFuc2Zvcm0gPT09ICdzdHJpbmcnKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtVmFsdWVzID0gdHJhbnNmb3JtLnNwbGl0KCcoJylbMV0uc3BsaXQoJyknKVswXS5zcGxpdCgnLCcpO1xuICAgIG9mZnNldFggPSBwYXJzZUludCh0cmFuc2Zvcm1WYWx1ZXNbNF0sIDEwKTtcbiAgICBvZmZzZXRZID0gcGFyc2VJbnQodHJhbnNmb3JtVmFsdWVzWzVdLCAxMCk7XG4gIH1cbiAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgaWYgKGNvbnRhaW5lclJlY3QpIHtcbiAgICAgIHJldHVybiBgdHJhbnNsYXRlWCgke2NvbnRhaW5lclJlY3QucmlnaHQgKyBvZmZzZXRYIC0gcmVjdC5sZWZ0fXB4KWA7XG4gICAgfVxuICAgIHJldHVybiBgdHJhbnNsYXRlWCgke2NvbnRhaW5lcldpbmRvdy5pbm5lcldpZHRoICsgb2Zmc2V0WCAtIHJlY3QubGVmdH1weClgO1xuICB9XG4gIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICBpZiAoY29udGFpbmVyUmVjdCkge1xuICAgICAgcmV0dXJuIGB0cmFuc2xhdGVYKC0ke3JlY3QucmlnaHQgLSBjb250YWluZXJSZWN0LmxlZnQgLSBvZmZzZXRYfXB4KWA7XG4gICAgfVxuICAgIHJldHVybiBgdHJhbnNsYXRlWCgtJHtyZWN0LmxlZnQgKyByZWN0LndpZHRoIC0gb2Zmc2V0WH1weClgO1xuICB9XG4gIGlmIChkaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICBpZiAoY29udGFpbmVyUmVjdCkge1xuICAgICAgcmV0dXJuIGB0cmFuc2xhdGVZKCR7Y29udGFpbmVyUmVjdC5ib3R0b20gKyBvZmZzZXRZIC0gcmVjdC50b3B9cHgpYDtcbiAgICB9XG4gICAgcmV0dXJuIGB0cmFuc2xhdGVZKCR7Y29udGFpbmVyV2luZG93LmlubmVySGVpZ2h0ICsgb2Zmc2V0WSAtIHJlY3QudG9wfXB4KWA7XG4gIH1cblxuICAvLyBkaXJlY3Rpb24gPT09ICdkb3duJ1xuICBpZiAoY29udGFpbmVyUmVjdCkge1xuICAgIHJldHVybiBgdHJhbnNsYXRlWSgtJHtyZWN0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgcmVjdC5oZWlnaHQgLSBvZmZzZXRZfXB4KWA7XG4gIH1cbiAgcmV0dXJuIGB0cmFuc2xhdGVZKC0ke3JlY3QudG9wICsgcmVjdC5oZWlnaHQgLSBvZmZzZXRZfXB4KWA7XG59XG5mdW5jdGlvbiByZXNvbHZlQ29udGFpbmVyKGNvbnRhaW5lclByb3BQcm9wKSB7XG4gIHJldHVybiB0eXBlb2YgY29udGFpbmVyUHJvcFByb3AgPT09ICdmdW5jdGlvbicgPyBjb250YWluZXJQcm9wUHJvcCgpIDogY29udGFpbmVyUHJvcFByb3A7XG59XG5leHBvcnQgZnVuY3Rpb24gc2V0VHJhbnNsYXRlVmFsdWUoZGlyZWN0aW9uLCBub2RlLCBjb250YWluZXJQcm9wKSB7XG4gIGNvbnN0IHJlc29sdmVkQ29udGFpbmVyID0gcmVzb2x2ZUNvbnRhaW5lcihjb250YWluZXJQcm9wKTtcbiAgY29uc3QgdHJhbnNmb3JtID0gZ2V0VHJhbnNsYXRlVmFsdWUoZGlyZWN0aW9uLCBub2RlLCByZXNvbHZlZENvbnRhaW5lcik7XG4gIGlmICh0cmFuc2Zvcm0pIHtcbiAgICBub2RlLnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBub2RlLnN0eWxlLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBTbGlkZSB0cmFuc2l0aW9uIGlzIHVzZWQgYnkgdGhlIFtEcmF3ZXJdKC9tYXRlcmlhbC11aS9yZWFjdC1kcmF3ZXIvKSBjb21wb25lbnQuXG4gKiBJdCB1c2VzIFtyZWFjdC10cmFuc2l0aW9uLWdyb3VwXShodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwKSBpbnRlcm5hbGx5LlxuICovXG5jb25zdCBTbGlkZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFNsaWRlKHByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBkZWZhdWx0RWFzaW5nID0ge1xuICAgIGVudGVyOiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dCxcbiAgICBleGl0OiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuc2hhcnBcbiAgfTtcbiAgY29uc3QgZGVmYXVsdFRpbWVvdXQgPSB7XG4gICAgZW50ZXI6IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLmVudGVyaW5nU2NyZWVuLFxuICAgIGV4aXQ6IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLmxlYXZpbmdTY3JlZW5cbiAgfTtcbiAgY29uc3Qge1xuICAgICAgYWRkRW5kTGlzdGVuZXIsXG4gICAgICBhcHBlYXIgPSB0cnVlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclByb3AsXG4gICAgICBkaXJlY3Rpb24gPSAnZG93bicsXG4gICAgICBlYXNpbmc6IGVhc2luZ1Byb3AgPSBkZWZhdWx0RWFzaW5nLFxuICAgICAgaW46IGluUHJvcCxcbiAgICAgIG9uRW50ZXIsXG4gICAgICBvbkVudGVyZWQsXG4gICAgICBvbkVudGVyaW5nLFxuICAgICAgb25FeGl0LFxuICAgICAgb25FeGl0ZWQsXG4gICAgICBvbkV4aXRpbmcsXG4gICAgICBzdHlsZSxcbiAgICAgIHRpbWVvdXQgPSBkZWZhdWx0VGltZW91dCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBUcmFuc2l0aW9uQ29tcG9uZW50ID0gVHJhbnNpdGlvblxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBjaGlsZHJlblJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihjaGlsZHJlbi5yZWYsIGNoaWxkcmVuUmVmLCByZWYpO1xuICBjb25zdCBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrID0gY2FsbGJhY2sgPT4gaXNBcHBlYXJpbmcgPT4ge1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgLy8gb25FbnRlclh4eCBhbmQgb25FeGl0WHh4IGNhbGxiYWNrcyBoYXZlIGEgZGlmZmVyZW50IGFyZ3VtZW50cy5sZW5ndGggdmFsdWUuXG4gICAgICBpZiAoaXNBcHBlYXJpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYWxsYmFjayhjaGlsZHJlblJlZi5jdXJyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKGNoaWxkcmVuUmVmLmN1cnJlbnQsIGlzQXBwZWFyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjaygobm9kZSwgaXNBcHBlYXJpbmcpID0+IHtcbiAgICBzZXRUcmFuc2xhdGVWYWx1ZShkaXJlY3Rpb24sIG5vZGUsIGNvbnRhaW5lclByb3ApO1xuICAgIHJlZmxvdyhub2RlKTtcbiAgICBpZiAob25FbnRlcikge1xuICAgICAgb25FbnRlcihub2RlLCBpc0FwcGVhcmluZyk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRW50ZXJpbmcgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKChub2RlLCBpc0FwcGVhcmluZykgPT4ge1xuICAgIGNvbnN0IHRyYW5zaXRpb25Qcm9wcyA9IGdldFRyYW5zaXRpb25Qcm9wcyh7XG4gICAgICB0aW1lb3V0LFxuICAgICAgc3R5bGUsXG4gICAgICBlYXNpbmc6IGVhc2luZ1Byb3BcbiAgICB9LCB7XG4gICAgICBtb2RlOiAnZW50ZXInXG4gICAgfSk7XG4gICAgbm9kZS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCctd2Via2l0LXRyYW5zZm9ybScsIF9leHRlbmRzKHt9LCB0cmFuc2l0aW9uUHJvcHMpKTtcbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ3RyYW5zZm9ybScsIF9leHRlbmRzKHt9LCB0cmFuc2l0aW9uUHJvcHMpKTtcbiAgICBub2RlLnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9ICdub25lJztcbiAgICBub2RlLnN0eWxlLnRyYW5zZm9ybSA9ICdub25lJztcbiAgICBpZiAob25FbnRlcmluZykge1xuICAgICAgb25FbnRlcmluZyhub2RlLCBpc0FwcGVhcmluZyk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRW50ZXJlZCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sob25FbnRlcmVkKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sob25FeGl0aW5nKTtcbiAgY29uc3QgaGFuZGxlRXhpdCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgY29uc3QgdHJhbnNpdGlvblByb3BzID0gZ2V0VHJhbnNpdGlvblByb3BzKHtcbiAgICAgIHRpbWVvdXQsXG4gICAgICBzdHlsZSxcbiAgICAgIGVhc2luZzogZWFzaW5nUHJvcFxuICAgIH0sIHtcbiAgICAgIG1vZGU6ICdleGl0J1xuICAgIH0pO1xuICAgIG5vZGUuc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnLXdlYmtpdC10cmFuc2Zvcm0nLCB0cmFuc2l0aW9uUHJvcHMpO1xuICAgIG5vZGUuc3R5bGUudHJhbnNpdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgndHJhbnNmb3JtJywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBzZXRUcmFuc2xhdGVWYWx1ZShkaXJlY3Rpb24sIG5vZGUsIGNvbnRhaW5lclByb3ApO1xuICAgIGlmIChvbkV4aXQpIHtcbiAgICAgIG9uRXhpdChub2RlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIC8vIE5vIG5lZWQgZm9yIHRyYW5zaXRpb25zIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBoaWRkZW5cbiAgICBub2RlLnN0eWxlLndlYmtpdFRyYW5zaXRpb24gPSAnJztcbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICBpZiAob25FeGl0ZWQpIHtcbiAgICAgIG9uRXhpdGVkKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUFkZEVuZExpc3RlbmVyID0gbmV4dCA9PiB7XG4gICAgaWYgKGFkZEVuZExpc3RlbmVyKSB7XG4gICAgICAvLyBPbGQgY2FsbCBzaWduYXR1cmUgYmVmb3JlIGByZWFjdC10cmFuc2l0aW9uLWdyb3VwYCBpbXBsZW1lbnRlZCBgbm9kZVJlZmBcbiAgICAgIGFkZEVuZExpc3RlbmVyKGNoaWxkcmVuUmVmLmN1cnJlbnQsIG5leHQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdXBkYXRlUG9zaXRpb24gPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKGNoaWxkcmVuUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldFRyYW5zbGF0ZVZhbHVlKGRpcmVjdGlvbiwgY2hpbGRyZW5SZWYuY3VycmVudCwgY29udGFpbmVyUHJvcCk7XG4gICAgfVxuICB9LCBbZGlyZWN0aW9uLCBjb250YWluZXJQcm9wXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gU2tpcCBjb25maWd1cmF0aW9uIHdoZXJlIHRoZSBwb3NpdGlvbiBpcyBzY3JlZW4gc2l6ZSBpbnZhcmlhbnQuXG4gICAgaWYgKGluUHJvcCB8fCBkaXJlY3Rpb24gPT09ICdkb3duJyB8fCBkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZVJlc2l6ZSA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgIGlmIChjaGlsZHJlblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldFRyYW5zbGF0ZVZhbHVlKGRpcmVjdGlvbiwgY2hpbGRyZW5SZWYuY3VycmVudCwgY29udGFpbmVyUHJvcCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29udGFpbmVyV2luZG93ID0gb3duZXJXaW5kb3coY2hpbGRyZW5SZWYuY3VycmVudCk7XG4gICAgY29udGFpbmVyV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGhhbmRsZVJlc2l6ZS5jbGVhcigpO1xuICAgICAgY29udGFpbmVyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XG4gICAgfTtcbiAgfSwgW2RpcmVjdGlvbiwgaW5Qcm9wLCBjb250YWluZXJQcm9wXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpblByb3ApIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgZHJhd2VyIHdoZW4gdGhlIGRpcmVjdGlvbiBjaGFuZ2UgYW5kXG4gICAgICAvLyB3aGVuIGl0J3MgaGlkZGVuLlxuICAgICAgdXBkYXRlUG9zaXRpb24oKTtcbiAgICB9XG4gIH0sIFtpblByb3AsIHVwZGF0ZVBvc2l0aW9uXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgbm9kZVJlZjogY2hpbGRyZW5SZWYsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBhZGRFbmRMaXN0ZW5lcjogaGFuZGxlQWRkRW5kTGlzdGVuZXIsXG4gICAgYXBwZWFyOiBhcHBlYXIsXG4gICAgaW46IGluUHJvcCxcbiAgICB0aW1lb3V0OiB0aW1lb3V0XG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IChzdGF0ZSwgY2hpbGRQcm9wcykgPT4ge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIF9leHRlbmRzKHtcbiAgICAgICAgcmVmOiBoYW5kbGVSZWYsXG4gICAgICAgIHN0eWxlOiBfZXh0ZW5kcyh7XG4gICAgICAgICAgdmlzaWJpbGl0eTogc3RhdGUgPT09ICdleGl0ZWQnICYmICFpblByb3AgPyAnaGlkZGVuJyA6IHVuZGVmaW5lZFxuICAgICAgICB9LCBzdHlsZSwgY2hpbGRyZW4ucHJvcHMuc3R5bGUpXG4gICAgICB9LCBjaGlsZFByb3BzKSk7XG4gICAgfVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFNsaWRlLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSB0cmFuc2l0aW9uIGVuZCB0cmlnZ2VyLiBDYWxsZWQgd2l0aCB0aGUgdHJhbnNpdGlvbmluZyBET01cbiAgICogbm9kZSBhbmQgYSBkb25lIGNhbGxiYWNrLiBBbGxvd3MgZm9yIG1vcmUgZmluZSBncmFpbmVkIHRyYW5zaXRpb24gZW5kXG4gICAqIGxvZ2ljLiBOb3RlOiBUaW1lb3V0cyBhcmUgc3RpbGwgdXNlZCBhcyBhIGZhbGxiYWNrIGlmIHByb3ZpZGVkLlxuICAgKi9cbiAgYWRkRW5kTGlzdGVuZXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogUGVyZm9ybSB0aGUgZW50ZXIgdHJhbnNpdGlvbiB3aGVuIGl0IGZpcnN0IG1vdW50cyBpZiBgaW5gIGlzIGFsc28gYHRydWVgLlxuICAgKiBTZXQgdGhpcyB0byBgZmFsc2VgIHRvIGRpc2FibGUgdGhpcyBiZWhhdmlvci5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgYXBwZWFyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEEgc2luZ2xlIGNoaWxkIGNvbnRlbnQgZWxlbWVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBlbGVtZW50QWNjZXB0aW5nUmVmLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBBbiBIVE1MIGVsZW1lbnQsIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG9uZS5cbiAgICogSXQncyB1c2VkIHRvIHNldCB0aGUgY29udGFpbmVyIHRoZSBTbGlkZSBpcyB0cmFuc2l0aW9uaW5nIGZyb20uXG4gICAqL1xuICBjb250YWluZXI6IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLmZ1bmNdKSwgcHJvcHMgPT4ge1xuICAgIGlmIChwcm9wcy5vcGVuKSB7XG4gICAgICBjb25zdCByZXNvbHZlZENvbnRhaW5lciA9IHJlc29sdmVDb250YWluZXIocHJvcHMuY29udGFpbmVyKTtcbiAgICAgIGlmIChyZXNvbHZlZENvbnRhaW5lciAmJiByZXNvbHZlZENvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSkge1xuICAgICAgICBjb25zdCBib3ggPSByZXNvbHZlZENvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiYgYm94LnRvcCA9PT0gMCAmJiBib3gubGVmdCA9PT0gMCAmJiBib3gucmlnaHQgPT09IDAgJiYgYm94LmJvdHRvbSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoWydNVUk6IFRoZSBgY29udGFpbmVyYCBwcm9wIHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgaXMgaW52YWxpZC4nLCAnVGhlIGFuY2hvciBlbGVtZW50IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBsYXlvdXQuJywgXCJNYWtlIHN1cmUgdGhlIGVsZW1lbnQgaXMgcHJlc2VudCBpbiB0aGUgZG9jdW1lbnQgb3IgdGhhdCBpdCdzIG5vdCBkaXNwbGF5IG5vbmUuXCJdLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghcmVzb2x2ZWRDb250YWluZXIgfHwgdHlwZW9mIHJlc29sdmVkQ29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gJ2Z1bmN0aW9uJyB8fCByZXNvbHZlZENvbnRhaW5lci5jb250ZXh0RWxlbWVudCAhPSBudWxsICYmIHJlc29sdmVkQ29udGFpbmVyLmNvbnRleHRFbGVtZW50Lm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXJyb3IoWydNVUk6IFRoZSBgY29udGFpbmVyYCBwcm9wIHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgaXMgaW52YWxpZC4nLCAnSXQgc2hvdWxkIGJlIGFuIEhUTUwgZWxlbWVudCBpbnN0YW5jZS4nXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIERpcmVjdGlvbiB0aGUgY2hpbGQgbm9kZSB3aWxsIGVudGVyIGZyb20uXG4gICAqIEBkZWZhdWx0ICdkb3duJ1xuICAgKi9cbiAgZGlyZWN0aW9uOiBQcm9wVHlwZXMub25lT2YoWydkb3duJywgJ2xlZnQnLCAncmlnaHQnLCAndXAnXSksXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb24uXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSBlYXNpbmcgb3IgYSBvYmplY3QgY29udGFpbmluZyBlbnRlciBhbmQgZXhpdCB2YWx1ZXMuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXQsXG4gICAqICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLnNoYXJwLFxuICAgKiB9XG4gICAqL1xuICBlYXNpbmc6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zaGFwZSh7XG4gICAgZW50ZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZXhpdDogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IHdpbGwgdHJhbnNpdGlvbiBpbi5cbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FbnRlcmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FeGl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBmb3IgdGhlIHRyYW5zaXRpb24sIGluIG1pbGxpc2Vjb25kcy5cbiAgICogWW91IG1heSBzcGVjaWZ5IGEgc2luZ2xlIHRpbWVvdXQgZm9yIGFsbCB0cmFuc2l0aW9ucywgb3IgaW5kaXZpZHVhbGx5IHdpdGggYW4gb2JqZWN0LlxuICAgKiBAZGVmYXVsdCB7XG4gICAqICAgZW50ZXI6IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLmVudGVyaW5nU2NyZWVuLFxuICAgKiAgIGV4aXQ6IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLmxlYXZpbmdTY3JlZW4sXG4gICAqIH1cbiAgICovXG4gIHRpbWVvdXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYXBwZWFyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGVudGVyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5udW1iZXJcbiAgfSldKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFNsaWRlOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXREcmF3ZXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aURyYXdlcicsIHNsb3QpO1xufVxuY29uc3QgZHJhd2VyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aURyYXdlcicsIFsncm9vdCcsICdkb2NrZWQnLCAncGFwZXInLCAncGFwZXJBbmNob3JMZWZ0JywgJ3BhcGVyQW5jaG9yUmlnaHQnLCAncGFwZXJBbmNob3JUb3AnLCAncGFwZXJBbmNob3JCb3R0b20nLCAncGFwZXJBbmNob3JEb2NrZWRMZWZ0JywgJ3BhcGVyQW5jaG9yRG9ja2VkUmlnaHQnLCAncGFwZXJBbmNob3JEb2NrZWRUb3AnLCAncGFwZXJBbmNob3JEb2NrZWRCb3R0b20nLCAnbW9kYWwnXSk7XG5leHBvcnQgZGVmYXVsdCBkcmF3ZXJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcIkJhY2tkcm9wUHJvcHNcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJhbmNob3JcIiwgXCJCYWNrZHJvcFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJlbGV2YXRpb25cIiwgXCJoaWRlQmFja2Ryb3BcIiwgXCJNb2RhbFByb3BzXCIsIFwib25DbG9zZVwiLCBcIm9wZW5cIiwgXCJQYXBlclByb3BzXCIsIFwiU2xpZGVQcm9wc1wiLCBcIlRyYW5zaXRpb25Db21wb25lbnRcIiwgXCJ0cmFuc2l0aW9uRHVyYXRpb25cIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaW50ZWdlclByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgTW9kYWwgZnJvbSAnLi4vTW9kYWwnO1xuaW1wb3J0IFNsaWRlIGZyb20gJy4uL1NsaWRlJztcbmltcG9ydCBQYXBlciBmcm9tICcuLi9QYXBlcic7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCwgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldERyYXdlclV0aWxpdHlDbGFzcyB9IGZyb20gJy4vZHJhd2VyQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3Qgb3ZlcnJpZGVzUmVzb2x2ZXIgPSAocHJvcHMsIHN0eWxlcykgPT4ge1xuICBjb25zdCB7XG4gICAgb3duZXJTdGF0ZVxuICB9ID0gcHJvcHM7XG4gIHJldHVybiBbc3R5bGVzLnJvb3QsIChvd25lclN0YXRlLnZhcmlhbnQgPT09ICdwZXJtYW5lbnQnIHx8IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3BlcnNpc3RlbnQnKSAmJiBzdHlsZXMuZG9ja2VkLCBzdHlsZXMubW9kYWxdO1xufTtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGFuY2hvcixcbiAgICB2YXJpYW50XG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnXSxcbiAgICBkb2NrZWQ6IFsodmFyaWFudCA9PT0gJ3Blcm1hbmVudCcgfHwgdmFyaWFudCA9PT0gJ3BlcnNpc3RlbnQnKSAmJiAnZG9ja2VkJ10sXG4gICAgbW9kYWw6IFsnbW9kYWwnXSxcbiAgICBwYXBlcjogWydwYXBlcicsIGBwYXBlckFuY2hvciR7Y2FwaXRhbGl6ZShhbmNob3IpfWAsIHZhcmlhbnQgIT09ICd0ZW1wb3JhcnknICYmIGBwYXBlckFuY2hvckRvY2tlZCR7Y2FwaXRhbGl6ZShhbmNob3IpfWBdXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0RHJhd2VyVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBEcmF3ZXJSb290ID0gc3R5bGVkKE1vZGFsLCB7XG4gIG5hbWU6ICdNdWlEcmF3ZXInLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyXG59KSgoe1xuICB0aGVtZVxufSkgPT4gKHtcbiAgekluZGV4OiAodGhlbWUudmFycyB8fCB0aGVtZSkuekluZGV4LmRyYXdlclxufSkpO1xuY29uc3QgRHJhd2VyRG9ja2VkUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcm9vdFNob3VsZEZvcndhcmRQcm9wLFxuICBuYW1lOiAnTXVpRHJhd2VyJyxcbiAgc2xvdDogJ0RvY2tlZCcsXG4gIHNraXBWYXJpYW50c1Jlc29sdmVyOiBmYWxzZSxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXJcbn0pKHtcbiAgZmxleDogJzAgMCBhdXRvJ1xufSk7XG5jb25zdCBEcmF3ZXJQYXBlciA9IHN0eWxlZChQYXBlciwge1xuICBuYW1lOiAnTXVpRHJhd2VyJyxcbiAgc2xvdDogJ1BhcGVyJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5wYXBlciwgc3R5bGVzW2BwYXBlckFuY2hvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmFuY2hvcil9YF0sIG93bmVyU3RhdGUudmFyaWFudCAhPT0gJ3RlbXBvcmFyeScgJiYgc3R5bGVzW2BwYXBlckFuY2hvckRvY2tlZCR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmFuY2hvcil9YF1dO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIGZsZXg6ICcxIDAgYXV0bycsXG4gIHpJbmRleDogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnpJbmRleC5kcmF3ZXIsXG4gIC8vIEFkZCBpT1MgbW9tZW50dW0gc2Nyb2xsaW5nIGZvciBpT1MgPCAxMy4wXG4gIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnLFxuICAvLyB0ZW1wb3Jhcnkgc3R5bGVcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIHRvcDogMCxcbiAgLy8gV2UgZGlzYWJsZSB0aGUgZm9jdXMgcmluZyBmb3IgbW91c2UsIHRvdWNoIGFuZCBrZXlib2FyZCB1c2Vycy5cbiAgLy8gQXQgc29tZSBwb2ludCwgaXQgd291bGQgYmUgYmV0dGVyIHRvIGtlZXAgaXQgZm9yIGtleWJvYXJkIHVzZXJzLlxuICAvLyA6Zm9jdXMtcmluZyBDU1MgcHNldWRvLWNsYXNzIHdpbGwgaGVscC5cbiAgb3V0bGluZTogMFxufSwgb3duZXJTdGF0ZS5hbmNob3IgPT09ICdsZWZ0JyAmJiB7XG4gIGxlZnQ6IDBcbn0sIG93bmVyU3RhdGUuYW5jaG9yID09PSAndG9wJyAmJiB7XG4gIHRvcDogMCxcbiAgbGVmdDogMCxcbiAgcmlnaHQ6IDAsXG4gIGhlaWdodDogJ2F1dG8nLFxuICBtYXhIZWlnaHQ6ICcxMDAlJ1xufSwgb3duZXJTdGF0ZS5hbmNob3IgPT09ICdyaWdodCcgJiYge1xuICByaWdodDogMFxufSwgb3duZXJTdGF0ZS5hbmNob3IgPT09ICdib3R0b20nICYmIHtcbiAgdG9wOiAnYXV0bycsXG4gIGxlZnQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgcmlnaHQ6IDAsXG4gIGhlaWdodDogJ2F1dG8nLFxuICBtYXhIZWlnaHQ6ICcxMDAlJ1xufSwgb3duZXJTdGF0ZS5hbmNob3IgPT09ICdsZWZ0JyAmJiBvd25lclN0YXRlLnZhcmlhbnQgIT09ICd0ZW1wb3JhcnknICYmIHtcbiAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5kaXZpZGVyfWBcbn0sIG93bmVyU3RhdGUuYW5jaG9yID09PSAndG9wJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgIT09ICd0ZW1wb3JhcnknICYmIHtcbiAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gXG59LCBvd25lclN0YXRlLmFuY2hvciA9PT0gJ3JpZ2h0JyAmJiBvd25lclN0YXRlLnZhcmlhbnQgIT09ICd0ZW1wb3JhcnknICYmIHtcbiAgYm9yZGVyTGVmdDogYDFweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmRpdmlkZXJ9YFxufSwgb3duZXJTdGF0ZS5hbmNob3IgPT09ICdib3R0b20nICYmIG93bmVyU3RhdGUudmFyaWFudCAhPT0gJ3RlbXBvcmFyeScgJiYge1xuICBib3JkZXJUb3A6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5kaXZpZGVyfWBcbn0pKTtcbmNvbnN0IG9wcG9zaXRlRGlyZWN0aW9uID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICB0b3A6ICdkb3duJyxcbiAgYm90dG9tOiAndXAnXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzSG9yaXpvbnRhbChhbmNob3IpIHtcbiAgcmV0dXJuIFsnbGVmdCcsICdyaWdodCddLmluZGV4T2YoYW5jaG9yKSAhPT0gLTE7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0QW5jaG9yKHRoZW1lLCBhbmNob3IpIHtcbiAgcmV0dXJuIHRoZW1lLmRpcmVjdGlvbiA9PT0gJ3J0bCcgJiYgaXNIb3Jpem9udGFsKGFuY2hvcikgPyBvcHBvc2l0ZURpcmVjdGlvblthbmNob3JdIDogYW5jaG9yO1xufVxuXG4vKipcbiAqIFRoZSBwcm9wcyBvZiB0aGUgW01vZGFsXSgvbWF0ZXJpYWwtdWkvYXBpL21vZGFsLykgY29tcG9uZW50IGFyZSBhdmFpbGFibGVcbiAqIHdoZW4gYHZhcmlhbnQ9XCJ0ZW1wb3JhcnlcImAgaXMgc2V0LlxuICovXG5jb25zdCBEcmF3ZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBEcmF3ZXIoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aURyYXdlcidcbiAgfSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgZGVmYXVsdFRyYW5zaXRpb25EdXJhdGlvbiA9IHtcbiAgICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlblxuICB9O1xuICBjb25zdCB7XG4gICAgICBhbmNob3I6IGFuY2hvclByb3AgPSAnbGVmdCcsXG4gICAgICBCYWNrZHJvcFByb3BzLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBlbGV2YXRpb24gPSAxNixcbiAgICAgIGhpZGVCYWNrZHJvcCA9IGZhbHNlLFxuICAgICAgTW9kYWxQcm9wczoge1xuICAgICAgICBCYWNrZHJvcFByb3BzOiBCYWNrZHJvcFByb3BzUHJvcFxuICAgICAgfSA9IHt9LFxuICAgICAgb25DbG9zZSxcbiAgICAgIG9wZW4gPSBmYWxzZSxcbiAgICAgIFBhcGVyUHJvcHMgPSB7fSxcbiAgICAgIFNsaWRlUHJvcHMsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudCA9IFNsaWRlLFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uID0gZGVmYXVsdFRyYW5zaXRpb25EdXJhdGlvbixcbiAgICAgIHZhcmlhbnQgPSAndGVtcG9yYXJ5J1xuICAgIH0gPSBwcm9wcyxcbiAgICBNb2RhbFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMuTW9kYWxQcm9wcywgX2V4Y2x1ZGVkKSxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQyKTtcblxuICAvLyBMZXQncyBhc3N1bWUgdGhhdCB0aGUgRHJhd2VyIHdpbGwgYWx3YXlzIGJlIHJlbmRlcmVkIG9uIHVzZXIgc3BhY2UuXG4gIC8vIFdlIHVzZSB0aGlzIHN0YXRlIGlzIG9yZGVyIHRvIHNraXAgdGhlIGFwcGVhciB0cmFuc2l0aW9uIGR1cmluZyB0aGVcbiAgLy8gaW5pdGlhbCBtb3VudCBvZiB0aGUgY29tcG9uZW50LlxuICBjb25zdCBtb3VudGVkID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBtb3VudGVkLmN1cnJlbnQgPSB0cnVlO1xuICB9LCBbXSk7XG4gIGNvbnN0IGFuY2hvckludmFyaWFudCA9IGdldEFuY2hvcih0aGVtZSwgYW5jaG9yUHJvcCk7XG4gIGNvbnN0IGFuY2hvciA9IGFuY2hvclByb3A7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBhbmNob3IsXG4gICAgZWxldmF0aW9uLFxuICAgIG9wZW4sXG4gICAgdmFyaWFudFxuICB9LCBvdGhlcik7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgZHJhd2VyID0gLyojX19QVVJFX18qL19qc3goRHJhd2VyUGFwZXIsIF9leHRlbmRzKHtcbiAgICBlbGV2YXRpb246IHZhcmlhbnQgPT09ICd0ZW1wb3JhcnknID8gZWxldmF0aW9uIDogMCxcbiAgICBzcXVhcmU6IHRydWVcbiAgfSwgUGFwZXJQcm9wcywge1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnBhcGVyLCBQYXBlclByb3BzLmNsYXNzTmFtZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xuICBpZiAodmFyaWFudCA9PT0gJ3Blcm1hbmVudCcpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRHJhd2VyRG9ja2VkUm9vdCwgX2V4dGVuZHMoe1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3Nlcy5kb2NrZWQsIGNsYXNzTmFtZSksXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBvdGhlciwge1xuICAgICAgY2hpbGRyZW46IGRyYXdlclxuICAgIH0pKTtcbiAgfVxuICBjb25zdCBzbGlkaW5nRHJhd2VyID0gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkNvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgIGluOiBvcGVuLFxuICAgIGRpcmVjdGlvbjogb3Bwb3NpdGVEaXJlY3Rpb25bYW5jaG9ySW52YXJpYW50XSxcbiAgICB0aW1lb3V0OiB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgYXBwZWFyOiBtb3VudGVkLmN1cnJlbnRcbiAgfSwgU2xpZGVQcm9wcywge1xuICAgIGNoaWxkcmVuOiBkcmF3ZXJcbiAgfSkpO1xuICBpZiAodmFyaWFudCA9PT0gJ3BlcnNpc3RlbnQnKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KERyYXdlckRvY2tlZFJvb3QsIF9leHRlbmRzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzZXMuZG9ja2VkLCBjbGFzc05hbWUpLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgb3RoZXIsIHtcbiAgICAgIGNoaWxkcmVuOiBzbGlkaW5nRHJhd2VyXG4gICAgfSkpO1xuICB9XG5cbiAgLy8gdmFyaWFudCA9PT0gdGVtcG9yYXJ5XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChEcmF3ZXJSb290LCBfZXh0ZW5kcyh7XG4gICAgQmFja2Ryb3BQcm9wczogX2V4dGVuZHMoe30sIEJhY2tkcm9wUHJvcHMsIEJhY2tkcm9wUHJvcHNQcm9wLCB7XG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb25cbiAgICB9KSxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc2VzLm1vZGFsLCBjbGFzc05hbWUpLFxuICAgIG9wZW46IG9wZW4sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBvbkNsb3NlOiBvbkNsb3NlLFxuICAgIGhpZGVCYWNrZHJvcDogaGlkZUJhY2tkcm9wLFxuICAgIHJlZjogcmVmXG4gIH0sIG90aGVyLCBNb2RhbFByb3BzLCB7XG4gICAgY2hpbGRyZW46IHNsaWRpbmdEcmF3ZXJcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBEcmF3ZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogU2lkZSBmcm9tIHdoaWNoIHRoZSBkcmF3ZXIgd2lsbCBhcHBlYXIuXG4gICAqIEBkZWZhdWx0ICdsZWZ0J1xuICAgKi9cbiAgYW5jaG9yOiBQcm9wVHlwZXMub25lT2YoWydib3R0b20nLCAnbGVmdCcsICdyaWdodCcsICd0b3AnXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBCYWNrZHJvcFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgZWxldmF0aW9uIG9mIHRoZSBkcmF3ZXIuXG4gICAqIEBkZWZhdWx0IDE2XG4gICAqL1xuICBlbGV2YXRpb246IGludGVnZXJQcm9wVHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJhY2tkcm9wIGlzIG5vdCByZW5kZXJlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhpZGVCYWNrZHJvcDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBbYE1vZGFsYF0oL21hdGVyaWFsLXVpL2FwaS9tb2RhbC8pIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBNb2RhbFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IHJlcXVlc3RzIHRvIGJlIGNsb3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKi9cbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2hvd24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIFtgUGFwZXJgXSgvbWF0ZXJpYWwtdWkvYXBpL3BhcGVyLykgZWxlbWVudC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIFBhcGVyUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBbYFNsaWRlYF0oL21hdGVyaWFsLXVpL2FwaS9zbGlkZS8pIGVsZW1lbnQuXG4gICAqL1xuICBTbGlkZVByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGZvciB0aGUgdHJhbnNpdGlvbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zLCBvciBpbmRpdmlkdWFsbHkgd2l0aCBhbiBvYmplY3QuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAqICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlbixcbiAgICogfVxuICAgKi9cbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFwcGVhcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBlbnRlcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBleGl0OiBQcm9wVHlwZXMubnVtYmVyXG4gIH0pXSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICd0ZW1wb3JhcnknXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydwZXJtYW5lbnQnLCAncGVyc2lzdGVudCcsICd0ZW1wb3JhcnknXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBEcmF3ZXI7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3RJdGVtQnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlMaXN0SXRlbUJ1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgbGlzdEl0ZW1CdXR0b25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpTGlzdEl0ZW1CdXR0b24nLCBbJ3Jvb3QnLCAnZm9jdXNWaXNpYmxlJywgJ2RlbnNlJywgJ2FsaWduSXRlbXNGbGV4U3RhcnQnLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdndXR0ZXJzJywgJ3NlbGVjdGVkJ10pO1xuZXhwb3J0IGRlZmF1bHQgbGlzdEl0ZW1CdXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFsaWduSXRlbXNcIiwgXCJhdXRvRm9jdXNcIiwgXCJjb21wb25lbnRcIiwgXCJjaGlsZHJlblwiLCBcImRlbnNlXCIsIFwiZGlzYWJsZUd1dHRlcnNcIiwgXCJkaXZpZGVyXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwic2VsZWN0ZWRcIiwgXCJjbGFzc05hbWVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCB1c2VFbmhhbmNlZEVmZmVjdCBmcm9tICcuLi91dGlscy91c2VFbmhhbmNlZEVmZmVjdCc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCBMaXN0Q29udGV4dCBmcm9tICcuLi9MaXN0L0xpc3RDb250ZXh0JztcbmltcG9ydCBsaXN0SXRlbUJ1dHRvbkNsYXNzZXMsIHsgZ2V0TGlzdEl0ZW1CdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2xpc3RJdGVtQnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IG92ZXJyaWRlc1Jlc29sdmVyID0gKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgY29uc3Qge1xuICAgIG93bmVyU3RhdGVcbiAgfSA9IHByb3BzO1xuICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmRlbnNlICYmIHN0eWxlcy5kZW5zZSwgb3duZXJTdGF0ZS5hbGlnbkl0ZW1zID09PSAnZmxleC1zdGFydCcgJiYgc3R5bGVzLmFsaWduSXRlbXNGbGV4U3RhcnQsIG93bmVyU3RhdGUuZGl2aWRlciAmJiBzdHlsZXMuZGl2aWRlciwgIW93bmVyU3RhdGUuZGlzYWJsZUd1dHRlcnMgJiYgc3R5bGVzLmd1dHRlcnNdO1xufTtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbGlnbkl0ZW1zLFxuICAgIGNsYXNzZXMsXG4gICAgZGVuc2UsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUd1dHRlcnMsXG4gICAgZGl2aWRlcixcbiAgICBzZWxlY3RlZFxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgZGVuc2UgJiYgJ2RlbnNlJywgIWRpc2FibGVHdXR0ZXJzICYmICdndXR0ZXJzJywgZGl2aWRlciAmJiAnZGl2aWRlcicsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGFsaWduSXRlbXMgPT09ICdmbGV4LXN0YXJ0JyAmJiAnYWxpZ25JdGVtc0ZsZXhTdGFydCcsIHNlbGVjdGVkICYmICdzZWxlY3RlZCddXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRMaXN0SXRlbUJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBMaXN0SXRlbUJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpTGlzdEl0ZW1CdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyXG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnZmxleCcsXG4gIGZsZXhHcm93OiAxLFxuICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gIG1pbldpZHRoOiAwLFxuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgdGV4dEFsaWduOiAnbGVmdCcsXG4gIHBhZGRpbmdUb3A6IDgsXG4gIHBhZGRpbmdCb3R0b206IDgsXG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnYmFja2dyb3VuZC1jb2xvcicsIHtcbiAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlc3RcbiAgfSksXG4gICcmOmhvdmVyJzoge1xuICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uaG92ZXIsXG4gICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICB9XG4gIH0sXG4gIFtgJi4ke2xpc3RJdGVtQnV0dG9uQ2xhc3Nlcy5zZWxlY3RlZH1gXToge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLnByaW1hcnkubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHkpLFxuICAgIFtgJi4ke2xpc3RJdGVtQnV0dG9uQ2xhc3Nlcy5mb2N1c1Zpc2libGV9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLnByaW1hcnkubWFpbkNoYW5uZWx9IC8gY2FsYygke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5fSArICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5mb2N1c09wYWNpdHl9KSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eSArIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmZvY3VzT3BhY2l0eSlcbiAgICB9XG4gIH0sXG4gIFtgJi4ke2xpc3RJdGVtQnV0dG9uQ2xhc3Nlcy5zZWxlY3RlZH06aG92ZXJgXToge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLnByaW1hcnkubWFpbkNoYW5uZWx9IC8gY2FsYygke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5fSArICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eSArIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5wcmltYXJ5Lm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5KVxuICAgIH1cbiAgfSxcbiAgW2AmLiR7bGlzdEl0ZW1CdXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmZvY3VzXG4gIH0sXG4gIFtgJi4ke2xpc3RJdGVtQnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgIG9wYWNpdHk6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZE9wYWNpdHlcbiAgfVxufSwgb3duZXJTdGF0ZS5kaXZpZGVyICYmIHtcbiAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gLFxuICBiYWNrZ3JvdW5kQ2xpcDogJ3BhZGRpbmctYm94J1xufSwgb3duZXJTdGF0ZS5hbGlnbkl0ZW1zID09PSAnZmxleC1zdGFydCcgJiYge1xuICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCdcbn0sICFvd25lclN0YXRlLmRpc2FibGVHdXR0ZXJzICYmIHtcbiAgcGFkZGluZ0xlZnQ6IDE2LFxuICBwYWRkaW5nUmlnaHQ6IDE2XG59LCBvd25lclN0YXRlLmRlbnNlICYmIHtcbiAgcGFkZGluZ1RvcDogNCxcbiAgcGFkZGluZ0JvdHRvbTogNFxufSkpO1xuY29uc3QgTGlzdEl0ZW1CdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBMaXN0SXRlbUJ1dHRvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpTGlzdEl0ZW1CdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBhbGlnbkl0ZW1zID0gJ2NlbnRlcicsXG4gICAgICBhdXRvRm9jdXMgPSBmYWxzZSxcbiAgICAgIGNvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkZW5zZSA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUd1dHRlcnMgPSBmYWxzZSxcbiAgICAgIGRpdmlkZXIgPSBmYWxzZSxcbiAgICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSxcbiAgICAgIHNlbGVjdGVkID0gZmFsc2UsXG4gICAgICBjbGFzc05hbWVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgY29udGV4dCA9IFJlYWN0LnVzZUNvbnRleHQoTGlzdENvbnRleHQpO1xuICBjb25zdCBjaGlsZENvbnRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZGVuc2U6IGRlbnNlIHx8IGNvbnRleHQuZGVuc2UgfHwgZmFsc2UsXG4gICAgYWxpZ25JdGVtcyxcbiAgICBkaXNhYmxlR3V0dGVyc1xuICB9KSwgW2FsaWduSXRlbXMsIGNvbnRleHQuZGVuc2UsIGRlbnNlLCBkaXNhYmxlR3V0dGVyc10pO1xuICBjb25zdCBsaXN0SXRlbVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhdXRvRm9jdXMpIHtcbiAgICAgIGlmIChsaXN0SXRlbVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGxpc3RJdGVtUmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdNVUk6IFVuYWJsZSB0byBzZXQgZm9jdXMgdG8gYSBMaXN0SXRlbUJ1dHRvbiB3aG9zZSBjb21wb25lbnQgaGFzIG5vdCBiZWVuIHJlbmRlcmVkLicpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW2F1dG9Gb2N1c10pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgYWxpZ25JdGVtcyxcbiAgICBkZW5zZTogY2hpbGRDb250ZXh0LmRlbnNlLFxuICAgIGRpc2FibGVHdXR0ZXJzLFxuICAgIGRpdmlkZXIsXG4gICAgc2VsZWN0ZWRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihsaXN0SXRlbVJlZiwgcmVmKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KExpc3RDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IGNoaWxkQ29udGV4dCxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goTGlzdEl0ZW1CdXR0b25Sb290LCBfZXh0ZW5kcyh7XG4gICAgICByZWY6IGhhbmRsZVJlZixcbiAgICAgIGhyZWY6IG90aGVyLmhyZWYgfHwgb3RoZXIudG9cbiAgICAgIC8vIGBCdXR0b25CYXNlYCBwcm9jZXNzZXMgYGhyZWZgIG9yIGB0b2AgaWYgYGNvbXBvbmVudGAgaXMgc2V0IHRvICdidXR0b24nXG4gICAgICAsXG4gICAgICBjb21wb25lbnQ6IChvdGhlci5ocmVmIHx8IG90aGVyLnRvKSAmJiBjb21wb25lbnQgPT09ICdkaXYnID8gJ2J1dHRvbicgOiBjb21wb25lbnQsXG4gICAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5mb2N1c1Zpc2libGUsIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSksXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKVxuICAgIH0sIG90aGVyLCB7XG4gICAgICBjbGFzc2VzOiBjbGFzc2VzLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBMaXN0SXRlbUJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSBgYWxpZ24taXRlbXNgIHN0eWxlIHByb3BlcnR5LlxuICAgKiBAZGVmYXVsdCAnY2VudGVyJ1xuICAgKi9cbiAgYWxpZ25JdGVtczogUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2ZsZXgtc3RhcnQnXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsaXN0IGl0ZW0gaXMgZm9jdXNlZCBkdXJpbmcgdGhlIGZpcnN0IG1vdW50LlxuICAgKiBGb2N1cyB3aWxsIGFsc28gYmUgdHJpZ2dlcmVkIGlmIHRoZSB2YWx1ZSBjaGFuZ2VzIGZyb20gZmFsc2UgdG8gdHJ1ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50IGlmIGEgYExpc3RJdGVtU2Vjb25kYXJ5QWN0aW9uYCBpcyB1c2VkIGl0IG11c3RcbiAgICogYmUgdGhlIGxhc3QgY2hpbGQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgY29tcGFjdCB2ZXJ0aWNhbCBwYWRkaW5nIGRlc2lnbmVkIGZvciBrZXlib2FyZCBhbmQgbW91c2UgaW5wdXQgaXMgdXNlZC5cbiAgICogVGhlIHByb3AgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgTGlzdCBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkZW5zZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIGlzIHJlbW92ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlR3V0dGVyczogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGEgMXB4IGxpZ2h0IGJvcmRlciBpcyBhZGRlZCB0byB0aGUgYm90dG9tIG9mIHRoZSBsaXN0IGl0ZW0uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXZpZGVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBjYW4gaGVscCBpZGVudGlmeSB3aGljaCBlbGVtZW50IGhhcyBrZXlib2FyZCBmb2N1cy5cbiAgICogVGhlIGNsYXNzIG5hbWUgd2lsbCBiZSBhcHBsaWVkIHdoZW4gdGhlIGVsZW1lbnQgZ2FpbnMgdGhlIGZvY3VzIHRocm91Z2gga2V5Ym9hcmQgaW50ZXJhY3Rpb24uXG4gICAqIEl0J3MgYSBwb2x5ZmlsbCBmb3IgdGhlIFtDU1MgOmZvY3VzLXZpc2libGUgc2VsZWN0b3JdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9zZWxlY3RvcnMtNC8jdGhlLWZvY3VzLXZpc2libGUtcHNldWRvKS5cbiAgICogVGhlIHJhdGlvbmFsZSBmb3IgdXNpbmcgdGhpcyBmZWF0dXJlIFtpcyBleHBsYWluZWQgaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZS9ibG9iL0hFQUQvZXhwbGFpbmVyLm1kKS5cbiAgICogQSBbcG9seWZpbGwgY2FuIGJlIHVzZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL2ZvY3VzLXZpc2libGUpIHRvIGFwcGx5IGEgYGZvY3VzLXZpc2libGVgIGNsYXNzIHRvIG90aGVyIGNvbXBvbmVudHNcbiAgICogaWYgbmVlZGVkLlxuICAgKi9cbiAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFVzZSB0byBhcHBseSBzZWxlY3RlZCBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgTGlzdEl0ZW1CdXR0b247IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVR5cG9ncmFwaHknLCBzbG90KTtcbn1cbmNvbnN0IHR5cG9ncmFwaHlDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVHlwb2dyYXBoeScsIFsncm9vdCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdzdWJ0aXRsZTEnLCAnc3VidGl0bGUyJywgJ2JvZHkxJywgJ2JvZHkyJywgJ2luaGVyaXQnLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnb3ZlcmxpbmUnLCAnYWxpZ25MZWZ0JywgJ2FsaWduUmlnaHQnLCAnYWxpZ25DZW50ZXInLCAnYWxpZ25KdXN0aWZ5JywgJ25vV3JhcCcsICdndXR0ZXJCb3R0b20nLCAncGFyYWdyYXBoJ10pO1xuZXhwb3J0IGRlZmF1bHQgdHlwb2dyYXBoeUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWxpZ25cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJndXR0ZXJCb3R0b21cIiwgXCJub1dyYXBcIiwgXCJwYXJhZ3JhcGhcIiwgXCJ2YXJpYW50XCIsIFwidmFyaWFudE1hcHBpbmdcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9leHRlbmRTeFByb3AgYXMgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHsgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vdHlwb2dyYXBoeUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbGlnbixcbiAgICBndXR0ZXJCb3R0b20sXG4gICAgbm9XcmFwLFxuICAgIHBhcmFncmFwaCxcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBgYWxpZ24ke2NhcGl0YWxpemUoYWxpZ24pfWAsIGd1dHRlckJvdHRvbSAmJiAnZ3V0dGVyQm90dG9tJywgbm9XcmFwICYmICdub1dyYXAnLCBwYXJhZ3JhcGggJiYgJ3BhcmFncmFwaCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuZXhwb3J0IGNvbnN0IFR5cG9ncmFwaHlSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpVHlwb2dyYXBoeScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGFsaWduJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuYWxpZ24pfWBdLCBvd25lclN0YXRlLm5vV3JhcCAmJiBzdHlsZXMubm9XcmFwLCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiBzdHlsZXMuZ3V0dGVyQm90dG9tLCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiBzdHlsZXMucGFyYWdyYXBoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgbWFyZ2luOiAwXG59LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgdGhlbWUudHlwb2dyYXBoeVtvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYge1xuICB0ZXh0QWxpZ246IG93bmVyU3RhdGUuYWxpZ25cbn0sIG93bmVyU3RhdGUubm9XcmFwICYmIHtcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnXG59LCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiB7XG4gIG1hcmdpbkJvdHRvbTogJzAuMzVlbSdcbn0sIG93bmVyU3RhdGUucGFyYWdyYXBoICYmIHtcbiAgbWFyZ2luQm90dG9tOiAxNlxufSkpO1xuY29uc3QgZGVmYXVsdFZhcmlhbnRNYXBwaW5nID0ge1xuICBoMTogJ2gxJyxcbiAgaDI6ICdoMicsXG4gIGgzOiAnaDMnLFxuICBoNDogJ2g0JyxcbiAgaDU6ICdoNScsXG4gIGg2OiAnaDYnLFxuICBzdWJ0aXRsZTE6ICdoNicsXG4gIHN1YnRpdGxlMjogJ2g2JyxcbiAgYm9keTE6ICdwJyxcbiAgYm9keTI6ICdwJyxcbiAgaW5oZXJpdDogJ3AnXG59O1xuXG4vLyBUT0RPIHY2OiBkZXByZWNhdGUgdGhlc2UgY29sb3IgdmFsdWVzIGluIHY1LnggYW5kIHJlbW92ZSB0aGUgdHJhbnNmb3JtYXRpb24gaW4gdjZcbmNvbnN0IGNvbG9yVHJhbnNmb3JtYXRpb25zID0ge1xuICBwcmltYXJ5OiAncHJpbWFyeS5tYWluJyxcbiAgdGV4dFByaW1hcnk6ICd0ZXh0LnByaW1hcnknLFxuICBzZWNvbmRhcnk6ICdzZWNvbmRhcnkubWFpbicsXG4gIHRleHRTZWNvbmRhcnk6ICd0ZXh0LnNlY29uZGFyeScsXG4gIGVycm9yOiAnZXJyb3IubWFpbidcbn07XG5jb25zdCB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzID0gY29sb3IgPT4ge1xuICByZXR1cm4gY29sb3JUcmFuc2Zvcm1hdGlvbnNbY29sb3JdIHx8IGNvbG9yO1xufTtcbmNvbnN0IFR5cG9ncmFwaHkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUeXBvZ3JhcGh5KGluUHJvcHMsIHJlZikge1xuICBjb25zdCB0aGVtZVByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVR5cG9ncmFwaHknXG4gIH0pO1xuICBjb25zdCBjb2xvciA9IHRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnModGhlbWVQcm9wcy5jb2xvcik7XG4gIGNvbnN0IHByb3BzID0gZXh0ZW5kU3hQcm9wKF9leHRlbmRzKHt9LCB0aGVtZVByb3BzLCB7XG4gICAgY29sb3JcbiAgfSkpO1xuICBjb25zdCB7XG4gICAgICBhbGlnbiA9ICdpbmhlcml0JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGd1dHRlckJvdHRvbSA9IGZhbHNlLFxuICAgICAgbm9XcmFwID0gZmFsc2UsXG4gICAgICBwYXJhZ3JhcGggPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAnYm9keTEnLFxuICAgICAgdmFyaWFudE1hcHBpbmcgPSBkZWZhdWx0VmFyaWFudE1hcHBpbmdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFsaWduLFxuICAgIGNvbG9yLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb21wb25lbnQsXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICB2YXJpYW50TWFwcGluZ1xuICB9KTtcbiAgY29uc3QgQ29tcG9uZW50ID0gY29tcG9uZW50IHx8IChwYXJhZ3JhcGggPyAncCcgOiB2YXJpYW50TWFwcGluZ1t2YXJpYW50XSB8fCBkZWZhdWx0VmFyaWFudE1hcHBpbmdbdmFyaWFudF0pIHx8ICdzcGFuJztcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHlwb2dyYXBoeVJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogQ29tcG9uZW50LFxuICAgIHJlZjogcmVmLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKVxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUeXBvZ3JhcGh5LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFNldCB0aGUgdGV4dC1hbGlnbiBvbiB0aGUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCAnaW5oZXJpdCdcbiAgICovXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoWydjZW50ZXInLCAnaW5oZXJpdCcsICdqdXN0aWZ5JywgJ2xlZnQnLCAncmlnaHQnXSksXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dCB3aWxsIGhhdmUgYSBib3R0b20gbWFyZ2luLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZ3V0dGVyQm90dG9tOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBub3Qgd3JhcCwgYnV0IGluc3RlYWQgd2lsbCB0cnVuY2F0ZSB3aXRoIGEgdGV4dCBvdmVyZmxvdyBlbGxpcHNpcy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRleHQgb3ZlcmZsb3cgY2FuIG9ubHkgaGFwcGVuIHdpdGggYmxvY2sgb3IgaW5saW5lLWJsb2NrIGxldmVsIGVsZW1lbnRzXG4gICAqICh0aGUgZWxlbWVudCBuZWVkcyB0byBoYXZlIGEgd2lkdGggaW4gb3JkZXIgdG8gb3ZlcmZsb3cpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9XcmFwOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGVsZW1lbnQgd2lsbCBiZSBhIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcGFyYWdyYXBoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHRoZW1lIHR5cG9ncmFwaHkgc3R5bGVzLlxuICAgKiBAZGVmYXVsdCAnYm9keTEnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2JvZHkxJywgJ2JvZHkyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2luaGVyaXQnLCAnb3ZlcmxpbmUnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMiddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCBtYXBzIHRoZSB2YXJpYW50IHByb3AgdG8gYSByYW5nZSBvZiBkaWZmZXJlbnQgSFRNTCBlbGVtZW50IHR5cGVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIHN1YnRpdGxlMSB0byBgPGg2PmAuXG4gICAqIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGF0IG1hcHBpbmcsIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93bi5cbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGBjb21wb25lbnRgIHByb3AuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBoMTogJ2gxJyxcbiAgICogICBoMjogJ2gyJyxcbiAgICogICBoMzogJ2gzJyxcbiAgICogICBoNDogJ2g0JyxcbiAgICogICBoNTogJ2g1JyxcbiAgICogICBoNjogJ2g2JyxcbiAgICogICBzdWJ0aXRsZTE6ICdoNicsXG4gICAqICAgc3VidGl0bGUyOiAnaDYnLFxuICAgKiAgIGJvZHkxOiAncCcsXG4gICAqICAgYm9keTI6ICdwJyxcbiAgICogICBpbmhlcml0OiAncCcsXG4gICAqIH1cbiAgICovXG4gIHZhcmlhbnRNYXBwaW5nOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vYmplY3Rcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUeXBvZ3JhcGh5OyJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwiZ2V0QnV0dG9uVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsImNvbW1vbkljb25TdHlsZXMiLCJvd25lclN0YXRlIiwic2l6ZSIsImZvbnRTaXplIiwiQnV0dG9uUm9vdCIsInN0eWxlZCIsIkJ1dHRvbkJhc2UiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJuYW1lIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsInJvb3QiLCJ2YXJpYW50IiwiY2FwaXRhbGl6ZSIsImNvbG9yIiwiY29sb3JJbmhlcml0IiwiZGlzYWJsZUVsZXZhdGlvbiIsImZ1bGxXaWR0aCIsInRoZW1lIiwiX3RoZW1lJHBhbGV0dGUkZ2V0Q29uIiwiX3RoZW1lJHBhbGV0dGUiLCJpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yIiwicGFsZXR0ZSIsIm1vZGUiLCJncmV5IiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yIiwiQTEwMCIsInR5cG9ncmFwaHkiLCJidXR0b24iLCJtaW5XaWR0aCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJ2YXJzIiwic2hhcGUiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0IiwidGV4dERlY29yYXRpb24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0ZXh0IiwicHJpbWFyeUNoYW5uZWwiLCJhY3Rpb24iLCJob3Zlck9wYWNpdHkiLCJwcmltYXJ5IiwibWFpbkNoYW5uZWwiLCJtYWluIiwiYm9yZGVyIiwiQnV0dG9uIiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmciLCJib3hTaGFkb3ciLCJzaGFkb3dzIiwiZGFyayIsImZvY3VzVmlzaWJsZSIsImRpc2FibGVkIiwiZGlzYWJsZWRCYWNrZ3JvdW5kIiwiZ2V0Q29udHJhc3RUZXh0IiwiY2FsbCIsImluaGVyaXRDb250YWluZWRCZyIsImNvbnRyYXN0VGV4dCIsImJvcmRlckNvbG9yIiwicHhUb1JlbSIsIndpZHRoIiwiQnV0dG9uU3RhcnRJY29uIiwic3RhcnRJY29uIiwiZGlzcGxheSIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIkJ1dHRvbkVuZEljb24iLCJlbmRJY29uIiwiaW5Qcm9wcyIsInJlZiIsImNvbnRleHRQcm9wcyIsIkJ1dHRvbkdyb3VwQ29udGV4dCIsInJlc29sdmVkUHJvcHMiLCJyZXNvbHZlUHJvcHMiLCJ1c2VUaGVtZVByb3BzIiwiY2hpbGRyZW4iLCJjb21wb25lbnQiLCJjbGFzc05hbWUiLCJkaXNhYmxlRm9jdXNSaXBwbGUiLCJlbmRJY29uUHJvcCIsImZvY3VzVmlzaWJsZUNsYXNzTmFtZSIsInN0YXJ0SWNvblByb3AiLCJ0eXBlIiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJsYWJlbCIsImNvbXBvc2VkQ2xhc3NlcyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJmb2N1c1JpcHBsZSIsIkRpdmlkZXJSb290IiwiYWJzb2x1dGUiLCJsaWdodCIsIm9yaWVudGF0aW9uIiwidmVydGljYWwiLCJmbGV4SXRlbSIsIndpdGhDaGlsZHJlbiIsIndpdGhDaGlsZHJlblZlcnRpY2FsIiwidGV4dEFsaWduIiwidGV4dEFsaWduUmlnaHQiLCJ0ZXh0QWxpZ25MZWZ0IiwibWFyZ2luIiwiZmxleFNocmluayIsImJvcmRlcldpZHRoIiwiYm9yZGVyU3R5bGUiLCJkaXZpZGVyIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJwb3NpdGlvbiIsImJvdHRvbSIsImxlZnQiLCJkaXZpZGVyQ2hhbm5lbCIsInNwYWNpbmciLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJoZWlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYWxpZ25TZWxmIiwid2hpdGVTcGFjZSIsImNvbnRlbnQiLCJib3JkZXJUb3AiLCJmbGV4RGlyZWN0aW9uIiwiYm9yZGVyTGVmdCIsIkRpdmlkZXJXcmFwcGVyIiwid3JhcHBlciIsIndyYXBwZXJWZXJ0aWNhbCIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicGFkZGluZ1RvcCIsInBhZGRpbmdCb3R0b20iLCJyb2xlIiwidW5kZWZpbmVkIiwiYXMiLCJzZXRUcmFuc2xhdGVWYWx1ZSIsImRpcmVjdGlvbiIsIm5vZGUiLCJjb250YWluZXJQcm9wIiwiY29udGFpbmVyUHJvcFByb3AiLCJ0cmFuc2Zvcm0iLCJyZXNvbHZlZENvbnRhaW5lciIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjb250YWluZXJSZWN0IiwiY29udGFpbmVyV2luZG93Iiwib3duZXJXaW5kb3ciLCJmYWtlVHJhbnNmb3JtIiwiY29tcHV0ZWRTdHlsZSIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJ0cmFuc2Zvcm1WYWx1ZXMiLCJzcGxpdCIsInBhcnNlSW50IiwicmlnaHQiLCJpbm5lcldpZHRoIiwidG9wIiwiaW5uZXJIZWlnaHQiLCJnZXRUcmFuc2xhdGVWYWx1ZSIsInN0eWxlIiwid2Via2l0VHJhbnNmb3JtIiwidXNlVGhlbWUiLCJkZWZhdWx0RWFzaW5nIiwiZW50ZXIiLCJlYXNpbmciLCJlYXNlT3V0IiwiZXhpdCIsInNoYXJwIiwiZGVmYXVsdFRpbWVvdXQiLCJlbnRlcmluZ1NjcmVlbiIsImxlYXZpbmdTY3JlZW4iLCJhZGRFbmRMaXN0ZW5lciIsImFwcGVhciIsImNvbnRhaW5lciIsImVhc2luZ1Byb3AiLCJpbiIsImluUHJvcCIsIm9uRW50ZXIiLCJvbkVudGVyZWQiLCJvbkVudGVyaW5nIiwib25FeGl0Iiwib25FeGl0ZWQiLCJvbkV4aXRpbmciLCJ0aW1lb3V0IiwiVHJhbnNpdGlvbkNvbXBvbmVudCIsIlRyYW5zaXRpb24iLCJjaGlsZHJlblJlZiIsImhhbmRsZVJlZiIsInVzZUZvcmtSZWYiLCJub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrIiwiY2FsbGJhY2siLCJpc0FwcGVhcmluZyIsImN1cnJlbnQiLCJoYW5kbGVFbnRlciIsImhhbmRsZUVudGVyaW5nIiwidHJhbnNpdGlvblByb3BzIiwid2Via2l0VHJhbnNpdGlvbiIsImhhbmRsZUVudGVyZWQiLCJoYW5kbGVFeGl0aW5nIiwiaGFuZGxlRXhpdCIsImhhbmRsZUV4aXRlZCIsInVwZGF0ZVBvc2l0aW9uIiwiaGFuZGxlUmVzaXplIiwiZGVib3VuY2UiLCJhZGRFdmVudExpc3RlbmVyIiwiY2xlYXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwibm9kZVJlZiIsIm5leHQiLCJzdGF0ZSIsImNoaWxkUHJvcHMiLCJ2aXNpYmlsaXR5IiwiZ2V0RHJhd2VyVXRpbGl0eUNsYXNzIiwiX2V4Y2x1ZGVkMiIsImRvY2tlZCIsIm1vZGFsIiwiRHJhd2VyUm9vdCIsIk1vZGFsIiwiekluZGV4IiwiZHJhd2VyIiwiRHJhd2VyRG9ja2VkUm9vdCIsInNraXBWYXJpYW50c1Jlc29sdmVyIiwiZmxleCIsIkRyYXdlclBhcGVyIiwiUGFwZXIiLCJwYXBlciIsImFuY2hvciIsIm92ZXJmbG93WSIsIldlYmtpdE92ZXJmbG93U2Nyb2xsaW5nIiwib3V0bGluZSIsIm1heEhlaWdodCIsImJvcmRlclJpZ2h0IiwiYm9yZGVyQm90dG9tIiwib3Bwb3NpdGVEaXJlY3Rpb24iLCJkZWZhdWx0VHJhbnNpdGlvbkR1cmF0aW9uIiwiYW5jaG9yUHJvcCIsIkJhY2tkcm9wUHJvcHMiLCJlbGV2YXRpb24iLCJoaWRlQmFja2Ryb3AiLCJNb2RhbFByb3BzIiwiQmFja2Ryb3BQcm9wc1Byb3AiLCJvbkNsb3NlIiwib3BlbiIsIlBhcGVyUHJvcHMiLCJTbGlkZVByb3BzIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwibW91bnRlZCIsImFuY2hvckludmFyaWFudCIsImluZGV4T2YiLCJpc0hvcml6b250YWwiLCJnZXRBbmNob3IiLCJzcXVhcmUiLCJzbGlkaW5nRHJhd2VyIiwiZ2V0TGlzdEl0ZW1CdXR0b25VdGlsaXR5Q2xhc3MiLCJMaXN0SXRlbUJ1dHRvblJvb3QiLCJkZW5zZSIsImFsaWduSXRlbXMiLCJhbGlnbkl0ZW1zRmxleFN0YXJ0IiwiZGlzYWJsZUd1dHRlcnMiLCJndXR0ZXJzIiwiZmxleEdyb3ciLCJqdXN0aWZ5Q29udGVudCIsImJveFNpemluZyIsInNob3J0ZXN0IiwiaG92ZXIiLCJzZWxlY3RlZCIsInNlbGVjdGVkT3BhY2l0eSIsImZvY3VzT3BhY2l0eSIsImZvY3VzIiwib3BhY2l0eSIsImRpc2FibGVkT3BhY2l0eSIsImJhY2tncm91bmRDbGlwIiwiYXV0b0ZvY3VzIiwiY29udGV4dCIsIkxpc3RDb250ZXh0IiwiY2hpbGRDb250ZXh0IiwibGlzdEl0ZW1SZWYiLCJ1c2VFbmhhbmNlZEVmZmVjdCIsIlByb3ZpZGVyIiwidmFsdWUiLCJocmVmIiwidG8iLCJnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzIiwiVHlwb2dyYXBoeVJvb3QiLCJhbGlnbiIsIm5vV3JhcCIsImd1dHRlckJvdHRvbSIsInBhcmFncmFwaCIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93IiwiZGVmYXVsdFZhcmlhbnRNYXBwaW5nIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Iiwic3VidGl0bGUxIiwic3VidGl0bGUyIiwiYm9keTEiLCJib2R5MiIsImluaGVyaXQiLCJjb2xvclRyYW5zZm9ybWF0aW9ucyIsInRleHRQcmltYXJ5Iiwic2Vjb25kYXJ5IiwidGV4dFNlY29uZGFyeSIsImVycm9yIiwidGhlbWVQcm9wcyIsInRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnMiLCJleHRlbmRTeFByb3AiLCJ2YXJpYW50TWFwcGluZyIsIkNvbXBvbmVudCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1696.83822dbb.js b/react_frontend/static/react_frontend/js/1696.83822dbb.js new file mode 100644 index 000000000..484085954 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1696.83822dbb.js @@ -0,0 +1,3 @@ +/*! For license information please see 1696.83822dbb.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1696],{1696:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>p,theme_colors:()=>s});var n=r(6540),i=r(5556),o=r.n(i),a=r(4848);function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,i,o,a,l=[],c=!0,s=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(t){s=!0,i=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw i}}return l}}(t,e)||function(t,e){if(t){if("string"==typeof t)return c(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{"use strict";var n=r(6925);function i(){}function o(){}o.resetWarningCache=i,t.exports=function(){function t(t,e,r,i,o,a){if(a!==n){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function e(){return t}t.isRequired=t;var r={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:o,resetWarningCache:i};return r.PropTypes=r,r}},5556:(t,e,r)=>{t.exports=r(2694)()},6925:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(t,e,r)=>{"use strict";var n=r(6540),i=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function s(t,e,r){var n,o={},s=null,f=null;for(n in void 0!==r&&(s=""+r),void 0!==e.key&&(s=""+e.key),void 0!==e.ref&&(f=e.ref),e)a.call(e,n)&&!c.hasOwnProperty(n)&&(o[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps)void 0===o[n]&&(o[n]=e[n]);return{$$typeof:i,type:t,key:s,ref:f,props:o,_owner:l.current}}e.Fragment=o,e.jsx=s,e.jsxs=s},4848:(t,e,r)=>{"use strict";t.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SCxRQUFHLElBQVNELEVBQUVOLE1BQU1VLEVBQUUsR0FBR0osRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNVSxFQUFFTCxFQUFFTCxLQUFjSyxFQUFFYixFQUFFbUIsS0FBS04sRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFUSxhQUFhLElBQUlMLEtBQUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTekIsRUFBRTBCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUV0RCxNQUFNb0QsRUFBRU8sT0FBT3BCLEVBQUVxQixRQUFRLENBQUM5RCxFQUFRK0QsU0FBUzFCLEVBQUVyQyxFQUFRZ0UsSUFBSWYsRUFBRWpELEVBQVFpRSxLQUFLaEIsK0JDUHhXbEQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL01vbmFjb0VkaXRvckxvYWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG4vLyBtb25hY28gZWRpdG9yIGxvYWRlclxyXG5leHBvcnQgY29uc3QgdGhlbWVfY29sb3JzID0ge1xyXG4gIHZzOiB7XHJcbiAgICBiZzogXCIjZmZmXCIsXHJcbiAgICB0ZXh0OiBcIiMzMzNcIixcclxuICAgIGxpbmU6IFwiI2NjY1wiLFxyXG4gIH0sXHJcbiAgdnNfZGFyazoge1xyXG4gICAgYmc6IFwiIzFFMUUxRVwiLCAvL3JnYigzMCwzMCwzMClcclxuICAgIHRleHQ6IFwiI2ZlZmVmZVwiLFxyXG4gICAgbGluZTogXCIjMTExXCIsXHJcbiAgfSxcclxuICBoY19ibGFjazoge1xyXG4gICAgYmc6IFwiIzAwMFwiLFxyXG4gICAgdGV4dDogXCIjZmZmXCIsXHJcbiAgICBsaW5lOiBcIiMxRTFFMUVcIixcclxuICB9LFxyXG59O1xyXG5cclxuY29uc3QgbGluZVRoZW1lID0gW1xyXG4gIHtcclxuICAgIHdpZHRoOiBgMTUlYCxcclxuICAgIGhlaWdodDogYDE2cHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgMHB4YCxcclxuICB9LFxyXG4gIHtcclxuICAgIHdpZHRoOiBgMjAlYCxcclxuICAgIGhlaWdodDogYDE2cHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgMHB4YCxcclxuICB9LFxyXG5cclxuICB7XHJcbiAgICB3aWR0aDogYDAlYCxcclxuICAgIGhlaWdodDogYDAlYCxcclxuICAgIG1hcmdpbkJvdHRvbTogYDE2cHhgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGAwcHhgLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2lkdGg6IGAxMiVgLFxyXG4gICAgaGVpZ2h0OiBgMTJweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGBgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGAwcHhgLFxyXG4gIH0sXHJcblxyXG4gIHtcclxuICAgIHdpZHRoOiBgMjQlYCxcclxuICAgIGhlaWdodDogYDE0cHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgNDBweGAsXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2lkdGg6IGAzMCVgLFxyXG4gICAgaGVpZ2h0OiBgMTRweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGAxMnB4YCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgNDBweGAsXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2lkdGg6IGAxMyVgLFxyXG4gICAgaGVpZ2h0OiBgMTRweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGBgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGA0MHB4YCxcclxuICB9LFxyXG4gIHtcclxuICAgIHdpZHRoOiBgMCVgLFxyXG4gICAgaGVpZ2h0OiBgMHB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYGAsXHJcbiAgfSxcclxuICB7XHJcbiAgICB3aWR0aDogYDUwJWAsXHJcbiAgICBoZWlnaHQ6IGAxMnB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYDQwcHhgLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2lkdGg6IGAwJWAsXHJcbiAgICBoZWlnaHQ6IGAwcHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgYCxcclxuICB9LFxyXG4gIHtcclxuICAgIHdpZHRoOiBgMCVgLFxyXG4gICAgaGVpZ2h0OiBgMHB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYGAsXHJcbiAgfSxcclxuICB7XHJcbiAgICB3aWR0aDogYDIwJWAsXHJcbiAgICBoZWlnaHQ6IGAxMHB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYGAsXHJcbiAgfSxcclxuXTtcclxuXHJcbmNvbnN0IE1vbmFjb0VkaXRvckxvYWRlciA9ICh7IHRoZW1lIH0pID0+IHtcclxuICBjb25zdCBbYmFja2dyb3VuZCwgc2V0QmFja2dyb3VuZF0gPSB1c2VTdGF0ZShudWxsKTtcclxuICBjb25zdCBbbGluZUJhY2tncm91bmQsIHNldExpbmVCYWNrZ3JvdW5kXSA9IHVzZVN0YXRlKG51bGwpO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgdCA9IHRoZW1lX2NvbG9yc1t0aGVtZS5zcGxpdChcIi1cIikuam9pbihcIl9cIildO1xyXG4gICAgc2V0QmFja2dyb3VuZChgJHt0LmJnfWApO1xyXG4gICAgc2V0TGluZUJhY2tncm91bmQoYCR7dC5saW5lfWApO1xyXG4gIH0sIFt0aGVtZV0pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT17YHctZnVsbCBoLWZ1bGwgcHgtNCBweS0yIHNlbGVjdC1ub25lYH1cclxuICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBgJHtiYWNrZ3JvdW5kfWAgfX1cclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17YGZsZXggZmxleC1jb2wgaXRlbXMtc3RhcnQgeHAtNCBhbmltYXRlLXB1bHNlIHctZnVsbCBoLWZ1bGwgYH1cclxuICAgICAgPlxyXG4gICAgICAgIHtsaW5lVGhlbWUubWFwKChsaW5lLCBpKSA9PiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktc3RhcnQgZ2FwLTQgIHctZnVsbCBoLVsyMHB4XVwiXHJcbiAgICAgICAgICAgIGtleT17aX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2B0ZXh0LWJhc2VgfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBgJHtsaW5lQmFja2dyb3VuZH1gIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7aSArIDF9XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHctMi8zIGgtMyByb3VuZGVkLWZ1bGwgYH1cclxuICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBgJHtsaW5lQmFja2dyb3VuZH1gLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IGAke2xpbmUud2lkdGh9YCxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogYDEwcHhgLFxyXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiBgJHtsaW5lLm1hcmdpbkJvdHRvbX1gLFxyXG4gICAgICAgICAgICAgICAgbWFyZ2luTGVmdDogYCR7bGluZS5saW5lTWFyaW5nTGVmdH1gLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkpfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb25hY29FZGl0b3JMb2FkZXI7XHJcblxyXG5Nb25hY29FZGl0b3JMb2FkZXIucHJvdG90eXBlID0ge1xyXG4gIHRoZW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXHJcbn07XHJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInRoZW1lX2NvbG9ycyIsInZzIiwiYmciLCJ0ZXh0IiwibGluZSIsInZzX2RhcmsiLCJoY19ibGFjayIsImxpbmVUaGVtZSIsIndpZHRoIiwiaGVpZ2h0IiwibWFyZ2luQm90dG9tIiwibGluZU1hcmluZ0xlZnQiLCJNb25hY29FZGl0b3JMb2FkZXIiLCJfcmVmIiwidGhlbWUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VTdGF0ZSIsImJhY2tncm91bmQiLCJzZXRCYWNrZ3JvdW5kIiwiX3VzZVN0YXRlNCIsImxpbmVCYWNrZ3JvdW5kIiwic2V0TGluZUJhY2tncm91bmQiLCJ1c2VFZmZlY3QiLCJ0Iiwic3BsaXQiLCJqb2luIiwiY29uY2F0IiwiX2pzeCIsImNsYXNzTmFtZSIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiY2hpbGRyZW4iLCJtYXAiLCJpIiwiX2pzeHMiLCJjb2xvciIsIm1hcmdpbkxlZnQiLCJwcm90b3R5cGUiLCJQcm9wVHlwZXMiLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wcyIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1696.83822dbb.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1696.83822dbb.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1696.83822dbb.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1750.7b6aec76.js b/react_frontend/static/react_frontend/js/1750.7b6aec76.js new file mode 100644 index 000000000..8ca39a486 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1750.7b6aec76.js @@ -0,0 +1,3 @@ +/*! For license information please see 1750.7b6aec76.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1750],{1750:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTc1MC4xYzBjN2QyMC5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjRCLFNBQUNBLEdBQzNCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL29ic3RhY2xlX2F2b2lkYW5jZS9yZWFjdC1jb21wb25lbnRzL09ic3RhY2xlQXZvaWRhbmNlUlIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL09ic3RhY2xlQXZvaWRhbmNlUlIuY3NzXCI7XHJcblxyXG5jb25zdCBPYnN0YWNsZUF2b2lkYW5jZVJSID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE9ic3RhY2xlQXZvaWRhbmNlUlI7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiX2pzeCIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1750.7b6aec76.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1750.7b6aec76.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1750.7b6aec76.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1792.7cf38f76.js b/react_frontend/static/react_frontend/js/1792.7cf38f76.js new file mode 100644 index 000000000..a50ce500e --- /dev/null +++ b/react_frontend/static/react_frontend/js/1792.7cf38f76.js @@ -0,0 +1,3 @@ +/*! For license information please see 1792.7cf38f76.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1792],{684:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>f});var n=r(6540),o=r(5556),s=r.n(o);const i=r.p+"593a5090ab1a572e0c2f.png",a=r.p+"b5c6f9dd7b4e71f2532b.svg";var c=r(4848);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,s,i,a=[],c=!0,l=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=s.call(r)).done)&&(a.push(n.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";var n=r(6925);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,s,i){if(i!==n){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:o};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,r){var n,s={},l=null,u=null;for(n in void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,n)&&!c.hasOwnProperty(n)&&(s[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===s[n]&&(s[n]=t[n]);return{$$typeof:o,type:e,key:l,ref:u,props:s,_owner:a.current}}t.Fragment=s,t.jsx=l,t.jsxs=l},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0IsRUFBZWxCLFVBQVlrQixFQUVwQkEsQ0FDVCxrQkMvQ0ViLEVBQU9DLFFBQVUsRUFBUSxLQUFSLDBCQ05uQkQsRUFBT0MsUUFGb0IsNEVDQWQsSUFBSWdDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFNUksTUFBTTBJLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9tb250ZWNhcmxvX2xhc2VyX2xvYy9yZWFjdC1jb21wb25lbnRzL1NwZWNpZmljTW9udGVjYXJsb0xhc2VyTG9jLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCBob3VzZU1hcCBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy9tYXBncmFubnlhbm5pZS5wbmdcIjtcclxuaW1wb3J0IFZhY3V1bSBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy92YWN1dW0uc3ZnXCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCI7XHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY01vbnRlY2FybG9MYXNlckxvYyhwcm9wcykge1xyXG4gIGNvbnN0IFt2YWN1dW1Qb3NlLCBzZXRWYWN1dW1Qb3NlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXHJcbiAgY29uc3QgW3VzZXJQb3NlLCBzZXRVc2VyUG9zZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxyXG4gIGNvbnN0IFt1c2VyUGFydGljbGVzLCBzZXRQYXJ0aWNsZXNdID0gUmVhY3QudXNlU3RhdGUoW10pXHJcblxyXG4gIHZhciBsYXN0UmVhbFBvc2UgPSB1bmRlZmluZWQ7XHJcbiAgdmFyIGxhc3RVc2VyUG9zZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgIHZhciBpbWcgPSBlbnRyaWVzWzBdLnRhcmdldDsgXHJcbiAgICAvL29yIGhvd2V2ZXIgeW91IGdldCBhIGhhbmRsZSB0byB0aGUgSU1HXHJcbiAgICB2YXIgd2lkdGggPSAoMTAxMyAvIDMwMCkgLyAoMTAxMyAvaW1nLmNsaWVudFdpZHRoKTtcclxuICAgIHZhciBoZWlnaHQgPSAoMTAxMiAvIDE1MCkgLyAoMTAxMiAvaW1nLmNsaWVudEhlaWdodCk7XHJcblxyXG4gICAgaWYgKGxhc3RSZWFsUG9zZSkge1xyXG4gICAgICBzZXRWYWN1dW1Qb3NlKFtsYXN0UmVhbFBvc2VbMV0qaGVpZ2h0LGxhc3RSZWFsUG9zZVswXSp3aWR0aCwgLWxhc3RSZWFsUG9zZVsyXV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChsYXN0VXNlclBvc2UpIHtcclxuICAgICAgc2V0VXNlclBvc2UoW2xhc3RVc2VyUG9zZVsxXSpoZWlnaHQsbGFzdFVzZXJQb3NlWzBdKndpZHRoLCAtbGFzdFVzZXJQb3NlWzJdXSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFydGljbGVzKFtdKVxyXG4gIH0pO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuXHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZURhdGEgPSBtZXNzYWdlLmRhdGEudXBkYXRlO1xyXG4gICAgICAvLyBMw7NnaWNhIHBhcmEgbWFuZWphciBlbCBtYXBhXHJcbiAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJyk7IFxyXG4gICAgICB2YXIgd2lkdGggPSAoMTAxMiAvIDMwMCkgLyAoMTAxMiAvaW1nLmNsaWVudFdpZHRoKTtcclxuICAgICAgdmFyIGhlaWdodCA9ICgxMDEyIC8gMTUwKSAvICgxMDEyIC9pbWcuY2xpZW50SGVpZ2h0KTtcclxuXHJcbiAgICAgIGlmICh1cGRhdGVEYXRhLm1hcCkge1xyXG4gICAgICAgIGNvbnN0IHBvc2UgPSB1cGRhdGVEYXRhLm1hcC5zdWJzdHJpbmcoMSwgdXBkYXRlRGF0YS5tYXAubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHBvc2Uuc3BsaXQoXCIsXCIpLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbSkpO1xyXG4gICAgICAgIGNvbnN0IHBvc2VVc2VyID0gdXBkYXRlRGF0YS51c2VyLnN1YnN0cmluZygxLCB1cGRhdGVEYXRhLnVzZXIubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgY29uc3QgdXNlckNvbnRlbnQgPSBwb3NlVXNlci5zcGxpdChcIixcIikubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtKSk7XHJcblxyXG4gICAgICAgIGxhc3RSZWFsUG9zZSA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIHNldFZhY3V1bVBvc2UoW2NvbnRlbnRbMV0qaGVpZ2h0LGNvbnRlbnRbMF0qd2lkdGgsIC1jb250ZW50WzJdXSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXNlckNvbnRlbnQpXHJcblxyXG4gICAgICAgIGlmICghKHVzZXJDb250ZW50WzBdID09PSAwICYmIHVzZXJDb250ZW50WzFdID09PSAwICYmIHVzZXJDb250ZW50WzJdID09PSAwKSkge1xyXG4gICAgICAgICAgbGFzdFVzZXJQb3NlID0gdXNlckNvbnRlbnQ7XHJcbiAgICAgICAgICBzZXRVc2VyUG9zZShbdXNlckNvbnRlbnRbMV0qaGVpZ2h0LHVzZXJDb250ZW50WzBdKndpZHRoLCAtdXNlckNvbnRlbnRbMl1dKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh1cGRhdGVEYXRhLnBhcnRpY2xlcyl7XHJcbiAgICAgICAgY29uc3QgcGFydGljbGVzID0gSlNPTi5wYXJzZSh1cGRhdGVEYXRhLnBhcnRpY2xlcyk7XHJcbiAgICAgICAgaWYocGFydGljbGVzICE9IFwiXCIpIHtcclxuICAgICAgICAgIHZhciBuZXdfcGFydGljbGVzID0gW107XHJcbiAgICAgICAgICBwYXJ0aWNsZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgbmV3X3BhcnRpY2xlcy5wdXNoKFtlbGVtZW50WzFdKmhlaWdodCwgZWxlbWVudFswXSp3aWR0aCwgLWVsZW1lbnRbMl0sIGVsZW1lbnRbM11dKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBzZXRQYXJ0aWNsZXMobmV3X3BhcnRpY2xlcylcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNlbmQgdGhlIEFDSyBvZiB0aGUgbXNnXHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImFja1wiKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGVyY2lzZS1pbWcnKSk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiKSB7XHJcbiAgICAgICAgc2V0VmFjdXVtUG9zZShudWxsKVxyXG4gICAgICAgIHNldFVzZXJQb3NlKG51bGwpXHJcbiAgICAgICAgc2V0UGFydGljbGVzKFtdKVxyXG4gICAgICAgIGxhc3RSZWFsUG9zZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBsYXN0VXNlclBvc2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pXHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsIHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiwgcG9zaXRpb246XCJyZWxhdGl2ZVwifX0+XHJcbiAgICAgIDxpbWcgc3JjPXtob3VzZU1hcH0gYWx0PVwiXCIgY2xhc3NOYW1lPVwiZXhlcmNpc2UtY2FudmFzXCIgaWQ9XCJleGVyY2lzZS1pbWdcIi8+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3ZlcmxheVwiIGlkPVwibWFwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIHt2YWN1dW1Qb3NlICYmXHJcbiAgICAgICAgICA8ZGl2IGlkPVwidmFjdXVtLXBvc1wiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIHZhY3V1bVBvc2VbMl0rXCJyYWRcIiwgdG9wOiB2YWN1dW1Qb3NlWzBdIC0xNSAsIGxlZnQ6IHZhY3V1bVBvc2VbMV0gLTE1fX0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPXtWYWN1dW19IGlkPVwidmFjdXVtLXBvc1wiLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcnJvdyBhcnJvdy1yZWFsXCIvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHt1c2VyUG9zZSAmJlxyXG4gICAgICAgICAgPGRpdiBpZD1cInVzZXItcG9zXCIgc3R5bGU9e3tyb3RhdGU6IFwieiBcIisgdXNlclBvc2VbMl0rXCJyYWRcIiwgdG9wOiB1c2VyUG9zZVswXSAtMTUgLCBsZWZ0OiB1c2VyUG9zZVsxXSAtMTV9fT5cclxuICAgICAgICAgICAgPGltZyBzcmM9e1ZhY3V1bX0gaWQ9XCJ1c2VyLXBvc1wiLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcnJvdyBhcnJvdy11c2VyXCIvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHt1c2VyUGFydGljbGVzLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhcnRpY2xlXCIgc3R5bGU9e3tyb3RhdGU6IFwieiBcIisgZWxlbWVudFsyXStcInJhZFwiLCB0b3A6IGVsZW1lbnRbMF0gLTUsIGxlZnQ6IGVsZW1lbnRbMV0gLTUsIG9wYWNpdHk6IGVsZW1lbnRbM119fT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFydGljbGUtYXJyb3dcIi8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfSlcclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuXHJcblNwZWNpZmljTW9udGVjYXJsb0xhc2VyTG9jLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNNb250ZWNhcmxvTGFzZXJMb2NcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsiU3BlY2lmaWNNb250ZWNhcmxvTGFzZXJMb2MiLCJwcm9wcyIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0IiwidmFjdXVtUG9zZSIsInNldFZhY3V1bVBvc2UiLCJfUmVhY3QkdXNlU3RhdGU0IiwidXNlclBvc2UiLCJzZXRVc2VyUG9zZSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJ1c2VyUGFydGljbGVzIiwic2V0UGFydGljbGVzIiwibGFzdFJlYWxQb3NlIiwidW5kZWZpbmVkIiwibGFzdFVzZXJQb3NlIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJpbWciLCJ0YXJnZXQiLCJ3aWR0aCIsImNsaWVudFdpZHRoIiwiaGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsInVwZGF0ZURhdGEiLCJkYXRhIiwidXBkYXRlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm1hcCIsImNvbnRlbnQiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJzcGxpdCIsIml0ZW0iLCJwYXJzZUZsb2F0IiwidXNlckNvbnRlbnQiLCJ1c2VyIiwicGFydGljbGVzIiwiSlNPTiIsInBhcnNlIiwibmV3X3BhcnRpY2xlcyIsImZvckVhY2giLCJlbGVtZW50IiwicHVzaCIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsIm9ic2VydmUiLCJ1bnN1YnNjcmliZSIsInN0YXRlIiwiU1RBVEVfQ0hBTkdFRCIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJjaGlsZHJlbiIsIl9qc3giLCJzcmMiLCJob3VzZU1hcCIsImFsdCIsImNsYXNzTmFtZSIsImlkIiwicm90YXRlIiwidG9wIiwibGVmdCIsIlZhY3V1bSIsIm9wYWNpdHkiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1792.7cf38f76.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1792.7cf38f76.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1792.7cf38f76.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/180.8e129a9c.js b/react_frontend/static/react_frontend/js/180.8e129a9c.js new file mode 100644 index 000000000..6781dc96b --- /dev/null +++ b/react_frontend/static/react_frontend/js/180.8e129a9c.js @@ -0,0 +1,3 @@ +/*! For license information please see 180.8e129a9c.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[180],{180:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTgwLmJiYmU2NDFjLmpzIiwibWFwcGluZ3MiOiI7b0tBYUEsUUFSa0IsU0FBQ0EsR0FDakIsT0FDRUMsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsU0FBUSxDQUFBQyxTQUNSSCxFQUFNRyxVQUdYLGtCQ0ZhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFNUIsTUFBTTBCLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDQyxFQUFRakMsU0FBU00sRUFBRTJCLEVBQVFDLElBQUlmLEVBQUVjLEVBQVFFLEtBQUtoQixrQkNQeFdpQixFQUFPSCxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvcGlja19wbGFjZS9yZWFjdC1jb21wb25lbnRzL1BpY2tQbGFjZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvUGlja1BsYWNlLmNzc1wiO1xyXG5cclxuY29uc3QgUGlja1BsYWNlID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBpY2tQbGFjZTsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/180.8e129a9c.js.LICENSE.txt b/react_frontend/static/react_frontend/js/180.8e129a9c.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/180.8e129a9c.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1837.9bf454e2.js b/react_frontend/static/react_frontend/js/1837.9bf454e2.js new file mode 100644 index 000000000..c146949c1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1837.9bf454e2.js @@ -0,0 +1,3 @@ +/*! For license information please see 1837.9bf454e2.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1837],{1837:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTgzNy5kOGJmMDZkYS5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjZCLFNBQUNBLEdBQzVCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvd2VyX3Rvd2VyX2luc3BlY3Rpb25fbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL1Bvd2VyVG93ZXJJbnNwZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9Qb3dlclRvd2VySW5zcGVjdGlvbi5jc3NcIjtcclxuXHJcbmNvbnN0IFBvd2VyVG93ZXJJbnNwZWN0aW9uID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBvd2VyVG93ZXJJbnNwZWN0aW9uOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1837.9bf454e2.js.LICENSE.txt b/react_frontend/static/react_frontend/js/1837.9bf454e2.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1837.9bf454e2.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/1838.f2f98d55.js b/react_frontend/static/react_frontend/js/1838.f2f98d55.js new file mode 100644 index 000000000..4a4448167 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1838.f2f98d55.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1838],{1838:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1938.609d7715.js b/react_frontend/static/react_frontend/js/1938.609d7715.js new file mode 100644 index 000000000..2eac2ad09 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1938.609d7715.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1938],{1938:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/1941.df2dd1d9.js b/react_frontend/static/react_frontend/js/1941.df2dd1d9.js new file mode 100644 index 000000000..3b1a80e96 --- /dev/null +++ b/react_frontend/static/react_frontend/js/1941.df2dd1d9.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[1941],{1941:(e,a,t)=>{function n(e){var a,t=document.getElementById("gui_canvas_right"),n=JSON.parse(e.image_right),g=(a=n.image_right,decodeURIComponent(escape(a))),r=n.shape_right;""!=g&&r instanceof Array&&(t.src="data:image/jpeg;base64,"+g,t.width=r[1],t.height=r[0])}function g(e){var a,t=document.getElementById("gui_canvas_left"),n=JSON.parse(e.image_left),g=(a=n.image_left,decodeURIComponent(escape(a))),r=n.shape_left;""!=g&&r instanceof Array&&(t.src="data:image/jpeg;base64,"+g,t.width=r[1],t.height=r[0])}t.r(a),t.d(a,{drawImage:()=>n,drawLeftImage:()=>g}),new Image,new Image}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMTk0MS41NjZmOWJlNi5qcyIsIm1hcHBpbmdzIjoiZ0hBUU8sU0FBU0EsRUFBVUMsR0FDeEIsSUFHcUJDLEVBSGpCQyxFQUFTQyxTQUFTQyxlQUFlLG9CQVFqQ0MsRUFBYUMsS0FBS0MsTUFBTVAsRUFBS1EsYUFDL0JDLEdBTm1CUixFQU1FSSxFQUFXRyxZQUx2QkUsbUJBQW1CQyxPQUFPVixLQU1uQ1csRUFBUVAsRUFBV1EsWUFFUCxJQUFWSixHQUFnQkcsYUFBaUJFLFFBQ25DWixFQUFPYSxJQUFNLDBCQUE0Qk4sRUFDekNQLEVBQU9jLE1BQVFKLEVBQU0sR0FDckJWLEVBQU9lLE9BQVNMLEVBQU0sR0FFMUIsQ0FFTyxTQUFTTSxFQUFjbEIsR0FDNUIsSUFHcUJDLEVBSGpCQyxFQUFTQyxTQUFTQyxlQUFlLG1CQVFqQ0MsRUFBYUMsS0FBS0MsTUFBTVAsRUFBS21CLFlBQy9CVixHQU5tQlIsRUFNRUksRUFBV2MsV0FMdkJULG1CQUFtQkMsT0FBT1YsS0FNbkNXLEVBQVFQLEVBQVdlLFdBRVAsSUFBVlgsR0FBZ0JHLGFBQWlCRSxRQUNuQ1osRUFBT2EsSUFBTSwwQkFBNEJOLEVBQ3pDUCxFQUFPYyxNQUFRSixFQUFNLEdBQ3JCVixFQUFPZSxPQUFTTCxFQUFNLEdBRTFCLEMsb0RBekNrQixJQUFJUyxNQUNMLElBQUlBLEsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9yZXNjdWVfcGVvcGxlX2NsYXNzaWMvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZXNSZXNjdWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7XHJcbn1cclxuXHJcbmxldCBpbWFnZV9yaWdodCA9IG5ldyBJbWFnZSgpO1xyXG5sZXQgaW1hZ2VfbGVmdCA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZShkYXRhKSB7XHJcbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX3JpZ2h0KSxcclxuICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfcmlnaHQpLFxyXG4gICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlX3JpZ2h0O1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMZWZ0SW1hZ2UoZGF0YSkge1xyXG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZV9sZWZ0O1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOlsiZHJhd0ltYWdlIiwiZGF0YSIsInMiLCJjYW52YXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsImltYWdlX3JpZ2h0Iiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJzaGFwZV9yaWdodCIsIkFycmF5Iiwic3JjIiwid2lkdGgiLCJoZWlnaHQiLCJkcmF3TGVmdEltYWdlIiwiaW1hZ2VfbGVmdCIsInNoYXBlX2xlZnQiLCJJbWFnZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2018.aa8145d8.js b/react_frontend/static/react_frontend/js/2018.aa8145d8.js new file mode 100644 index 000000000..79a465017 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2018.aa8145d8.js @@ -0,0 +1,3 @@ +/*! For license information please see 2018.aa8145d8.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2018],{6780:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjAxOC4xYzM1ZGU5OS5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnlCLFNBQUNBLEdBQ3hCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2dsb2JhbF9uYXZpZ2F0aW9uL3JlYWN0LWNvbXBvbmVudHMvZ2xvYmFsTmF2aWdhdGlvblJSLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HbG9iYWxOYXZpZ2F0aW9uUlIuY3NzXCI7XHJcblxyXG5jb25zdCBHbG9iYWxOYXZpZ2F0aW9uID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEdsb2JhbE5hdmlnYXRpb247IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiX2pzeCIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2018.aa8145d8.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2018.aa8145d8.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2018.aa8145d8.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2022.dd01bfaa.js b/react_frontend/static/react_frontend/js/2022.dd01bfaa.js new file mode 100644 index 000000000..17b70800e --- /dev/null +++ b/react_frontend/static/react_frontend/js/2022.dd01bfaa.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2022],{2022:(e,a,o)=>{o.d(a,{A:()=>I});var t=o(8587),l=o(8168),r=o(6540),n=o(53),c=o(5659),i=o(4279),s=o(5003),d=o(4848);const p=(0,s.A)((0,d.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");var v=o(6852),m=o(8466),b=o(6606),u=o(4409),g=o(7577),$=o(8413),C=o(1609);function h(e){return(0,C.A)("MuiChip",e)}const y=(0,$.A)("MuiChip",["root","sizeSmall","sizeMedium","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),f=["avatar","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant","tabIndex","skipFocusWhenDisabled"],A=(0,g.Ay)("div",{name:"MuiChip",slot:"Root",overridesResolver:(e,a)=>{const{ownerState:o}=e,{color:t,iconColor:l,clickable:r,onDelete:n,size:c,variant:i}=o;return[{[`& .${y.avatar}`]:a.avatar},{[`& .${y.avatar}`]:a[`avatar${(0,m.A)(c)}`]},{[`& .${y.avatar}`]:a[`avatarColor${(0,m.A)(t)}`]},{[`& .${y.icon}`]:a.icon},{[`& .${y.icon}`]:a[`icon${(0,m.A)(c)}`]},{[`& .${y.icon}`]:a[`iconColor${(0,m.A)(l)}`]},{[`& .${y.deleteIcon}`]:a.deleteIcon},{[`& .${y.deleteIcon}`]:a[`deleteIcon${(0,m.A)(c)}`]},{[`& .${y.deleteIcon}`]:a[`deleteIconColor${(0,m.A)(t)}`]},{[`& .${y.deleteIcon}`]:a[`deleteIcon${(0,m.A)(i)}Color${(0,m.A)(t)}`]},a.root,a[`size${(0,m.A)(c)}`],a[`color${(0,m.A)(t)}`],r&&a.clickable,r&&"default"!==t&&a[`clickableColor${(0,m.A)(t)})`],n&&a.deletable,n&&"default"!==t&&a[`deletableColor${(0,m.A)(t)}`],a[i],a[`${i}${(0,m.A)(t)}`]]}})((({theme:e,ownerState:a})=>{const o="light"===e.palette.mode?e.palette.grey[700]:e.palette.grey[300];return(0,l.A)({maxWidth:"100%",fontFamily:e.typography.fontFamily,fontSize:e.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(e.vars||e).palette.text.primary,backgroundColor:(e.vars||e).palette.action.selected,borderRadius:16,whiteSpace:"nowrap",transition:e.transitions.create(["background-color","box-shadow"]),cursor:"default",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",[`&.${y.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity,pointerEvents:"none"},[`& .${y.avatar}`]:{marginLeft:5,marginRight:-6,width:24,height:24,color:e.vars?e.vars.palette.Chip.defaultAvatarColor:o,fontSize:e.typography.pxToRem(12)},[`& .${y.avatarColorPrimary}`]:{color:(e.vars||e).palette.primary.contrastText,backgroundColor:(e.vars||e).palette.primary.dark},[`& .${y.avatarColorSecondary}`]:{color:(e.vars||e).palette.secondary.contrastText,backgroundColor:(e.vars||e).palette.secondary.dark},[`& .${y.avatarSmall}`]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:e.typography.pxToRem(10)},[`& .${y.icon}`]:(0,l.A)({marginLeft:5,marginRight:-6},"small"===a.size&&{fontSize:18,marginLeft:4,marginRight:-4},a.iconColor===a.color&&(0,l.A)({color:e.vars?e.vars.palette.Chip.defaultIconColor:o},"default"!==a.color&&{color:"inherit"})),[`& .${y.deleteIcon}`]:(0,l.A)({WebkitTapHighlightColor:"transparent",color:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.26)`:(0,i.X4)(e.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / 0.4)`:(0,i.X4)(e.palette.text.primary,.4)}},"small"===a.size&&{fontSize:16,marginRight:4,marginLeft:-4},"default"!==a.color&&{color:e.vars?`rgba(${e.vars.palette[a.color].contrastTextChannel} / 0.7)`:(0,i.X4)(e.palette[a.color].contrastText,.7),"&:hover, &:active":{color:(e.vars||e).palette[a.color].contrastText}})},"small"===a.size&&{height:24},"default"!==a.color&&{backgroundColor:(e.vars||e).palette[a.color].main,color:(e.vars||e).palette[a.color].contrastText},a.onDelete&&{[`&.${y.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,i.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},a.onDelete&&"default"!==a.color&&{[`&.${y.focusVisible}`]:{backgroundColor:(e.vars||e).palette[a.color].dark}})}),(({theme:e,ownerState:a})=>(0,l.A)({},a.clickable&&{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,i.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity)},[`&.${y.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.action.selectedChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,i.X4)(e.palette.action.selected,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)},"&:active":{boxShadow:(e.vars||e).shadows[1]}},a.clickable&&"default"!==a.color&&{[`&:hover, &.${y.focusVisible}`]:{backgroundColor:(e.vars||e).palette[a.color].dark}})),(({theme:e,ownerState:a})=>(0,l.A)({},"outlined"===a.variant&&{backgroundColor:"transparent",border:e.vars?`1px solid ${e.vars.palette.Chip.defaultBorder}`:`1px solid ${"light"===e.palette.mode?e.palette.grey[400]:e.palette.grey[700]}`,[`&.${y.clickable}:hover`]:{backgroundColor:(e.vars||e).palette.action.hover},[`&.${y.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`& .${y.avatar}`]:{marginLeft:4},[`& .${y.avatarSmall}`]:{marginLeft:2},[`& .${y.icon}`]:{marginLeft:4},[`& .${y.iconSmall}`]:{marginLeft:2},[`& .${y.deleteIcon}`]:{marginRight:5},[`& .${y.deleteIconSmall}`]:{marginRight:3}},"outlined"===a.variant&&"default"!==a.color&&{color:(e.vars||e).palette[a.color].main,border:`1px solid ${e.vars?`rgba(${e.vars.palette[a.color].mainChannel} / 0.7)`:(0,i.X4)(e.palette[a.color].main,.7)}`,[`&.${y.clickable}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette[a.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,i.X4)(e.palette[a.color].main,e.palette.action.hoverOpacity)},[`&.${y.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette[a.color].mainChannel} / ${e.vars.palette.action.focusOpacity})`:(0,i.X4)(e.palette[a.color].main,e.palette.action.focusOpacity)},[`& .${y.deleteIcon}`]:{color:e.vars?`rgba(${e.vars.palette[a.color].mainChannel} / 0.7)`:(0,i.X4)(e.palette[a.color].main,.7),"&:hover, &:active":{color:(e.vars||e).palette[a.color].main}}}))),k=(0,g.Ay)("span",{name:"MuiChip",slot:"Label",overridesResolver:(e,a)=>{const{ownerState:o}=e,{size:t}=o;return[a.label,a[`label${(0,m.A)(t)}`]]}})((({ownerState:e})=>(0,l.A)({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},"small"===e.size&&{paddingLeft:8,paddingRight:8})));function S(e){return"Backspace"===e.key||"Delete"===e.key}const I=r.forwardRef((function(e,a){const o=(0,u.A)({props:e,name:"MuiChip"}),{avatar:i,className:s,clickable:g,color:$="default",component:C,deleteIcon:y,disabled:I=!1,icon:x,label:w,onClick:z,onDelete:O,onKeyDown:R,onKeyUp:D,size:L="medium",variant:T="filled",tabIndex:V,skipFocusWhenDisabled:N=!1}=o,P=(0,t.A)(o,f),M=r.useRef(null),E=(0,v.A)(M,a),X=e=>{e.stopPropagation(),O&&O(e)},F=!(!1===g||!z)||g,K=F||O?b.A:C||"div",W=(0,l.A)({},o,{component:K,disabled:I,size:L,color:$,iconColor:r.isValidElement(x)&&x.props.color||$,onDelete:!!O,clickable:F,variant:T}),j=(e=>{const{classes:a,disabled:o,size:t,color:l,iconColor:r,onDelete:n,clickable:i,variant:s}=e,d={root:["root",s,o&&"disabled",`size${(0,m.A)(t)}`,`color${(0,m.A)(l)}`,i&&"clickable",i&&`clickableColor${(0,m.A)(l)}`,n&&"deletable",n&&`deletableColor${(0,m.A)(l)}`,`${s}${(0,m.A)(l)}`],label:["label",`label${(0,m.A)(t)}`],avatar:["avatar",`avatar${(0,m.A)(t)}`,`avatarColor${(0,m.A)(l)}`],icon:["icon",`icon${(0,m.A)(t)}`,`iconColor${(0,m.A)(r)}`],deleteIcon:["deleteIcon",`deleteIcon${(0,m.A)(t)}`,`deleteIconColor${(0,m.A)(l)}`,`deleteIcon${(0,m.A)(s)}Color${(0,m.A)(l)}`]};return(0,c.A)(d,h,a)})(W),U=K===b.A?(0,l.A)({component:C||"div",focusVisibleClassName:j.focusVisible},O&&{disableRipple:!0}):{};let B=null;O&&(B=y&&r.isValidElement(y)?r.cloneElement(y,{className:(0,n.A)(y.props.className,j.deleteIcon),onClick:X}):(0,d.jsx)(p,{className:(0,n.A)(j.deleteIcon),onClick:X}));let H=null;i&&r.isValidElement(i)&&(H=r.cloneElement(i,{className:(0,n.A)(j.avatar,i.props.className)}));let _=null;return x&&r.isValidElement(x)&&(_=r.cloneElement(x,{className:(0,n.A)(j.icon,x.props.className)})),(0,d.jsxs)(A,(0,l.A)({as:K,className:(0,n.A)(j.root,s),disabled:!(!F||!I)||void 0,onClick:z,onKeyDown:e=>{e.currentTarget===e.target&&S(e)&&e.preventDefault(),R&&R(e)},onKeyUp:e=>{e.currentTarget===e.target&&(O&&S(e)?O(e):"Escape"===e.key&&M.current&&M.current.blur()),D&&D(e)},ref:E,tabIndex:N&&I?-1:V,ownerState:W},U,P,{children:[H||_,(0,d.jsx)(k,{className:(0,n.A)(j.label),ownerState:W,children:w}),B]}))}))}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFLbUIsRUFBUS9CLE9BQ3hCakYsV0FBWUEsRUFDWitILFNBQVU5QyxJQUNSdkUsS0FFUixHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9pbnRlcm5hbC9zdmctaWNvbnMvQ2FuY2VsLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQ2hpcC9jaGlwQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NoaXAvQ2hpcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjcmVhdGVTdmdJY29uIGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZVN2Z0ljb24nO1xuXG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVTdmdJY29uKCAvKiNfX1BVUkVfXyovX2pzeChcInBhdGhcIiwge1xuICBkOiBcIk0xMiAyQzYuNDcgMiAyIDYuNDcgMiAxMnM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTBTMTcuNTMgMiAxMiAyem01IDEzLjU5TDE1LjU5IDE3IDEyIDEzLjQxIDguNDEgMTcgNyAxNS41OSAxMC41OSAxMiA3IDguNDEgOC40MSA3IDEyIDEwLjU5IDE1LjU5IDcgMTcgOC40MSAxMy40MSAxMiAxNyAxNS41OXpcIlxufSksICdDYW5jZWwnKTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2hpcFV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQ2hpcCcsIHNsb3QpO1xufVxuY29uc3QgY2hpcENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlDaGlwJywgWydyb290JywgJ3NpemVTbWFsbCcsICdzaXplTWVkaXVtJywgJ2NvbG9yRXJyb3InLCAnY29sb3JJbmZvJywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvclN1Y2Nlc3MnLCAnY29sb3JXYXJuaW5nJywgJ2Rpc2FibGVkJywgJ2NsaWNrYWJsZScsICdjbGlja2FibGVDb2xvclByaW1hcnknLCAnY2xpY2thYmxlQ29sb3JTZWNvbmRhcnknLCAnZGVsZXRhYmxlJywgJ2RlbGV0YWJsZUNvbG9yUHJpbWFyeScsICdkZWxldGFibGVDb2xvclNlY29uZGFyeScsICdvdXRsaW5lZCcsICdmaWxsZWQnLCAnb3V0bGluZWRQcmltYXJ5JywgJ291dGxpbmVkU2Vjb25kYXJ5JywgJ2ZpbGxlZFByaW1hcnknLCAnZmlsbGVkU2Vjb25kYXJ5JywgJ2F2YXRhcicsICdhdmF0YXJTbWFsbCcsICdhdmF0YXJNZWRpdW0nLCAnYXZhdGFyQ29sb3JQcmltYXJ5JywgJ2F2YXRhckNvbG9yU2Vjb25kYXJ5JywgJ2ljb24nLCAnaWNvblNtYWxsJywgJ2ljb25NZWRpdW0nLCAnaWNvbkNvbG9yUHJpbWFyeScsICdpY29uQ29sb3JTZWNvbmRhcnknLCAnbGFiZWwnLCAnbGFiZWxTbWFsbCcsICdsYWJlbE1lZGl1bScsICdkZWxldGVJY29uJywgJ2RlbGV0ZUljb25TbWFsbCcsICdkZWxldGVJY29uTWVkaXVtJywgJ2RlbGV0ZUljb25Db2xvclByaW1hcnknLCAnZGVsZXRlSWNvbkNvbG9yU2Vjb25kYXJ5JywgJ2RlbGV0ZUljb25PdXRsaW5lZENvbG9yUHJpbWFyeScsICdkZWxldGVJY29uT3V0bGluZWRDb2xvclNlY29uZGFyeScsICdkZWxldGVJY29uRmlsbGVkQ29sb3JQcmltYXJ5JywgJ2RlbGV0ZUljb25GaWxsZWRDb2xvclNlY29uZGFyeScsICdmb2N1c1Zpc2libGUnXSk7XG5leHBvcnQgZGVmYXVsdCBjaGlwQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhdmF0YXJcIiwgXCJjbGFzc05hbWVcIiwgXCJjbGlja2FibGVcIiwgXCJjb2xvclwiLCBcImNvbXBvbmVudFwiLCBcImRlbGV0ZUljb25cIiwgXCJkaXNhYmxlZFwiLCBcImljb25cIiwgXCJsYWJlbFwiLCBcIm9uQ2xpY2tcIiwgXCJvbkRlbGV0ZVwiLCBcIm9uS2V5RG93blwiLCBcIm9uS2V5VXBcIiwgXCJzaXplXCIsIFwidmFyaWFudFwiLCBcInRhYkluZGV4XCIsIFwic2tpcEZvY3VzV2hlbkRpc2FibGVkXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgQ2FuY2VsSWNvbiBmcm9tICcuLi9pbnRlcm5hbC9zdmctaWNvbnMvQ2FuY2VsJztcbmltcG9ydCB1c2VGb3JrUmVmIGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHVuc3VwcG9ydGVkUHJvcCBmcm9tICcuLi91dGlscy91bnN1cHBvcnRlZFByb3AnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgY2hpcENsYXNzZXMsIHsgZ2V0Q2hpcFV0aWxpdHlDbGFzcyB9IGZyb20gJy4vY2hpcENsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGRpc2FibGVkLFxuICAgIHNpemUsXG4gICAgY29sb3IsXG4gICAgaWNvbkNvbG9yLFxuICAgIG9uRGVsZXRlLFxuICAgIGNsaWNrYWJsZSxcbiAgICB2YXJpYW50XG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBgc2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gLCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGNsaWNrYWJsZSAmJiAnY2xpY2thYmxlJywgY2xpY2thYmxlICYmIGBjbGlja2FibGVDb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgb25EZWxldGUgJiYgJ2RlbGV0YWJsZScsIG9uRGVsZXRlICYmIGBkZWxldGFibGVDb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYCR7dmFyaWFudH0ke2NhcGl0YWxpemUoY29sb3IpfWBdLFxuICAgIGxhYmVsOiBbJ2xhYmVsJywgYGxhYmVsJHtjYXBpdGFsaXplKHNpemUpfWBdLFxuICAgIGF2YXRhcjogWydhdmF0YXInLCBgYXZhdGFyJHtjYXBpdGFsaXplKHNpemUpfWAsIGBhdmF0YXJDb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YF0sXG4gICAgaWNvbjogWydpY29uJywgYGljb24ke2NhcGl0YWxpemUoc2l6ZSl9YCwgYGljb25Db2xvciR7Y2FwaXRhbGl6ZShpY29uQ29sb3IpfWBdLFxuICAgIGRlbGV0ZUljb246IFsnZGVsZXRlSWNvbicsIGBkZWxldGVJY29uJHtjYXBpdGFsaXplKHNpemUpfWAsIGBkZWxldGVJY29uQ29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBkZWxldGVJY29uJHtjYXBpdGFsaXplKHZhcmlhbnQpfUNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldENoaXBVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IENoaXBSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlDaGlwJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHtcbiAgICAgIGNvbG9yLFxuICAgICAgaWNvbkNvbG9yLFxuICAgICAgY2xpY2thYmxlLFxuICAgICAgb25EZWxldGUsXG4gICAgICBzaXplLFxuICAgICAgdmFyaWFudFxuICAgIH0gPSBvd25lclN0YXRlO1xuICAgIHJldHVybiBbe1xuICAgICAgW2AmIC4ke2NoaXBDbGFzc2VzLmF2YXRhcn1gXTogc3R5bGVzLmF2YXRhclxuICAgIH0sIHtcbiAgICAgIFtgJiAuJHtjaGlwQ2xhc3Nlcy5hdmF0YXJ9YF06IHN0eWxlc1tgYXZhdGFyJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gICAgfSwge1xuICAgICAgW2AmIC4ke2NoaXBDbGFzc2VzLmF2YXRhcn1gXTogc3R5bGVzW2BhdmF0YXJDb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YF1cbiAgICB9LCB7XG4gICAgICBbYCYgLiR7Y2hpcENsYXNzZXMuaWNvbn1gXTogc3R5bGVzLmljb25cbiAgICB9LCB7XG4gICAgICBbYCYgLiR7Y2hpcENsYXNzZXMuaWNvbn1gXTogc3R5bGVzW2BpY29uJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gICAgfSwge1xuICAgICAgW2AmIC4ke2NoaXBDbGFzc2VzLmljb259YF06IHN0eWxlc1tgaWNvbkNvbG9yJHtjYXBpdGFsaXplKGljb25Db2xvcil9YF1cbiAgICB9LCB7XG4gICAgICBbYCYgLiR7Y2hpcENsYXNzZXMuZGVsZXRlSWNvbn1gXTogc3R5bGVzLmRlbGV0ZUljb25cbiAgICB9LCB7XG4gICAgICBbYCYgLiR7Y2hpcENsYXNzZXMuZGVsZXRlSWNvbn1gXTogc3R5bGVzW2BkZWxldGVJY29uJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gICAgfSwge1xuICAgICAgW2AmIC4ke2NoaXBDbGFzc2VzLmRlbGV0ZUljb259YF06IHN0eWxlc1tgZGVsZXRlSWNvbkNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gXVxuICAgIH0sIHtcbiAgICAgIFtgJiAuJHtjaGlwQ2xhc3Nlcy5kZWxldGVJY29ufWBdOiBzdHlsZXNbYGRlbGV0ZUljb24ke2NhcGl0YWxpemUodmFyaWFudCl9Q29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWBdXG4gICAgfSwgc3R5bGVzLnJvb3QsIHN0eWxlc1tgc2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXSwgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YF0sIGNsaWNrYWJsZSAmJiBzdHlsZXMuY2xpY2thYmxlLCBjbGlja2FibGUgJiYgY29sb3IgIT09ICdkZWZhdWx0JyAmJiBzdHlsZXNbYGNsaWNrYWJsZUNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX0pYF0sIG9uRGVsZXRlICYmIHN0eWxlcy5kZWxldGFibGUsIG9uRGVsZXRlICYmIGNvbG9yICE9PSAnZGVmYXVsdCcgJiYgc3R5bGVzW2BkZWxldGFibGVDb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YF0sIHN0eWxlc1t2YXJpYW50XSwgc3R5bGVzW2Ake3ZhcmlhbnR9JHtjYXBpdGFsaXplKGNvbG9yKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIGNvbnN0IHRleHRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleVs3MDBdIDogdGhlbWUucGFsZXR0ZS5ncmV5WzMwMF07XG4gIHJldHVybiBfZXh0ZW5kcyh7XG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICBmb250RmFtaWx5OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMyksXG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgaGVpZ2h0OiAzMixcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5wcmltYXJ5LFxuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkLFxuICAgIGJvcmRlclJhZGl1czogMzIgLyAyLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ2JhY2tncm91bmQtY29sb3InLCAnYm94LXNoYWRvdyddKSxcbiAgICAvLyBsYWJlbCB3aWxsIGluaGVyaXQgdGhpcyBmcm9tIHJvb3QsIHRoZW4gYGNsaWNrYWJsZWAgY2xhc3Mgb3ZlcnJpZGVzIHRoaXMgZm9yIGJvdGhcbiAgICBjdXJzb3I6ICdkZWZhdWx0JyxcbiAgICAvLyBXZSBkaXNhYmxlIHRoZSBmb2N1cyByaW5nIGZvciBtb3VzZSwgdG91Y2ggYW5kIGtleWJvYXJkIHVzZXJzLlxuICAgIG91dGxpbmU6IDAsXG4gICAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgICBib3JkZXI6IDAsXG4gICAgLy8gUmVtb3ZlIGBidXR0b25gIGJvcmRlclxuICAgIHBhZGRpbmc6IDAsXG4gICAgLy8gUmVtb3ZlIGBidXR0b25gIHBhZGRpbmdcbiAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBbYCYuJHtjaGlwQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgICAgb3BhY2l0eTogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkT3BhY2l0eSxcbiAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJ1xuICAgIH0sXG4gICAgW2AmIC4ke2NoaXBDbGFzc2VzLmF2YXRhcn1gXToge1xuICAgICAgbWFyZ2luTGVmdDogNSxcbiAgICAgIG1hcmdpblJpZ2h0OiAtNixcbiAgICAgIHdpZHRoOiAyNCxcbiAgICAgIGhlaWdodDogMjQsXG4gICAgICBjb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5DaGlwLmRlZmF1bHRBdmF0YXJDb2xvciA6IHRleHRDb2xvcixcbiAgICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTIpXG4gICAgfSxcbiAgICBbYCYgLiR7Y2hpcENsYXNzZXMuYXZhdGFyQ29sb3JQcmltYXJ5fWBdOiB7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUucHJpbWFyeS5jb250cmFzdFRleHQsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnByaW1hcnkuZGFya1xuICAgIH0sXG4gICAgW2AmIC4ke2NoaXBDbGFzc2VzLmF2YXRhckNvbG9yU2Vjb25kYXJ5fWBdOiB7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuc2Vjb25kYXJ5LmNvbnRyYXN0VGV4dCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuc2Vjb25kYXJ5LmRhcmtcbiAgICB9LFxuICAgIFtgJiAuJHtjaGlwQ2xhc3Nlcy5hdmF0YXJTbWFsbH1gXToge1xuICAgICAgbWFyZ2luTGVmdDogNCxcbiAgICAgIG1hcmdpblJpZ2h0OiAtNCxcbiAgICAgIHdpZHRoOiAxOCxcbiAgICAgIGhlaWdodDogMTgsXG4gICAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEwKVxuICAgIH0sXG4gICAgW2AmIC4ke2NoaXBDbGFzc2VzLmljb259YF06IF9leHRlbmRzKHtcbiAgICAgIG1hcmdpbkxlZnQ6IDUsXG4gICAgICBtYXJnaW5SaWdodDogLTZcbiAgICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICAgICAgZm9udFNpemU6IDE4LFxuICAgICAgbWFyZ2luTGVmdDogNCxcbiAgICAgIG1hcmdpblJpZ2h0OiAtNFxuICAgIH0sIG93bmVyU3RhdGUuaWNvbkNvbG9yID09PSBvd25lclN0YXRlLmNvbG9yICYmIF9leHRlbmRzKHtcbiAgICAgIGNvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkNoaXAuZGVmYXVsdEljb25Db2xvciA6IHRleHRDb2xvclxuICAgIH0sIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiB7XG4gICAgICBjb2xvcjogJ2luaGVyaXQnXG4gICAgfSkpLFxuICAgIFtgJiAuJHtjaGlwQ2xhc3Nlcy5kZWxldGVJY29ufWBdOiBfZXh0ZW5kcyh7XG4gICAgICBXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGNvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5Q2hhbm5lbH0gLyAwLjI2KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwgMC4yNiksXG4gICAgICBmb250U2l6ZTogMjIsXG4gICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIG1hcmdpbjogJzAgNXB4IDAgLTZweCcsXG4gICAgICAnJjpob3Zlcic6IHtcbiAgICAgICAgY29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnlDaGFubmVsfSAvIDAuNClgIDogYWxwaGEodGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksIDAuNClcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgbWFyZ2luUmlnaHQ6IDQsXG4gICAgICBtYXJnaW5MZWZ0OiAtNFxuICAgIH0sIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiB7XG4gICAgICBjb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmNvbnRyYXN0VGV4dENoYW5uZWx9IC8gMC43KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmNvbnRyYXN0VGV4dCwgMC43KSxcbiAgICAgICcmOmhvdmVyLCAmOmFjdGl2ZSc6IHtcbiAgICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmNvbnRyYXN0VGV4dFxuICAgICAgfVxuICAgIH0pXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICAgaGVpZ2h0OiAyNFxuICB9LCBvd25lclN0YXRlLmNvbG9yICE9PSAnZGVmYXVsdCcgJiYge1xuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uY29udHJhc3RUZXh0XG4gIH0sIG93bmVyU3RhdGUub25EZWxldGUgJiYge1xuICAgIFtgJi4ke2NoaXBDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkQ2hhbm5lbH0gLyBjYWxjKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9ICsgJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmZvY3VzT3BhY2l0eX0pKWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZCwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5ICsgdGhlbWUucGFsZXR0ZS5hY3Rpb24uZm9jdXNPcGFjaXR5KVxuICAgIH1cbiAgfSwgb3duZXJTdGF0ZS5vbkRlbGV0ZSAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnZGVmYXVsdCcgJiYge1xuICAgIFtgJi4ke2NoaXBDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5kYXJrXG4gICAgfVxuICB9KTtcbn0sICh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jbGlja2FibGUgJiYge1xuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgJyY6aG92ZXInOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkQ2hhbm5lbH0gLyBjYWxjKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9ICsgJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pKWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZCwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5ICsgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KVxuICB9LFxuICBbYCYuJHtjaGlwQ2xhc3Nlcy5mb2N1c1Zpc2libGV9YF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRDaGFubmVsfSAvIGNhbGMoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eX0gKyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uZm9jdXNPcGFjaXR5fSkpYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHkgKyB0aGVtZS5wYWxldHRlLmFjdGlvbi5mb2N1c09wYWNpdHkpXG4gIH0sXG4gICcmOmFjdGl2ZSc6IHtcbiAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzFdXG4gIH1cbn0sIG93bmVyU3RhdGUuY2xpY2thYmxlICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiB7XG4gIFtgJjpob3ZlciwgJi4ke2NoaXBDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uZGFya1xuICB9XG59KSwgKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gIGJvcmRlcjogdGhlbWUudmFycyA/IGAxcHggc29saWQgJHt0aGVtZS52YXJzLnBhbGV0dGUuQ2hpcC5kZWZhdWx0Qm9yZGVyfWAgOiBgMXB4IHNvbGlkICR7dGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gdGhlbWUucGFsZXR0ZS5ncmV5WzQwMF0gOiB0aGVtZS5wYWxldHRlLmdyZXlbNzAwXX1gLFxuICBbYCYuJHtjaGlwQ2xhc3Nlcy5jbGlja2FibGV9OmhvdmVyYF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5ob3ZlclxuICB9LFxuICBbYCYuJHtjaGlwQ2xhc3Nlcy5mb2N1c1Zpc2libGV9YF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5mb2N1c1xuICB9LFxuICBbYCYgLiR7Y2hpcENsYXNzZXMuYXZhdGFyfWBdOiB7XG4gICAgbWFyZ2luTGVmdDogNFxuICB9LFxuICBbYCYgLiR7Y2hpcENsYXNzZXMuYXZhdGFyU21hbGx9YF06IHtcbiAgICBtYXJnaW5MZWZ0OiAyXG4gIH0sXG4gIFtgJiAuJHtjaGlwQ2xhc3Nlcy5pY29ufWBdOiB7XG4gICAgbWFyZ2luTGVmdDogNFxuICB9LFxuICBbYCYgLiR7Y2hpcENsYXNzZXMuaWNvblNtYWxsfWBdOiB7XG4gICAgbWFyZ2luTGVmdDogMlxuICB9LFxuICBbYCYgLiR7Y2hpcENsYXNzZXMuZGVsZXRlSWNvbn1gXToge1xuICAgIG1hcmdpblJpZ2h0OiA1XG4gIH0sXG4gIFtgJiAuJHtjaGlwQ2xhc3Nlcy5kZWxldGVJY29uU21hbGx9YF06IHtcbiAgICBtYXJnaW5SaWdodDogM1xuICB9XG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sXG4gIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAwLjcpYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgMC43KX1gLFxuICBbYCYuJHtjaGlwQ2xhc3Nlcy5jbGlja2FibGV9OmhvdmVyYF06IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpXG4gIH0sXG4gIFtgJi4ke2NoaXBDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5mb2N1c09wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmZvY3VzT3BhY2l0eSlcbiAgfSxcbiAgW2AmIC4ke2NoaXBDbGFzc2VzLmRlbGV0ZUljb259YF06IHtcbiAgICBjb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvIDAuNylgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCAwLjcpLFxuICAgICcmOmhvdmVyLCAmOmFjdGl2ZSc6IHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gICAgfVxuICB9XG59KSk7XG5jb25zdCBDaGlwTGFiZWwgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlDaGlwJyxcbiAgc2xvdDogJ0xhYmVsJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICBjb25zdCB7XG4gICAgICBzaXplXG4gICAgfSA9IG93bmVyU3RhdGU7XG4gICAgcmV0dXJuIFtzdHlsZXMubGFiZWwsIHN0eWxlc1tgbGFiZWwke2NhcGl0YWxpemUoc2l6ZSl9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICBwYWRkaW5nTGVmdDogMTIsXG4gIHBhZGRpbmdSaWdodDogMTIsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnXG59LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICBwYWRkaW5nTGVmdDogOCxcbiAgcGFkZGluZ1JpZ2h0OiA4XG59KSk7XG5mdW5jdGlvbiBpc0RlbGV0ZUtleWJvYXJkRXZlbnQoa2V5Ym9hcmRFdmVudCkge1xuICByZXR1cm4ga2V5Ym9hcmRFdmVudC5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGtleWJvYXJkRXZlbnQua2V5ID09PSAnRGVsZXRlJztcbn1cblxuLyoqXG4gKiBDaGlwcyByZXByZXNlbnQgY29tcGxleCBlbnRpdGllcyBpbiBzbWFsbCBibG9ja3MsIHN1Y2ggYXMgYSBjb250YWN0LlxuICovXG5jb25zdCBDaGlwID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQ2hpcChpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQ2hpcCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGF2YXRhcjogYXZhdGFyUHJvcCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsaWNrYWJsZTogY2xpY2thYmxlUHJvcCxcbiAgICAgIGNvbG9yID0gJ2RlZmF1bHQnLFxuICAgICAgY29tcG9uZW50OiBDb21wb25lbnRQcm9wLFxuICAgICAgZGVsZXRlSWNvbjogZGVsZXRlSWNvblByb3AsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgaWNvbjogaWNvblByb3AsXG4gICAgICBsYWJlbCxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvbkRlbGV0ZSxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5VXAsXG4gICAgICBzaXplID0gJ21lZGl1bScsXG4gICAgICB2YXJpYW50ID0gJ2ZpbGxlZCcsXG4gICAgICB0YWJJbmRleCxcbiAgICAgIHNraXBGb2N1c1doZW5EaXNhYmxlZCA9IGZhbHNlIC8vIFRPRE8gdjY6IFJlbmFtZSB0byBgZm9jdXNhYmxlV2hlbkRpc2FibGVkYC5cbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgY2hpcFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihjaGlwUmVmLCByZWYpO1xuICBjb25zdCBoYW5kbGVEZWxldGVJY29uQ2xpY2sgPSBldmVudCA9PiB7XG4gICAgLy8gU3RvcCB0aGUgZXZlbnQgZnJvbSBidWJibGluZyB1cCB0byB0aGUgYENoaXBgXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKG9uRGVsZXRlKSB7XG4gICAgICBvbkRlbGV0ZShldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgIC8vIElnbm9yZSBldmVudHMgZnJvbSBjaGlsZHJlbiBvZiBgQ2hpcGAuXG4gICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQgPT09IGV2ZW50LnRhcmdldCAmJiBpc0RlbGV0ZUtleWJvYXJkRXZlbnQoZXZlbnQpKSB7XG4gICAgICAvLyBXaWxsIGJlIGhhbmRsZWQgaW4ga2V5VXAsIG90aGVyd2lzZSBzb21lIGJyb3dzZXJzXG4gICAgICAvLyBtaWdodCBpbml0IG5hdmlnYXRpb25cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChvbktleURvd24pIHtcbiAgICAgIG9uS2V5RG93bihldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IGV2ZW50ID0+IHtcbiAgICAvLyBJZ25vcmUgZXZlbnRzIGZyb20gY2hpbGRyZW4gb2YgYENoaXBgLlxuICAgIGlmIChldmVudC5jdXJyZW50VGFyZ2V0ID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgIGlmIChvbkRlbGV0ZSAmJiBpc0RlbGV0ZUtleWJvYXJkRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgIG9uRGVsZXRlKGV2ZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiBjaGlwUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY2hpcFJlZi5jdXJyZW50LmJsdXIoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9uS2V5VXApIHtcbiAgICAgIG9uS2V5VXAoZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY2xpY2thYmxlID0gY2xpY2thYmxlUHJvcCAhPT0gZmFsc2UgJiYgb25DbGljayA/IHRydWUgOiBjbGlja2FibGVQcm9wO1xuICBjb25zdCBjb21wb25lbnQgPSBjbGlja2FibGUgfHwgb25EZWxldGUgPyBCdXR0b25CYXNlIDogQ29tcG9uZW50UHJvcCB8fCAnZGl2JztcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBzaXplLFxuICAgIGNvbG9yLFxuICAgIGljb25Db2xvcjogLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGljb25Qcm9wKSA/IGljb25Qcm9wLnByb3BzLmNvbG9yIHx8IGNvbG9yIDogY29sb3IsXG4gICAgb25EZWxldGU6ICEhb25EZWxldGUsXG4gICAgY2xpY2thYmxlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgbW9yZVByb3BzID0gY29tcG9uZW50ID09PSBCdXR0b25CYXNlID8gX2V4dGVuZHMoe1xuICAgIGNvbXBvbmVudDogQ29tcG9uZW50UHJvcCB8fCAnZGl2JyxcbiAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsYXNzZXMuZm9jdXNWaXNpYmxlXG4gIH0sIG9uRGVsZXRlICYmIHtcbiAgICBkaXNhYmxlUmlwcGxlOiB0cnVlXG4gIH0pIDoge307XG4gIGxldCBkZWxldGVJY29uID0gbnVsbDtcbiAgaWYgKG9uRGVsZXRlKSB7XG4gICAgZGVsZXRlSWNvbiA9IGRlbGV0ZUljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChkZWxldGVJY29uUHJvcCkgPyAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGRlbGV0ZUljb25Qcm9wLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goZGVsZXRlSWNvblByb3AucHJvcHMuY2xhc3NOYW1lLCBjbGFzc2VzLmRlbGV0ZUljb24pLFxuICAgICAgb25DbGljazogaGFuZGxlRGVsZXRlSWNvbkNsaWNrXG4gICAgfSkgOiAvKiNfX1BVUkVfXyovX2pzeChDYW5jZWxJY29uLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5kZWxldGVJY29uKSxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZURlbGV0ZUljb25DbGlja1xuICAgIH0pO1xuICB9XG4gIGxldCBhdmF0YXIgPSBudWxsO1xuICBpZiAoYXZhdGFyUHJvcCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoYXZhdGFyUHJvcCkpIHtcbiAgICBhdmF0YXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGF2YXRhclByb3AsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLmF2YXRhciwgYXZhdGFyUHJvcC5wcm9wcy5jbGFzc05hbWUpXG4gICAgfSk7XG4gIH1cbiAgbGV0IGljb24gPSBudWxsO1xuICBpZiAoaWNvblByb3AgJiYgLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGljb25Qcm9wKSkge1xuICAgIGljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGljb25Qcm9wLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5pY29uLCBpY29uUHJvcC5wcm9wcy5jbGFzc05hbWUpXG4gICAgfSk7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoYXZhdGFyICYmIGljb24pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01VSTogVGhlIENoaXAgY29tcG9uZW50IGNhbiBub3QgaGFuZGxlIHRoZSBhdmF0YXIgJyArICdhbmQgdGhlIGljb24gcHJvcCBhdCB0aGUgc2FtZSB0aW1lLiBQaWNrIG9uZS4nKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhDaGlwUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBjb21wb25lbnQsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBkaXNhYmxlZDogY2xpY2thYmxlICYmIGRpc2FibGVkID8gdHJ1ZSA6IHVuZGVmaW5lZCxcbiAgICBvbkNsaWNrOiBvbkNsaWNrLFxuICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93bixcbiAgICBvbktleVVwOiBoYW5kbGVLZXlVcCxcbiAgICByZWY6IGhhbmRsZVJlZixcbiAgICB0YWJJbmRleDogc2tpcEZvY3VzV2hlbkRpc2FibGVkICYmIGRpc2FibGVkID8gLTEgOiB0YWJJbmRleCxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG1vcmVQcm9wcywgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogW2F2YXRhciB8fCBpY29uLCAvKiNfX1BVUkVfXyovX2pzeChDaGlwTGFiZWwsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLmxhYmVsKSxcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjaGlsZHJlbjogbGFiZWxcbiAgICB9KSwgZGVsZXRlSWNvbl1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDaGlwLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBBdmF0YXIgZWxlbWVudCB0byBkaXNwbGF5LlxuICAgKi9cbiAgYXZhdGFyOiBQcm9wVHlwZXMuZWxlbWVudCxcbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBpc24ndCBzdXBwb3J0ZWQuXG4gICAqIFVzZSB0aGUgYGNvbXBvbmVudGAgcHJvcCBpZiB5b3UgbmVlZCB0byBjaGFuZ2UgdGhlIGNoaWxkcmVuIHN0cnVjdHVyZS5cbiAgICovXG4gIGNoaWxkcmVuOiB1bnN1cHBvcnRlZFByb3AsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY2hpcCB3aWxsIGFwcGVhciBjbGlja2FibGUsIGFuZCB3aWxsIHJhaXNlIHdoZW4gcHJlc3NlZCxcbiAgICogZXZlbiBpZiB0aGUgb25DbGljayBwcm9wIGlzIG5vdCBkZWZpbmVkLlxuICAgKiBJZiBgZmFsc2VgLCB0aGUgY2hpcCB3aWxsIG5vdCBhcHBlYXIgY2xpY2thYmxlLCBldmVuIGlmIG9uQ2xpY2sgcHJvcCBpcyBkZWZpbmVkLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSxcbiAgICogYWxvbmcgd2l0aCB0aGUgY29tcG9uZW50IHByb3AgdG8gaW5kaWNhdGUgYW4gYW5jaG9yIENoaXAgaXMgY2xpY2thYmxlLlxuICAgKiBOb3RlOiB0aGlzIGNvbnRyb2xzIHRoZSBVSSBhbmQgZG9lcyBub3QgYWZmZWN0IHRoZSBvbkNsaWNrIGV2ZW50LlxuICAgKi9cbiAgY2xpY2thYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2RlZmF1bHQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgZGVsZXRlIGljb24gZWxlbWVudC4gU2hvd24gb25seSBpZiBgb25EZWxldGVgIGlzIHNldC5cbiAgICovXG4gIGRlbGV0ZUljb246IFByb3BUeXBlcy5lbGVtZW50LFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWNvbiBlbGVtZW50LlxuICAgKi9cbiAgaWNvbjogUHJvcFR5cGVzLmVsZW1lbnQsXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgbGFiZWw6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBkZWxldGUgaWNvbiBpcyBjbGlja2VkLlxuICAgKiBJZiBzZXQsIHRoZSBkZWxldGUgaWNvbiB3aWxsIGJlIHNob3duLlxuICAgKi9cbiAgb25EZWxldGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnbWVkaXVtJywgJ3NtYWxsJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGFsbG93cyB0aGUgZGlzYWJsZWQgY2hpcCB0byBlc2NhcGUgZm9jdXMuXG4gICAqIElmIGBmYWxzZWAsIGFsbG93cyB0aGUgZGlzYWJsZWQgY2hpcCB0byByZWNlaXZlIGZvY3VzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc2tpcEZvY3VzV2hlbkRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAnZmlsbGVkJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydmaWxsZWQnLCAnb3V0bGluZWQnXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENoaXA7Il0sIm5hbWVzIjpbImNyZWF0ZVN2Z0ljb24iLCJkIiwiZ2V0Q2hpcFV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJDaGlwUm9vdCIsInN0eWxlZCIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwib3duZXJTdGF0ZSIsImNvbG9yIiwiaWNvbkNvbG9yIiwiY2xpY2thYmxlIiwib25EZWxldGUiLCJzaXplIiwidmFyaWFudCIsImF2YXRhciIsImNhcGl0YWxpemUiLCJpY29uIiwiZGVsZXRlSWNvbiIsInJvb3QiLCJkZWxldGFibGUiLCJ0aGVtZSIsInRleHRDb2xvciIsInBhbGV0dGUiLCJtb2RlIiwiZ3JleSIsIm1heFdpZHRoIiwiZm9udEZhbWlseSIsInR5cG9ncmFwaHkiLCJmb250U2l6ZSIsInB4VG9SZW0iLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiaGVpZ2h0IiwidmFycyIsInRleHQiLCJwcmltYXJ5IiwiYmFja2dyb3VuZENvbG9yIiwiYWN0aW9uIiwic2VsZWN0ZWQiLCJib3JkZXJSYWRpdXMiLCJ3aGl0ZVNwYWNlIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiY3Vyc29yIiwib3V0bGluZSIsInRleHREZWNvcmF0aW9uIiwiYm9yZGVyIiwicGFkZGluZyIsInZlcnRpY2FsQWxpZ24iLCJib3hTaXppbmciLCJkaXNhYmxlZCIsIm9wYWNpdHkiLCJkaXNhYmxlZE9wYWNpdHkiLCJwb2ludGVyRXZlbnRzIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Iiwid2lkdGgiLCJDaGlwIiwiZGVmYXVsdEF2YXRhckNvbG9yIiwiYXZhdGFyQ29sb3JQcmltYXJ5IiwiY29udHJhc3RUZXh0IiwiZGFyayIsImF2YXRhckNvbG9yU2Vjb25kYXJ5Iiwic2Vjb25kYXJ5IiwiYXZhdGFyU21hbGwiLCJkZWZhdWx0SWNvbkNvbG9yIiwiV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IiLCJwcmltYXJ5Q2hhbm5lbCIsIm1hcmdpbiIsImNvbnRyYXN0VGV4dENoYW5uZWwiLCJtYWluIiwiZm9jdXNWaXNpYmxlIiwic2VsZWN0ZWRDaGFubmVsIiwic2VsZWN0ZWRPcGFjaXR5IiwiZm9jdXNPcGFjaXR5IiwidXNlclNlbGVjdCIsImhvdmVyT3BhY2l0eSIsImJveFNoYWRvdyIsInNoYWRvd3MiLCJkZWZhdWx0Qm9yZGVyIiwiaG92ZXIiLCJmb2N1cyIsImljb25TbWFsbCIsImRlbGV0ZUljb25TbWFsbCIsIm1haW5DaGFubmVsIiwiQ2hpcExhYmVsIiwibGFiZWwiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiaXNEZWxldGVLZXlib2FyZEV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsImtleSIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiYXZhdGFyUHJvcCIsImNsYXNzTmFtZSIsImNsaWNrYWJsZVByb3AiLCJjb21wb25lbnQiLCJDb21wb25lbnRQcm9wIiwiZGVsZXRlSWNvblByb3AiLCJpY29uUHJvcCIsIm9uQ2xpY2siLCJvbktleURvd24iLCJvbktleVVwIiwidGFiSW5kZXgiLCJza2lwRm9jdXNXaGVuRGlzYWJsZWQiLCJvdGhlciIsImNoaXBSZWYiLCJoYW5kbGVSZWYiLCJ1c2VGb3JrUmVmIiwiaGFuZGxlRGVsZXRlSWNvbkNsaWNrIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJCdXR0b25CYXNlIiwiY2xhc3NlcyIsInNsb3RzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsIm1vcmVQcm9wcyIsImZvY3VzVmlzaWJsZUNsYXNzTmFtZSIsImRpc2FibGVSaXBwbGUiLCJDYW5jZWwiLCJhcyIsInVuZGVmaW5lZCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJwcmV2ZW50RGVmYXVsdCIsImN1cnJlbnQiLCJibHVyIiwiY2hpbGRyZW4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2038.fe0e81f1.js b/react_frontend/static/react_frontend/js/2038.fe0e81f1.js new file mode 100644 index 000000000..0e10a21c6 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2038.fe0e81f1.js @@ -0,0 +1,3 @@ +/*! For license information please see 2038.fe0e81f1.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2038],{2038:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjAzOC5iODE0Mjc4OC5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnNCLFNBQUNBLEdBQ3JCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2d5bWtoYW5hX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9Ecm9uZUd5bWtoYW5hLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9Ecm9uZUd5bWtoYW5hLmNzc1wiO1xyXG5cclxuY29uc3QgRHJvbmVHeW1raGFuYSA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBEcm9uZUd5bWtoYW5hOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2038.fe0e81f1.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2038.fe0e81f1.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2038.fe0e81f1.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2040.8dbf4362.js b/react_frontend/static/react_frontend/js/2040.8dbf4362.js new file mode 100644 index 000000000..13e672427 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2040.8dbf4362.js @@ -0,0 +1,3 @@ +/*! For license information please see 2040.8dbf4362.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2040],{2040:(e,o,t)=>{t.r(o),t.d(o,{default:()=>a});var s=t(6540),n=t(2597),r=t(4848);const a=function(){return s.useEffect((function(){console.log("TestShowScreen subscribing to ['update'] events");var e=function(e){console.log(e),e.data.update.image_right&&(console.log("image_right"),drawImage(e.data.update)),e.data.update.image_left&&(console.log("image_left"),drawLeftImage(e.data.update)),window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),(0,r.jsxs)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative"},children:[(0,r.jsx)("img",{className:"image",id:"gui_canvas_left",style:{left:"0"},src:n}),(0,r.jsx)("img",{className:"image",id:"gui_canvas_right",style:{left:"50%"},src:n})]})}},1020:(e,o,t)=>{var s=t(6540),n=Symbol.for("react.element"),r=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,i=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,o,t){var s,r={},l=null,d=null;for(s in void 0!==t&&(l=""+t),void 0!==o.key&&(l=""+o.key),void 0!==o.ref&&(d=o.ref),o)a.call(o,s)&&!c.hasOwnProperty(s)&&(r[s]=o[s]);if(e&&e.defaultProps)for(s in o=e.defaultProps)void 0===r[s]&&(r[s]=o[s]);return{$$typeof:n,type:e,key:l,ref:d,props:r,_owner:i.current}}o.Fragment=r,o.jsx=l,o.jsxs=l},4848:(e,o,t)=>{e.exports=t(1020)},2597:(e,o,t)=>{e.exports=t.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjA0MC4wMmZjZjRkMS5qcyIsIm1hcHBpbmdzIjoiO2dMQStEQSxRQTFEQSxXQWlDRSxPQWhDQUEsRUFBQUEsV0FBZ0IsV0FDZEMsUUFBUUMsSUFBSSxtREFDWixJQUFNQyxFQUFXLFNBQUNDLEdBQ2hCSCxRQUFRQyxJQUFJRSxHQUVSQSxFQUFRQyxLQUFLQyxPQUFPQyxjQUN0Qk4sUUFBUUMsSUFBSSxlQUNaTSxVQUFVSixFQUFRQyxLQUFLQyxTQUVyQkYsRUFBUUMsS0FBS0MsT0FBT0csYUFDdEJSLFFBQVFDLElBQUksY0FDWlEsY0FBY04sRUFBUUMsS0FBS0MsU0FJN0JLLE9BQU9DLDJCQUEyQkMsYUFBYUMsS0FBSyxNQUFPLE1BQzdELEVBT0EsT0FMQUgsT0FBT0MsMkJBQTJCQyxhQUFhRSxVQUM3QyxDQUFDSixPQUFPQywyQkFBMkJDLGFBQWFHLE9BQU9DLFFBQ3ZEZCxHQUdLLFdBQ0xGLFFBQVFDLElBQUksOERBQ1pTLE9BQU9DLDJCQUEyQkMsYUFBYUssWUFDN0MsQ0FBQ1AsT0FBT0MsMkJBQTJCQyxhQUFhRyxPQUFPQyxRQUN2RGQsRUFFSixDQUNGLEdBQUcsS0FHRGdCLEVBQUFBLEVBQUFBLE1BQUEsT0FDRUMsTUFBTyxDQUNMQyxRQUFTLE9BQ1RDLE1BQU8sT0FDUEMsT0FBUSxPQUNSQyxTQUFVLFlBQ1ZDLFNBQUEsRUFFRkMsRUFBQUEsRUFBQUEsS0FBQSxPQUNFQyxVQUFVLFFBQ1ZDLEdBQUcsa0JBQ0hSLE1BQU8sQ0FBRVMsS0FBTSxLQUNmQyxJQUFLQyxLQUVQTCxFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLFVBQVUsUUFDVkMsR0FBRyxtQkFDSFIsTUFBTyxDQUFFUyxLQUFNLE9BQ2ZDLElBQUtDLE1BSWIsa0JDcERhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFSyxNQUFNUCxFQUFFUSxPQUFPckIsRUFBRXNCLFFBQVEsQ0FBQ0MsRUFBUUMsU0FBUzdCLEVBQUU0QixFQUFRRSxJQUFJakIsRUFBRWUsRUFBUUcsS0FBS2xCLGtCQ1B4V21CLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9waWNrX3BsYWNlL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNQaWNrUGxhY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgbm9JbWFnZSBmcm9tIFwiLi4vLi4vYXNzZXRzL2ltZy9ub0ltYWdlLnBuZ1wiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvR1VJQ2FudmFzLmNzc1wiO1xyXG5cclxuZnVuY3Rpb24gU3BlY2lmaWNQaWNrUGxhY2UoKSB7XHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gc3Vic2NyaWJpbmcgdG8gWyd1cGRhdGUnXSBldmVudHNcIik7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xyXG5cclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfcmlnaHQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImltYWdlX3JpZ2h0XCIpO1xyXG4gICAgICAgIGRyYXdJbWFnZShtZXNzYWdlLmRhdGEudXBkYXRlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZV9sZWZ0KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJpbWFnZV9sZWZ0XCIpO1xyXG4gICAgICAgIGRyYXdMZWZ0SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNlbmQgdGhlIEFDSyBvZiB0aGUgbXNnXHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImFja1wiKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdlxyXG4gICAgICBzdHlsZT17e1xyXG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXHJcbiAgICAgIH19XHJcbiAgICA+XHJcbiAgICAgIDxpbWdcclxuICAgICAgICBjbGFzc05hbWU9XCJpbWFnZVwiXHJcbiAgICAgICAgaWQ9XCJndWlfY2FudmFzX2xlZnRcIlxyXG4gICAgICAgIHN0eWxlPXt7IGxlZnQ6IFwiMFwiIH19XHJcbiAgICAgICAgc3JjPXtub0ltYWdlfVxyXG4gICAgICAvPlxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgY2xhc3NOYW1lPVwiaW1hZ2VcIlxyXG4gICAgICAgIGlkPVwiZ3VpX2NhbnZhc19yaWdodFwiXHJcbiAgICAgICAgc3R5bGU9e3sgbGVmdDogXCI1MCVcIiB9fVxyXG4gICAgICAgIHNyYz17bm9JbWFnZX1cclxuICAgICAgLz5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNwZWNpZmljUGlja1BsYWNlOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNvbnNvbGUiLCJsb2ciLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJkYXRhIiwidXBkYXRlIiwiaW1hZ2VfcmlnaHQiLCJkcmF3SW1hZ2UiLCJpbWFnZV9sZWZ0IiwiZHJhd0xlZnRJbWFnZSIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsInVuc3Vic2NyaWJlIiwiX2pzeHMiLCJzdHlsZSIsImRpc3BsYXkiLCJ3aWR0aCIsImhlaWdodCIsInBvc2l0aW9uIiwiY2hpbGRyZW4iLCJfanN4IiwiY2xhc3NOYW1lIiwiaWQiLCJsZWZ0Iiwic3JjIiwibm9JbWFnZSIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwicHJvcHMiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsIkZyYWdtZW50IiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2040.8dbf4362.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2040.8dbf4362.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2040.8dbf4362.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2078.f0720009.js b/react_frontend/static/react_frontend/js/2078.f0720009.js new file mode 100644 index 000000000..56fc26811 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2078.f0720009.js @@ -0,0 +1,3 @@ +/*! For license information please see 2078.f0720009.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2078,4075],{2078:(e,t,s)=>{s.r(t),s.d(t,{default:()=>a}),s(6540);var r=s(4075),l=s(4848),n=[{title:"Code Format",keys:["ctrl","s"]},{title:"Font Size",keys:["ctrl","wheel"]}],i=[{title:"Font Size",id:"isZoomingEnable"},{title:"Code Format",id:"isCodeFormatEnable"}];const a=function(e){var t=e.editorSettings,s=e.dispatch,a=t.isModalOpen,o=t.modalScreenState,c=t.isCodeFormatEnable,d=t.isZoomingEnable;return(0,l.jsxs)("div",{className:"flex flex-col w-[calc(400px-120px)] h-full select-none",children:[(0,l.jsx)("div",{className:"absolute top-1 right-1 flex justify-center items-center w-7 h-7 hover:bg-[#393939] rounded-full duration-100 cursor-pointer",onClick:function(){return s({type:"changeSettingsModalState",payload:{isModalOpen:!a}})},children:(0,l.jsx)(r.CloseIcon,{cssClass:""})}),(0,l.jsxs)("div",{className:"w-full h-full pt-10 items-center px-6",children:["shortcuts"===o&&(0,l.jsx)("div",{className:"w-full flex flex-col items-start gap-5",children:n.map((function(e,t){return(0,l.jsxs)("div",{className:"w-full flex items-start justify-between text-sm text-[#fcfcfc]",children:[(0,l.jsx)("div",{className:"",children:e.title}),(0,l.jsxs)("div",{className:"flex items-center gap-1",children:[(0,l.jsx)("span",{className:"bg-[#383838] px-2 xpy-[1px] rounded-md border-[1px] border-[#636363]",children:e.keys[0]}),"+",(0,l.jsx)("span",{className:"bg-[#383838] px-2 xpy-[1px] rounded-md border-[1px] border-[#636363]",children:e.keys[1]})]})]},t)}))}),"widgets"===o&&(0,l.jsx)("div",{className:"w-full flex flex-col justify-between gap-5",children:i.map((function(e,t){return(0,l.jsxs)("div",{className:"w-full flex items-start justify-between text-sm text-[#fcfcfc]",children:[(0,l.jsx)("div",{className:"",children:e.title}),(0,l.jsxs)("label",{className:"inline-flex items-center cursor-pointer",children:[(0,l.jsx)("input",{type:"checkbox",value:"isCodeFormatEnable"===e.id?"isCodeFormatEnable":"isZoomingEnable",className:"sr-only peer",checked:"isCodeFormatEnable"===e.id?c:d,onChange:function(e){return function(e){var t=e.target.value;s({type:t})}(e)}}),(0,l.jsx)("div",{className:"relative w-9 h-5 bg-[#383838] rounded-full peer peer-focus:ring-1 peer-focus:ring-[#636363] peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-gray-600 peer-checked:bg-[#FFA726]"})]})]},t)}))})]})]})}},4075:(e,t,s)=>{s.r(t),s.d(t,{AlignIcon:()=>i,CloseIcon:()=>o,InfoIcon:()=>a,KeyboardIcon:()=>c,WidgetsIcon:()=>d,ZoomInIcon:()=>n,ZoomOutIcon:()=>l});var r=s(4848),l=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M268.02-444q-15.02 0-25.52-10.29t-10.5-25.5q0-15.21 10.35-25.71T268-516h423.98q15.02 0 25.52 10.29t10.5 25.5q0 15.21-10.35 25.71T692-444H268.02Z"})})},n=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z"})})},i=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M144-144v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Z"})})},a=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M444-288h72v-240h-72v240Zm35.79-312q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm.49 504Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"})})},o=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#898989",children:(0,r.jsx)("path",{d:"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z"})})},c=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,r.jsx)("path",{d:"M168-240q-29.7 0-50.85-21.15Q96-282.3 96-312v-336q0-29.7 21.15-50.85Q138.3-720 168-720h624q29.7 0 50.85 21.15Q864-677.7 864-648v336q0 29.7-21.15 50.85Q821.7-240 792-240H168Zm0-72h624v-336H168v336Zm203.96-24h215.76q15.28 0 25.78-10.29 10.5-10.29 10.5-25.5t-10.34-25.71Q603.32-408 588.04-408H372.28q-15.28 0-25.78 10.29-10.5 10.29-10.5 25.5t10.34 25.71q10.34 10.5 25.62 10.5ZM168-312v-336 336Zm107.79-240q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm-408 96q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z"})})},d=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,r.jsx)("path",{d:"M610-458 457.39-611q-5.39-5.4-7.89-11.7-2.5-6.3-2.5-13.5t2.5-13.5Q452-656 457-661l153-153q5-5 12-8t14.2-3q7.2 0 13.5 3t11.3 8l152.61 153q5.39 5.4 7.89 11.7 2.5 6.3 2.5 13.5t-2.5 13.5Q819-616 814-611L661-458q-5 5-11.3 8-6.3 3-13.5 3t-14.2-3q-7-3-12-8ZM144-563.96v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm384 384v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H564.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm-384 0v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62ZM216-600h144v-144H216v144Zm420 66 101-102-101-102-102 102 102 102Zm-36 318h144v-144H600v144Zm-384 0h144v-144H216v144Zm144-384Zm174-36ZM360-360Zm240 0Z"})})}},1020:(e,t,s)=>{var r=s(6540),l=Symbol.for("react.element"),n=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,s){var r,n={},c=null,d=null;for(r in void 0!==s&&(c=""+s),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(d=t.ref),t)i.call(t,r)&&!o.hasOwnProperty(r)&&(n[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===n[r]&&(n[r]=t[r]);return{$$typeof:l,type:e,key:c,ref:d,props:n,_owner:a.current}}t.Fragment=n,t.jsx=c,t.jsxs=c},4848:(e,t,s)=>{e.exports=s(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFakMsRUFBRSxDQUFDLEVBQUVULEVBQUUsS0FBSzJDLEVBQUUsS0FBaUYsSUFBSUQsVUFBaEYsSUFBU0QsSUFBSXpDLEVBQUUsR0FBR3lDLFFBQUcsSUFBU0QsRUFBRU4sTUFBTWxDLEVBQUUsR0FBR3dDLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVEsRUFBRUgsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRWtCLEtBQUtKLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtqQyxFQUFFaUMsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFTSxhQUFhLElBQUlILEtBQUtGLEVBQUVELEVBQUVNLGtCQUFlLElBQVNwQyxFQUFFaUMsS0FBS2pDLEVBQUVpQyxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ0ksU0FBU3hCLEVBQUVqQyxLQUFLa0QsRUFBRUwsSUFBSWxDLEVBQUVtQyxJQUFJUSxFQUFFSSxNQUFNdEMsRUFBRXVDLE9BQU9sQixFQUFFbUIsUUFBUSxDQUFDQyxFQUFRQyxTQUFTMUIsRUFBRXlCLEVBQVFFLElBQUlkLEVBQUVZLEVBQVFHLEtBQUtmLGtCQ1B4V2dCLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9lZGl0b3ItaW5mby9Nb25hY29FZGl0b3JJbmZvRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9pY29ucy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBDbG9zZUljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcclxuXHJcbmNvbnN0IHNob3J0Y3V0c0RldGFpbHMgPSBbXHJcbiAgeyB0aXRsZTogXCJDb2RlIEZvcm1hdFwiLCBrZXlzOiBbXCJjdHJsXCIsIFwic1wiXSB9LFxyXG4gIHsgdGl0bGU6IFwiRm9udCBTaXplXCIsIGtleXM6IFtcImN0cmxcIiwgXCJ3aGVlbFwiXSB9LFxyXG5dO1xyXG5cclxuY29uc3Qgd2lkZ2V0c0RldGFpbHMgPSBbXHJcbiAgeyB0aXRsZTogXCJGb250IFNpemVcIiwgaWQ6IFwiaXNab29taW5nRW5hYmxlXCIgfSxcclxuICB7IHRpdGxlOiBcIkNvZGUgRm9ybWF0XCIsIGlkOiBcImlzQ29kZUZvcm1hdEVuYWJsZVwiIH0sXHJcbl07XHJcblxyXG5jb25zdCBNb25hY29FZGl0b3JJbmZvRGV0YWlscyA9ICh7IGVkaXRvclNldHRpbmdzLCBkaXNwYXRjaCB9KSA9PiB7XHJcbiAgY29uc3QgeyBpc01vZGFsT3BlbiwgbW9kYWxTY3JlZW5TdGF0ZSwgaXNDb2RlRm9ybWF0RW5hYmxlLCBpc1pvb21pbmdFbmFibGUgfSA9XHJcbiAgICBlZGl0b3JTZXR0aW5ncztcclxuXHJcbiAgY29uc3QgaGFuZ2xlQ2hhbmdlV2lkZ2V0cyA9IChlKSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgZGlzcGF0Y2goeyB0eXBlOiB2YWx1ZSB9KTtcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggIGZsZXgtY29sIHctW2NhbGMoNDAwcHgtMTIwcHgpXSBoLWZ1bGwgc2VsZWN0LW5vbmVcIj5cclxuICAgICAgey8qIGNsb3NlIGJ1dHRvbiAqL31cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xIHJpZ2h0LTEgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy03IGgtNyBob3ZlcjpiZy1bIzM5MzkzOV0gcm91bmRlZC1mdWxsIGR1cmF0aW9uLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjaGFuZ2VTZXR0aW5nc01vZGFsU3RhdGVcIixcclxuICAgICAgICAgICAgcGF5bG9hZDogeyBpc01vZGFsT3BlbjogIWlzTW9kYWxPcGVuIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxDbG9zZUljb24gY3NzQ2xhc3M9XCJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIEJPRFkgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy1mdWxsIGgtZnVsbCBwdC0xMCBpdGVtcy1jZW50ZXIgcHgtNmB9PlxyXG4gICAgICAgIHsvKiBzaG9ydGN1dHMgKi99XHJcbiAgICAgICAge21vZGFsU2NyZWVuU3RhdGUgPT09IFwic2hvcnRjdXRzXCIgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtNVwiPlxyXG4gICAgICAgICAgICB7LyogICovfVxyXG4gICAgICAgICAgICB7c2hvcnRjdXRzRGV0YWlscy5tYXAoKHNob3J0Y3V0LCBpKSA9PiAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIHRleHQtc20gdGV4dC1bI2ZjZmNmY11cIlxyXG4gICAgICAgICAgICAgICAga2V5PXtpfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+e3Nob3J0Y3V0LnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZy1bIzM4MzgzOF0gcHgtMiB4cHktWzFweF0gcm91bmRlZC1tZCBib3JkZXItWzFweF0gYm9yZGVyLVsjNjM2MzYzXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG9ydGN1dC5rZXlzWzBdfVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICtcclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmctWyMzODM4MzhdIHB4LTIgeHB5LVsxcHhdIHJvdW5kZWQtbWQgYm9yZGVyLVsxcHhdIGJvcmRlci1bIzYzNjM2M11cIj5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvcnRjdXQua2V5c1sxXX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7Lyogd2lkZ2V0cyAqL31cclxuICAgICAgICB7bW9kYWxTY3JlZW5TdGF0ZSA9PT0gXCJ3aWRnZXRzXCIgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gIGdhcC01XCI+XHJcbiAgICAgICAgICAgIHt3aWRnZXRzRGV0YWlscy5tYXAoKHdpZGdldCwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIHRleHQtWyNmY2ZjZmNdXCJcclxuICAgICAgICAgICAgICAgIGtleT17aX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIlwiPnt3aWRnZXQudGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmlkID09PSBcImlzQ29kZUZvcm1hdEVuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYGlzQ29kZUZvcm1hdEVuYWJsZWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgaXNab29taW5nRW5hYmxlYFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzci1vbmx5IHBlZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmlkID09PSBcImlzQ29kZUZvcm1hdEVuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXNDb2RlRm9ybWF0RW5hYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNab29taW5nRW5hYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZ2xlQ2hhbmdlV2lkZ2V0cyhlKX1cclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LTkgaC01IGJnLVsjMzgzODM4XSByb3VuZGVkLWZ1bGwgcGVlciBwZWVyLWZvY3VzOnJpbmctMSBwZWVyLWZvY3VzOnJpbmctWyM2MzYzNjNdIHBlZXItY2hlY2tlZDphZnRlcjp0cmFuc2xhdGUteC1mdWxsIHJ0bDpwZWVyLWNoZWNrZWQ6YWZ0ZXI6LXRyYW5zbGF0ZS14LWZ1bGwgcGVlci1jaGVja2VkOmFmdGVyOmJvcmRlci13aGl0ZSBhZnRlcjpjb250ZW50LVsnJ10gYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6dG9wLTAuNSBhZnRlcjpzdGFydC1bMnB4XSBhZnRlcjpiZy13aGl0ZSBhZnRlcjpib3JkZXItZ3JheS0zMDAgYWZ0ZXI6Ym9yZGVyIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpoLTQgYWZ0ZXI6dy00IGFmdGVyOnRyYW5zaXRpb24tYWxsIGRhcms6Ym9yZGVyLWdyYXktNjAwIHBlZXItY2hlY2tlZDpiZy1bI0ZGQTcyNl1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9ySW5mb0RldGFpbHM7XHJcbiIsImV4cG9ydCBjb25zdCBab29tT3V0SWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0yNjguMDItNDQ0cS0xNS4wMiAwLTI1LjUyLTEwLjI5dC0xMC41LTI1LjVxMC0xNS4yMSAxMC4zNS0yNS43MVQyNjgtNTE2aDQyMy45OHExNS4wMiAwIDI1LjUyIDEwLjI5dDEwLjUgMjUuNXEwIDE1LjIxLTEwLjM1IDI1LjcxVDY5Mi00NDRIMjY4LjAyWlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbmV4cG9ydCBjb25zdCBab29tSW5JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC00NDRIMjQwdi03MmgyMDR2LTIwNGg3MnYyMDRoMjA0djcySDUxNnYyMDRoLTcydi0yMDRaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuZXhwb3J0IGNvbnN0IEFsaWduSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0xNDQtMTQ0di03Mmg2NzJ2NzJIMTQ0Wm0wLTE1MHYtNzJoNDgwdjcySDE0NFptMC0xNTB2LTcyaDY3MnY3MkgxNDRabTAtMTUwdi03Mmg0ODB2NzJIMTQ0Wm0wLTE1MHYtNzJoNjcydjcySDE0NFpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEluZm9JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC0yODhoNzJ2LTI0MGgtNzJ2MjQwWm0zNS43OS0zMTJxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabS40OSA1MDRRNDAxLTk2IDMzMS0xMjZ0LTEyMi41LTgyLjVRMTU2LTI2MSAxMjYtMzMwLjk2dC0zMC0xNDkuNVE5Ni01NjAgMTI2LTYyOS41cTMwLTY5LjUgODIuNS0xMjJUMzMwLjk2LTgzNHE2OS45Ni0zMCAxNDkuNS0zMHQxNDkuMDQgMzBxNjkuNSAzMCAxMjIgODIuNVQ4MzQtNjI5LjI4cTMwIDY5LjczIDMwIDE0OVE4NjQtNDAxIDgzNC0zMzF0LTgyLjUgMTIyLjVRNjk5LTE1NiA2MjkuMjgtMTI2cS02OS43MyAzMC0xNDkgMzBabS0uMjgtNzJxMTMwIDAgMjIxLTkxdDkxLTIyMXEwLTEzMC05MS0yMjF0LTIyMS05MXEtMTMwIDAtMjIxIDkxdC05MSAyMjFxMCAxMzAgOTEgMjIxdDIyMSA5MVptMC0zMTJaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBDbG9zZUljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiM4OTg5ODlcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJtMjkxLTI0MC01MS01MSAxODktMTg5LTE4OS0xODkgNTEtNTEgMTg5IDE4OSAxODktMTg5IDUxIDUxLTE4OSAxODkgMTg5IDE4OS01MSA1MS0xODktMTg5LTE4OSAxODlaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBLZXlib2FyZEljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNmY2ZjZmNcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNMTY4LTI0MHEtMjkuNyAwLTUwLjg1LTIxLjE1UTk2LTI4Mi4zIDk2LTMxMnYtMzM2cTAtMjkuNyAyMS4xNS01MC44NVExMzguMy03MjAgMTY4LTcyMGg2MjRxMjkuNyAwIDUwLjg1IDIxLjE1UTg2NC02NzcuNyA4NjQtNjQ4djMzNnEwIDI5LjctMjEuMTUgNTAuODVRODIxLjctMjQwIDc5Mi0yNDBIMTY4Wm0wLTcyaDYyNHYtMzM2SDE2OHYzMzZabTIwMy45Ni0yNGgyMTUuNzZxMTUuMjggMCAyNS43OC0xMC4yOSAxMC41LTEwLjI5IDEwLjUtMjUuNXQtMTAuMzQtMjUuNzFRNjAzLjMyLTQwOCA1ODguMDQtNDA4SDM3Mi4yOHEtMTUuMjggMC0yNS43OCAxMC4yOS0xMC41IDEwLjI5LTEwLjUgMjUuNXQxMC4zNCAyNS43MXExMC4zNCAxMC41IDI1LjYyIDEwLjVaTTE2OC0zMTJ2LTMzNiAzMzZabTEwNy43OS0yNDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0tNDA4IDk2cTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IFdpZGdldHNJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjZmNmY2ZjXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTYxMC00NTggNDU3LjM5LTYxMXEtNS4zOS01LjQtNy44OS0xMS43LTIuNS02LjMtMi41LTEzLjV0Mi41LTEzLjVRNDUyLTY1NiA0NTctNjYxbDE1My0xNTNxNS01IDEyLTh0MTQuMi0zcTcuMiAwIDEzLjUgM3QxMS4zIDhsMTUyLjYxIDE1M3E1LjM5IDUuNCA3Ljg5IDExLjcgMi41IDYuMyAyLjUgMTMuNXQtMi41IDEzLjVRODE5LTYxNiA4MTQtNjExTDY2MS00NThxLTUgNS0xMS4zIDgtNi4zIDMtMTMuNSAzdC0xNC4yLTNxLTctMy0xMi04Wk0xNDQtNTYzLjk2di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUgxODAuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0zODQgMzg0di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUg1NjQuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0tMzg0IDB2LTIxNS43NnEwLTE1LjI4IDEwLjM0LTI1Ljc4IDEwLjM0LTEwLjUgMjUuNjItMTAuNWgyMTUuNzZxMTUuMjggMCAyNS43OCAxMC4zNCAxMC41IDEwLjM0IDEwLjUgMjUuNjJ2MjE1Ljc2cTAgMTUuMjgtMTAuMzQgMjUuNzgtMTAuMzQgMTAuNS0yNS42MiAxMC41SDE4MC4yOHEtMTUuMjggMC0yNS43OC0xMC4zNC0xMC41LTEwLjM0LTEwLjUtMjUuNjJaTTIxNi02MDBoMTQ0di0xNDRIMjE2djE0NFptNDIwIDY2IDEwMS0xMDItMTAxLTEwMi0xMDIgMTAyIDEwMiAxMDJabS0zNiAzMThoMTQ0di0xNDRINjAwdjE0NFptLTM4NCAwaDE0NHYtMTQ0SDIxNnYxNDRabTE0NC0zODRabTE3NC0zNlpNMzYwLTM2MFptMjQwIDBaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInNob3J0Y3V0c0RldGFpbHMiLCJ0aXRsZSIsImtleXMiLCJ3aWRnZXRzRGV0YWlscyIsImlkIiwiX3JlZiIsImVkaXRvclNldHRpbmdzIiwiZGlzcGF0Y2giLCJpc01vZGFsT3BlbiIsIm1vZGFsU2NyZWVuU3RhdGUiLCJpc0NvZGVGb3JtYXRFbmFibGUiLCJpc1pvb21pbmdFbmFibGUiLCJfanN4cyIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiX2pzeCIsIm9uQ2xpY2siLCJ0eXBlIiwicGF5bG9hZCIsIkNsb3NlSWNvbiIsImNzc0NsYXNzIiwibWFwIiwic2hvcnRjdXQiLCJpIiwid2lkZ2V0IiwidmFsdWUiLCJjaGVja2VkIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwiaGFuZ2xlQ2hhbmdlV2lkZ2V0cyIsIlpvb21PdXRJY29uIiwieG1sbnMiLCJoZWlnaHQiLCJ2aWV3Qm94Iiwid2lkdGgiLCJmaWxsIiwiZCIsIlpvb21Jbkljb24iLCJfcmVmMiIsIkFsaWduSWNvbiIsIl9yZWYzIiwiSW5mb0ljb24iLCJfcmVmNCIsIl9yZWY1IiwiS2V5Ym9hcmRJY29uIiwiX3JlZjYiLCJXaWRnZXRzSWNvbiIsIl9yZWY3IiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJwcm9wcyIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2078.f0720009.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2078.f0720009.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2078.f0720009.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2230.e2f1289e.js b/react_frontend/static/react_frontend/js/2230.e2f1289e.js new file mode 100644 index 000000000..79fc1c237 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2230.e2f1289e.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2230],{5793:(e,n,t)=>{"use strict";t.d(n,{A:()=>v});var r=t(8168),o=t(8587),c=t(6540);const s=c.createContext(null);function i(){return c.useContext(s)}const a="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var u=t(4848);const l=function(e){const{children:n,theme:t}=e,o=i(),l=c.useMemo((()=>{const e=null===o?t:function(e,n){return"function"==typeof n?n(e):(0,r.A)({},e,n)}(o,t);return null!=e&&(e[a]=null!==o),e}),[t,o]);return(0,u.jsx)(s.Provider,{value:l,children:n})};var p=t(5684),f=t(3951);const h={};function m(e,n,t,o=!1){return c.useMemo((()=>{const c=e&&n[e]||n;if("function"==typeof t){const s=t(c),i=e?(0,r.A)({},n,{[e]:s}):s;return o?()=>i:i}return e?(0,r.A)({},n,{[e]:t}):(0,r.A)({},n,t)}),[e,n,t,o])}const d=function(e){const{children:n,theme:t,themeId:r}=e,o=(0,f.A)(h),c=i()||h,s=m(r,o,t),a=m(r,c,t,!0);return(0,u.jsx)(l,{theme:a,children:(0,u.jsx)(p.T.Provider,{value:s,children:n})})};var y=t(8312);const _=["theme"];function v(e){let{theme:n}=e,t=(0,o.A)(e,_);const c=n[y.A];return(0,u.jsx)(d,(0,r.A)({},t,{themeId:c?y.A:void 0,theme:c||n}))}},2230:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l}),t(6540);var r=t(6544),o=t(5793),c=t(5556),s=t.n(c),i=t(4848),a=(0,r.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function u(e){return(0,i.jsx)(o.A,{theme:a,children:e.children})}u.propTypes={children:s().node};const l=u},2694:(e,n,t)=>{"use strict";var r=t(6925);function o(){}function c(){}c.resetWarningCache=o,e.exports=function(){function e(e,n,t,o,c,s){if(s!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:c,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,n,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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aUIsQ0FDMUIsU0FBU0MsSUFBMEIsQ0FDbkNBLEVBQXVCQyxrQkFBb0JGLEVBRTNDRyxFQUFPQyxRQUFVLFdBQ2YsU0FBU0MsRUFBS2xELEVBQU9tRCxFQUFVQyxFQUFlQyxFQUFVQyxFQUFjQyxHQUNwRSxHQUFJQSxJQUFXWCxFQUFmLENBSUEsSUFBSVksRUFBTSxJQUFJQyxNQUNaLG1MQUtGLE1BREFELEVBQUlFLEtBQU8sc0JBQ0xGLENBUE4sQ0FRRixDQUVBLFNBQVNHLElBQ1AsT0FBT1QsQ0FDVCxDQUhBQSxFQUFLVSxXQUFhVixFQU1sQixJQUFJVyxFQUFpQixDQUNuQkMsTUFBT1osRUFDUGEsT0FBUWIsRUFDUmMsS0FBTWQsRUFDTmUsS0FBTWYsRUFDTmdCLE9BQVFoQixFQUNSaUIsT0FBUWpCLEVBQ1JrQixPQUFRbEIsRUFDUm1CLE9BQVFuQixFQUVSb0IsSUFBS3BCLEVBQ0xxQixRQUFTWixFQUNUYSxRQUFTdEIsRUFDVHVCLFlBQWF2QixFQUNid0IsV0FBWWYsRUFDWmdCLEtBQU16QixFQUNOMEIsU0FBVWpCLEVBQ1ZrQixNQUFPbEIsRUFDUG1CLFVBQVduQixFQUNYb0IsTUFBT3BCLEVBQ1BxQixNQUFPckIsRUFFUHNCLGVBQWdCbkMsRUFDaEJDLGtCQUFtQkYsR0FLckIsT0FGQWdCLEVBQWVsQixVQUFZa0IsRUFFcEJBLENBQ1QsQyxpQkMvQ0ViLEVBQU9DLFFBQVUsRUFBUSxLQUFSLEUsd0JDTm5CRCxFQUFPQyxRQUZvQiw4QyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvcHJpdmF0ZS10aGVtaW5nL3VzZVRoZW1lL1RoZW1lQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy91c2VUaGVtZS91c2VUaGVtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy9UaGVtZVByb3ZpZGVyL25lc3RlZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy9UaGVtZVByb3ZpZGVyL1RoZW1lUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL1RoZW1lUHJvdmlkZXIvVGhlbWVQcm92aWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9UaGVtZVByb3ZpZGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvUm9ib3RpY3NUaGVtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFRoZW1lQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgVGhlbWVDb250ZXh0LmRpc3BsYXlOYW1lID0gJ1RoZW1lQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBUaGVtZUNvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRoZW1lQ29udGV4dCBmcm9tICcuL1RoZW1lQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRGVidWdWYWx1ZSh0aGVtZSk7XG4gIH1cbiAgcmV0dXJuIHRoZW1lO1xufSIsImNvbnN0IGhhc1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbmV4cG9ydCBkZWZhdWx0IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ211aS5uZXN0ZWQnKSA6ICdfX1RIRU1FX05FU1RFRF9fJzsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBleGFjdFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBUaGVtZUNvbnRleHQgZnJvbSAnLi4vdXNlVGhlbWUvVGhlbWVDb250ZXh0JztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi91c2VUaGVtZSc7XG5pbXBvcnQgbmVzdGVkIGZyb20gJy4vbmVzdGVkJztcblxuLy8gVG8gc3VwcG9ydCBjb21wb3NpdGlvbiBvZiB0aGVtZS5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBtZXJnZU91dGVyTG9jYWxUaGVtZShvdXRlclRoZW1lLCBsb2NhbFRoZW1lKSB7XG4gIGlmICh0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gbG9jYWxUaGVtZShvdXRlclRoZW1lKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFtZXJnZWRUaGVtZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3Ugc2hvdWxkIHJldHVybiBhbiBvYmplY3QgZnJvbSB5b3VyIHRoZW1lIGZ1bmN0aW9uLCBpLmUuJywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXsoKSA9PiAoe30pfSAvPiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG59XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgdGFrZXMgYSBgdGhlbWVgIHByb3AuXG4gKiBJdCBtYWtlcyB0aGUgYHRoZW1lYCBhdmFpbGFibGUgZG93biB0aGUgUmVhY3QgdHJlZSB0aGFua3MgdG8gUmVhY3QgY29udGV4dC5cbiAqIFRoaXMgY29tcG9uZW50IHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQgYXQgKip0aGUgcm9vdCBvZiB5b3VyIGNvbXBvbmVudCB0cmVlKiouXG4gKi9cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIHRoZW1lOiBsb2NhbFRoZW1lXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgb3V0ZXJUaGVtZSA9IHVzZVRoZW1lKCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKG91dGVyVGhlbWUgPT09IG51bGwgJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IFlvdSBhcmUgcHJvdmlkaW5nIGEgdGhlbWUgZnVuY3Rpb24gcHJvcCB0byB0aGUgVGhlbWVQcm92aWRlciBjb21wb25lbnQ6JywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXtvdXRlclRoZW1lID0+IG91dGVyVGhlbWV9IC8+JywgJycsICdIb3dldmVyLCBubyBvdXRlciB0aGVtZSBpcyBwcmVzZW50LicsICdNYWtlIHN1cmUgYSB0aGVtZSBpcyBhbHJlYWR5IGluamVjdGVkIGhpZ2hlciBpbiB0aGUgUmVhY3QgdHJlZSAnICsgJ29yIHByb3ZpZGUgYSB0aGVtZSBvYmplY3QuJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IG91dGVyVGhlbWUgPT09IG51bGwgPyBsb2NhbFRoZW1lIDogbWVyZ2VPdXRlckxvY2FsVGhlbWUob3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gICAgaWYgKG91dHB1dCAhPSBudWxsKSB7XG4gICAgICBvdXRwdXRbbmVzdGVkXSA9IG91dGVyVGhlbWUgIT09IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0sIFtsb2NhbFRoZW1lLCBvdXRlclRoZW1lXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdGhlbWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBZb3VyIGNvbXBvbmVudCB0cmVlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQSB0aGVtZSBvYmplY3QuIFlvdSBjYW4gcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGV4dGVuZCB0aGUgb3V0ZXIgdGhlbWUuXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKS5pc1JlcXVpcmVkXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSBleGFjdFByb3AoVGhlbWVQcm92aWRlci5wcm9wVHlwZXMpIDogdm9pZCAwO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgYXMgTXVpVGhlbWVQcm92aWRlciwgdXNlVGhlbWUgYXMgdXNlUHJpdmF0ZVRoZW1lIH0gZnJvbSAnQG11aS9wcml2YXRlLXRoZW1pbmcnO1xuaW1wb3J0IHsgZXhhY3RQcm9wIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgYXMgU3R5bGVkRW5naW5lVGhlbWVDb250ZXh0IH0gZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCB1c2VUaGVtZVdpdGhvdXREZWZhdWx0IGZyb20gJy4uL3VzZVRoZW1lV2l0aG91dERlZmF1bHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IEVNUFRZX1RIRU1FID0ge307XG5mdW5jdGlvbiB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSwgaXNQcml2YXRlID0gZmFsc2UpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkVGhlbWUgPSB0aGVtZUlkID8gdXBwZXJUaGVtZVt0aGVtZUlkXSB8fCB1cHBlclRoZW1lIDogdXBwZXJUaGVtZTtcbiAgICBpZiAodHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gbG9jYWxUaGVtZShyZXNvbHZlZFRoZW1lKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoZW1lSWQgPyBfZXh0ZW5kcyh7fSwgdXBwZXJUaGVtZSwge1xuICAgICAgICBbdGhlbWVJZF06IG1lcmdlZFRoZW1lXG4gICAgICB9KSA6IG1lcmdlZFRoZW1lO1xuICAgICAgLy8gbXVzdCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgdGhlIHByaXZhdGUgdGhlbWUgdG8gTk9UIG1lcmdlIHdpdGggdGhlIHVwcGVyIHRoZW1lLlxuICAgICAgLy8gc2VlIHRoZSB0ZXN0IGNhc2UgXCJ1c2UgcHJvdmlkZWQgdGhlbWUgZnJvbSBhIGNhbGxiYWNrXCIgaW4gVGhlbWVQcm92aWRlci50ZXN0LmpzXG4gICAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdGhlbWVJZCA/IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCB7XG4gICAgICBbdGhlbWVJZF06IGxvY2FsVGhlbWVcbiAgICB9KSA6IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCBsb2NhbFRoZW1lKTtcbiAgfSwgW3RoZW1lSWQsIHVwcGVyVGhlbWUsIGxvY2FsVGhlbWUsIGlzUHJpdmF0ZV0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IG1ha2VzIHRoZSBgdGhlbWVgIGF2YWlsYWJsZSBkb3duIHRoZSBSZWFjdCB0cmVlLlxuICogSXQgc2hvdWxkIHByZWZlcmFibHkgYmUgdXNlZCBhdCAqKnRoZSByb290IG9mIHlvdXIgY29tcG9uZW50IHRyZWUqKi5cbiAqXG4gKiA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PiAvLyBleGlzdGluZyB1c2UgY2FzZVxuICogPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3sgaWQ6IHRoZW1lIH19PiAvLyB0aGVtZSBzY29waW5nXG4gKi9cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIHRoZW1lOiBsb2NhbFRoZW1lLFxuICAgIHRoZW1lSWRcbiAgfSA9IHByb3BzO1xuICBjb25zdCB1cHBlclRoZW1lID0gdXNlVGhlbWVXaXRob3V0RGVmYXVsdChFTVBUWV9USEVNRSk7XG4gIGNvbnN0IHVwcGVyUHJpdmF0ZVRoZW1lID0gdXNlUHJpdmF0ZVRoZW1lKCkgfHwgRU1QVFlfVEhFTUU7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHVwcGVyVGhlbWUgPT09IG51bGwgJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicgfHwgdGhlbWVJZCAmJiB1cHBlclRoZW1lICYmICF1cHBlclRoZW1lW3RoZW1lSWRdICYmIHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3UgYXJlIHByb3ZpZGluZyBhIHRoZW1lIGZ1bmN0aW9uIHByb3AgdG8gdGhlIFRoZW1lUHJvdmlkZXIgY29tcG9uZW50OicsICc8VGhlbWVQcm92aWRlciB0aGVtZT17b3V0ZXJUaGVtZSA9PiBvdXRlclRoZW1lfSAvPicsICcnLCAnSG93ZXZlciwgbm8gb3V0ZXIgdGhlbWUgaXMgcHJlc2VudC4nLCAnTWFrZSBzdXJlIGEgdGhlbWUgaXMgYWxyZWFkeSBpbmplY3RlZCBoaWdoZXIgaW4gdGhlIFJlYWN0IHRyZWUgJyArICdvciBwcm92aWRlIGEgdGhlbWUgb2JqZWN0LiddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZW5naW5lVGhlbWUgPSB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gIGNvbnN0IHByaXZhdGVUaGVtZSA9IHVzZVRoZW1lU2NvcGluZyh0aGVtZUlkLCB1cHBlclByaXZhdGVUaGVtZSwgbG9jYWxUaGVtZSwgdHJ1ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChNdWlUaGVtZVByb3ZpZGVyLCB7XG4gICAgdGhlbWU6IHByaXZhdGVUaGVtZSxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU3R5bGVkRW5naW5lVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogZW5naW5lVGhlbWUsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogWW91ciBjb21wb25lbnQgdHJlZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEEgdGhlbWUgb2JqZWN0LiBZb3UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBleHRlbmQgdGhlIG91dGVyIHRoZW1lLlxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSkuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSBkZXNpZ24gc3lzdGVtJ3MgdW5pcXVlIGlkIGZvciBnZXR0aW5nIHRoZSBjb3JyZXNwb25kZWQgdGhlbWUgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZGVzaWduIHN5c3RlbXMuXG4gICAqL1xuICB0aGVtZUlkOiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSBleGFjdFByb3AoVGhlbWVQcm92aWRlci5wcm9wVHlwZXMpIDogdm9pZCAwO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJ0aGVtZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIGFzIFN5c3RlbVRoZW1lUHJvdmlkZXIgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKF9yZWYpIHtcbiAgbGV0IHtcbiAgICAgIHRoZW1lOiB0aGVtZUlucHV0XG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBzY29wZWRUaGVtZSA9IHRoZW1lSW5wdXRbVEhFTUVfSURdO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU3lzdGVtVGhlbWVQcm92aWRlciwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgdGhlbWVJZDogc2NvcGVkVGhlbWUgPyBUSEVNRV9JRCA6IHVuZGVmaW5lZCxcbiAgICB0aGVtZTogc2NvcGVkVGhlbWUgfHwgdGhlbWVJbnB1dFxuICB9KSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFlvdXIgY29tcG9uZW50IHRyZWUuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBBIHRoZW1lIG9iamVjdC4gWW91IGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZXh0ZW5kIHRoZSBvdXRlciB0aGVtZS5cbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuZnVuY10pLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7IiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBjcmVhdGVUaGVtZSwgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcclxuICBwYWxldHRlOiB7XHJcbiAgICB0eXBlOiBcImxpZ2h0XCIsXHJcbiAgICBwcmltYXJ5OiB7XHJcbiAgICAgIG1haW46IFwiI2ZmYTcyNlwiLFxyXG4gICAgfSxcclxuICAgIHNlY29uZGFyeToge1xyXG4gICAgICBtYWluOiBcIiMxNDdhZmZcIixcclxuICAgIH0sXHJcbiAgICBzdWNjZXNzOiB7XHJcbiAgICAgIG1haW46IFwiIzRDQUY1MFwiLFxyXG4gICAgfSxcclxuICAgIG5vdENvbm5lY3RlZDoge1xyXG4gICAgICBtYWluOiBcIiM3NTc1NzVcIixcclxuICAgIH0sXHJcbiAgICBsb2FkaW5nOiB7XHJcbiAgICAgIG1haW46IFwiI0U2NEExOVwiLFxyXG4gICAgfSxcclxuICAgIHNlbGVjdG9yOiB7XHJcbiAgICAgIG1haW46IFwiIzMyOUQ5Q1wiLFxyXG4gICAgfSxcclxuICB9LFxyXG4gIHR5cG9ncmFwaHk6IHtcclxuICAgIGZvbnRGYW1pbHk6IFwiUm9ib3RvXCIsXHJcbiAgfSxcclxufSk7XHJcblxyXG5mdW5jdGlvbiBSb2JvdGljc1RoZW1lKHByb3BzKSB7XHJcbiAgcmV0dXJuIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e3Byb3BzLmNoaWxkcmVufTwvVGhlbWVQcm92aWRlcj47XHJcbn1cclxuXHJcblJvYm90aWNzVGhlbWUucHJvcFR5cGVzID0ge1xyXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJvYm90aWNzVGhlbWU7XHJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIl0sIm5hbWVzIjpbInVzZVRoZW1lIiwiU3ltYm9sIiwiZm9yIiwicHJvcHMiLCJjaGlsZHJlbiIsInRoZW1lIiwibG9jYWxUaGVtZSIsIm91dGVyVGhlbWUiLCJvdXRwdXQiLCJtZXJnZU91dGVyTG9jYWxUaGVtZSIsIm5lc3RlZCIsIlByb3ZpZGVyIiwidmFsdWUiLCJFTVBUWV9USEVNRSIsInVzZVRoZW1lU2NvcGluZyIsInRoZW1lSWQiLCJ1cHBlclRoZW1lIiwiaXNQcml2YXRlIiwicmVzb2x2ZWRUaGVtZSIsIm1lcmdlZFRoZW1lIiwicmVzdWx0IiwidXNlVGhlbWVXaXRob3V0RGVmYXVsdCIsInVwcGVyUHJpdmF0ZVRoZW1lIiwiZW5naW5lVGhlbWUiLCJwcml2YXRlVGhlbWUiLCJfZXhjbHVkZWQiLCJfcmVmIiwidGhlbWVJbnB1dCIsInNjb3BlZFRoZW1lIiwidW5kZWZpbmVkIiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwidHlwZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5Iiwic3VjY2VzcyIsIm5vdENvbm5lY3RlZCIsImxvYWRpbmciLCJzZWxlY3RvciIsInR5cG9ncmFwaHkiLCJmb250RmFtaWx5IiwiUm9ib3RpY3NUaGVtZSIsIl9qc3giLCJUaGVtZVByb3ZpZGVyIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/225.4ac3eafe.js b/react_frontend/static/react_frontend/js/225.4ac3eafe.js new file mode 100644 index 000000000..ea312d473 --- /dev/null +++ b/react_frontend/static/react_frontend/js/225.4ac3eafe.js @@ -0,0 +1,3 @@ +/*! For license information please see 225.4ac3eafe.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[225],{225:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjI1LjdjYWUxNDZmLmpzIiwibWFwcGluZ3MiOiI7b0tBYUEsUUFSeUIsU0FBQ0EsR0FDeEIsT0FDRUMsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsU0FBUSxDQUFBQyxTQUNSSCxFQUFNRyxVQUdYLGtCQ0ZhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFNUIsTUFBTTBCLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDQyxFQUFRakMsU0FBU00sRUFBRTJCLEVBQVFDLElBQUlmLEVBQUVjLEVBQVFFLEtBQUtoQixrQkNQeFdpQixFQUFPSCxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmFjdXVtX2NsZWFuZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvTG9jVmFjdXVtQ2xlYW5lci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvQmFzaWNWYWN1dW1DbGVhbmVyLmNzc1wiO1xyXG5cclxuY29uc3QgTG9jVmFjdXVtQ2xlYW5lciA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBMb2NWYWN1dW1DbGVhbmVyOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/225.4ac3eafe.js.LICENSE.txt b/react_frontend/static/react_frontend/js/225.4ac3eafe.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/225.4ac3eafe.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2287.cd34a443.js b/react_frontend/static/react_frontend/js/2287.cd34a443.js new file mode 100644 index 000000000..9d3b7d286 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2287.cd34a443.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2287],{3034:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(1547).A},6852:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(1523).A},1544:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(6540);let o,c=!0,s=!1;const i={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(e){e.metaKey||e.altKey||e.ctrlKey||(c=!0)}function u(){c=!1}function l(){"hidden"===this.visibilityState&&s&&(c=!0)}const f=function(){const e=r.useCallback((e=>{var t;null!=e&&((t=e.ownerDocument).addEventListener("keydown",a,!0),t.addEventListener("mousedown",u,!0),t.addEventListener("pointerdown",u,!0),t.addEventListener("touchstart",u,!0),t.addEventListener("visibilitychange",l,!0))}),[]),t=r.useRef(!1);return{isFocusVisibleRef:t,onFocus:function(e){return!!function(e){const{target:t}=e;try{return t.matches(":focus-visible")}catch(e){}return c||function(e){const{type:t,tagName:n}=e;return!("INPUT"!==n||!i[t]||e.readOnly)||"TEXTAREA"===n&&!e.readOnly||!!e.isContentEditable}(t)}(e)&&(t.current=!0,!0)},onBlur:function(){return!!t.current&&(s=!0,window.clearTimeout(o),o=window.setTimeout((()=>{s=!1}),100),t.current=!1,!0)},ref:e}}},989:(e,t,n)=>{"use strict";function r(e,t){"function"==typeof e?e(t):e&&(e.current=t)}n.d(t,{A:()=>r})},1529:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o="undefined"!=typeof window?r.useLayoutEffect:r.useEffect},1547:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),o=n(1529);const c=function(e){const t=r.useRef(e);return(0,o.A)((()=>{t.current=e})),r.useCallback(((...e)=>(0,t.current)(...e)),[])}},1523:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(6540),o=n(989);function c(...e){return r.useMemo((()=>e.every((e=>null==e))?null:t=>{e.forEach((e=>{(0,o.A)(e,t)}))}),e)}},4511:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var r=n(6540),o=n(7839),c=n(4719),s=n(4073),i=n(5556),a=n.n(i),u=n(4848);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,c,s,i=[],a=!0,u=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=c.call(n)).done)&&(i.push(r.value),i.length!==t);a=!0);}catch(e){u=!0,o=e}finally{try{if(!a&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(u)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";var r=n(6925);function o(){}function c(){}c.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,c,s){if(s!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:c,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},7241:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(6540).createContext(null)},5540:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function o(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{A:()=>o})}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SWEsRUFBTSxJQUFJQyxNQUNaLG1MQUtGLE1BREFELEVBQUlFLEtBQU8sc0JBQ0xGLENBUE4sQ0FRRixDQUVBLFNBQVNHLElBQ1AsT0FBT1YsQ0FDVCxDQUhBQSxFQUFLVyxXQUFhWCxFQU1sQixJQUFJWSxFQUFpQixDQUNuQkMsTUFBT2IsRUFDUGMsT0FBUWQsRUFDUmUsS0FBTWYsRUFDTmdCLEtBQU1oQixFQUNOdkYsT0FBUXVGLEVBQ1JpQixPQUFRakIsRUFDUmtCLE9BQVFsQixFQUNSbUIsT0FBUW5CLEVBRVJvQixJQUFLcEIsRUFDTHFCLFFBQVNYLEVBQ1RZLFFBQVN0QixFQUNUdUIsWUFBYXZCLEVBQ2J3QixXQUFZZCxFQUNaakYsS0FBTXVFLEVBQ055QixTQUFVZixFQUNWZ0IsTUFBT2hCLEVBQ1BpQixVQUFXakIsRUFDWGtCLE1BQU9sQixFQUNQbUIsTUFBT25CLEVBRVBvQixlQUFnQmxDLEVBQ2hCQyxrQkFBbUJGLEdBS3JCLE9BRkFpQixFQUFlbkIsVUFBWW1CLEVBRXBCQSxDQUNULEMsaUJDL0NFZCxFQUFPQyxRQUFVLEVBQVEsS0FBUixFLHdCQ05uQkQsRUFBT0MsUUFGb0IsOEMsK0NDUjNCLFEsUUFBZSxjQUFvQixLLDhCQ0RuQyxTQUFTZ0MsRUFBZ0JDLEVBQUdDLEdBQzFCLE9BQU9GLEVBQWtCRyxPQUFPQyxlQUFpQkQsT0FBT0MsZUFBZUMsT0FBUyxTQUFVSixFQUFHQyxHQUMzRixPQUFPRCxFQUFFSyxVQUFZSixFQUFHRCxDQUMxQixFQUFHRCxFQUFnQkMsRUFBR0MsRUFDeEIsQ0NIQSxTQUFTSyxFQUFlTixFQUFHTyxHQUN6QlAsRUFBRVEsVUFBWU4sT0FBT08sT0FBT0YsRUFBRUMsV0FBWVIsRUFBRVEsVUFBVUUsWUFBY1YsRUFBRyxFQUFlQSxFQUFHTyxFQUMzRixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VFdmVudENhbGxiYWNrLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRm9ya1JlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VJc0ZvY3VzVmlzaWJsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlzRm9jdXNWaXNpYmxlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VFbmhhbmNlZEVmZmVjdC91c2VFbmhhbmNlZEVmZmVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VFdmVudENhbGxiYWNrL3VzZUV2ZW50Q2FsbGJhY2suanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlRm9ya1JlZi91c2VGb3JrUmVmLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsaXplcnMvQ29ubmVjdGlvbkluZGljYXRvci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUV2ZW50Q2FsbGJhY2sgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRXZlbnRDYWxsYmFjazsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUZvcmtSZWYgYXMgdXNlRm9ya1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ya1JlZjsiLCIndXNlIGNsaWVudCc7XG5cbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL2ZvY3VzLXZpc2libGUvYmxvYi92NC4xLjUvc3JjL2ZvY3VzLXZpc2libGUuanNcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBoYWRLZXlib2FyZEV2ZW50ID0gdHJ1ZTtcbmxldCBoYWRGb2N1c1Zpc2libGVSZWNlbnRseSA9IGZhbHNlO1xubGV0IGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dDtcbmNvbnN0IGlucHV0VHlwZXNXaGl0ZWxpc3QgPSB7XG4gIHRleHQ6IHRydWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdXJsOiB0cnVlLFxuICB0ZWw6IHRydWUsXG4gIGVtYWlsOiB0cnVlLFxuICBwYXNzd29yZDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBkYXRlOiB0cnVlLFxuICBtb250aDogdHJ1ZSxcbiAgd2VlazogdHJ1ZSxcbiAgdGltZTogdHJ1ZSxcbiAgZGF0ZXRpbWU6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWVcbn07XG5cbi8qKlxuICogQ29tcHV0ZXMgd2hldGhlciB0aGUgZ2l2ZW4gZWxlbWVudCBzaG91bGQgYXV0b21hdGljYWxseSB0cmlnZ2VyIHRoZVxuICogYGZvY3VzLXZpc2libGVgIGNsYXNzIGJlaW5nIGFkZGVkLCBpLmUuIHdoZXRoZXIgaXQgc2hvdWxkIGFsd2F5cyBtYXRjaFxuICogYDpmb2N1cy12aXNpYmxlYCB3aGVuIGZvY3VzZWQuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eShub2RlKSB7XG4gIGNvbnN0IHtcbiAgICB0eXBlLFxuICAgIHRhZ05hbWVcbiAgfSA9IG5vZGU7XG4gIGlmICh0YWdOYW1lID09PSAnSU5QVVQnICYmIGlucHV0VHlwZXNXaGl0ZWxpc3RbdHlwZV0gJiYgIW5vZGUucmVhZE9ubHkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyAmJiAhbm9kZS5yZWFkT25seSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChub2RlLmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEtlZXAgdHJhY2sgb2Ygb3VyIGtleWJvYXJkIG1vZGFsaXR5IHN0YXRlIHdpdGggYGhhZEtleWJvYXJkRXZlbnRgLlxuICogSWYgdGhlIG1vc3QgcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gd2FzIHZpYSB0aGUga2V5Ym9hcmQ7XG4gKiBhbmQgdGhlIGtleSBwcmVzcyBkaWQgbm90IGluY2x1ZGUgYSBtZXRhLCBhbHQvb3B0aW9uLCBvciBjb250cm9sIGtleTtcbiAqIHRoZW4gdGhlIG1vZGFsaXR5IGlzIGtleWJvYXJkLiBPdGhlcndpc2UsIHRoZSBtb2RhbGl0eSBpcyBub3Qga2V5Ym9hcmQuXG4gKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50XG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaGFkS2V5Ym9hcmRFdmVudCA9IHRydWU7XG59XG5cbi8qKlxuICogSWYgYXQgYW55IHBvaW50IGEgdXNlciBjbGlja3Mgd2l0aCBhIHBvaW50aW5nIGRldmljZSwgZW5zdXJlIHRoYXQgd2UgY2hhbmdlXG4gKiB0aGUgbW9kYWxpdHkgYXdheSBmcm9tIGtleWJvYXJkLlxuICogVGhpcyBhdm9pZHMgdGhlIHNpdHVhdGlvbiB3aGVyZSBhIHVzZXIgcHJlc3NlcyBhIGtleSBvbiBhbiBhbHJlYWR5IGZvY3VzZWRcbiAqIGVsZW1lbnQsIGFuZCB0aGVuIGNsaWNrcyBvbiBhIGRpZmZlcmVudCBlbGVtZW50LCBmb2N1c2luZyBpdCB3aXRoIGFcbiAqIHBvaW50aW5nIGRldmljZSwgd2hpbGUgd2Ugc3RpbGwgdGhpbmsgd2UncmUgaW4ga2V5Ym9hcmQgbW9kYWxpdHkuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJEb3duKCkge1xuICBoYWRLZXlib2FyZEV2ZW50ID0gZmFsc2U7XG59XG5mdW5jdGlvbiBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCkge1xuICBpZiAodGhpcy52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgLy8gSWYgdGhlIHRhYiBiZWNvbWVzIGFjdGl2ZSBhZ2FpbiwgdGhlIGJyb3dzZXIgd2lsbCBoYW5kbGUgY2FsbGluZyBmb2N1c1xuICAgIC8vIG9uIHRoZSBlbGVtZW50IChTYWZhcmkgYWN0dWFsbHkgY2FsbHMgaXQgdHdpY2UpLlxuICAgIC8vIElmIHRoaXMgdGFiIGNoYW5nZSBjYXVzZWQgYSBibHVyIG9uIGFuIGVsZW1lbnQgd2l0aCBmb2N1cy12aXNpYmxlLFxuICAgIC8vIHJlLWFwcGx5IHRoZSBjbGFzcyB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzIGJhY2sgdG8gdGhlIHRhYi5cbiAgICBpZiAoaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkpIHtcbiAgICAgIGhhZEtleWJvYXJkRXZlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlcGFyZShkb2MpIHtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZWFyZG93bihkb2MpIHtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNWaXNpYmxlKGV2ZW50KSB7XG4gIGNvbnN0IHtcbiAgICB0YXJnZXRcbiAgfSA9IGV2ZW50O1xuICB0cnkge1xuICAgIHJldHVybiB0YXJnZXQubWF0Y2hlcygnOmZvY3VzLXZpc2libGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBCcm93c2VycyBub3QgaW1wbGVtZW50aW5nIDpmb2N1cy12aXNpYmxlIHdpbGwgdGhyb3cgYSBTeW50YXhFcnJvci5cbiAgICAvLyBXZSB1c2Ugb3VyIG93biBoZXVyaXN0aWMgZm9yIHRob3NlIGJyb3dzZXJzLlxuICAgIC8vIFJldGhyb3cgbWlnaHQgYmUgYmV0dGVyIGlmIGl0J3Mgbm90IHRoZSBleHBlY3RlZCBlcnJvciBidXQgZG8gd2UgcmVhbGx5XG4gICAgLy8gd2FudCB0byBjcmFzaCBpZiBmb2N1cy12aXNpYmxlIG1hbGZ1bmN0aW9uZWQ/XG4gIH1cblxuICAvLyBObyBuZWVkIGZvciB2YWxpZEZvY3VzVGFyZ2V0IGNoZWNrLiBUaGUgdXNlciBkb2VzIHRoYXQgYnkgYXR0YWNoaW5nIGl0IHRvXG4gIC8vIGZvY3VzYWJsZSBldmVudHMgb25seS5cbiAgcmV0dXJuIGhhZEtleWJvYXJkRXZlbnQgfHwgZm9jdXNUcmlnZ2Vyc0tleWJvYXJkTW9kYWxpdHkodGFyZ2V0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUlzRm9jdXNWaXNpYmxlKCkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPSBudWxsKSB7XG4gICAgICBwcmVwYXJlKG5vZGUub3duZXJEb2N1bWVudCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IGlzRm9jdXNWaXNpYmxlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcblxuICAvKipcbiAgICogU2hvdWxkIGJlIGNhbGxlZCBpZiBhIGJsdXIgZXZlbnQgaXMgZmlyZWRcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUJsdXJWaXNpYmxlKCkge1xuICAgIC8vIGNoZWNraW5nIGFnYWluc3QgcG90ZW50aWFsIHN0YXRlIHZhcmlhYmxlIGRvZXMgbm90IHN1ZmZpY2UgaWYgd2UgZm9jdXMgYW5kIGJsdXIgc3luY2hyb25vdXNseS5cbiAgICAvLyBSZWFjdCB3b3VsZG4ndCBoYXZlIHRpbWUgdG8gdHJpZ2dlciBhIHJlLXJlbmRlciBzbyBgZm9jdXNWaXNpYmxlYCB3b3VsZCBiZSBzdGFsZS5cbiAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGFkanVzdCBgaXNGb2N1c1Zpc2libGUoZXZlbnQpYCB0byBsb29rIGF0IGByZWxhdGVkVGFyZ2V0YCBmb3IgYmx1ciBldmVudHMuXG4gICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsgaW4gSUUxMSBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zNzUxXG4gICAgLy8gVE9ETzogY2hlY2sgYWdhaW4gaWYgUmVhY3QgcmVsZWFzZXMgdGhlaXIgaW50ZXJuYWwgY2hhbmdlcyB0byBmb2N1cyBldmVudCBoYW5kbGluZyAoaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMTkxODYpLlxuICAgIGlmIChpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBUbyBkZXRlY3QgYSB0YWIvd2luZG93IHN3aXRjaCwgd2UgbG9vayBmb3IgYSBibHVyIGV2ZW50IGZvbGxvd2VkXG4gICAgICAvLyByYXBpZGx5IGJ5IGEgdmlzaWJpbGl0eSBjaGFuZ2UuXG4gICAgICAvLyBJZiB3ZSBkb24ndCBzZWUgYSB2aXNpYmlsaXR5IGNoYW5nZSB3aXRoaW4gMTAwbXMsIGl0J3MgcHJvYmFibHkgYVxuICAgICAgLy8gcmVndWxhciBmb2N1cyBjaGFuZ2UuXG4gICAgICBoYWRGb2N1c1Zpc2libGVSZWNlbnRseSA9IHRydWU7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dCk7XG4gICAgICBoYWRGb2N1c1Zpc2libGVSZWNlbnRseVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gZmFsc2U7XG4gICAgICB9LCAxMDApO1xuICAgICAgaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgY2FsbGVkIGlmIGEgYmx1ciBldmVudCBpcyBmaXJlZFxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlRm9jdXNWaXNpYmxlKGV2ZW50KSB7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlKGV2ZW50KSkge1xuICAgICAgaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNGb2N1c1Zpc2libGVSZWYsXG4gICAgb25Gb2N1czogaGFuZGxlRm9jdXNWaXNpYmxlLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1clZpc2libGUsXG4gICAgcmVmXG4gIH07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VJc0ZvY3VzVmlzaWJsZSBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlSXNGb2N1c1Zpc2libGU7IiwiLyoqXG4gKiBUT0RPIHY1OiBjb25zaWRlciBtYWtpbmcgaXQgcHJpdmF0ZVxuICpcbiAqIHBhc3NlcyB7dmFsdWV9IHRvIHtyZWZ9XG4gKlxuICogV0FSTklORzogQmUgc3VyZSB0byBvbmx5IGNhbGwgdGhpcyBpbnNpZGUgYSBjYWxsYmFjayB0aGF0IGlzIHBhc3NlZCBhcyBhIHJlZi5cbiAqIE90aGVyd2lzZSwgbWFrZSBzdXJlIHRvIGNsZWFudXAgdGhlIHByZXZpb3VzIHtyZWZ9IGlmIGl0IGNoYW5nZXMuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvMTM1MzlcbiAqXG4gKiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZSByZWYgb2YgYW4gaW5uZXIgY29tcG9uZW50IHRvIHRoZSBwdWJsaWMgQVBJXG4gKiB3aGlsZSBzdGlsbCB1c2luZyBpdCBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSByZWYgQSByZWYgY2FsbGJhY2sgb3IgcmVmIG9iamVjdC4gSWYgYW55dGhpbmcgZmFsc3ksIHRoaXMgaXMgYSBuby1vcC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0UmVmKHJlZiwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYodmFsdWUpO1xuICB9IGVsc2UgaWYgKHJlZikge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH1cbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IHVzZUVuaGFuY2VkRWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiBSZWFjdC51c2VFZmZlY3Q7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFbmhhbmNlZEVmZmVjdCBmcm9tICcuLi91c2VFbmhhbmNlZEVmZmVjdCc7XG5cbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNDA5OSNpc3N1ZWNvbW1lbnQtNDQwMDEzODkyXG4gKi9cblxuZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoZm4pO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBmbjtcbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjaygoLi4uYXJncykgPT5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBoaWRlIGB0aGlzYFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLWNvbW1hLW9wZXJhdG9yXG4gICgwLCByZWYuY3VycmVudCkoLi4uYXJncyksIFtdKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZUV2ZW50Q2FsbGJhY2s7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc2V0UmVmIGZyb20gJy4uL3NldFJlZic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VGb3JrUmVmKC4uLnJlZnMpIHtcbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gaWYgdGhlIHJlZnMgcGFzc2VkIHRvIHRoaXMgaG9vayBjaGFuZ2UgYW5kIGFyZSBhbGwgZGVmaW5lZC5cbiAgICogVGhpcyBtZWFucyByZWFjdCB3aWxsIGNhbGwgdGhlIG9sZCBmb3JrUmVmIHdpdGggYG51bGxgIGFuZCB0aGUgbmV3IGZvcmtSZWZcbiAgICogd2l0aCB0aGUgcmVmLiBDbGVhbnVwIG5hdHVyYWxseSBlbWVyZ2VzIGZyb20gdGhpcyBiZWhhdmlvci5cbiAgICovXG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmcy5ldmVyeShyZWYgPT4gcmVmID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlID0+IHtcbiAgICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBzZXRSZWYocmVmLCBpbnN0YW5jZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgcmVmcyk7XG59IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL0luZGljYXRvci5jc3NcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5cclxuZnVuY3Rpb24gQ29ubmVjdGlvbkluZGljYXRvcigpIHtcclxuICBjb25zdCBbcmFkaVZlcnNpb24sIHNldFJhZGlWZXJzaW9uXSA9IHVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IFtjb25uZWN0ZWQsIHNldENvbm5lY3RlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEuc3RhdGUgPT09IFwiY29ubmVjdGVkXCIpIHtcclxuICAgICAgICBzZXRDb25uZWN0ZWQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIHNldFJhZGlWZXJzaW9uKG1lc3NhZ2UuZGF0YS5yb2JvdGljc19iYWNrZW5kX3ZlcnNpb24pO1xyXG4gICAgfTtcclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3VzY3JpYnJlT25jZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLklOVFJPU1BFQ1RJT05dLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8VG9vbHRpcCB0aXRsZT1cIlJvYm90aWNzIEJhY2tlbmRcIj5cclxuICAgICAgPEJveCBjbGFzc05hbWU9e2Nvbm5lY3RlZCA/IFwicmVhZHlcIiA6IFwid2FpdGluZ1wifT5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0aXRsZVwiPlJvYm90aWNzIEJhY2tlbmQ8L3A+XHJcbiAgICAgICAgPFR5cG9ncmFwaHkgc3g9e3sgZm9udFNpemU6IFwiMC44cmVtXCIgfX0gY2xhc3NOYW1lPVwid29yZFwiPlxyXG4gICAgICAgICAge3JhZGlWZXJzaW9ufVxyXG4gICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgPC9Cb3g+XHJcbiAgICA8L1Rvb2x0aXA+XHJcbiAgKTtcclxufVxyXG5cclxuQ29ubmVjdGlvbkluZGljYXRvci5wcm9wVHlwZXMgPSB7XHJcbiAgZXhlcmNpc2VOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQ29ubmVjdGlvbkluZGljYXRvcjtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxuZXhwb3J0IHsgX3NldFByb3RvdHlwZU9mIGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgc2V0UHJvdG90eXBlT2YgZnJvbSBcIi4vc2V0UHJvdG90eXBlT2YuanNcIjtcbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHQsIG8pIHtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKG8ucHJvdG90eXBlKSwgdC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSB0LCBzZXRQcm90b3R5cGVPZih0LCBvKTtcbn1cbmV4cG9ydCB7IF9pbmhlcml0c0xvb3NlIGFzIGRlZmF1bHQgfTsiXSwibmFtZXMiOlsiaGFkRm9jdXNWaXNpYmxlUmVjZW50bHlUaW1lb3V0IiwiaGFkS2V5Ym9hcmRFdmVudCIsImhhZEZvY3VzVmlzaWJsZVJlY2VudGx5IiwiaW5wdXRUeXBlc1doaXRlbGlzdCIsInRleHQiLCJzZWFyY2giLCJ1cmwiLCJ0ZWwiLCJlbWFpbCIsInBhc3N3b3JkIiwibnVtYmVyIiwiZGF0ZSIsIm1vbnRoIiwid2VlayIsInRpbWUiLCJkYXRldGltZSIsImhhbmRsZUtleURvd24iLCJldmVudCIsIm1ldGFLZXkiLCJhbHRLZXkiLCJjdHJsS2V5IiwiaGFuZGxlUG9pbnRlckRvd24iLCJoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlIiwidGhpcyIsInZpc2liaWxpdHlTdGF0ZSIsInJlZiIsIm5vZGUiLCJkb2MiLCJvd25lckRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImlzRm9jdXNWaXNpYmxlUmVmIiwib25Gb2N1cyIsInRhcmdldCIsIm1hdGNoZXMiLCJlcnJvciIsInR5cGUiLCJ0YWdOYW1lIiwicmVhZE9ubHkiLCJpc0NvbnRlbnRFZGl0YWJsZSIsImZvY3VzVHJpZ2dlcnNLZXlib2FyZE1vZGFsaXR5IiwiaXNGb2N1c1Zpc2libGUiLCJjdXJyZW50Iiwib25CbHVyIiwid2luZG93IiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsInNldFJlZiIsInZhbHVlIiwiZm4iLCJhcmdzIiwidXNlRm9ya1JlZiIsInJlZnMiLCJldmVyeSIsImluc3RhbmNlIiwiZm9yRWFjaCIsIkNvbm5lY3Rpb25JbmRpY2F0b3IiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VTdGF0ZSIsInJhZGlWZXJzaW9uIiwic2V0UmFkaVZlcnNpb24iLCJfdXNlU3RhdGU0IiwiY29ubmVjdGVkIiwic2V0Q29ubmVjdGVkIiwidXNlRWZmZWN0IiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInN0YXRlIiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJTVEFURV9DSEFOR0VEIiwidW5zdWJzY3JpYmUiLCJzdXNjcmlicmVPbmNlIiwiSU5UUk9TUEVDVElPTiIsInJvYm90aWNzX2JhY2tlbmRfdmVyc2lvbiIsIl9qc3giLCJUb29sdGlwIiwidGl0bGUiLCJjaGlsZHJlbiIsIl9qc3hzIiwiQm94IiwiY2xhc3NOYW1lIiwiVHlwb2dyYXBoeSIsInN4IiwiZm9udFNpemUiLCJwcm9wVHlwZXMiLCJleGVyY2lzZU5hbWUiLCJQcm9wVHlwZXMiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BzIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIl9zZXRQcm90b3R5cGVPZiIsInQiLCJlIiwiT2JqZWN0Iiwic2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzTG9vc2UiLCJvIiwicHJvdG90eXBlIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/233.f454c433.js b/react_frontend/static/react_frontend/js/233.f454c433.js new file mode 100644 index 000000000..04f968a7e --- /dev/null +++ b/react_frontend/static/react_frontend/js/233.f454c433.js @@ -0,0 +1,3 @@ +/*! For license information please see 233.f454c433.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[233,3798],{8486:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(6540),o=n(5556),i=n.n(o),s=n(3798);const a=n.p+"103b475b789b8718d2b0.png",c=n.p+"d4f97e68c0637ce53256.png";var l=n(4848);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],c=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";n.r(t),n.d(t,{addToTrail:()=>i,updatePath:()=>o,updateTrail:()=>r});var r=function(e,t,n,r){for(var o="M ",i=0;i0&&t(o)},o=function(e,t,n,r){for(var o="M ",i=0;i0&&t(o)},i=function(e,t,n){n.includes([e,t])||n.push([e,t])}},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,s){if(s!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),i=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var r,i={},l=null,u=null;for(r in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)s.call(t,r)&&!c.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:o,type:e,key:l,ref:u,props:i,_owner:a.current}}t.Fragment=i,t.jsx=l,t.jsxs=l},4848:(e,t,n)=>{"use strict";e.exports=n(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LE1BQU1TLEVBQUVKLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVtQixLQUFLTCxFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLekUsRUFBRXlFLEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRU8sYUFBYSxJQUFJSixLQUFLRixFQUFFRCxFQUFFTyxrQkFBZSxJQUFTN0UsRUFBRXlFLEtBQUt6RSxFQUFFeUUsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNLLFNBQVN6QixFQUFFMEIsS0FBS1QsRUFBRUwsSUFBSVMsRUFBRVIsSUFBSVMsRUFBRTVMLE1BQU1pSCxFQUFFZ0YsT0FBT25CLEVBQUVvQixRQUFRLENBQUMzRCxFQUFRNEQsU0FBUzFCLEVBQUVsQyxFQUFRNkQsSUFBSWQsRUFBRS9DLEVBQVE4RCxLQUFLZiwrQkNQeFdoRCxFQUFPQyxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvYW1hem9uX3dhcmVob3VzZS9yZWFjdC1jb21wb25lbnRzL1NwZWNpZmljQW1hem9uV2FyZWhvdXNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2FtYXpvbl93YXJlaG91c2UvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL0FtYXpvbldhcmVob3VzZUhlbHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQge3VwZGF0ZVBhdGgsIGFkZFRvVHJhaWwsIHVwZGF0ZVRyYWlsfSBmcm9tIFwiLi9oZWxwZXJzL0FtYXpvbldhcmVob3VzZUhlbHBlclwiO1xyXG5cclxuaW1wb3J0IE1hcDEgZnJvbSBcIi4uL3Jlc291cmNlcy9pbWFnZXMvbWFwLnBuZ1wiXHJcbmltcG9ydCBNYXAyIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL21hcF8yLnBuZ1wiXHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCI7XHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY0FtYXpvbldhcmVob3VzZShwcm9wcykge1xyXG4gIGNvbnN0IE1hcDFTaXplID0ge3dpZHRoOiA0MTUsIGhlaWdodDogMjc5fVxyXG4gIGNvbnN0IE1hcDJTaXplID0ge3dpZHRoOiAxMDc1LCBoZWlnaHQ6IDY5OX1cclxuXHJcbiAgY29uc3QgW21hcCwgc2V0TWFwXSA9IFJlYWN0LnVzZVN0YXRlKE1hcDEpXHJcbiAgY29uc3QgW21hcFNpemUsIHNldE1hcFNpemVdID0gUmVhY3QudXNlU3RhdGUoTWFwMVNpemUpXHJcbiAgY29uc3QgW3ZlaGljbGVUeXBlLCBzZXRWZWhpY2xlVHlwZV0gPSBSZWFjdC51c2VTdGF0ZSgwKSAvLyAwPW5vcm1hbCAxPWFja2VybWFublxyXG4gIGNvbnN0IFt2ZWhpY2xlUG9zZSwgc2V0VmVoaWNsZVBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbdGFyZ2V0UG9zZSwgc2V0VGFyZ2V0UG9zZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxyXG4gIGNvbnN0IFt0cmFpbCwgc2V0VHJhaWxdID0gUmVhY3QudXNlU3RhdGUoXCJcIilcclxuICBjb25zdCBbcGF0aCwgc2V0UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKVxyXG4gIGNvbnN0IFtsaWZ0U3RhdGUsIHNldExpZnRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSlcclxuXHJcbiAgdmFyIGJhc2VfcGF0aCA9IFtdO1xyXG4gIHZhciBiYXNlX3RyYWlsID0gW107XHJcbiAgdmFyIGxhc3RQb3NlID0gdW5kZWZpbmVkO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuXHJcbiAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xyXG4gICAgICB2YXIgaW1nID0gZW50cmllc1swXS50YXJnZXQ7IFxyXG4gICAgICB2YXIgd2lkdGggPSAoaW1nLmNsaWVudFdpZHRoIC8gbWFwU2l6ZS53aWR0aCkgKiAxLjM4O1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gKGltZy5jbGllbnRIZWlnaHQgLyBtYXBTaXplLmhlaWdodCkgKiAxLjk7XHJcblxyXG4gICAgICB1cGRhdGVQYXRoKGJhc2VfcGF0aCwgc2V0UGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgICAgIHVwZGF0ZVRyYWlsKGJhc2VfdHJhaWwsIHNldFRyYWlsLCBoZWlnaHQsIHdpZHRoKTtcclxuXHJcbiAgICAgIGlmIChsYXN0UG9zZSkge1xyXG4gICAgICAgIHZhciBhbmcgPSAtbGFzdFBvc2VbMl0rTWF0aC5QSS84XHJcblxyXG4gICAgICAgIHNldFZlaGljbGVQb3NlKFtsYXN0UG9zZVsxXSpoZWlnaHQsbGFzdFBvc2VbMF0qd2lkdGgsIGFuZ10pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBkaXNwbGF5Um9ib3QgPSAoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YS5tYXApIHtcclxuICAgICAgICBjb25zdCBwb3NlID0gZGF0YS5tYXAuc3Vic3RyaW5nKDEsIGRhdGEubWFwLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBwb3NlLnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KGl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgcmVzaXplX2ZhY3RvciA9IDEsIG9mZnNldF94ID0gMCwgb2Zmc2V0X3kgPSAwO1xyXG4gICAgICAgIGlmIChtYXAgPT0gTWFwMikge1xyXG4gICAgICAgICAgcmVzaXplX2ZhY3RvciA9IDAuNjI7XHJcbiAgICAgICAgICBvZmZzZXRfeCA9IDU5O1xyXG4gICAgICAgICAgb2Zmc2V0X3kgPSAzNjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjb252UG9zZSA9IFtjb250ZW50WzBdKnJlc2l6ZV9mYWN0b3IgKyBvZmZzZXRfeCwgY29udGVudFsxXSpyZXNpemVfZmFjdG9yICsgb2Zmc2V0X3ldXHJcblxyXG4gICAgICAgIGxhc3RQb3NlID0gY29udlBvc2VcclxuXHJcbiAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGVyY2lzZS1pbWcnKTsgXHJcbiAgICAgICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgICAgIHZhciB3aWR0aCA9IChpbWcuY2xpZW50V2lkdGggLyBtYXBTaXplLndpZHRoKSAqIDEuMzg7XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IChpbWcuY2xpZW50SGVpZ2h0IC8gbWFwU2l6ZS5oZWlnaHQpICogMS45O1xyXG5cclxuICAgICAgICB1cGRhdGVUcmFpbChiYXNlX3RyYWlsLCBzZXRUcmFpbCwgaGVpZ2h0LCB3aWR0aCk7XHJcblxyXG4gICAgICAgIHZhciBhbmcgPSAtY29udGVudFsyXStNYXRoLlBJLzhcclxuXHJcbiAgICAgICAgc2V0VmVoaWNsZVBvc2UoW2NvbnZQb3NlWzFdKmhlaWdodCxjb252UG9zZVswXSp3aWR0aCwgYW5nXSk7XHJcbiAgICAgICAgYWRkVG9UcmFpbChjb252UG9zZVsxXSwgY29udlBvc2VbMF0sIGJhc2VfdHJhaWwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihkYXRhLmltYWdlKSB7XHJcbiAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXhlcmNpc2UtaW1nXCIpO1xyXG4gICAgICAgICAgLy9QYXJzZSBlbmNvZGVkIGltYWdlIGRhdGEgYW5kIGRlY29kZSBpdFxyXG4gICAgICAgIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcblxyXG4gICAgICAgIGlmKHNvdXJjZSAhPT0gXCJcIil7XHJcbiAgICAgICAgICBzZXRNYXAoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsXCIgKyBzb3VyY2UpXHJcbiAgICAgICAgICAvLyBjYW52YXMuc3JjID0gXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgICAvLyBjYW52YXMud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICAgIC8vIGNhbnZhcy5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZGlzcGxheVBhdGggPSAoZGF0YSkgPT4ge1xyXG4gICAgICBpZihkYXRhLmFycmF5KXtcclxuICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4ZXJjaXNlLWltZycpOyBcclxuICAgICAgICAvL29yIGhvd2V2ZXIgeW91IGdldCBhIGhhbmRsZSB0byB0aGUgSU1HXHJcbiAgICAgICAgdmFyIHdpZHRoID0gKGltZy5jbGllbnRXaWR0aCAvIG1hcFNpemUud2lkdGgpICogMS4zODtcclxuICAgICAgICB2YXIgaGVpZ2h0ID0gKGltZy5jbGllbnRIZWlnaHQgLyBtYXBTaXplLmhlaWdodCkgKiAxLjk7XHJcblxyXG4gICAgICAgIGJhc2VfcGF0aCA9IEpTT04ucGFyc2UoZGF0YS5hcnJheSk7XHJcbiAgICAgICAgdXBkYXRlUGF0aChiYXNlX3BhdGgsIHNldFBhdGgsIGhlaWdodCwgd2lkdGgpXHJcblxyXG4gICAgICAgIGxldCB0YXJnZXQgPSBiYXNlX3BhdGguYXQoLTEpXHJcbiAgICAgICAgc2V0VGFyZ2V0UG9zZShbKHRhcmdldFsxXSpoZWlnaHQqMTAwKS9pbWcuY2xpZW50SGVpZ2h0LCAodGFyZ2V0WzBdKndpZHRoKjEwMCkvaW1nLmNsaWVudFdpZHRoXSlcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBkaXNwbGF5TGlmdFNxdWFyZSA9IChkYXRhKSA9PiB7XHJcbiAgICAgIGlmKGRhdGEubGlmdFN0YXRlID09PSBmYWxzZSB8fCBkYXRhLmxpZnRTdGF0ZSl7XHJcbiAgICAgICAgc2V0TGlmdFN0YXRlKGRhdGEubGlmdFN0YXRlKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEubGlmdFN0YXRlKVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc3QgZGF0YSA9IG1lc3NhZ2UuZGF0YS51cGRhdGU7XHJcbiAgICAgIGRpc3BsYXlSb2JvdChkYXRhKVxyXG4gICAgICBkaXNwbGF5UGF0aChkYXRhKVxyXG4gICAgICBkaXNwbGF5TGlmdFNxdWFyZShkYXRhKVxyXG5cclxuICAgICAgLy8gU2VuZCB0aGUgQUNLIG9mIHRoZSBtc2dcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwiYWNrXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4ZXJjaXNlLWltZycpKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiKSB7XHJcbiAgICAgICAgbGV0IHdvcmxkID0gY29udGV4dC5tYXBTZWxlY3RlZDtcclxuICAgICAgICBcclxuICAgICAgICBpZiAod29ybGQuaW5jbHVkZXMoXCIyXCIpKSB7XHJcbiAgICAgICAgICBzZXRNYXAoTWFwMilcclxuICAgICAgICAgIHNldE1hcFNpemUoTWFwMlNpemUpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNldE1hcChNYXAxKVxyXG4gICAgICAgICAgc2V0TWFwU2l6ZShNYXAxU2l6ZSlcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3b3JsZC5pbmNsdWRlcyhcIkFja2VybWFublwiKSkge1xyXG4gICAgICAgICAgc2V0VmVoaWNsZVR5cGUoMSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0VmVoaWNsZVR5cGUoMClcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBiYXNlX3BhdGggPSBbXVxyXG4gICAgICAgICAgYmFzZV90cmFpbCA9IFtdXHJcbiAgICAgICAgICBzZXRQYXRoKFwiXCIpXHJcbiAgICAgICAgICBzZXRUcmFpbChcIlwiKVxyXG4gICAgICAgICAgc2V0VmVoaWNsZVBvc2UobnVsbClcclxuICAgICAgICAgIHNldFRhcmdldFBvc2UobnVsbClcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSlcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fT5cclxuICAgICAgPGltZyBzcmM9e21hcH0gYWx0PVwiXCIgY2xhc3NOYW1lPVwiZXhlcmNpc2UtY2FudmFzXCIgaWQ9XCJleGVyY2lzZS1pbWdcIi8+XHJcbiAgICAgIHt2ZWhpY2xlUG9zZSAmJiB2ZWhpY2xlVHlwZSA9PSAwICYmXHJcbiAgICAgICAgPGRpdiBpZD1cInZlaGljLXBvc1wiIGNsYXNzTmFtZT17KGxpZnRTdGF0ZSkgPyBcImxpZnRpbmdcIiA6IFwiXCJ9XHJcbiAgICAgICAgICBzdHlsZT17e3JvdGF0ZTogXCJ6IFwiKyB2ZWhpY2xlUG9zZVsyXStcInJhZFwiLCB0b3A6IHZlaGljbGVQb3NlWzBdIC0xMCAsIGxlZnQ6IHZlaGljbGVQb3NlWzFdIC0xMH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcnJvd1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICB7dmVoaWNsZVBvc2UgJiYgdmVoaWNsZVR5cGUgPT0gMSAmJlxyXG4gICAgICAgIDxkaXYgaWQ9XCJ2ZWhpYy1wb3MtYWNrXCJcclxuICAgICAgICAgICBjbGFzc05hbWU9eyhsaWZ0U3RhdGUpID8gXCJsaWZ0aW5nLWFja1wiIDogXCJcIn1cclxuICAgICAgICAgIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIHZlaGljbGVQb3NlWzJdK1wicmFkXCIsIHRvcDogdmVoaWNsZVBvc2VbMF0gLTI1ICwgbGVmdDogdmVoaWNsZVBvc2VbMV0gLTEwfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFycm93LWFjayBhcnJvd1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICB7dHJhaWwgJiZcclxuICAgICAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9e3t6SW5kZXg6MywgcG9zaXRpb246XCJhYnNvbHV0ZVwifX0+XHJcbiAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZD17dHJhaWx9IFxyXG4gICAgICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOiBcIjJweFwiLCBzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsIHN0cm9rZTogXCJibHVlXCIsIGZpbGw6IFwibm9uZVwifX1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIH1cclxuICAgICAge3BhdGggJiZcclxuICAgICAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9e3t6SW5kZXg6MiwgcG9zaXRpb246XCJhYnNvbHV0ZVwifX0+XHJcbiAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZD17cGF0aH0gXHJcbiAgICAgICAgICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6IFwiMnB4XCIsIHN0cm9rZUxpbmVqb2luOlwicm91bmRcIiwgc3Ryb2tlOiBcImdyZWVuXCIsIGZpbGw6IFwibm9uZVwifX1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIH1cclxuICAgICAge3RhcmdldFBvc2UgJiZcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRhcmdldFwiIHN0eWxlPXt7dG9wOiBgJHt0YXJnZXRQb3NlWzBdfSVgLCBsZWZ0OiBgY2FsYygke3RhcmdldFBvc2VbMV19JSAtICR7MTB9cHgpYH19Lz5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+ICAgIFxyXG4gICk7XHJcbn1cclxuXHJcblNwZWNpZmljQW1hem9uV2FyZWhvdXNlLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNBbWF6b25XYXJlaG91c2UiLCJleHBvcnQgY29uc3QgdXBkYXRlVHJhaWwgPSAodHJhaWwsIHNldFBhdGhDYWxsYmFjaywgaGVpZ2h0LCB3aWR0aCkgPT4ge1xyXG4gIHZhciBuZXdQYXRoID0gXCJNIFwiO1xyXG5cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhaWwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdHJhaWxbaW5kZXhdO1xyXG4gICAgdmFyIHRvcCAgPSBlbGVtZW50WzBdICogaGVpZ2h0O1xyXG4gICAgdmFyIGxlZnQgPSBlbGVtZW50WzFdICogd2lkdGg7XHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgbmV3UGF0aCArPSBsZWZ0LnRvU3RyaW5nKCkrIFwiLFwiICsgdG9wLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBuZXdQYXRoICs9IFwiIEwgXCIgKyBsZWZ0LnRvU3RyaW5nKCkgKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRyYWlsLmxlbmd0aCA+IDApIHtcclxuICAgIHNldFBhdGhDYWxsYmFjayhuZXdQYXRoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHVwZGF0ZVBhdGggPSAodHJhaWwsIHNldFBhdGhDYWxsYmFjaywgaGVpZ2h0LCB3aWR0aCkgPT4ge1xyXG4gIHZhciBuZXdQYXRoID0gXCJNIFwiO1xyXG5cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhaWwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdHJhaWxbaW5kZXhdO1xyXG4gICAgdmFyIHRvcCAgPSBlbGVtZW50WzFdICogaGVpZ2h0O1xyXG4gICAgdmFyIGxlZnQgPSBlbGVtZW50WzBdICogd2lkdGg7XHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgbmV3UGF0aCArPSBsZWZ0LnRvU3RyaW5nKCkrIFwiLFwiICsgdG9wLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBuZXdQYXRoICs9IFwiIEwgXCIgKyBsZWZ0LnRvU3RyaW5nKCkgKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRyYWlsLmxlbmd0aCA+IDApIHtcclxuICAgIHNldFBhdGhDYWxsYmFjayhuZXdQYXRoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFRvVHJhaWwgPSAoeCwgeSwgdHJhaWwpID0+IHtcclxuICBpZiAoIXRyYWlsLmluY2x1ZGVzKFt4LCB5XSkpIHtcclxuICAgIHRyYWlsLnB1c2goW3gsIHldKTtcclxuICB9XHJcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY0FtYXpvbldhcmVob3VzZSIsInByb3BzIiwiTWFwMVNpemUiLCJ3aWR0aCIsImhlaWdodCIsIk1hcDJTaXplIiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiUmVhY3QiLCJNYXAxIiwibWFwIiwic2V0TWFwIiwiX1JlYWN0JHVzZVN0YXRlNCIsIm1hcFNpemUiLCJzZXRNYXBTaXplIiwiX1JlYWN0JHVzZVN0YXRlNiIsInZlaGljbGVUeXBlIiwic2V0VmVoaWNsZVR5cGUiLCJfUmVhY3QkdXNlU3RhdGU4IiwidmVoaWNsZVBvc2UiLCJzZXRWZWhpY2xlUG9zZSIsIl9SZWFjdCR1c2VTdGF0ZTEwIiwidGFyZ2V0UG9zZSIsInNldFRhcmdldFBvc2UiLCJfUmVhY3QkdXNlU3RhdGUxMiIsInRyYWlsIiwic2V0VHJhaWwiLCJfUmVhY3QkdXNlU3RhdGUxNCIsInBhdGgiLCJzZXRQYXRoIiwiX1JlYWN0JHVzZVN0YXRlMTYiLCJsaWZ0U3RhdGUiLCJzZXRMaWZ0U3RhdGUiLCJiYXNlX3BhdGgiLCJiYXNlX3RyYWlsIiwibGFzdFBvc2UiLCJ1bmRlZmluZWQiLCJjb25zb2xlIiwibG9nIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJpbWciLCJ0YXJnZXQiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsInVwZGF0ZVBhdGgiLCJ1cGRhdGVUcmFpbCIsImFuZyIsIk1hdGgiLCJQSSIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJjb250ZW50Iiwic3Vic3RyaW5nIiwibGVuZ3RoIiwic3BsaXQiLCJpdGVtIiwicGFyc2VGbG9hdCIsInJlc2l6ZV9mYWN0b3IiLCJvZmZzZXRfeCIsIm9mZnNldF95IiwiTWFwMiIsImNvbnZQb3NlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImFkZFRvVHJhaWwiLCJpbWFnZSIsImltYWdlX2RhdGEiLCJKU09OIiwicGFyc2UiLCJzb3VyY2UiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJkaXNwbGF5Um9ib3QiLCJhcnJheSIsImF0IiwiZGlzcGxheVBhdGgiLCJkaXNwbGF5TGlmdFNxdWFyZSIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsIm9ic2VydmUiLCJ1bnN1YnNjcmliZSIsInN0YXRlIiwid29ybGQiLCJjb250ZXh0IiwibWFwU2VsZWN0ZWQiLCJpbmNsdWRlcyIsImVycm9yIiwiU1RBVEVfQ0hBTkdFRCIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJjaGlsZHJlbiIsIl9qc3giLCJzcmMiLCJhbHQiLCJjbGFzc05hbWUiLCJpZCIsInJvdGF0ZSIsInRvcCIsImxlZnQiLCJ4bWxucyIsInpJbmRleCIsImQiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlIiwiZmlsbCIsImNvbmNhdCIsInByb3BUeXBlcyIsImNpcmN1aXQiLCJQcm9wVHlwZXMiLCJzZXRQYXRoQ2FsbGJhY2siLCJuZXdQYXRoIiwiaW5kZXgiLCJlbGVtZW50IiwidG9TdHJpbmciLCJ4IiwieSIsInB1c2giLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/233.f454c433.js.LICENSE.txt b/react_frontend/static/react_frontend/js/233.f454c433.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/233.f454c433.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2341.b6a761a2.js b/react_frontend/static/react_frontend/js/2341.b6a761a2.js new file mode 100644 index 000000000..fb23e05e8 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2341.b6a761a2.js @@ -0,0 +1,3 @@ +/*! For license information please see 2341.b6a761a2.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2341,8832],{2341:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(6540),a=r(5556),o=r.n(a),i=r(8832),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";function n(e){return decodeURIComponent(escape(e))}r.r(t),r.d(t,{drawImage:()=>i,drawLeftImage:()=>s});var a=new Image,o=new Image;function i(e){var t=document.getElementById("gui_canvas_right"),r=t.getContext("2d");function o(){window.requestAnimationFrame(o),r.drawImage(a,0,0)}a.onload=function(){o()};var i=JSON.parse(e.image),s=n(i.image),c=i.shape;""!=s&&(a.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}function s(e){var t=document.getElementById("gui_canvas_left"),r=t.getContext("2d");function a(){window.requestAnimationFrame(a),r.drawImage(o,0,0)}o.onload=function(){a()};var i=JSON.parse(e.image_left),s=n(i.image_left),c=i.shape;""!=s&&(o.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,o,i){if(i!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,o={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,n)&&!c.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:u,ref:l,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjM0MS41NTI2ZWZlNy5qcyIsIm1hcHBpbmdzIjoiOzhTQUtBLFNBQVNBLEVBQTZCQyxHQUNwQyxRQUE4Q0MsS0FBcEJDLEVBQUFBLFNBQWUsUUFBSyxzNEJBc0M5QyxPQXRDWUQsRUFBQSxHQUFVQSxFQUFBLEdBQ3RCQyxFQUFBQSxXQUFnQixXQUNkQyxRQUFRQyxJQUFJLG1EQUNaLElBQU1DLEVBQVcsU0FBQ0MsR0FDYkEsRUFBUUMsS0FBS0MsT0FBT0MsUUFDckJOLFFBQVFDLElBQUksU0FDRU0sS0FBS0MsTUFBTUwsRUFBUUMsS0FBS0MsT0FBT0MsT0FDcENBLFFBQ1BHLEVBQUFBLEVBQUFBLFdBQVVOLEVBQVFDLEtBQUtDLFNBR3hCRixFQUFRQyxLQUFLQyxPQUFPSyxhQUNyQlYsUUFBUUMsSUFBSSxjQUNFTSxLQUFLQyxNQUFNTCxFQUFRQyxLQUFLQyxPQUFPSyxZQUNwQ0EsYUFDUEMsRUFBQUEsRUFBQUEsZUFBY1IsRUFBUUMsS0FBS0MsUUFLakMsRUFPQSxPQUxBTyxPQUFPQywyQkFBMkJDLGFBQWFDLFVBQzdDLENBQUNILE9BQU9DLDJCQUEyQkMsYUFBYUUsT0FBT0MsUUFDdkRmLEdBR0ssV0FDTEYsUUFBUUMsSUFBSSw4REFDWlcsT0FBT0MsMkJBQTJCQyxhQUFhSSxZQUM3QyxDQUFDTixPQUFPQywyQkFBMkJDLGFBQWFFLE9BQU9DLFFBQ3ZEZixFQUVKLENBQ0YsR0FBRyxLQUtEaUIsRUFBQUEsRUFBQUEsTUFBQSxPQUFLQyxNQUFPLENBQUNDLFFBQVMsT0FBVUMsTUFBTyxPQUN2Q0MsT0FBUSxRQUFRQyxTQUFBLEVBQ2RDLEVBQUFBLEVBQUFBLEtBQUEsVUFBUUMsR0FBRyxxQkFDWEQsRUFBQUEsRUFBQUEsS0FBQSxVQUFRQyxHQUFHLHVCQUdqQixDQUVBOUIsRUFBNkIrQixVQUFZLENBQ3ZDQyxRQUFTQyxJQUFBQSxRQUdYLHVDQ3hEQSxTQUFTQyxFQUFZQyxHQUNqQixPQUFPQyxtQkFBbUJDLE9BQU9GLEdBQ3JDLHFEQUVBLElBQUl6QixFQUFRLElBQUk0QixNQUNaeEIsRUFBYSxJQUFJd0IsTUFFZCxTQUFTekIsRUFBV0wsR0FDdkIsSUFBSStCLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0w1QixPQUFPNkIsc0JBQXNCRCxHQUM3QkYsRUFBUTdCLFVBQVVILEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNb0MsT0FBUyxXQUNYRixHQUNKLEVBU0EsSUFBSUcsRUFBYXBDLEtBQUtDLE1BQU1KLEVBQUtFLE9BQzdCc0MsRUFBU2QsRUFBWWEsRUFBV3JDLE9BQ2hDdUMsRUFBUUYsRUFBV0UsTUFFVixJQUFWRCxJQUNDdEMsRUFBTXdDLElBQU0sMEJBQTRCRixFQUN4Q1QsRUFBT2IsTUFBUXVCLEVBQU0sR0FDckJWLEVBQU9aLE9BQVNzQixFQUFNLEdBRTlCLENBRU8sU0FBU2xDLEVBQWVQLEdBQzNCLElBQUkyQyxFQUFjWCxTQUFTQyxlQUFlLG1CQUMxQ1csRUFBZUQsRUFBWVIsV0FBVyxNQVF0QyxTQUFTVSxJQUNMckMsT0FBTzZCLHNCQUFzQlEsR0FDN0JELEVBQWF2QyxVQUFVQyxFQUFZLEVBQUcsRUFDMUMsQ0FSQUEsRUFBV2dDLE9BQVMsV0FDaEJPLEdBQ0osRUFTQSxJQUFJTixFQUFhcEMsS0FBS0MsTUFBTUosRUFBS00sWUFDN0JrQyxFQUFTZCxFQUFZYSxFQUFXakMsWUFDaENtQyxFQUFRRixFQUFXRSxNQUVWLElBQVZELElBQ0NsQyxFQUFXb0MsSUFBTSwwQkFBNEJGLEVBQzdDRyxFQUFZekIsTUFBUXVCLEVBQU0sR0FDMUJFLEVBQVl4QixPQUFTc0IsRUFBTSxHQUVuQywrQkNuREEsSUFBSUssRUFBdUIsRUFBUSxNQUVuQyxTQUFTQyxJQUFpQixDQUMxQixTQUFTQyxJQUEwQixDQUNuQ0EsRUFBdUJDLGtCQUFvQkYsRUFFM0NHLEVBQU9DLFFBQVUsV0FDZixTQUFTQyxFQUFLM0QsRUFBTzRELEVBQVVDLEVBQWVDLEVBQVVDLEVBQWNDLEdBQ3BFLEdBQUlBLElBQVdYLEVBQWYsQ0FJQSxJQUFJWSxFQUFNLElBQUlDLE1BQ1osbUxBS0YsTUFEQUQsRUFBSUUsS0FBTyxzQkFDTEYsQ0FQTixDQVFGLENBRUEsU0FBU0csSUFDUCxPQUFPVCxDQUNULENBSEFBLEVBQUtVLFdBQWFWLEVBTWxCLElBQUlXLEVBQWlCLENBQ25CQyxNQUFPWixFQUNQYSxPQUFRYixFQUNSYyxLQUFNZCxFQUNOZSxLQUFNZixFQUNOZ0IsT0FBUWhCLEVBQ1JpQixPQUFRakIsRUFDUmtCLE9BQVFsQixFQUNSbUIsT0FBUW5CLEVBRVJvQixJQUFLcEIsRUFDTHFCLFFBQVNaLEVBQ1RhLFFBQVN0QixFQUNUdUIsWUFBYXZCLEVBQ2J3QixXQUFZZixFQUNaZ0IsS0FBTXpCLEVBQ04wQixTQUFVakIsRUFDVmtCLE1BQU9sQixFQUNQbUIsVUFBV25CLEVBQ1hwQixNQUFPb0IsRUFDUG9CLE1BQU9wQixFQUVQcUIsZUFBZ0JsQyxFQUNoQkMsa0JBQW1CRixHQUtyQixPQUZBZ0IsRUFBZXRDLFVBQVlzQyxFQUVwQkEsQ0FDVCxrQkMvQ0ViLEVBQU9DLFFBQVUsRUFBUSxLQUFSLDBCQ05uQkQsRUFBT0MsUUFGb0IsNEVDQWQsSUFBSWdDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFbEgsTUFBTWdILEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9wb3dlcl90b3dlcl9pbnNwZWN0aW9uX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY1Bvd2VyVG93ZXJJbnNwZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvd2VyX3Rvd2VyX2luc3BlY3Rpb25fbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc1Bvd2VyVG93ZXJJbnNwZWN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCB7IGRyYXdJbWFnZSwgZHJhd0xlZnRJbWFnZX0gZnJvbSBcIi4vaGVscGVycy9zaG93SW1hZ2VzUG93ZXJUb3dlckluc3BlY3Rpb25cIjtcclxuXHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY1Bvd2VyVG93ZXJJbnNwZWN0aW9uKHByb3BzKSB7XHJcbiAgY29uc3QgW2ltYWdlLCBzZXRJbWFnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZihtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKXtcclxuICAgICAgICBjb25zb2xlLmxvZygnaW1hZ2UnKVxyXG4gICAgICAgIGNvbnN0IGltYWdlID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKVxyXG4gICAgICAgIGlmKGltYWdlLmltYWdlKXtcclxuICAgICAgICAgIGRyYXdJbWFnZShtZXNzYWdlLmRhdGEudXBkYXRlKVxyXG4gICAgICAgIH0gXHJcbiAgICAgIH1cclxuICAgICAgaWYobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZV9sZWZ0KXtcclxuICAgICAgICBjb25zb2xlLmxvZygnaW1hZ2VfbGVmdCcpXHJcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBKU09OLnBhcnNlKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfbGVmdClcclxuICAgICAgICBpZihpbWFnZS5pbWFnZV9sZWZ0KXtcclxuICAgICAgICAgIGRyYXdMZWZ0SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSlcclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcblxyXG4gICAgICBcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuXHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgaGVpZ2h0OiBcIjEwMCVcIn19PlxyXG4gICAgICA8Y2FudmFzIGlkPVwiZ3VpX2NhbnZhc19sZWZ0XCI+PC9jYW52YXM+XHJcbiAgICAgIDxjYW52YXMgaWQ9XCJndWlfY2FudmFzX3JpZ2h0XCI+PC9jYW52YXM+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5TcGVjaWZpY1Bvd2VyVG93ZXJJbnNwZWN0aW9uLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNQb3dlclRvd2VySW5zcGVjdGlvblxyXG4iLCIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY1Bvd2VyVG93ZXJJbnNwZWN0aW9uIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiUmVhY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInVwZGF0ZSIsImltYWdlIiwiSlNPTiIsInBhcnNlIiwiZHJhd0ltYWdlIiwiaW1hZ2VfbGVmdCIsImRyYXdMZWZ0SW1hZ2UiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsInVuc3Vic2NyaWJlIiwiX2pzeHMiLCJzdHlsZSIsImRpc3BsYXkiLCJ3aWR0aCIsImhlaWdodCIsImNoaWxkcmVuIiwiX2pzeCIsImlkIiwicHJvcFR5cGVzIiwiY2lyY3VpdCIsIlByb3BUeXBlcyIsImRlY29kZV91dGY4IiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkltYWdlIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwidXBkYXRlX2ltYWdlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib25sb2FkIiwiaW1hZ2VfZGF0YSIsInNvdXJjZSIsInNoYXBlIiwic3JjIiwiY2FudmFzX2xlZnQiLCJjb250ZXh0X2xlZnQiLCJ1cGRhdGVfbGVmdF9pbWFnZSIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2341.b6a761a2.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2341.b6a761a2.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2341.b6a761a2.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2342.7859f7fb.js b/react_frontend/static/react_frontend/js/2342.7859f7fb.js new file mode 100644 index 000000000..a5f402b6f --- /dev/null +++ b/react_frontend/static/react_frontend/js/2342.7859f7fb.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2342,1052,4668],{7437:(e,t,o)=>{"use strict";o.d(t,{AH:()=>c,i7:()=>d,mL:()=>s});var n=o(5684),r=o(6540),a=o(41),i=o(1287),l=o(6899),s=(o(4300),o(4146),(0,n.w)((function(e,t){var o=e.styles,s=(0,l.J)([o],void 0,r.useContext(n.T));if(!n.i){for(var c,d=s.name,u=s.styles,p=s.next;void 0!==p;)d+=" "+p.name,u+=p.styles,p=p.next;var v=!0===t.compat,h=t.insert("",{name:d,styles:u},t.sheet,v);return v?null:r.createElement("style",((c={})["data-emotion"]=t.key+"-global "+d,c.dangerouslySetInnerHTML={__html:h},c.nonce=t.sheet.nonce,c))}var m=r.useRef();return(0,i.i)((function(){var e=t.key+"-global",o=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,r=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(o.before=t.sheet.tags[0]),null!==r&&(n=!0,r.setAttribute("data-emotion",e),o.hydrate([r])),m.current=[o,n],function(){o.flush()}}),[t]),(0,i.i)((function(){var e=m.current,o=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,a.sk)(t,s.next,!0),o.tags.length){var n=o.tags[o.tags.length-1].nextElementSibling;o.before=n,o.flush()}t.insert("",s,o,!1)}}),[t,s.name]),null})));function c(){for(var e=arguments.length,t=new Array(e),o=0;o{"use strict";var n=o(4994);t.A=void 0;var r=n(o(2032)),a=o(4848),i=(0,r.default)((0,a.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3zM8 13h2.55v3h2.9v-3H16l-4-4z"}),"CloudUploadOutlined");t.A=i},2032:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.createSvgIcon}});var n=o(8826)},1224:(e,t,o)=>{"use strict";o.d(t,{A:()=>C});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(3726),s=o(5659),c=o(4279),d=o(7577),u=o(4409),p=o(6606),v=o(8466),h=o(8413),m=o(1609);function f(e){return(0,m.A)("MuiButton",e)}const g=(0,h.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var y=o(1848),b=o(4848);const x=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],S=e=>(0,r.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),A=(0,d.Ay)(p.A,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,v.A)(o.color)}`],t[`size${(0,v.A)(o.size)}`],t[`${o.variant}Size${(0,v.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const a="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,r.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,r.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,r.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${g.focusVisible}`]:(0,r.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${g.disabled}`]:(0,r.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,c.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:a,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${g.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${g.disabled}`]:{boxShadow:"none"}})),z=(0,d.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,r.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},S(e)))),w=(0,d.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,r.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},S(e)))),C=a.forwardRef((function(e,t){const o=a.useContext(y.A),c=(0,l.A)(o,e),d=(0,u.A)({props:c,name:"MuiButton"}),{children:p,color:h="primary",component:m="button",className:g,disabled:S=!1,disableElevation:C=!1,disableFocusRipple:I=!1,endIcon:R,focusVisibleClassName:k,fullWidth:$=!1,size:E="medium",startIcon:T,type:_,variant:M="text"}=d,O=(0,n.A)(d,x),B=(0,r.A)({},d,{color:h,component:m,disabled:S,disableElevation:C,disableFocusRipple:I,fullWidth:$,size:E,type:_,variant:M}),N=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:a,variant:i,classes:l}=e,c={root:["root",i,`${i}${(0,v.A)(t)}`,`size${(0,v.A)(a)}`,`${i}Size${(0,v.A)(a)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,v.A)(a)}`],endIcon:["endIcon",`iconSize${(0,v.A)(a)}`]},d=(0,s.A)(c,f,l);return(0,r.A)({},l,d)})(B),W=T&&(0,b.jsx)(z,{className:N.startIcon,ownerState:B,children:T}),P=R&&(0,b.jsx)(w,{className:N.endIcon,ownerState:B,children:R});return(0,b.jsxs)(A,(0,r.A)({ownerState:B,className:(0,i.A)(o.className,N.root,g),component:m,disabled:S,focusRipple:!I,focusVisibleClassName:(0,i.A)(N.focusVisible,k),ref:t,type:_},O,{classes:N,children:[W,p,P]}))}))},1848:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(6540).createContext({})},5003:(e,t,o)=>{"use strict";o.d(t,{A:()=>b});var n=o(8168),r=o(6540),a=o(8587),i=o(53),l=o(5659),s=o(8466),c=o(4409),d=o(7577),u=o(8413),p=o(1609);function v(e){return(0,p.A)("MuiSvgIcon",e)}(0,u.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=o(4848);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],f=(0,d.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"inherit"!==o.color&&t[`color${(0,s.A)(o.color)}`],t[`fontSize${(0,s.A)(o.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var o,n,r,a,i,l,s,c,d,u,p,v,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(o=e.transitions)||null==(n=o.create)?void 0:n.call(o,"fill",{duration:null==(r=e.transitions)||null==(r=r.duration)?void 0:r.shorter}),fontSize:{inherit:"inherit",small:(null==(a=e.typography)||null==(i=a.pxToRem)?void 0:i.call(a,20))||"1.25rem",medium:(null==(l=e.typography)||null==(s=l.pxToRem)?void 0:s.call(l,24))||"1.5rem",large:(null==(c=e.typography)||null==(d=c.pxToRem)?void 0:d.call(c,35))||"2.1875rem"}[t.fontSize],color:null!=(u=null==(p=(e.vars||e).palette)||null==(p=p[t.color])?void 0:p.main)?u:{action:null==(v=(e.vars||e).palette)||null==(v=v.action)?void 0:v.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[t.color]}})),g=r.forwardRef((function(e,t){const o=(0,c.A)({props:e,name:"MuiSvgIcon"}),{children:d,className:u,color:p="inherit",component:g="svg",fontSize:y="medium",htmlColor:b,inheritViewBox:x=!1,titleAccess:S,viewBox:A="0 0 24 24"}=o,z=(0,a.A)(o,m),w=r.isValidElement(d)&&"svg"===d.type,C=(0,n.A)({},o,{color:p,component:g,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:x,viewBox:A,hasSvgAsChild:w}),I={};x||(I.viewBox=A);const R=(e=>{const{color:t,fontSize:o,classes:n}=e,r={root:["root","inherit"!==t&&`color${(0,s.A)(t)}`,`fontSize${(0,s.A)(o)}`]};return(0,l.A)(r,v,n)})(C);return(0,h.jsxs)(f,(0,n.A)({as:g,className:(0,i.A)(R.root,u),focusable:"false",color:b,"aria-hidden":!S||void 0,role:S?"img":void 0,ref:t},I,z,w&&d.props,{ownerState:C,children:[w?d.props.children:d,S?(0,h.jsx)("title",{children:S}):null]}))}));g.muiName="SvgIcon";const y=g;function b(e,t){function o(o,r){return(0,h.jsx)(y,(0,n.A)({"data-testid":`${t}Icon`,ref:r},o,{children:e}))}return o.muiName=y.muiName,r.memo(r.forwardRef(o))}},1935:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(4705).A},8826:(e,t,o)=>{"use strict";o.r(t),o.d(t,{capitalize:()=>r.A,createChainedFunction:()=>a,createSvgIcon:()=>i.A,debounce:()=>l.A,deprecatedPropType:()=>s,isMuiElement:()=>c.A,ownerDocument:()=>d.A,ownerWindow:()=>u.A,requirePropFactory:()=>p,setRef:()=>v,unstable_ClassNameGenerator:()=>S,unstable_useEnhancedEffect:()=>h.A,unstable_useId:()=>m.A,unsupportedProp:()=>f,useControlled:()=>g.A,useEventCallback:()=>y.A,useForkRef:()=>b.A,useIsFocusVisible:()=>x.A});var n=o(9071),r=o(8466);const a=o(1210).A;var i=o(5003),l=o(1935);const s=function(e,t){return()=>null};var c=o(5034),d=o(6248),u=o(3749);o(8168);const p=function(e,t){return()=>null},v=o(989).A;var h=o(2778),m=o(1668);const f=function(e,t,o,n,r){return null};var g=o(1159),y=o(3034),b=o(6852),x=o(1544);const S={configure:e=>{n.A.configure(e)}}},5034:(e,t,o)=>{"use strict";o.d(t,{A:()=>r});var n=o(6540);const r=function(e,t){return n.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},6248:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(2325).A},3749:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(4877).A},1159:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(2501).A},2778:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(1529).A},1668:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(4661).A},1210:(e,t,o)=>{"use strict";function n(...e){return e.reduce(((e,t)=>null==t?e:function(...o){e.apply(this,o),t.apply(this,o)}),(()=>{}))}o.d(t,{A:()=>n})},4705:(e,t,o)=>{"use strict";function n(e,t=166){let o;function n(...n){clearTimeout(o),o=setTimeout((()=>{e.apply(this,n)}),t)}return n.clear=()=>{clearTimeout(o)},n}o.d(t,{A:()=>n})},2325:(e,t,o)=>{"use strict";function n(e){return e&&e.ownerDocument||document}o.d(t,{A:()=>n})},4877:(e,t,o)=>{"use strict";o.d(t,{A:()=>r});var n=o(2325);function r(e){return(0,n.A)(e).defaultView||window}},2501:(e,t,o)=>{"use strict";o.d(t,{A:()=>r});var n=o(6540);function r({controlled:e,default:t,name:o,state:r="value"}){const{current:a}=n.useRef(void 0!==e),[i,l]=n.useState(t);return[a?e:i,n.useCallback((e=>{a||l(e)}),[])]}},4661:(e,t,o)=>{"use strict";var n;o.d(t,{A:()=>l});var r=o(6540);let a=0;const i=(n||(n=o.t(r,2)))["useId".toString()];function l(e){if(void 0!==i){const t=i();return null!=e?e:t}return function(e){const[t,o]=r.useState(e),n=e||t;return r.useEffect((()=>{null==t&&(a+=1,o(`mui-${a}`))}),[t]),n}(e)}},8130:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>c});var n=o(1099),r=o(1224),a=(o(6540),o(5556)),i=o.n(a),l=o(4848),s=function(e){return(0,l.jsxs)(r.A,{variant:"contained",sx:{m:1},color:"secondary",startIcon:(0,l.jsx)(n.A,{}),component:"label",children:["Load file",(0,l.jsx)("input",{hidden:!0,accept:".py",type:"file",onChange:function(e){e.preventDefault();var t=new FileReader;t.onload=function(){RoboticsReactComponents.CodeEditor.setCode(t.result)},t.readAsText(e.target.files[0])}})]})};s.propTypes={context:i().any};const c=s},2694:(e,t,o)=>{"use strict";var n=o(6925);function r(){}function a(){}a.resetWarningCache=r,e.exports=function(){function e(e,t,o,r,a,i){if(i!==n){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var o={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:r};return o.PropTypes=o,o}},5556:(e,t,o)=>{e.exports=o(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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ZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvdWRVcGxvYWRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2ljb25zLW1hdGVyaWFsL3V0aWxzL2NyZWF0ZVN2Z0ljb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b24vYnV0dG9uQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL3N2Z0ljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlcHJlY2F0ZWRQcm9wVHlwZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9yZXF1aXJlUHJvcEZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9zZXRSZWYuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdW5zdXBwb3J0ZWRQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pc011aUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyV2luZG93LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlQ29udHJvbGxlZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUVuaGFuY2VkRWZmZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyRG9jdW1lbnQvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lcldpbmRvdy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VDb250cm9sbGVkL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlSWQvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9idXR0b25zL0xvYWRGaWxlQnV0dG9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTkgMThINmMtMi4yMSAwLTQtMS43OS00LTQgMC0yLjA1IDEuNTMtMy43NiAzLjU2LTMuOTdsMS4wNy0uMTEuNS0uOTVDOC4wOCA3LjE0IDkuOTQgNiAxMiA2YzIuNjIgMCA0Ljg4IDEuODYgNS4zOSA0LjQzbC4zIDEuNSAxLjUzLjExYzEuNTYuMSAyLjc4IDEuNDEgMi43OCAyLjk2IDAgMS42NS0xLjM1IDMtMyAzek04IDEzaDIuNTV2M2gyLjl2LTNIMTZsLTQtNHpcIlxufSksICdDbG91ZFVwbG9hZE91dGxpbmVkJyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbid1c2UgY2xpZW50JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3V0aWxzLmNyZWF0ZVN2Z0ljb247XG4gIH1cbn0pO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3V0aWxzXCIpOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUJ1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgYnV0dG9uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUJ1dHRvbicsIFsncm9vdCcsICd0ZXh0JywgJ3RleHRJbmhlcml0JywgJ3RleHRQcmltYXJ5JywgJ3RleHRTZWNvbmRhcnknLCAndGV4dFN1Y2Nlc3MnLCAndGV4dEVycm9yJywgJ3RleHRJbmZvJywgJ3RleHRXYXJuaW5nJywgJ291dGxpbmVkJywgJ291dGxpbmVkSW5oZXJpdCcsICdvdXRsaW5lZFByaW1hcnknLCAnb3V0bGluZWRTZWNvbmRhcnknLCAnb3V0bGluZWRTdWNjZXNzJywgJ291dGxpbmVkRXJyb3InLCAnb3V0bGluZWRJbmZvJywgJ291dGxpbmVkV2FybmluZycsICdjb250YWluZWQnLCAnY29udGFpbmVkSW5oZXJpdCcsICdjb250YWluZWRQcmltYXJ5JywgJ2NvbnRhaW5lZFNlY29uZGFyeScsICdjb250YWluZWRTdWNjZXNzJywgJ2NvbnRhaW5lZEVycm9yJywgJ2NvbnRhaW5lZEluZm8nLCAnY29udGFpbmVkV2FybmluZycsICdkaXNhYmxlRWxldmF0aW9uJywgJ2ZvY3VzVmlzaWJsZScsICdkaXNhYmxlZCcsICdjb2xvckluaGVyaXQnLCAndGV4dFNpemVTbWFsbCcsICd0ZXh0U2l6ZU1lZGl1bScsICd0ZXh0U2l6ZUxhcmdlJywgJ291dGxpbmVkU2l6ZVNtYWxsJywgJ291dGxpbmVkU2l6ZU1lZGl1bScsICdvdXRsaW5lZFNpemVMYXJnZScsICdjb250YWluZWRTaXplU21hbGwnLCAnY29udGFpbmVkU2l6ZU1lZGl1bScsICdjb250YWluZWRTaXplTGFyZ2UnLCAnc2l6ZU1lZGl1bScsICdzaXplU21hbGwnLCAnc2l6ZUxhcmdlJywgJ2Z1bGxXaWR0aCcsICdzdGFydEljb24nLCAnZW5kSWNvbicsICdpY29uU2l6ZVNtYWxsJywgJ2ljb25TaXplTWVkaXVtJywgJ2ljb25TaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBidXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJjbGFzc05hbWVcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVFbGV2YXRpb25cIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJlbmRJY29uXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwiZnVsbFdpZHRoXCIsIFwic2l6ZVwiLCBcInN0YXJ0SWNvblwiLCBcInR5cGVcIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaW50ZXJuYWxfcmVzb2x2ZVByb3BzIGFzIHJlc29sdmVQcm9wcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBidXR0b25DbGFzc2VzLCB7IGdldEJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgQnV0dG9uR3JvdXBDb250ZXh0IGZyb20gJy4uL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgJHt2YXJpYW50fSR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YCwgYCR7dmFyaWFudH1TaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGNvbG9yID09PSAnaW5oZXJpdCcgJiYgJ2NvbG9ySW5oZXJpdCcsIGRpc2FibGVFbGV2YXRpb24gJiYgJ2Rpc2FibGVFbGV2YXRpb24nLCBmdWxsV2lkdGggJiYgJ2Z1bGxXaWR0aCddLFxuICAgIGxhYmVsOiBbJ2xhYmVsJ10sXG4gICAgc3RhcnRJY29uOiBbJ3N0YXJ0SWNvbicsIGBpY29uU2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXSxcbiAgICBlbmRJY29uOiBbJ2VuZEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBjb21tb25JY29uU3R5bGVzID0gb3duZXJTdGF0ZSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAxOFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdtZWRpdW0nICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYge1xuICAnJiA+ICo6bnRoLW9mLXR5cGUoMSknOiB7XG4gICAgZm9udFNpemU6IDIyXG4gIH1cbn0pO1xuY29uc3QgQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHJvb3RTaG91bGRGb3J3YXJkUHJvcChwcm9wKSB8fCBwcm9wID09PSAnY2xhc3NlcycsXG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9JHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXSwgc3R5bGVzW2Ake293bmVyU3RhdGUudmFyaWFudH1TaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiBzdHlsZXMuY29sb3JJbmhlcml0LCBvd25lclN0YXRlLmRpc2FibGVFbGV2YXRpb24gJiYgc3R5bGVzLmRpc2FibGVFbGV2YXRpb24sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGhdO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3RoZW1lJHBhbGV0dGUkZ2V0Q29uLCBfdGhlbWUkcGFsZXR0ZTtcbiAgY29uc3QgaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleVszMDBdIDogdGhlbWUucGFsZXR0ZS5ncmV5WzgwMF07XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleS5BMTAwIDogdGhlbWUucGFsZXR0ZS5ncmV5WzcwMF07XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgdGhlbWUudHlwb2dyYXBoeS5idXR0b24sIHtcbiAgICBtaW5XaWR0aDogNjQsXG4gICAgcGFkZGluZzogJzZweCAxNnB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFwZS5ib3JkZXJSYWRpdXMsXG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFsnYmFja2dyb3VuZC1jb2xvcicsICdib3gtc2hhZG93JywgJ2JvcmRlci1jb2xvcicsICdjb2xvciddLCB7XG4gICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRcbiAgICB9KSxcbiAgICAnJjpob3Zlcic6IF9leHRlbmRzKHtcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnlDaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWlufWAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuQnV0dG9uLmluaGVyaXRDb250YWluZWRIb3ZlckJnIDogaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s0XSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl0sXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZ3JleVszMDBdXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5kYXJrLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gICAgICB9XG4gICAgfSksXG4gICAgJyY6YWN0aXZlJzogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s4XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzZdXG4gICAgfSksXG4gICAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXTogX2V4dGVuZHMoe1xuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kfWBcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWQsXG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzBdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kXG4gICAgfSlcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICAgIHBhZGRpbmc6ICc2cHggOHB4J1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzVweCAxNXB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgY3VycmVudENvbG9yJ1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBib3JkZXI6IHRoZW1lLnZhcnMgPyBgMXB4IHNvbGlkIHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gMC41KWAgOiBgMXB4IHNvbGlkICR7YWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCAwLjUpfWBcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgY29sb3I6IHRoZW1lLnZhcnMgP1xuICAgIC8vIHRoaXMgaXMgc2FmZSBiZWNhdXNlIGdyZXkgZG9lcyBub3QgY2hhbmdlIGJldHdlZW4gZGVmYXVsdCBsaWdodC9kYXJrIG1vZGVcbiAgICB0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5IDogKF90aGVtZSRwYWxldHRlJGdldENvbiA9IChfdGhlbWUkcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUpLmdldENvbnRyYXN0VGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSRwYWxldHRlJGdldENvbi5jYWxsKF90aGVtZSRwYWxldHRlLCB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSksXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkQmcgOiBpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yLFxuICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl1cbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICBib3JkZXJDb2xvcjogJ2N1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDVweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDExcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICczcHggOXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnN3B4IDIxcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDEwcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDIycHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0pO1xufSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHtcbiAgYm94U2hhZG93OiAnbm9uZScsXG4gICcmOmhvdmVyJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfSxcbiAgJyY6YWN0aXZlJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9XG59KTtcbmNvbnN0IEJ1dHRvblN0YXJ0SWNvbiA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbicsXG4gIHNsb3Q6ICdTdGFydEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnN0YXJ0SWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiA4LFxuICBtYXJnaW5MZWZ0OiAtNFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luTGVmdDogLTJcbn0sIGNvbW1vbkljb25TdHlsZXMob3duZXJTdGF0ZSkpKTtcbmNvbnN0IEJ1dHRvbkVuZEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnRW5kSWNvbicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMuZW5kSWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiAtNCxcbiAgbWFyZ2luTGVmdDogOFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luUmlnaHQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIC8vIHByb3BzIHByaW9yaXR5OiBgaW5Qcm9wc2AgPiBgY29udGV4dFByb3BzYCA+IGB0aGVtZURlZmF1bHRQcm9wc2BcbiAgY29uc3QgY29udGV4dFByb3BzID0gUmVhY3QudXNlQ29udGV4dChCdXR0b25Hcm91cENvbnRleHQpO1xuICBjb25zdCByZXNvbHZlZFByb3BzID0gcmVzb2x2ZVByb3BzKGNvbnRleHRQcm9wcywgaW5Qcm9wcyk7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IHJlc29sdmVkUHJvcHMsXG4gICAgbmFtZTogJ011aUJ1dHRvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBjb21wb25lbnQgPSAnYnV0dG9uJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRWxldmF0aW9uID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGVuZEljb246IGVuZEljb25Qcm9wLFxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICBzaXplID0gJ21lZGl1bScsXG4gICAgICBzdGFydEljb246IHN0YXJ0SWNvblByb3AsXG4gICAgICB0eXBlLFxuICAgICAgdmFyaWFudCA9ICd0ZXh0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgY29tcG9uZW50LFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHR5cGUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBzdGFydEljb24gPSBzdGFydEljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvblN0YXJ0SWNvbiwge1xuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5zdGFydEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogc3RhcnRJY29uUHJvcFxuICB9KTtcbiAgY29uc3QgZW5kSWNvbiA9IGVuZEljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvbkVuZEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuZW5kSWNvbixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBlbmRJY29uUHJvcFxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhCdXR0b25Sb290LCBfZXh0ZW5kcyh7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjbGFzc05hbWU6IGNsc3goY29udGV4dFByb3BzLmNsYXNzTmFtZSwgY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5mb2N1c1Zpc2libGUsIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSksXG4gICAgcmVmOiByZWYsXG4gICAgdHlwZTogdHlwZVxuICB9LCBvdGhlciwge1xuICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgY2hpbGRyZW46IFtzdGFydEljb24sIGNoaWxkcmVuLCBlbmRJY29uXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnc3VjY2VzcycsICdlcnJvcicsICdpbmZvJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG5vIGVsZXZhdGlvbiBpcyB1c2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVsZXZhdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSAga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBFbGVtZW50IHBsYWNlZCBhZnRlciB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBlbmRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJ1dHRvbiB3aWxsIHRha2UgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIGxpbmsgdG8gd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIElmIGRlZmluZWQsIGFuIGBhYCBlbGVtZW50IHdpbGwgYmUgdXNlZCBhcyB0aGUgcm9vdCBub2RlLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIGBzbWFsbGAgaXMgZXF1aXZhbGVudCB0byB0aGUgZGVuc2UgYnV0dG9uIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIHN0YXJ0SWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICd0ZXh0J1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydjb250YWluZWQnLCAnb3V0bGluZWQnLCAndGV4dCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgQnV0dG9uR3JvdXBDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgQnV0dG9uR3JvdXBDb250ZXh0LmRpc3BsYXlOYW1lID0gJ0J1dHRvbkdyb3VwQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBCdXR0b25Hcm91cENvbnRleHQ7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVN2Z0ljb24nLCBzbG90KTtcbn1cbmNvbnN0IHN2Z0ljb25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpU3ZnSWNvbicsIFsncm9vdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JBY3Rpb24nLCAnY29sb3JFcnJvcicsICdjb2xvckRpc2FibGVkJywgJ2ZvbnRTaXplSW5oZXJpdCcsICdmb250U2l6ZVNtYWxsJywgJ2ZvbnRTaXplTWVkaXVtJywgJ2ZvbnRTaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBzdmdJY29uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiZm9udFNpemVcIiwgXCJodG1sQ29sb3JcIiwgXCJpbmhlcml0Vmlld0JveFwiLCBcInRpdGxlQWNjZXNzXCIsIFwidmlld0JveFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3N2Z0ljb25DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3IsXG4gICAgZm9udFNpemUsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgY29sb3IgIT09ICdpbmhlcml0JyAmJiBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBmb250U2l6ZSR7Y2FwaXRhbGl6ZShmb250U2l6ZSl9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRTdmdJY29uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBTdmdJY29uUm9vdCA9IHN0eWxlZCgnc3ZnJywge1xuICBuYW1lOiAnTXVpU3ZnSWNvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2Bmb250U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmZvbnRTaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkdHJhbnNpdGlvbnMsIF90aGVtZSR0cmFuc2l0aW9ucyRjciwgX3RoZW1lJHRyYW5zaXRpb25zMiwgX3RoZW1lJHR5cG9ncmFwaHksIF90aGVtZSR0eXBvZ3JhcGh5JHB4VCwgX3RoZW1lJHR5cG9ncmFwaHkyLCBfdGhlbWUkdHlwb2dyYXBoeTIkcHgsIF90aGVtZSR0eXBvZ3JhcGh5MywgX3RoZW1lJHR5cG9ncmFwaHkzJHB4LCBfcGFsZXR0ZSRvd25lclN0YXRlJGMsIF9wYWxldHRlLCBfcGFsZXR0ZTIsIF9wYWxldHRlMztcbiAgcmV0dXJuIHtcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgd2lkdGg6ICcxZW0nLFxuICAgIGhlaWdodDogJzFlbScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLy8gdGhlIDxzdmc+IHdpbGwgZGVmaW5lIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyBgY3VycmVudENvbG9yYFxuICAgIC8vIGUuZy4gaGVyb2ljb25zIHVzZXMgZmlsbD1cIm5vbmVcIiBhbmQgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICBmaWxsOiBvd25lclN0YXRlLmhhc1N2Z0FzQ2hpbGQgPyB1bmRlZmluZWQgOiAnY3VycmVudENvbG9yJyxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICAgIHRyYW5zaXRpb246IChfdGhlbWUkdHJhbnNpdGlvbnMgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zJGNyID0gX3RoZW1lJHRyYW5zaXRpb25zLmNyZWF0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9ucyRjci5jYWxsKF90aGVtZSR0cmFuc2l0aW9ucywgJ2ZpbGwnLCB7XG4gICAgICBkdXJhdGlvbjogKF90aGVtZSR0cmFuc2l0aW9uczIgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IF90aGVtZSR0cmFuc2l0aW9uczIuZHVyYXRpb24pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHJhbnNpdGlvbnMyLnNob3J0ZXJcbiAgICB9KSxcbiAgICBmb250U2l6ZToge1xuICAgICAgaW5oZXJpdDogJ2luaGVyaXQnLFxuICAgICAgc21hbGw6ICgoX3RoZW1lJHR5cG9ncmFwaHkgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeSRweFQgPSBfdGhlbWUkdHlwb2dyYXBoeS5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkkcHhULmNhbGwoX3RoZW1lJHR5cG9ncmFwaHksIDIwKSkgfHwgJzEuMjVyZW0nLFxuICAgICAgbWVkaXVtOiAoKF90aGVtZSR0eXBvZ3JhcGh5MiA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5MiRweCA9IF90aGVtZSR0eXBvZ3JhcGh5Mi5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkyJHB4LmNhbGwoX3RoZW1lJHR5cG9ncmFwaHkyLCAyNCkpIHx8ICcxLjVyZW0nLFxuICAgICAgbGFyZ2U6ICgoX3RoZW1lJHR5cG9ncmFwaHkzID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkzJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkzLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTMkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTMsIDM1KSkgfHwgJzIuMTg3NXJlbSdcbiAgICB9W293bmVyU3RhdGUuZm9udFNpemVdLFxuICAgIC8vIFRPRE8gdjUgZGVwcmVjYXRlLCB2NiByZW1vdmUgZm9yIHN4XG4gICAgY29sb3I6IChfcGFsZXR0ZSRvd25lclN0YXRlJGMgPSAoX3BhbGV0dGUgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUgPSBfcGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlLm1haW4pICE9IG51bGwgPyBfcGFsZXR0ZSRvd25lclN0YXRlJGMgOiB7XG4gICAgICBhY3Rpb246IChfcGFsZXR0ZTIgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUyID0gX3BhbGV0dGUyLmFjdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlMi5hY3RpdmUsXG4gICAgICBkaXNhYmxlZDogKF9wYWxldHRlMyA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTMgPSBfcGFsZXR0ZTMuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUzLmRpc2FibGVkLFxuICAgICAgaW5oZXJpdDogdW5kZWZpbmVkXG4gICAgfVtvd25lclN0YXRlLmNvbG9yXVxuICB9O1xufSk7XG5jb25zdCBTdmdJY29uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gU3ZnSWNvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpU3ZnSWNvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAnaW5oZXJpdCcsXG4gICAgICBjb21wb25lbnQgPSAnc3ZnJyxcbiAgICAgIGZvbnRTaXplID0gJ21lZGl1bScsXG4gICAgICBodG1sQ29sb3IsXG4gICAgICBpbmhlcml0Vmlld0JveCA9IGZhbHNlLFxuICAgICAgdGl0bGVBY2Nlc3MsXG4gICAgICB2aWV3Qm94ID0gJzAgMCAyNCAyNCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgaGFzU3ZnQXNDaGlsZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiYgY2hpbGRyZW4udHlwZSA9PT0gJ3N2Zyc7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZm9udFNpemUsXG4gICAgaW5zdGFuY2VGb250U2l6ZTogaW5Qcm9wcy5mb250U2l6ZSxcbiAgICBpbmhlcml0Vmlld0JveCxcbiAgICB2aWV3Qm94LFxuICAgIGhhc1N2Z0FzQ2hpbGRcbiAgfSk7XG4gIGNvbnN0IG1vcmUgPSB7fTtcbiAgaWYgKCFpbmhlcml0Vmlld0JveCkge1xuICAgIG1vcmUudmlld0JveCA9IHZpZXdCb3g7XG4gIH1cbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFN2Z0ljb25Sb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNvbG9yOiBodG1sQ29sb3IsXG4gICAgXCJhcmlhLWhpZGRlblwiOiB0aXRsZUFjY2VzcyA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgcm9sZTogdGl0bGVBY2Nlc3MgPyAnaW1nJyA6IHVuZGVmaW5lZCxcbiAgICByZWY6IHJlZlxuICB9LCBtb3JlLCBvdGhlciwgaGFzU3ZnQXNDaGlsZCAmJiBjaGlsZHJlbi5wcm9wcywge1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IFtoYXNTdmdBc0NoaWxkID8gY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4gOiBjaGlsZHJlbiwgdGl0bGVBY2Nlc3MgPyAvKiNfX1BVUkVfXyovX2pzeChcInRpdGxlXCIsIHtcbiAgICAgIGNoaWxkcmVuOiB0aXRsZUFjY2Vzc1xuICAgIH0pIDogbnVsbF1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBTdmdJY29uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIE5vZGUgcGFzc2VkIGludG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgYGh0bWxDb2xvcmAgcHJvcCB0byBhcHBseSBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdpbmhlcml0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdhY3Rpb24nLCAnZGlzYWJsZWQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGZvbnRTaXplIGFwcGxpZWQgdG8gdGhlIGljb24uIERlZmF1bHRzIHRvIDI0cHgsIGJ1dCBjYW4gYmUgY29uZmlndXJlIHRvIGluaGVyaXQgZm9udCBzaXplLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgZm9udFNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdsYXJnZScsICdtZWRpdW0nLCAnc21hbGwnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgYSBjb2xvciBhdHRyaWJ1dGUgdG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgaHRtbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcm9vdCBub2RlIHdpbGwgaW5oZXJpdCB0aGUgY3VzdG9tIGBjb21wb25lbnRgJ3Mgdmlld0JveCBhbmQgdGhlIGB2aWV3Qm94YFxuICAgKiBwcm9wIHdpbGwgYmUgaWdub3JlZC5cbiAgICogVXNlZnVsIHdoZW4geW91IHdhbnQgdG8gcmVmZXJlbmNlIGEgY3VzdG9tIGBjb21wb25lbnRgIGFuZCBoYXZlIGBTdmdJY29uYCBwYXNzIHRoYXRcbiAgICogYGNvbXBvbmVudGAncyB2aWV3Qm94IHRvIHRoZSByb290IG5vZGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmhlcml0Vmlld0JveDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc2hhcGUtcmVuZGVyaW5nIGF0dHJpYnV0ZS4gVGhlIGJlaGF2aW9yIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBpcyBkZXNjcmliZWQgb24gdGhlXG4gICAqIFtNRE4gV2ViIERvY3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc2hhcGUtcmVuZGVyaW5nKS5cbiAgICogSWYgeW91IGFyZSBoYXZpbmcgaXNzdWVzIHdpdGggYmx1cnJ5IGljb25zIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgdGhpcyBwcm9wLlxuICAgKi9cbiAgc2hhcGVSZW5kZXJpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIGh1bWFuLXJlYWRhYmxlIHRpdGxlIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIGl0LlxuICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHLWFjY2Vzcy8jRXF1aXZhbGVudFxuICAgKi9cbiAgdGl0bGVBY2Nlc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIHJlZGVmaW5lIHdoYXQgdGhlIGNvb3JkaW5hdGVzIHdpdGhvdXQgdW5pdHMgbWVhbiBpbnNpZGUgYW4gU1ZHIGVsZW1lbnQuXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGUgU1ZHIGVsZW1lbnQgaXMgNTAwICh3aWR0aCkgYnkgMjAwIChoZWlnaHQpLFxuICAgKiBhbmQgeW91IHBhc3Mgdmlld0JveD1cIjAgMCA1MCAyMFwiLFxuICAgKiB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvb3JkaW5hdGVzIGluc2lkZSB0aGUgU1ZHIHdpbGwgZ28gZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyICgwLDApXG4gICAqIHRvIGJvdHRvbSByaWdodCAoNTAsMjApIGFuZCBlYWNoIHVuaXQgd2lsbCBiZSB3b3J0aCAxMHB4LlxuICAgKiBAZGVmYXVsdCAnMCAwIDI0IDI0J1xuICAgKi9cbiAgdmlld0JveDogUHJvcFR5cGVzLnN0cmluZ1xufSA6IHZvaWQgMDtcblN2Z0ljb24ubXVpTmFtZSA9ICdTdmdJY29uJztcbmV4cG9ydCBkZWZhdWx0IFN2Z0ljb247IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTdmdJY29uIGZyb20gJy4uL1N2Z0ljb24nO1xuXG4vKipcbiAqIFByaXZhdGUgbW9kdWxlIHJlc2VydmVkIGZvciBAbXVpIHBhY2thZ2VzLlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3ZnSWNvbihwYXRoLCBkaXNwbGF5TmFtZSkge1xuICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIHJlZikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTdmdJY29uLCBfZXh0ZW5kcyh7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IGAke2Rpc3BsYXlOYW1lfUljb25gLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcywge1xuICAgICAgY2hpbGRyZW46IHBhdGhcbiAgICB9KSk7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBOZWVkIHRvIHNldCBgZGlzcGxheU5hbWVgIG9uIHRoZSBpbm5lciBjb21wb25lbnQgZm9yIFJlYWN0Lm1lbW8uXG4gICAgLy8gUmVhY3QgcHJpb3IgdG8gMTYuMTQgaWdub3JlcyBgZGlzcGxheU5hbWVgIG9uIHRoZSB3cmFwcGVyLlxuICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2Rpc3BsYXlOYW1lfUljb25gO1xuICB9XG4gIENvbXBvbmVudC5tdWlOYW1lID0gU3ZnSWNvbi5tdWlOYW1lO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oIC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENvbXBvbmVudCkpO1xufSIsImltcG9ydCB7IHVuc3RhYmxlX2RlYm91bmNlIGFzIGRlYm91bmNlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZWJvdW5jZTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9jcmVhdGVDaGFpbmVkRnVuY3Rpb24gYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVDaGFpbmVkRnVuY3Rpb247IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVwcmVjYXRlZFByb3BUeXBlIGFzIGRlcHJlY2F0ZWRQcm9wVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlZFByb3BUeXBlOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlcHJlY2F0ZWRQcm9wVHlwZSh2YWxpZGF0b3IsIHJlYXNvbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG4gIHJldHVybiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50TmFtZVNhZmUgPSBjb21wb25lbnROYW1lIHx8ICc8PGFub255bW91cz4+JztcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlICR7bG9jYXRpb259IFxcYCR7cHJvcEZ1bGxOYW1lU2FmZX1cXGAgb2YgYCArIGBcXGAke2NvbXBvbmVudE5hbWVTYWZlfVxcYCBpcyBkZXByZWNhdGVkLiAke3JlYXNvbn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfcmVxdWlyZVByb3BGYWN0b3J5IGFzIHJlcXVpcmVQcm9wRmFjdG9yeSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgcmVxdWlyZVByb3BGYWN0b3J5OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVxdWlyZVByb3BGYWN0b3J5KGNvbXBvbmVudE5hbWVJbkVycm9yLCBDb21wb25lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mb3JiaWQtZm9yZWlnbi1wcm9wLXR5cGVzXG4gIGNvbnN0IHByZXZQcm9wVHlwZXMgPSBDb21wb25lbnQgPyBfZXh0ZW5kcyh7fSwgQ29tcG9uZW50LnByb3BUeXBlcykgOiBudWxsO1xuICBjb25zdCByZXF1aXJlUHJvcCA9IHJlcXVpcmVkUHJvcCA9PiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKSA9PiB7XG4gICAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgICBjb25zdCBkZWZhdWx0VHlwZUNoZWNrZXIgPSBwcmV2UHJvcFR5cGVzID09IG51bGwgPyB2b2lkIDAgOiBwcmV2UHJvcFR5cGVzW3Byb3BGdWxsTmFtZVNhZmVdO1xuICAgIGlmIChkZWZhdWx0VHlwZUNoZWNrZXIpIHtcbiAgICAgIGNvbnN0IHR5cGVDaGVja2VyUmVzdWx0ID0gZGVmYXVsdFR5cGVDaGVja2VyKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgLi4uYXJncyk7XG4gICAgICBpZiAodHlwZUNoZWNrZXJSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVDaGVja2VyUmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb3BzW3Byb3BOYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiYgIXByb3BzW3JlcXVpcmVkUHJvcF0pIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoYFRoZSBwcm9wIFxcYCR7cHJvcEZ1bGxOYW1lU2FmZX1cXGAgb2YgYCArIGBcXGAke2NvbXBvbmVudE5hbWVJbkVycm9yfVxcYCBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIFxcYCR7cmVxdWlyZWRQcm9wfVxcYCBwcm9wLmApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgcmV0dXJuIHJlcXVpcmVQcm9wO1xufSIsImltcG9ydCB7IHVuc3RhYmxlX3NldFJlZiBhcyBzZXRSZWYgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHNldFJlZjsiLCJpbXBvcnQgeyB1bnN0YWJsZV91bnN1cHBvcnRlZFByb3AgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1bnN1cHBvcnRlZFByb3A7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5zdXBwb3J0ZWRQcm9wKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBuZXcgRXJyb3IoYFRoZSBwcm9wIFxcYCR7cHJvcEZ1bGxOYW1lU2FmZX1cXGAgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHJlbW92ZSBpdC5gKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciBhcyBDbGFzc05hbWVHZW5lcmF0b3IgfSBmcm9tICdAbXVpL2Jhc2UvY2xhc3NOYW1lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2FwaXRhbGl6ZSB9IGZyb20gJy4vY2FwaXRhbGl6ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiB9IGZyb20gJy4vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlU3ZnSWNvbiB9IGZyb20gJy4vY3JlYXRlU3ZnSWNvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlYm91bmNlIH0gZnJvbSAnLi9kZWJvdW5jZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlcHJlY2F0ZWRQcm9wVHlwZSB9IGZyb20gJy4vZGVwcmVjYXRlZFByb3BUeXBlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNNdWlFbGVtZW50IH0gZnJvbSAnLi9pc011aUVsZW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnLi9vd25lckRvY3VtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3duZXJXaW5kb3cgfSBmcm9tICcuL293bmVyV2luZG93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnLi9yZXF1aXJlUHJvcEZhY3RvcnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRSZWYgfSBmcm9tICcuL3NldFJlZic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IH0gZnJvbSAnLi91c2VFbmhhbmNlZEVmZmVjdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc3RhYmxlX3VzZUlkIH0gZnJvbSAnLi91c2VJZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc3VwcG9ydGVkUHJvcCB9IGZyb20gJy4vdW5zdXBwb3J0ZWRQcm9wJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJy4vdXNlQ29udHJvbGxlZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICcuL3VzZUV2ZW50Q2FsbGJhY2snO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VGb3JrUmVmIH0gZnJvbSAnLi91c2VGb3JrUmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlSXNGb2N1c1Zpc2libGUgfSBmcm9tICcuL3VzZUlzRm9jdXNWaXNpYmxlJztcbi8vIFRPRE86IHJlbW92ZSB0aGlzIGV4cG9ydCBvbmNlIENsYXNzTmFtZUdlbmVyYXRvciBpcyBzdGFibGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IgPSB7XG4gIGNvbmZpZ3VyZTogZ2VuZXJhdG9yID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKFsnTVVJOiBgQ2xhc3NOYW1lR2VuZXJhdG9yYCBpbXBvcnQgZnJvbSBgQG11aS9tYXRlcmlhbC91dGlsc2AgaXMgb3V0ZGF0ZWQgYW5kIG1pZ2h0IGNhdXNlIHVuZXhwZWN0ZWQgaXNzdWVzLicsICcnLCBcIllvdSBzaG91bGQgdXNlIGBpbXBvcnQgeyB1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IgfSBmcm9tICdAbXVpL21hdGVyaWFsL2NsYXNzTmFtZSdgIGluc3RlYWRcIiwgJycsICdUaGUgZGV0YWlsIG9mIHRoZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvMzAwMTEjaXNzdWVjb21tZW50LTEwMjQ5OTM0MDEnLCAnJywgJ1RoZSB1cGRhdGVkIGRvY3VtZW50YXRpb246IGh0dHBzOi8vbXVpLmNvbS9ndWlkZXMvY2xhc3NuYW1lLWdlbmVyYXRvci8nXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIENsYXNzTmFtZUdlbmVyYXRvci5jb25maWd1cmUoZ2VuZXJhdG9yKTtcbiAgfVxufTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9pc011aUVsZW1lbnQgYXMgaXNNdWlFbGVtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBpc011aUVsZW1lbnQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNNdWlFbGVtZW50KGVsZW1lbnQsIG11aU5hbWVzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoZWxlbWVudCkgJiYgbXVpTmFtZXMuaW5kZXhPZihlbGVtZW50LnR5cGUubXVpTmFtZSkgIT09IC0xO1xufSIsImltcG9ydCB7IHVuc3RhYmxlX293bmVyRG9jdW1lbnQgYXMgb3duZXJEb2N1bWVudCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgb3duZXJEb2N1bWVudDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9vd25lcldpbmRvdyBhcyBvd25lcldpbmRvdyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgb3duZXJXaW5kb3c7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VDb250cm9sbGVkIGFzIHVzZUNvbnRyb2xsZWQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUNvbnRyb2xsZWQ7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VFbmhhbmNlZEVmZmVjdCBhcyB1c2VFbmhhbmNlZEVmZmVjdCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRW5oYW5jZWRFZmZlY3Q7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VJZCBhcyB1c2VJZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlSWQ7IiwiLyoqXG4gKiBTYWZlIGNoYWluZWQgZnVuY3Rpb24uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiguLi5mdW5jcykge1xuICByZXR1cm4gZnVuY3MucmVkdWNlKChhY2MsIGZ1bmMpID0+IHtcbiAgICBpZiAoZnVuYyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgIGFjYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfSwgKCkgPT4ge30pO1xufSIsIi8vIENvcnJlc3BvbmRzIHRvIDEwIGZyYW1lcyBhdCA2MCBIei5cbi8vIEEgZmV3IGJ5dGVzIHBheWxvYWQgb3ZlcmhlYWQgd2hlbiBsb2Rhc2gvZGVib3VuY2UgaXMgfjMga0IgYW5kIGRlYm91bmNlIH4zMDAgQi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQgPSAxNjYpIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIGZ1bmN0aW9uIGRlYm91bmNlZCguLi5hcmdzKSB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgfVxuICBkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9O1xuICByZXR1cm4gZGVib3VuY2VkO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSIsIid1c2UgY2xpZW50JztcblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MsIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29udHJvbGxlZCh7XG4gIGNvbnRyb2xsZWQsXG4gIGRlZmF1bHQ6IGRlZmF1bHRQcm9wLFxuICBuYW1lLFxuICBzdGF0ZSA9ICd2YWx1ZSdcbn0pIHtcbiAgLy8gaXNDb250cm9sbGVkIGlzIGlnbm9yZWQgaW4gdGhlIGhvb2sgZGVwZW5kZW5jeSBsaXN0cyBhcyBpdCBzaG91bGQgbmV2ZXIgY2hhbmdlLlxuICBjb25zdCB7XG4gICAgY3VycmVudDogaXNDb250cm9sbGVkXG4gIH0gPSBSZWFjdC51c2VSZWYoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgW3ZhbHVlU3RhdGUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgY29uc3QgdmFsdWUgPSBpc0NvbnRyb2xsZWQgPyBjb250cm9sbGVkIDogdmFsdWVTdGF0ZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCAhPT0gKGNvbnRyb2xsZWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogQSBjb21wb25lbnQgaXMgY2hhbmdpbmcgdGhlICR7aXNDb250cm9sbGVkID8gJycgOiAndW4nfWNvbnRyb2xsZWQgJHtzdGF0ZX0gc3RhdGUgb2YgJHtuYW1lfSB0byBiZSAke2lzQ29udHJvbGxlZCA/ICd1bicgOiAnJ31jb250cm9sbGVkLmAsICdFbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4nLCBgRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAke25hbWV9IGAgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuJywgXCJUaGUgbmF0dXJlIG9mIHRoZSBzdGF0ZSBpcyBkZXRlcm1pbmVkIGR1cmluZyB0aGUgZmlyc3QgcmVuZGVyLiBJdCdzIGNvbnNpZGVyZWQgY29udHJvbGxlZCBpZiB0aGUgdmFsdWUgaXMgbm90IGB1bmRlZmluZWRgLlwiLCAnTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cyddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbc3RhdGUsIG5hbWUsIGNvbnRyb2xsZWRdKTtcbiAgICBjb25zdCB7XG4gICAgICBjdXJyZW50OiBkZWZhdWx0VmFsdWVcbiAgICB9ID0gUmVhY3QudXNlUmVmKGRlZmF1bHRQcm9wKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFpc0NvbnRyb2xsZWQgJiYgZGVmYXVsdFZhbHVlICE9PSBkZWZhdWx0UHJvcCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgZGVmYXVsdCAke3N0YXRlfSBzdGF0ZSBvZiBhbiB1bmNvbnRyb2xsZWQgJHtuYW1lfSBhZnRlciBiZWluZyBpbml0aWFsaXplZC4gYCArIGBUbyBzdXBwcmVzcyB0aGlzIHdhcm5pbmcgb3B0IHRvIHVzZSBhIGNvbnRyb2xsZWQgJHtuYW1lfS5gXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfSwgW0pTT04uc3RyaW5naWZ5KGRlZmF1bHRQcm9wKV0pO1xuICB9XG4gIGNvbnN0IHNldFZhbHVlSWZVbmNvbnRyb2xsZWQgPSBSZWFjdC51c2VDYWxsYmFjayhuZXdWYWx1ZSA9PiB7XG4gICAgaWYgKCFpc0NvbnRyb2xsZWQpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVJZlVuY29udHJvbGxlZF07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5sZXQgZ2xvYmFsSWQgPSAwO1xuZnVuY3Rpb24gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSkge1xuICBjb25zdCBbZGVmYXVsdElkLCBzZXREZWZhdWx0SWRdID0gUmVhY3QudXNlU3RhdGUoaWRPdmVycmlkZSk7XG4gIGNvbnN0IGlkID0gaWRPdmVycmlkZSB8fCBkZWZhdWx0SWQ7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRJZCA9PSBudWxsKSB7XG4gICAgICAvLyBGYWxsYmFjayB0byB0aGlzIGRlZmF1bHQgaWQgd2hlbiBwb3NzaWJsZS5cbiAgICAgIC8vIFVzZSB0aGUgaW5jcmVtZW50aW5nIHZhbHVlIGZvciBjbGllbnQtc2lkZSByZW5kZXJpbmcgb25seS5cbiAgICAgIC8vIFdlIGNhbid0IHVzZSBpdCBzZXJ2ZXItc2lkZS5cbiAgICAgIC8vIElmIHlvdSB3YW50IHRvIHVzZSByYW5kb20gdmFsdWVzIHBsZWFzZSBjb25zaWRlciB0aGUgQmlydGhkYXkgUHJvYmxlbTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlydGhkYXlfcHJvYmxlbVxuICAgICAgZ2xvYmFsSWQgKz0gMTtcbiAgICAgIHNldERlZmF1bHRJZChgbXVpLSR7Z2xvYmFsSWR9YCk7XG4gICAgfVxuICB9LCBbZGVmYXVsdElkXSk7XG4gIHJldHVybiBpZDtcbn1cblxuLy8gZG93bnN0cmVhbSBidW5kbGVycyBtYXkgcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbmNhdGVuYXRpb24sIGJ1dCB3b24ndCByZW1vdmUgdG9TdHJpbmcgY2FsbCAtLSBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2lzc3Vlcy8xNDgxNFxuY29uc3QgbWF5YmVSZWFjdFVzZUlkID0gUmVhY3RbJ3VzZUlkJy50b1N0cmluZygpXTtcbi8qKlxuICpcbiAqIEBleGFtcGxlIDxkaXYgaWQ9e3VzZUlkKCl9IC8+XG4gKiBAcGFyYW0gaWRPdmVycmlkZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSWQoaWRPdmVycmlkZSkge1xuICBpZiAobWF5YmVSZWFjdFVzZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZWFjdElkID0gbWF5YmVSZWFjdFVzZUlkKCk7XG4gICAgcmV0dXJuIGlkT3ZlcnJpZGUgIT0gbnVsbCA/IGlkT3ZlcnJpZGUgOiByZWFjdElkO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcyAtLSBgUmVhY3QudXNlSWRgIGlzIGludmFyaWFudCBhdCBydW50aW1lLlxuICByZXR1cm4gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSk7XG59IiwiaW1wb3J0IENsb3VkVXBsb2FkT3V0bGluZWRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3VkVXBsb2FkT3V0bGluZWRcIjtcclxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuXHJcbmNvbnN0IExvYWRGaWxlQnV0dG9uID0gKHByb3BzKSA9PiB7XHJcbiAgY29uc3QgbG9hZEZpbGUgPSAoZXZlbnQpID0+IHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB2YXIgZnIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgZnIub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5Db2RlRWRpdG9yLnNldENvZGUoZnIucmVzdWx0KTtcclxuICAgIH07XHJcbiAgICBmci5yZWFkQXNUZXh0KGV2ZW50LnRhcmdldC5maWxlc1swXSk7XHJcbiAgfTtcclxuICByZXR1cm4gKFxyXG4gICAgPEJ1dHRvblxyXG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcclxuICAgICAgc3g9e3sgbTogMSB9fVxyXG4gICAgICBjb2xvcj17XCJzZWNvbmRhcnlcIn1cclxuICAgICAgc3RhcnRJY29uPXs8Q2xvdWRVcGxvYWRPdXRsaW5lZEljb24gLz59XHJcbiAgICAgIGNvbXBvbmVudD1cImxhYmVsXCJcclxuICAgID5cclxuICAgICAgTG9hZCBmaWxlXHJcbiAgICAgIDxpbnB1dCBoaWRkZW4gYWNjZXB0PVwiLnB5XCIgdHlwZT1cImZpbGVcIiBvbkNoYW5nZT17bG9hZEZpbGV9IC8+XHJcbiAgICA8L0J1dHRvbj5cclxuICApO1xyXG59O1xyXG5cclxuTG9hZEZpbGVCdXR0b24ucHJvcFR5cGVzID0ge1xyXG4gIGNvbnRleHQ6IFByb3BUeXBlcy5hbnksXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBMb2FkRmlsZUJ1dHRvbjtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHtcbiAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHtcbiAgICBcImRlZmF1bHRcIjogZVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm5hbWVzIjpbIkdsb2JhbCIsInciLCJwcm9wcyIsImNhY2hlIiwic3R5bGVzIiwic2VyaWFsaXplZCIsInVuZGVmaW5lZCIsIlQiLCJpIiwiX3JlZiIsInNlcmlhbGl6ZWROYW1lcyIsIm5hbWUiLCJzZXJpYWxpemVkU3R5bGVzIiwibmV4dCIsInNob3VsZENhY2hlIiwiY29tcGF0IiwicnVsZXMiLCJpbnNlcnQiLCJzaGVldCIsImtleSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibm9uY2UiLCJzaGVldFJlZiIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwic3BlZWR5IiwiaXNTcGVlZHkiLCJyZWh5ZHJhdGluZyIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0YWdzIiwibGVuZ3RoIiwiYmVmb3JlIiwic2V0QXR0cmlidXRlIiwiaHlkcmF0ZSIsImN1cnJlbnQiLCJmbHVzaCIsInNoZWV0UmVmQ3VycmVudCIsImVsZW1lbnQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJjc3MiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImtleWZyYW1lcyIsImluc2VydGFibGUiLCJhcHBseSIsImFuaW0iLCJ0b1N0cmluZyIsInRoaXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfdXRpbHMiLCJjcmVhdGVTdmdJY29uIiwiZ2V0QnV0dG9uVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsImNvbW1vbkljb25TdHlsZXMiLCJvd25lclN0YXRlIiwic2l6ZSIsImZvbnRTaXplIiwiQnV0dG9uUm9vdCIsInN0eWxlZCIsIkJ1dHRvbkJhc2UiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJvdmVycmlkZXNSZXNvbHZlciIsInJvb3QiLCJ2YXJpYW50IiwiY2FwaXRhbGl6ZSIsImNvbG9yIiwiY29sb3JJbmhlcml0IiwiZGlzYWJsZUVsZXZhdGlvbiIsImZ1bGxXaWR0aCIsInRoZW1lIiwiX3RoZW1lJHBhbGV0dGUkZ2V0Q29uIiwiX3RoZW1lJHBhbGV0dGUiLCJpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yIiwicGFsZXR0ZSIsIm1vZGUiLCJncmV5IiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yIiwiQTEwMCIsInR5cG9ncmFwaHkiLCJidXR0b24iLCJtaW5XaWR0aCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJ2YXJzIiwic2hhcGUiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0IiwidGV4dERlY29yYXRpb24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0ZXh0IiwicHJpbWFyeUNoYW5uZWwiLCJhY3Rpb24iLCJob3Zlck9wYWNpdHkiLCJwcmltYXJ5IiwibWFpbkNoYW5uZWwiLCJtYWluIiwiYm9yZGVyIiwiQnV0dG9uIiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmciLCJib3hTaGFkb3ciLCJzaGFkb3dzIiwiZGFyayIsImZvY3VzVmlzaWJsZSIsImRpc2FibGVkIiwiZGlzYWJsZWRCYWNrZ3JvdW5kIiwiZ2V0Q29udHJhc3RUZXh0IiwiY2FsbCIsImluaGVyaXRDb250YWluZWRCZyIsImNvbnRyYXN0VGV4dCIsImJvcmRlckNvbG9yIiwicHhUb1JlbSIsIndpZHRoIiwiQnV0dG9uU3RhcnRJY29uIiwic3RhcnRJY29uIiwiZGlzcGxheSIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIkJ1dHRvbkVuZEljb24iLCJlbmRJY29uIiwiaW5Qcm9wcyIsInJlZiIsImNvbnRleHRQcm9wcyIsIkJ1dHRvbkdyb3VwQ29udGV4dCIsInJlc29sdmVkUHJvcHMiLCJyZXNvbHZlUHJvcHMiLCJ1c2VUaGVtZVByb3BzIiwiY2hpbGRyZW4iLCJjb21wb25lbnQiLCJjbGFzc05hbWUiLCJkaXNhYmxlRm9jdXNSaXBwbGUiLCJlbmRJY29uUHJvcCIsImZvY3VzVmlzaWJsZUNsYXNzTmFtZSIsInN0YXJ0SWNvblByb3AiLCJ0eXBlIiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJsYWJlbCIsImNvbXBvc2VkQ2xhc3NlcyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJmb2N1c1JpcHBsZSIsImdldFN2Z0ljb25VdGlsaXR5Q2xhc3MiLCJTdmdJY29uUm9vdCIsIl90aGVtZSR0cmFuc2l0aW9ucyIsIl90aGVtZSR0cmFuc2l0aW9ucyRjciIsIl90aGVtZSR0cmFuc2l0aW9uczIiLCJfdGhlbWUkdHlwb2dyYXBoeSIsIl90aGVtZSR0eXBvZ3JhcGh5JHB4VCIsIl90aGVtZSR0eXBvZ3JhcGh5MiIsIl90aGVtZSR0eXBvZ3JhcGh5MiRweCIsIl90aGVtZSR0eXBvZ3JhcGh5MyIsIl90aGVtZSR0eXBvZ3JhcGh5MyRweCIsIl9wYWxldHRlJG93bmVyU3RhdGUkYyIsIl9wYWxldHRlIiwiX3BhbGV0dGUyIiwiX3BhbGV0dGUzIiwidXNlclNlbGVjdCIsImhlaWdodCIsImZpbGwiLCJoYXNTdmdBc0NoaWxkIiwiZmxleFNocmluayIsInNob3J0ZXIiLCJpbmhlcml0Iiwic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsImFjdGl2ZSIsIlN2Z0ljb24iLCJodG1sQ29sb3IiLCJpbmhlcml0Vmlld0JveCIsInRpdGxlQWNjZXNzIiwidmlld0JveCIsImluc3RhbmNlRm9udFNpemUiLCJtb3JlIiwiYXMiLCJmb2N1c2FibGUiLCJyb2xlIiwibXVpTmFtZSIsInBhdGgiLCJkaXNwbGF5TmFtZSIsIkNvbXBvbmVudCIsInZhbGlkYXRvciIsInJlYXNvbiIsImNvbXBvbmVudE5hbWVJbkVycm9yIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJ1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IiLCJjb25maWd1cmUiLCJnZW5lcmF0b3IiLCJDbGFzc05hbWVHZW5lcmF0b3IiLCJtdWlOYW1lcyIsImluZGV4T2YiLCJjcmVhdGVDaGFpbmVkRnVuY3Rpb24iLCJmdW5jcyIsInJlZHVjZSIsImFjYyIsImZ1bmMiLCJkZWJvdW5jZSIsIndhaXQiLCJ0aW1lb3V0IiwiZGVib3VuY2VkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyIiwib3duZXJEb2N1bWVudCIsIm93bmVyV2luZG93IiwiZGVmYXVsdFZpZXciLCJ3aW5kb3ciLCJ1c2VDb250cm9sbGVkIiwiY29udHJvbGxlZCIsImRlZmF1bHRQcm9wIiwic3RhdGUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZVN0YXRlIiwic2V0VmFsdWUiLCJuZXdWYWx1ZSIsImdsb2JhbElkIiwibWF5YmVSZWFjdFVzZUlkIiwidXNlSWQiLCJpZE92ZXJyaWRlIiwicmVhY3RJZCIsImRlZmF1bHRJZCIsInNldERlZmF1bHRJZCIsImlkIiwidXNlR2xvYmFsSWQiLCJMb2FkRmlsZUJ1dHRvbiIsIl9qc3hzIiwic3giLCJtIiwiX2pzeCIsIkNsb3VkVXBsb2FkT3V0bGluZWRJY29uIiwiaGlkZGVuIiwiYWNjZXB0Iiwib25DaGFuZ2UiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiZnIiLCJGaWxlUmVhZGVyIiwib25sb2FkIiwiUm9ib3RpY3NSZWFjdENvbXBvbmVudHMiLCJDb2RlRWRpdG9yIiwic2V0Q29kZSIsInJlc3VsdCIsInJlYWRBc1RleHQiLCJ0YXJnZXQiLCJmaWxlcyIsInByb3BUeXBlcyIsImNvbnRleHQiLCJQcm9wVHlwZXMiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJzaGltIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZSIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2394.545b018d.js b/react_frontend/static/react_frontend/js/2394.545b018d.js new file mode 100644 index 000000000..010362476 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2394.545b018d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2394],{2394:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2425.cd2eccbc.js b/react_frontend/static/react_frontend/js/2425.cd2eccbc.js new file mode 100644 index 000000000..35522a0ae --- /dev/null +++ b/react_frontend/static/react_frontend/js/2425.cd2eccbc.js @@ -0,0 +1,3 @@ +/*! For license information please see 2425.cd2eccbc.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2425],{2425:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>c});var n=t(6540),o=t(5556),a=t.n(o),i=t(4848);function u(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t{"use strict";var n=t(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,r,t,o,a,i){if(i!==n){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function r(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:r,element:e,elementType:e,instanceOf:r,node:e,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:a,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,r,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,r,t)=>{"use strict";var n=t(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,u=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,a={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)i.call(r,n)&&!s.hasOwnProperty(n)&&(a[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===a[n]&&(a[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:a,_owner:u.current}}r.Fragment=a,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{"use strict";e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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K0JDUHhXbEQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvdmlld3MvVGhlb3J5Vmlldy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5cclxuY29uc3QgVGhlb3J5VmlldyA9IChwcm9wcykgPT4ge1xyXG4gIGNvbnN0IHRoZW9yeVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcclxuICBjb25zdCBbaUZyYW1lSGVpZ2h0LCBzZXRJZnJhbWVIZWlnaHRdID0gUmVhY3QudXNlU3RhdGUoXCIxMDAwcHhcIik7XHJcbiAgY29uc3QgbG9hZElmcmFtZUhlaWdodCA9ICgpID0+IHtcclxuICAgIHNldElmcmFtZUhlaWdodChcclxuICAgICAgdGhlb3J5UmVmLmN1cnJlbnQuY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCArIFwicHhcIlxyXG4gICAgKTtcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8aWZyYW1lXHJcbiAgICAgIHNyYz17cHJvcHMudXJsfVxyXG4gICAgICBpZD1cInRoZW9yeS12aWV3XCJcclxuICAgICAgd2lkdGg9e1wiMTAwJVwifVxyXG4gICAgICByZWY9e3RoZW9yeVJlZn1cclxuICAgICAgaGVpZ2h0PXtpRnJhbWVIZWlnaHR9XHJcbiAgICAgIG9uTG9hZD17bG9hZElmcmFtZUhlaWdodH1cclxuICAgICAgc3R5bGU9e3tcclxuICAgICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgICAgb3ZlcmZsb3c6IFwiYXV0b1wiLFxyXG4gICAgICB9fVxyXG4gICAgLz5cclxuICApO1xyXG59O1xyXG5UaGVvcnlWaWV3LnByb3BUeXBlcyA9IHtcclxuICB1cmw6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBUaGVvcnlWaWV3O1xyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJUaGVvcnlWaWV3IiwicHJvcHMiLCJ0aGVvcnlSZWYiLCJSZWFjdCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJpRnJhbWVIZWlnaHQiLCJzZXRJZnJhbWVIZWlnaHQiLCJfanN4Iiwic3JjIiwidXJsIiwiaWQiLCJ3aWR0aCIsInJlZiIsImhlaWdodCIsIm9uTG9hZCIsImN1cnJlbnQiLCJjb250ZW50V2luZG93IiwiZG9jdW1lbnQiLCJib2R5Iiwic2Nyb2xsSGVpZ2h0Iiwic3R5bGUiLCJvdmVyZmxvdyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2425.cd2eccbc.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2425.cd2eccbc.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2425.cd2eccbc.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2493.bb1f90d1.js b/react_frontend/static/react_frontend/js/2493.bb1f90d1.js new file mode 100644 index 000000000..c000d8c17 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2493.bb1f90d1.js @@ -0,0 +1,3 @@ +/*! For license information please see 2493.bb1f90d1.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2493],{2493:(e,n,o)=>{o.r(n),o.d(n,{default:()=>a});var t=o(6540),s=o(2597),r=o(4848);const a=function(e){return t.useEffect((function(){console.log("TestShowScreen subscribing to ['update'] events");var e=function(e){if(e.data.update.image){var n=document.getElementById("gui_canvas"),o=JSON.parse(e.data.update.image),t=(r=o.image,decodeURIComponent(escape(r))),s=o.shape;""!=t&&s instanceof Array&&(n.src="data:image/jpeg;base64,"+t,n.width=s[1],n.height=s[0])}var r;window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),(0,r.jsx)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative",justifyContent:"center"},children:(0,r.jsx)("img",{className:"image",id:"gui_canvas",src:s})})}},1020:(e,n,o)=>{var t=o(6540),s=Symbol.for("react.element"),r=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,i=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,n,o){var t,r={},u=null,d=null;for(t in void 0!==o&&(u=""+o),void 0!==n.key&&(u=""+n.key),void 0!==n.ref&&(d=n.ref),n)a.call(n,t)&&!c.hasOwnProperty(t)&&(r[t]=n[t]);if(e&&e.defaultProps)for(t in n=e.defaultProps)void 0===r[t]&&(r[t]=n[t]);return{$$typeof:s,type:e,key:u,ref:d,props:r,_owner:i.current}}n.Fragment=r,n.jsx=u,n.jsxs=u},4848:(e,n,o)=>{e.exports=o(1020)},2597:(e,n,o)=>{e.exports=o.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjQ5My4xNDhmMzJmMS5qcyIsIm1hcHBpbmdzIjoiO2dMQXVEQSxRQWxEQSxTQUFxQ0EsR0EyQ25DLE9BMUNBQyxFQUFBQSxXQUFnQixXQUNkQyxRQUFRQyxJQUFJLG1EQUNaLElBQU1DLEVBQVcsU0FBQ0MsR0FFaEIsR0FBSUEsRUFBUUMsS0FBS0MsT0FBT0MsTUFBTyxDQUc3QixJQUZJQyxFQUFTQyxTQUFTQyxlQUFlLGNBUWpDQyxFQUFhQyxLQUFLQyxNQUFNVCxFQUFRQyxLQUFLQyxPQUFPQyxPQUM5Q08sR0FObUJDLEVBTUVKLEVBQVdKLE1BTHZCUyxtQkFBbUJDLE9BQU9GLEtBTW5DRyxFQUFRUCxFQUFXTyxNQUVQLElBQVZKLEdBQWdCSSxhQUFpQkMsUUFDbkNYLEVBQU9ZLElBQU0sMEJBQTRCTixFQUN6Q04sRUFBT2EsTUFBUUgsRUFBTSxHQUNyQlYsRUFBT2MsT0FBU0osRUFBTSxHQUUxQixDQWRFLElBQXFCSCxFQWlCdkJRLE9BQU9DLDJCQUEyQkMsYUFBYUMsS0FBSyxNQUFPLE1BQzdELEVBT0EsT0FMQUgsT0FBT0MsMkJBQTJCQyxhQUFhRSxVQUM3QyxDQUFDSixPQUFPQywyQkFBMkJDLGFBQWFHLE9BQU9DLFFBQ3ZEMUIsR0FHSyxXQUNMRixRQUFRQyxJQUFJLDhEQUNacUIsT0FBT0MsMkJBQTJCQyxhQUFhSyxZQUM3QyxDQUFDUCxPQUFPQywyQkFBMkJDLGFBQWFHLE9BQU9DLFFBQ3ZEMUIsRUFFSixDQUNGLEdBQUcsS0FHRDRCLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsTUFBTyxDQUFDQyxRQUFTLE9BQVFaLE1BQU8sT0FBUUMsT0FBUSxPQUFRWSxTQUFTLFdBQVlDLGVBQWdCLFVBQVVDLFVBQzFHTCxFQUFBQSxFQUFBQSxLQUFBLE9BQUtNLFVBQVUsUUFBUUMsR0FBRyxhQUFhbEIsSUFBS21CLEtBR2xELGtCQzVDYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRWpFLE1BQU0rRCxFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUUMsU0FBUzVCLEVBQUUyQixFQUFRRSxJQUFJaEIsRUFBRWMsRUFBUUcsS0FBS2pCLGtCQ1B4V2tCLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9iYXNpY19jb21wdXRlcl92aXNpb24vcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY0Jhc2ljQ29tcHV0ZXJWaXNpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgbm9JbWFnZSBmcm9tIFwiLi4vLi4vYXNzZXRzL2ltZy9ub0ltYWdlLnBuZ1wiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvR1VJQ2FudmFzLmNzc1wiXHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY0Jhc2ljQ29tcHV0ZXJWaXNpb24ocHJvcHMpIHtcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuXHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKSB7XHJcbiAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc1wiKTtcclxuXHJcbiAgICAgICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgICAgIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKSxcclxuICAgICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG5cclxuICAgICAgICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2VuZCB0aGUgQUNLIG9mIHRoZSBtc2dcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwiYWNrXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsIHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiwgcG9zaXRpb246XCJyZWxhdGl2ZVwiLCBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIn19PlxyXG4gICAgICA8aW1nIGNsYXNzTmFtZT1cImltYWdlXCIgaWQ9XCJndWlfY2FudmFzXCIgc3JjPXtub0ltYWdlfS8+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY0Jhc2ljQ29tcHV0ZXJWaXNpb247XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIlJlYWN0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJpbWFnZSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpbWFnZV9kYXRhIiwiSlNPTiIsInBhcnNlIiwic291cmNlIiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsInNoYXBlIiwiQXJyYXkiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsInVuc3Vic2NyaWJlIiwiX2pzeCIsInN0eWxlIiwiZGlzcGxheSIsInBvc2l0aW9uIiwianVzdGlmeUNvbnRlbnQiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImlkIiwibm9JbWFnZSIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2493.bb1f90d1.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2493.bb1f90d1.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2493.bb1f90d1.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2543.8e5565ae.js b/react_frontend/static/react_frontend/js/2543.8e5565ae.js new file mode 100644 index 000000000..1b7f15990 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2543.8e5565ae.js @@ -0,0 +1,3 @@ +/*! For license information please see 2543.8e5565ae.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2543],{2543:function(n,t,r){var e;n=r.nmd(n),function(){var u,i="Expected a function",o="__lodash_hash_undefined__",f="__lodash_placeholder__",a=32,c=128,l=1/0,s=9007199254740991,h=NaN,p=4294967295,v=[["ary",c],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",a],["partialRight",64],["rearg",256]],_="[object Arguments]",g="[object Array]",y="[object Boolean]",d="[object Date]",b="[object Error]",w="[object Function]",m="[object GeneratorFunction]",x="[object Map]",j="[object Number]",A="[object Object]",k="[object Promise]",O="[object RegExp]",I="[object Set]",R="[object String]",z="[object Symbol]",E="[object WeakMap]",S="[object ArrayBuffer]",C="[object DataView]",W="[object Float32Array]",L="[object Float64Array]",U="[object Int8Array]",B="[object Int16Array]",T="[object Int32Array]",$="[object Uint8Array]",D="[object Uint8ClampedArray]",M="[object Uint16Array]",F="[object Uint32Array]",N=/\b__p \+= '';/g,P=/\b(__p \+=) '' \+/g,q=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Z=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,V=RegExp(Z.source),G=RegExp(K.source),H=/<%-([\s\S]+?)%>/g,J=/<%([\s\S]+?)%>/g,Y=/<%=([\s\S]+?)%>/g,Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,nn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,tn=/[\\^$.*+?()[\]{}|]/g,rn=RegExp(tn.source),en=/^\s+/,un=/\s/,on=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,fn=/\{\n\/\* \[wrapped with (.+)\] \*/,an=/,? & /,cn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ln=/[()=,{}\[\]\/\s]/,sn=/\\(\\)?/g,hn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,pn=/\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,_n=/^0b[01]+$/i,gn=/^\[object .+?Constructor\]$/,yn=/^0o[0-7]+$/i,dn=/^(?:0|[1-9]\d*)$/,bn=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,wn=/($^)/,mn=/['\n\r\u2028\u2029\\]/g,xn="\\ud800-\\udfff",jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",An="\\u2700-\\u27bf",kn="a-z\\xdf-\\xf6\\xf8-\\xff",On="A-Z\\xc0-\\xd6\\xd8-\\xde",In="\\ufe0e\\ufe0f",Rn="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",zn="["+xn+"]",En="["+Rn+"]",Sn="["+jn+"]",Cn="\\d+",Wn="["+An+"]",Ln="["+kn+"]",Un="[^"+xn+Rn+Cn+An+kn+On+"]",Bn="\\ud83c[\\udffb-\\udfff]",Tn="[^"+xn+"]",$n="(?:\\ud83c[\\udde6-\\uddff]){2}",Dn="[\\ud800-\\udbff][\\udc00-\\udfff]",Mn="["+On+"]",Fn="\\u200d",Nn="(?:"+Ln+"|"+Un+")",Pn="(?:"+Mn+"|"+Un+")",qn="(?:['’](?:d|ll|m|re|s|t|ve))?",Zn="(?:['’](?:D|LL|M|RE|S|T|VE))?",Kn="(?:"+Sn+"|"+Bn+")?",Vn="["+In+"]?",Gn=Vn+Kn+"(?:"+Fn+"(?:"+[Tn,$n,Dn].join("|")+")"+Vn+Kn+")*",Hn="(?:"+[Wn,$n,Dn].join("|")+")"+Gn,Jn="(?:"+[Tn+Sn+"?",Sn,$n,Dn,zn].join("|")+")",Yn=RegExp("['’]","g"),Qn=RegExp(Sn,"g"),Xn=RegExp(Bn+"(?="+Bn+")|"+Jn+Gn,"g"),nt=RegExp([Mn+"?"+Ln+"+"+qn+"(?="+[En,Mn,"$"].join("|")+")",Pn+"+"+Zn+"(?="+[En,Mn+Nn,"$"].join("|")+")",Mn+"?"+Nn+"+"+qn,Mn+"+"+Zn,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Cn,Hn].join("|"),"g"),tt=RegExp("["+Fn+xn+jn+In+"]"),rt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,et=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ut=-1,it={};it[W]=it[L]=it[U]=it[B]=it[T]=it[$]=it[D]=it[M]=it[F]=!0,it[_]=it[g]=it[S]=it[y]=it[C]=it[d]=it[b]=it[w]=it[x]=it[j]=it[A]=it[O]=it[I]=it[R]=it[E]=!1;var ot={};ot[_]=ot[g]=ot[S]=ot[C]=ot[y]=ot[d]=ot[W]=ot[L]=ot[U]=ot[B]=ot[T]=ot[x]=ot[j]=ot[A]=ot[O]=ot[I]=ot[R]=ot[z]=ot[$]=ot[D]=ot[M]=ot[F]=!0,ot[b]=ot[w]=ot[E]=!1;var ft={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},at=parseFloat,ct=parseInt,lt="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,st="object"==typeof self&&self&&self.Object===Object&&self,ht=lt||st||Function("return this")(),pt=t&&!t.nodeType&&t,vt=pt&&n&&!n.nodeType&&n,_t=vt&&vt.exports===pt,gt=_t&<.process,yt=function(){try{return vt&&vt.require&&vt.require("util").types||gt&>.binding&>.binding("util")}catch(n){}}(),dt=yt&&yt.isArrayBuffer,bt=yt&&yt.isDate,wt=yt&&yt.isMap,mt=yt&&yt.isRegExp,xt=yt&&yt.isSet,jt=yt&&yt.isTypedArray;function At(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function kt(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u-1}function St(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function nr(n,t){for(var r=n.length;r--&&Mt(t,n[r],0)>-1;);return r}var tr=Zt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),rr=Zt({"&":"&","<":"<",">":">",'"':""","'":"'"});function er(n){return"\\"+ft[n]}function ur(n){return tt.test(n)}function ir(n){var t=-1,r=Array(n.size);return n.forEach((function(n,e){r[++t]=[e,n]})),r}function or(n,t){return function(r){return n(t(r))}}function fr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r",""":'"',"'":"'"}),vr=function n(t){var r,e=(t=null==t?ht:vr.defaults(ht.Object(),t,vr.pick(ht,et))).Array,un=t.Date,xn=t.Error,jn=t.Function,An=t.Math,kn=t.Object,On=t.RegExp,In=t.String,Rn=t.TypeError,zn=e.prototype,En=jn.prototype,Sn=kn.prototype,Cn=t["__core-js_shared__"],Wn=En.toString,Ln=Sn.hasOwnProperty,Un=0,Bn=(r=/[^.]+$/.exec(Cn&&Cn.keys&&Cn.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",Tn=Sn.toString,$n=Wn.call(kn),Dn=ht._,Mn=On("^"+Wn.call(Ln).replace(tn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Fn=_t?t.Buffer:u,Nn=t.Symbol,Pn=t.Uint8Array,qn=Fn?Fn.allocUnsafe:u,Zn=or(kn.getPrototypeOf,kn),Kn=kn.create,Vn=Sn.propertyIsEnumerable,Gn=zn.splice,Hn=Nn?Nn.isConcatSpreadable:u,Jn=Nn?Nn.iterator:u,Xn=Nn?Nn.toStringTag:u,tt=function(){try{var n=ai(kn,"defineProperty");return n({},"",{}),n}catch(n){}}(),ft=t.clearTimeout!==ht.clearTimeout&&t.clearTimeout,lt=un&&un.now!==ht.Date.now&&un.now,st=t.setTimeout!==ht.setTimeout&&t.setTimeout,pt=An.ceil,vt=An.floor,gt=kn.getOwnPropertySymbols,yt=Fn?Fn.isBuffer:u,Tt=t.isFinite,Zt=zn.join,_r=or(kn.keys,kn),gr=An.max,yr=An.min,dr=un.now,br=t.parseInt,wr=An.random,mr=zn.reverse,xr=ai(t,"DataView"),jr=ai(t,"Map"),Ar=ai(t,"Promise"),kr=ai(t,"Set"),Or=ai(t,"WeakMap"),Ir=ai(kn,"create"),Rr=Or&&new Or,zr={},Er=Bi(xr),Sr=Bi(jr),Cr=Bi(Ar),Wr=Bi(kr),Lr=Bi(Or),Ur=Nn?Nn.prototype:u,Br=Ur?Ur.valueOf:u,Tr=Ur?Ur.toString:u;function $r(n){if(nf(n)&&!Po(n)&&!(n instanceof Nr)){if(n instanceof Fr)return n;if(Ln.call(n,"__wrapped__"))return Ti(n)}return new Fr(n)}var Dr=function(){function n(){}return function(t){if(!Xo(t))return{};if(Kn)return Kn(t);n.prototype=t;var r=new n;return n.prototype=u,r}}();function Mr(){}function Fr(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=u}function Nr(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=p,this.__views__=[]}function Pr(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function oe(n,t,r,e,i,o){var f,a=1&t,c=2&t,l=4&t;if(r&&(f=i?r(n,e,i,o):r(n)),f!==u)return f;if(!Xo(n))return n;var s=Po(n);if(s){if(f=function(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&Ln.call(n,"index")&&(r.index=n.index,r.input=n.input),r}(n),!a)return Ou(n,f)}else{var h=si(n),p=h==w||h==m;if(Vo(n))return wu(n,a);if(h==A||h==_||p&&!i){if(f=c||p?{}:pi(n),!a)return c?function(n,t){return Iu(n,li(n),t)}(n,function(n,t){return n&&Iu(t,Cf(t),n)}(f,n)):function(n,t){return Iu(n,ci(n),t)}(n,re(f,n))}else{if(!ot[h])return i?n:{};f=function(n,t,r){var e,u=n.constructor;switch(t){case S:return mu(n);case y:case d:return new u(+n);case C:return function(n,t){var r=t?mu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}(n,r);case W:case L:case U:case B:case T:case $:case D:case M:case F:return xu(n,r);case x:return new u;case j:case R:return new u(n);case O:return function(n){var t=new n.constructor(n.source,pn.exec(n));return t.lastIndex=n.lastIndex,t}(n);case I:return new u;case z:return e=n,Br?kn(Br.call(e)):{}}}(n,h,a)}}o||(o=new Vr);var v=o.get(n);if(v)return v;o.set(n,f),of(n)?n.forEach((function(e){f.add(oe(e,t,r,e,n,o))})):tf(n)&&n.forEach((function(e,u){f.set(u,oe(e,t,r,u,n,o))}));var g=s?u:(l?c?ti:ni:c?Cf:Sf)(n);return Ot(g||n,(function(e,u){g&&(e=n[u=e]),Xr(f,u,oe(e,t,r,u,n,o))})),f}function fe(n,t,r){var e=r.length;if(null==n)return!e;for(n=kn(n);e--;){var i=r[e],o=t[i],f=n[i];if(f===u&&!(i in n)||!o(f))return!1}return!0}function ae(n,t,r){if("function"!=typeof n)throw new Rn(i);return Ii((function(){n.apply(u,r)}),t)}function ce(n,t,r,e){var u=-1,i=Et,o=!0,f=n.length,a=[],c=t.length;if(!f)return a;r&&(t=Ct(t,Jt(r))),e?(i=St,o=!1):t.length>=200&&(i=Qt,o=!1,t=new Kr(t));n:for(;++u-1},qr.prototype.set=function(n,t){var r=this.__data__,e=ne(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},Zr.prototype.clear=function(){this.size=0,this.__data__={hash:new Pr,map:new(jr||qr),string:new Pr}},Zr.prototype.delete=function(n){var t=oi(this,n).delete(n);return this.size-=t?1:0,t},Zr.prototype.get=function(n){return oi(this,n).get(n)},Zr.prototype.has=function(n){return oi(this,n).has(n)},Zr.prototype.set=function(n,t){var r=oi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Kr.prototype.add=Kr.prototype.push=function(n){return this.__data__.set(n,o),this},Kr.prototype.has=function(n){return this.__data__.has(n)},Vr.prototype.clear=function(){this.__data__=new qr,this.size=0},Vr.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},Vr.prototype.get=function(n){return this.__data__.get(n)},Vr.prototype.has=function(n){return this.__data__.has(n)},Vr.prototype.set=function(n,t){var r=this.__data__;if(r instanceof qr){var e=r.__data__;if(!jr||e.length<199)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Zr(e)}return r.set(n,t),this.size=r.size,this};var le=Eu(de),se=Eu(be,!0);function he(n,t){var r=!0;return le(n,(function(n,e,u){return r=!!t(n,e,u)})),r}function pe(n,t,r){for(var e=-1,i=n.length;++e0&&r(f)?t>1?_e(f,t-1,r,e,u):Wt(u,f):e||(u[u.length]=f)}return u}var ge=Su(),ye=Su(!0);function de(n,t){return n&&ge(n,t,Sf)}function be(n,t){return n&&ye(n,t,Sf)}function we(n,t){return zt(t,(function(t){return Jo(n[t])}))}function me(n,t){for(var r=0,e=(t=gu(t,n)).length;null!=n&&rt}function ke(n,t){return null!=n&&Ln.call(n,t)}function Oe(n,t){return null!=n&&t in kn(n)}function Ie(n,t,r){for(var i=r?St:Et,o=n[0].length,f=n.length,a=f,c=e(f),l=1/0,s=[];a--;){var h=n[a];a&&t&&(h=Ct(h,Jt(t))),l=yr(h.length,l),c[a]=!r&&(t||o>=120&&h.length>=120)?new Kr(a&&h):u}h=n[0];var p=-1,v=c[0];n:for(;++p=f?a:a*("desc"==r[e]?-1:1)}return n.index-t.index}(n,t,r)}));t--;)n[t]=n[t].value;return n}(u)}function Ne(n,t,r){for(var e=-1,u=t.length,i={};++e-1;)f!==n&&Gn.call(f,a,1),Gn.call(n,a,1);return n}function qe(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;_i(u)?Gn.call(n,u,1):au(n,u)}}return n}function Ze(n,t){return n+vt(wr()*(t-n+1))}function Ke(n,t){var r="";if(!n||t<1||t>s)return r;do{t%2&&(r+=n),(t=vt(t/2))&&(n+=n)}while(t);return r}function Ve(n,t){return Ri(ji(n,t,ea),n+"")}function Ge(n){return Hr(Mf(n))}function He(n,t){var r=Mf(n);return Si(r,ie(t,0,r.length))}function Je(n,t,r,e){if(!Xo(n))return n;for(var i=-1,o=(t=gu(t,n)).length,f=o-1,a=n;null!=a&&++ii?0:i+t),(r=r>i?i:r)<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var o=e(i);++u>>1,o=n[i];null!==o&&!af(o)&&(r?o<=t:o=200){var c=t?null:Ku(n);if(c)return ar(c);o=!1,u=Qt,a=new Kr}else a=t?[]:f;n:for(;++e=e?n:nu(n,t,r)}var bu=ft||function(n){return ht.clearTimeout(n)};function wu(n,t){if(t)return n.slice();var r=n.length,e=qn?qn(r):new n.constructor(r);return n.copy(e),e}function mu(n){var t=new n.constructor(n.byteLength);return new Pn(t).set(new Pn(n)),t}function xu(n,t){var r=t?mu(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function ju(n,t){if(n!==t){var r=n!==u,e=null===n,i=n==n,o=af(n),f=t!==u,a=null===t,c=t==t,l=af(t);if(!a&&!l&&!o&&n>t||o&&f&&c&&!a&&!l||e&&f&&c||!r&&c||!i)return 1;if(!e&&!o&&!l&&n1?r[i-1]:u,f=i>2?r[2]:u;for(o=n.length>3&&"function"==typeof o?(i--,o):u,f&&gi(r[0],r[1],f)&&(o=i<3?u:o,i=1),t=kn(t);++e-1?i[o?t[f]:f]:u}}function Bu(n){return Xu((function(t){var r=t.length,e=r,o=Fr.prototype.thru;for(n&&t.reverse();e--;){var f=t[e];if("function"!=typeof f)throw new Rn(i);if(o&&!a&&"wrapper"==ei(f))var a=new Fr([],!0)}for(e=a?e:r;++e1&&w.reverse(),p&&sa))return!1;var l=o.get(n),s=o.get(t);if(l&&s)return l==t&&s==n;var h=-1,p=!0,v=2&r?new Kr:u;for(o.set(n,t),o.set(t,n);++h-1&&n%1==0&&n1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(on,"{\n/* [wrapped with "+t+"] */\n")}(e,function(n,t){return Ot(v,(function(r){var e="_."+r[0];t&r[1]&&!Et(n,e)&&n.push(e)})),n.sort()}(function(n){var t=n.match(fn);return t?t[1].split(an):[]}(e),r)))}function Ei(n){var t=0,r=0;return function(){var e=dr(),i=16-(e-r);if(r=e,i>0){if(++t>=800)return arguments[0]}else t=0;return n.apply(u,arguments)}}function Si(n,t){var r=-1,e=n.length,i=e-1;for(t=t===u?e:t;++r1?n[t-1]:u;return r="function"==typeof r?(n.pop(),r):u,eo(n,r)}));function lo(n){var t=$r(n);return t.__chain__=!0,t}function so(n,t){return t(n)}var ho=Xu((function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,i=function(t){return ue(t,n)};return!(t>1||this.__actions__.length)&&e instanceof Nr&&_i(r)?((e=e.slice(r,+r+(t?1:0))).__actions__.push({func:so,args:[i],thisArg:u}),new Fr(e,this.__chain__).thru((function(n){return t&&!n.length&&n.push(u),n}))):this.thru(i)})),po=Ru((function(n,t,r){Ln.call(n,r)?++n[r]:ee(n,r,1)})),vo=Uu(Fi),_o=Uu(Ni);function go(n,t){return(Po(n)?Ot:le)(n,ii(t,3))}function yo(n,t){return(Po(n)?It:se)(n,ii(t,3))}var bo=Ru((function(n,t,r){Ln.call(n,r)?n[r].push(t):ee(n,r,[t])})),wo=Ve((function(n,t,r){var u=-1,i="function"==typeof t,o=Zo(n)?e(n.length):[];return le(n,(function(n){o[++u]=i?At(t,n,r):Re(n,t,r)})),o})),mo=Ru((function(n,t,r){ee(n,r,t)}));function xo(n,t){return(Po(n)?Ct:Be)(n,ii(t,3))}var jo=Ru((function(n,t,r){n[r?0:1].push(t)}),(function(){return[[],[]]})),Ao=Ve((function(n,t){if(null==n)return[];var r=t.length;return r>1&&gi(n,t[0],t[1])?t=[]:r>2&&gi(t[0],t[1],t[2])&&(t=[t[0]]),Fe(n,_e(t,1),[])})),ko=lt||function(){return ht.Date.now()};function Oo(n,t,r){return t=r?u:t,t=n&&null==t?n.length:t,Gu(n,c,u,u,u,u,t)}function Io(n,t){var r;if("function"!=typeof t)throw new Rn(i);return n=vf(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=u),r}}var Ro=Ve((function(n,t,r){var e=1;if(r.length){var u=fr(r,ui(Ro));e|=a}return Gu(n,e,t,r,u)})),zo=Ve((function(n,t,r){var e=3;if(r.length){var u=fr(r,ui(zo));e|=a}return Gu(t,e,n,r,u)}));function Eo(n,t,r){var e,o,f,a,c,l,s=0,h=!1,p=!1,v=!0;if("function"!=typeof n)throw new Rn(i);function _(t){var r=e,i=o;return e=o=u,s=t,a=n.apply(i,r)}function g(n){var r=n-l;return l===u||r>=t||r<0||p&&n-s>=f}function y(){var n=ko();if(g(n))return d(n);c=Ii(y,function(n){var r=t-(n-l);return p?yr(r,f-(n-s)):r}(n))}function d(n){return c=u,v&&e?_(n):(e=o=u,a)}function b(){var n=ko(),r=g(n);if(e=arguments,o=this,l=n,r){if(c===u)return function(n){return s=n,c=Ii(y,t),h?_(n):a}(l);if(p)return bu(c),c=Ii(y,t),_(l)}return c===u&&(c=Ii(y,t)),a}return t=gf(t)||0,Xo(r)&&(h=!!r.leading,f=(p="maxWait"in r)?gr(gf(r.maxWait)||0,t):f,v="trailing"in r?!!r.trailing:v),b.cancel=function(){c!==u&&bu(c),s=0,e=l=o=c=u},b.flush=function(){return c===u?a:d(ko())},b}var So=Ve((function(n,t){return ae(n,1,t)})),Co=Ve((function(n,t,r){return ae(n,gf(t)||0,r)}));function Wo(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new Rn(i);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;if(i.has(u))return i.get(u);var o=n.apply(this,e);return r.cache=i.set(u,o)||i,o};return r.cache=new(Wo.Cache||Zr),r}function Lo(n){if("function"!=typeof n)throw new Rn(i);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}Wo.Cache=Zr;var Uo=yu((function(n,t){var r=(t=1==t.length&&Po(t[0])?Ct(t[0],Jt(ii())):Ct(_e(t,1),Jt(ii()))).length;return Ve((function(e){for(var u=-1,i=yr(e.length,r);++u=t})),No=ze(function(){return arguments}())?ze:function(n){return nf(n)&&Ln.call(n,"callee")&&!Vn.call(n,"callee")},Po=e.isArray,qo=dt?Jt(dt):function(n){return nf(n)&&je(n)==S};function Zo(n){return null!=n&&Qo(n.length)&&!Jo(n)}function Ko(n){return nf(n)&&Zo(n)}var Vo=yt||ga,Go=bt?Jt(bt):function(n){return nf(n)&&je(n)==d};function Ho(n){if(!nf(n))return!1;var t=je(n);return t==b||"[object DOMException]"==t||"string"==typeof n.message&&"string"==typeof n.name&&!ef(n)}function Jo(n){if(!Xo(n))return!1;var t=je(n);return t==w||t==m||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Yo(n){return"number"==typeof n&&n==vf(n)}function Qo(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=s}function Xo(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function nf(n){return null!=n&&"object"==typeof n}var tf=wt?Jt(wt):function(n){return nf(n)&&si(n)==x};function rf(n){return"number"==typeof n||nf(n)&&je(n)==j}function ef(n){if(!nf(n)||je(n)!=A)return!1;var t=Zn(n);if(null===t)return!0;var r=Ln.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Wn.call(r)==$n}var uf=mt?Jt(mt):function(n){return nf(n)&&je(n)==O},of=xt?Jt(xt):function(n){return nf(n)&&si(n)==I};function ff(n){return"string"==typeof n||!Po(n)&&nf(n)&&je(n)==R}function af(n){return"symbol"==typeof n||nf(n)&&je(n)==z}var cf=jt?Jt(jt):function(n){return nf(n)&&Qo(n.length)&&!!it[je(n)]},lf=Pu(Ue),sf=Pu((function(n,t){return n<=t}));function hf(n){if(!n)return[];if(Zo(n))return ff(n)?sr(n):Ou(n);if(Jn&&n[Jn])return function(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}(n[Jn]());var t=si(n);return(t==x?ir:t==I?ar:Mf)(n)}function pf(n){return n?(n=gf(n))===l||n===-1/0?17976931348623157e292*(n<0?-1:1):n==n?n:0:0===n?n:0}function vf(n){var t=pf(n),r=t%1;return t==t?r?t-r:t:0}function _f(n){return n?ie(vf(n),0,p):0}function gf(n){if("number"==typeof n)return n;if(af(n))return h;if(Xo(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=Xo(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=Ht(n);var r=_n.test(n);return r||yn.test(n)?ct(n.slice(2),r?2:8):vn.test(n)?h:+n}function yf(n){return Iu(n,Cf(n))}function df(n){return null==n?"":ou(n)}var bf=zu((function(n,t){if(wi(t)||Zo(t))Iu(t,Sf(t),n);else for(var r in t)Ln.call(t,r)&&Xr(n,r,t[r])})),wf=zu((function(n,t){Iu(t,Cf(t),n)})),mf=zu((function(n,t,r,e){Iu(t,Cf(t),n,e)})),xf=zu((function(n,t,r,e){Iu(t,Sf(t),n,e)})),jf=Xu(ue),Af=Ve((function(n,t){n=kn(n);var r=-1,e=t.length,i=e>2?t[2]:u;for(i&&gi(t[0],t[1],i)&&(e=1);++r1),t})),Iu(n,ti(n),r),e&&(r=oe(r,7,Yu));for(var u=t.length;u--;)au(r,t[u]);return r})),Bf=Xu((function(n,t){return null==n?{}:function(n,t){return Ne(n,t,(function(t,r){return If(n,r)}))}(n,t)}));function Tf(n,t){if(null==n)return{};var r=Ct(ti(n),(function(n){return[n]}));return t=ii(t),Ne(n,r,(function(n,r){return t(n,r[0])}))}var $f=Vu(Sf),Df=Vu(Cf);function Mf(n){return null==n?[]:Yt(n,Sf(n))}var Ff=Wu((function(n,t,r){return t=t.toLowerCase(),n+(r?Nf(t):t)}));function Nf(n){return Jf(df(n).toLowerCase())}function Pf(n){return(n=df(n))&&n.replace(bn,tr).replace(Qn,"")}var qf=Wu((function(n,t,r){return n+(r?"-":"")+t.toLowerCase()})),Zf=Wu((function(n,t,r){return n+(r?" ":"")+t.toLowerCase()})),Kf=Cu("toLowerCase"),Vf=Wu((function(n,t,r){return n+(r?"_":"")+t.toLowerCase()})),Gf=Wu((function(n,t,r){return n+(r?" ":"")+Jf(t)})),Hf=Wu((function(n,t,r){return n+(r?" ":"")+t.toUpperCase()})),Jf=Cu("toUpperCase");function Yf(n,t,r){return n=df(n),(t=r?u:t)===u?function(n){return rt.test(n)}(n)?function(n){return n.match(nt)||[]}(n):function(n){return n.match(cn)||[]}(n):n.match(t)||[]}var Qf=Ve((function(n,t){try{return At(n,u,t)}catch(n){return Ho(n)?n:new xn(n)}})),Xf=Xu((function(n,t){return Ot(t,(function(t){t=Ui(t),ee(n,t,Ro(n[t],n))})),n}));function na(n){return function(){return n}}var ta=Bu(),ra=Bu(!0);function ea(n){return n}function ua(n){return We("function"==typeof n?n:oe(n,1))}var ia=Ve((function(n,t){return function(r){return Re(r,n,t)}})),oa=Ve((function(n,t){return function(r){return Re(n,r,t)}}));function fa(n,t,r){var e=Sf(t),u=we(t,e);null!=r||Xo(t)&&(u.length||!e.length)||(r=t,t=n,n=this,u=we(t,Sf(t)));var i=!(Xo(r)&&"chain"in r&&!r.chain),o=Jo(n);return Ot(u,(function(r){var e=t[r];n[r]=e,o&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=Ou(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,Wt([this.value()],arguments))})})),n}function aa(){}var ca=Mu(Ct),la=Mu(Rt),sa=Mu(Bt);function ha(n){return yi(n)?qt(Ui(n)):function(n){return function(t){return me(t,n)}}(n)}var pa=Nu(),va=Nu(!0);function _a(){return[]}function ga(){return!1}var ya,da=Du((function(n,t){return n+t}),0),ba=Zu("ceil"),wa=Du((function(n,t){return n/t}),1),ma=Zu("floor"),xa=Du((function(n,t){return n*t}),1),ja=Zu("round"),Aa=Du((function(n,t){return n-t}),0);return $r.after=function(n,t){if("function"!=typeof t)throw new Rn(i);return n=vf(n),function(){if(--n<1)return t.apply(this,arguments)}},$r.ary=Oo,$r.assign=bf,$r.assignIn=wf,$r.assignInWith=mf,$r.assignWith=xf,$r.at=jf,$r.before=Io,$r.bind=Ro,$r.bindAll=Xf,$r.bindKey=zo,$r.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return Po(n)?n:[n]},$r.chain=lo,$r.chunk=function(n,t,r){t=(r?gi(n,t,r):t===u)?1:gr(vf(t),0);var i=null==n?0:n.length;if(!i||t<1)return[];for(var o=0,f=0,a=e(pt(i/t));oi?0:i+r),(e=e===u||e>i?i:vf(e))<0&&(e+=i),e=r>e?0:_f(e);r>>0)?(n=df(n))&&("string"==typeof t||null!=t&&!uf(t))&&!(t=ou(t))&&ur(n)?du(sr(n),0,r):n.split(t,r):[]},$r.spread=function(n,t){if("function"!=typeof n)throw new Rn(i);return t=null==t?0:gr(vf(t),0),Ve((function(r){var e=r[t],u=du(r,0,t);return e&&Wt(u,e),At(n,this,u)}))},$r.tail=function(n){var t=null==n?0:n.length;return t?nu(n,1,t):[]},$r.take=function(n,t,r){return n&&n.length?nu(n,0,(t=r||t===u?1:vf(t))<0?0:t):[]},$r.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?nu(n,(t=e-(t=r||t===u?1:vf(t)))<0?0:t,e):[]},$r.takeRightWhile=function(n,t){return n&&n.length?lu(n,ii(t,3),!1,!0):[]},$r.takeWhile=function(n,t){return n&&n.length?lu(n,ii(t,3)):[]},$r.tap=function(n,t){return t(n),n},$r.throttle=function(n,t,r){var e=!0,u=!0;if("function"!=typeof n)throw new Rn(i);return Xo(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),Eo(n,t,{leading:e,maxWait:t,trailing:u})},$r.thru=so,$r.toArray=hf,$r.toPairs=$f,$r.toPairsIn=Df,$r.toPath=function(n){return Po(n)?Ct(n,Ui):af(n)?[n]:Ou(Li(df(n)))},$r.toPlainObject=yf,$r.transform=function(n,t,r){var e=Po(n),u=e||Vo(n)||cf(n);if(t=ii(t,4),null==r){var i=n&&n.constructor;r=u?e?new i:[]:Xo(n)&&Jo(i)?Dr(Zn(n)):{}}return(u?Ot:de)(n,(function(n,e,u){return t(r,n,e,u)})),r},$r.unary=function(n){return Oo(n,1)},$r.union=Xi,$r.unionBy=no,$r.unionWith=to,$r.uniq=function(n){return n&&n.length?fu(n):[]},$r.uniqBy=function(n,t){return n&&n.length?fu(n,ii(t,2)):[]},$r.uniqWith=function(n,t){return t="function"==typeof t?t:u,n&&n.length?fu(n,u,t):[]},$r.unset=function(n,t){return null==n||au(n,t)},$r.unzip=ro,$r.unzipWith=eo,$r.update=function(n,t,r){return null==n?n:cu(n,t,_u(r))},$r.updateWith=function(n,t,r,e){return e="function"==typeof e?e:u,null==n?n:cu(n,t,_u(r),e)},$r.values=Mf,$r.valuesIn=function(n){return null==n?[]:Yt(n,Cf(n))},$r.without=uo,$r.words=Yf,$r.wrap=function(n,t){return Bo(_u(t),n)},$r.xor=io,$r.xorBy=oo,$r.xorWith=fo,$r.zip=ao,$r.zipObject=function(n,t){return pu(n||[],t||[],Xr)},$r.zipObjectDeep=function(n,t){return pu(n||[],t||[],Je)},$r.zipWith=co,$r.entries=$f,$r.entriesIn=Df,$r.extend=wf,$r.extendWith=mf,fa($r,$r),$r.add=da,$r.attempt=Qf,$r.camelCase=Ff,$r.capitalize=Nf,$r.ceil=ba,$r.clamp=function(n,t,r){return r===u&&(r=t,t=u),r!==u&&(r=(r=gf(r))==r?r:0),t!==u&&(t=(t=gf(t))==t?t:0),ie(gf(n),t,r)},$r.clone=function(n){return oe(n,4)},$r.cloneDeep=function(n){return oe(n,5)},$r.cloneDeepWith=function(n,t){return oe(n,5,t="function"==typeof t?t:u)},$r.cloneWith=function(n,t){return oe(n,4,t="function"==typeof t?t:u)},$r.conformsTo=function(n,t){return null==t||fe(n,t,Sf(t))},$r.deburr=Pf,$r.defaultTo=function(n,t){return null==n||n!=n?t:n},$r.divide=wa,$r.endsWith=function(n,t,r){n=df(n),t=ou(t);var e=n.length,i=r=r===u?e:ie(vf(r),0,e);return(r-=t.length)>=0&&n.slice(r,i)==t},$r.eq=Do,$r.escape=function(n){return(n=df(n))&&G.test(n)?n.replace(K,rr):n},$r.escapeRegExp=function(n){return(n=df(n))&&rn.test(n)?n.replace(tn,"\\$&"):n},$r.every=function(n,t,r){var e=Po(n)?Rt:he;return r&&gi(n,t,r)&&(t=u),e(n,ii(t,3))},$r.find=vo,$r.findIndex=Fi,$r.findKey=function(n,t){return $t(n,ii(t,3),de)},$r.findLast=_o,$r.findLastIndex=Ni,$r.findLastKey=function(n,t){return $t(n,ii(t,3),be)},$r.floor=ma,$r.forEach=go,$r.forEachRight=yo,$r.forIn=function(n,t){return null==n?n:ge(n,ii(t,3),Cf)},$r.forInRight=function(n,t){return null==n?n:ye(n,ii(t,3),Cf)},$r.forOwn=function(n,t){return n&&de(n,ii(t,3))},$r.forOwnRight=function(n,t){return n&&be(n,ii(t,3))},$r.get=Of,$r.gt=Mo,$r.gte=Fo,$r.has=function(n,t){return null!=n&&hi(n,t,ke)},$r.hasIn=If,$r.head=qi,$r.identity=ea,$r.includes=function(n,t,r,e){n=Zo(n)?n:Mf(n),r=r&&!e?vf(r):0;var u=n.length;return r<0&&(r=gr(u+r,0)),ff(n)?r<=u&&n.indexOf(t,r)>-1:!!u&&Mt(n,t,r)>-1},$r.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:vf(r);return u<0&&(u=gr(e+u,0)),Mt(n,t,u)},$r.inRange=function(n,t,r){return t=pf(t),r===u?(r=t,t=0):r=pf(r),function(n,t,r){return n>=yr(t,r)&&n=-9007199254740991&&n<=s},$r.isSet=of,$r.isString=ff,$r.isSymbol=af,$r.isTypedArray=cf,$r.isUndefined=function(n){return n===u},$r.isWeakMap=function(n){return nf(n)&&si(n)==E},$r.isWeakSet=function(n){return nf(n)&&"[object WeakSet]"==je(n)},$r.join=function(n,t){return null==n?"":Zt.call(n,t)},$r.kebabCase=qf,$r.last=Gi,$r.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var i=e;return r!==u&&(i=(i=vf(r))<0?gr(e+i,0):yr(i,e-1)),t==t?function(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}(n,t,i):Dt(n,Nt,i,!0)},$r.lowerCase=Zf,$r.lowerFirst=Kf,$r.lt=lf,$r.lte=sf,$r.max=function(n){return n&&n.length?pe(n,ea,Ae):u},$r.maxBy=function(n,t){return n&&n.length?pe(n,ii(t,2),Ae):u},$r.mean=function(n){return Pt(n,ea)},$r.meanBy=function(n,t){return Pt(n,ii(t,2))},$r.min=function(n){return n&&n.length?pe(n,ea,Ue):u},$r.minBy=function(n,t){return n&&n.length?pe(n,ii(t,2),Ue):u},$r.stubArray=_a,$r.stubFalse=ga,$r.stubObject=function(){return{}},$r.stubString=function(){return""},$r.stubTrue=function(){return!0},$r.multiply=xa,$r.nth=function(n,t){return n&&n.length?Me(n,vf(t)):u},$r.noConflict=function(){return ht._===this&&(ht._=Dn),this},$r.noop=aa,$r.now=ko,$r.pad=function(n,t,r){n=df(n);var e=(t=vf(t))?lr(n):0;if(!t||e>=t)return n;var u=(t-e)/2;return Fu(vt(u),r)+n+Fu(pt(u),r)},$r.padEnd=function(n,t,r){n=df(n);var e=(t=vf(t))?lr(n):0;return t&&et){var e=n;n=t,t=e}if(r||n%1||t%1){var i=wr();return yr(n+i*(t-n+at("1e-"+((i+"").length-1))),t)}return Ze(n,t)},$r.reduce=function(n,t,r){var e=Po(n)?Lt:Kt,u=arguments.length<3;return e(n,ii(t,4),r,u,le)},$r.reduceRight=function(n,t,r){var e=Po(n)?Ut:Kt,u=arguments.length<3;return e(n,ii(t,4),r,u,se)},$r.repeat=function(n,t,r){return t=(r?gi(n,t,r):t===u)?1:vf(t),Ke(df(n),t)},$r.replace=function(){var n=arguments,t=df(n[0]);return n.length<3?t:t.replace(n[1],n[2])},$r.result=function(n,t,r){var e=-1,i=(t=gu(t,n)).length;for(i||(i=1,n=u);++es)return[];var r=p,e=yr(n,p);t=ii(t),n-=p;for(var u=Gt(e,t);++r=o)return n;var a=r-lr(e);if(a<1)return e;var c=f?du(f,0,a).join(""):n.slice(0,a);if(i===u)return c+e;if(f&&(a+=c.length-a),uf(i)){if(n.slice(a).search(i)){var l,s=c;for(i.global||(i=On(i.source,df(pn.exec(i))+"g")),i.lastIndex=0;l=i.exec(s);)var h=l.index;c=c.slice(0,h===u?a:h)}}else if(n.indexOf(ou(i),a)!=a){var p=c.lastIndexOf(i);p>-1&&(c=c.slice(0,p))}return c+e},$r.unescape=function(n){return(n=df(n))&&V.test(n)?n.replace(Z,pr):n},$r.uniqueId=function(n){var t=++Un;return df(n)+t},$r.upperCase=Hf,$r.upperFirst=Jf,$r.each=go,$r.eachRight=yo,$r.first=qi,fa($r,(ya={},de($r,(function(n,t){Ln.call($r.prototype,t)||(ya[t]=n)})),ya),{chain:!1}),$r.VERSION="4.17.21",Ot(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(n){$r[n].placeholder=$r})),Ot(["drop","take"],(function(n,t){Nr.prototype[n]=function(r){r=r===u?1:gr(vf(r),0);var e=this.__filtered__&&!t?new Nr(this):this.clone();return e.__filtered__?e.__takeCount__=yr(r,e.__takeCount__):e.__views__.push({size:yr(r,p),type:n+(e.__dir__<0?"Right":"")}),e},Nr.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}})),Ot(["filter","map","takeWhile"],(function(n,t){var r=t+1,e=1==r||3==r;Nr.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ii(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}})),Ot(["head","last"],(function(n,t){var r="take"+(t?"Right":"");Nr.prototype[n]=function(){return this[r](1).value()[0]}})),Ot(["initial","tail"],(function(n,t){var r="drop"+(t?"":"Right");Nr.prototype[n]=function(){return this.__filtered__?new Nr(this):this[r](1)}})),Nr.prototype.compact=function(){return this.filter(ea)},Nr.prototype.find=function(n){return this.filter(n).head()},Nr.prototype.findLast=function(n){return this.reverse().find(n)},Nr.prototype.invokeMap=Ve((function(n,t){return"function"==typeof n?new Nr(this):this.map((function(r){return Re(r,n,t)}))})),Nr.prototype.reject=function(n){return this.filter(Lo(ii(n)))},Nr.prototype.slice=function(n,t){n=vf(n);var r=this;return r.__filtered__&&(n>0||t<0)?new Nr(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==u&&(r=(t=vf(t))<0?r.dropRight(-t):r.take(t-n)),r)},Nr.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Nr.prototype.toArray=function(){return this.take(p)},de(Nr.prototype,(function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),i=$r[e?"take"+("last"==t?"Right":""):t],o=e||/^find/.test(t);i&&($r.prototype[t]=function(){var t=this.__wrapped__,f=e?[1]:arguments,a=t instanceof Nr,c=f[0],l=a||Po(t),s=function(n){var t=i.apply($r,Wt([n],f));return e&&h?t[0]:t};l&&r&&"function"==typeof c&&1!=c.length&&(a=l=!1);var h=this.__chain__,p=!!this.__actions__.length,v=o&&!h,_=a&&!p;if(!o&&l){t=_?t:new Nr(this);var g=n.apply(t,f);return g.__actions__.push({func:so,args:[s],thisArg:u}),new Fr(g,h)}return v&&_?n.apply(this,f):(g=this.thru(s),v?e?g.value()[0]:g.value():g)})})),Ot(["pop","push","shift","sort","splice","unshift"],(function(n){var t=zn[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);$r.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(Po(u)?u:[],n)}return this[r]((function(r){return t.apply(Po(r)?r:[],n)}))}})),de(Nr.prototype,(function(n,t){var r=$r[t];if(r){var e=r.name+"";Ln.call(zr,e)||(zr[e]=[]),zr[e].push({name:t,func:r})}})),zr[Tu(u,2).name]=[{name:"wrapper",func:u}],Nr.prototype.clone=function(){var n=new Nr(this.__wrapped__);return n.__actions__=Ou(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ou(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ou(this.__views__),n},Nr.prototype.reverse=function(){if(this.__filtered__){var n=new Nr(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},Nr.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=Po(n),e=t<0,u=r?n.length:0,i=function(n,t,r){for(var e=-1,u=r.length;++e=this.__values__.length;return{done:n,value:n?u:this.__values__[this.__index__++]}},$r.prototype.plant=function(n){for(var t,r=this;r instanceof Mr;){var e=Ti(r);e.__index__=0,e.__values__=u,t?i.__wrapped__=e:t=e;var i=e;r=r.__wrapped__}return i.__wrapped__=n,t},$r.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof Nr){var t=n;return this.__actions__.length&&(t=new Nr(this)),(t=t.reverse()).__actions__.push({func:so,args:[Qi],thisArg:u}),new Fr(t,this.__chain__)}return this.thru(Qi)},$r.prototype.toJSON=$r.prototype.valueOf=$r.prototype.value=function(){return su(this.__wrapped__,this.__actions__)},$r.prototype.first=$r.prototype.head,Jn&&($r.prototype[Jn]=function(){return this}),$r}();ht._=vr,(e=function(){return vr}.call(t,r,t,n))===u||(n.exports=e)}.call(this)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQ3RCLEVBQVEsS0FFUixFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFDekMsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQ3pDLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDeEQsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN4RCxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3hELEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3ZFLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3ZFLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDeEQsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN4RCxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3hELEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3ZFLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3ZFLEVBQVUsSUFBTSxFQUFVLElBQzFCLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUN6QyxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN2RSxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQUssRUFBVSxJQUN2RSxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFBSyxFQUFVLElBQ3hELEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUFLLEVBQVUsSUFDeEQsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQ3pDLEVBQVUsSUFBTSxFQUFVLElBQUssRUFBVSxJQUN6QyxFQUFVLElBQU0sRUFBVSxJQUFLLEVBQVUsSUFDekMsRUFBVSxJQUFNLEVBQVUsSUFBSyxFQUFVLElBQ3pDLEVBQVUsSUFBTSxF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cmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xvZGFzaC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBDb3B5cmlnaHQgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyA8aHR0cHM6Ly9vcGVuanNmLm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cbjsoZnVuY3Rpb24oKSB7XG5cbiAgLyoqIFVzZWQgYXMgYSBzYWZlIHJlZmVyZW5jZSBmb3IgYHVuZGVmaW5lZGAgaW4gcHJlLUVTNSBlbnZpcm9ubWVudHMuICovXG4gIHZhciB1bmRlZmluZWQ7XG5cbiAgLyoqIFVzZWQgYXMgdGhlIHNlbWFudGljIHZlcnNpb24gbnVtYmVyLiAqL1xuICB2YXIgVkVSU0lPTiA9ICc0LjE3LjIxJztcblxuICAvKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbiAgdmFyIExBUkdFX0FSUkFZX1NJWkUgPSAyMDA7XG5cbiAgLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xuICB2YXIgQ09SRV9FUlJPUl9URVhUID0gJ1Vuc3VwcG9ydGVkIGNvcmUtanMgdXNlLiBUcnkgaHR0cHM6Ly9ucG1zLmlvL3NlYXJjaD9xPXBvbnlmaWxsLicsXG4gICAgICBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbicsXG4gICAgICBJTlZBTElEX1RFTVBMX1ZBUl9FUlJPUl9URVhUID0gJ0ludmFsaWQgYHZhcmlhYmxlYCBvcHRpb24gcGFzc2VkIGludG8gYF8udGVtcGxhdGVgJztcblxuICAvKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG4gIHZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuICAvKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG4gIHZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuXG4gIC8qKiBVc2VkIGFzIHRoZSBpbnRlcm5hbCBhcmd1bWVudCBwbGFjZWhvbGRlci4gKi9cbiAgdmFyIFBMQUNFSE9MREVSID0gJ19fbG9kYXNoX3BsYWNlaG9sZGVyX18nO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG4gIHZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbiAgLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG4gIHZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuICAvKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgdmFyIFdSQVBfQklORF9GTEFHID0gMSxcbiAgICAgIFdSQVBfQklORF9LRVlfRkxBRyA9IDIsXG4gICAgICBXUkFQX0NVUlJZX0JPVU5EX0ZMQUcgPSA0LFxuICAgICAgV1JBUF9DVVJSWV9GTEFHID0gOCxcbiAgICAgIFdSQVBfQ1VSUllfUklHSFRfRkxBRyA9IDE2LFxuICAgICAgV1JBUF9QQVJUSUFMX0ZMQUcgPSAzMixcbiAgICAgIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHID0gNjQsXG4gICAgICBXUkFQX0FSWV9GTEFHID0gMTI4LFxuICAgICAgV1JBUF9SRUFSR19GTEFHID0gMjU2LFxuICAgICAgV1JBUF9GTElQX0ZMQUcgPSA1MTI7XG5cbiAgLyoqIFVzZWQgYXMgZGVmYXVsdCBvcHRpb25zIGZvciBgXy50cnVuY2F0ZWAuICovXG4gIHZhciBERUZBVUxUX1RSVU5DX0xFTkdUSCA9IDMwLFxuICAgICAgREVGQVVMVF9UUlVOQ19PTUlTU0lPTiA9ICcuLi4nO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBob3QgZnVuY3Rpb25zIGJ5IG51bWJlciBvZiBjYWxscyB3aXRoaW4gYSBzcGFuIG9mIG1pbGxpc2Vjb25kcy4gKi9cbiAgdmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICAgIEhPVF9TUEFOID0gMTY7XG5cbiAgLyoqIFVzZWQgdG8gaW5kaWNhdGUgdGhlIHR5cGUgb2YgbGF6eSBpdGVyYXRlZXMuICovXG4gIHZhciBMQVpZX0ZJTFRFUl9GTEFHID0gMSxcbiAgICAgIExBWllfTUFQX0ZMQUcgPSAyLFxuICAgICAgTEFaWV9XSElMRV9GTEFHID0gMztcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbiAgdmFyIElORklOSVRZID0gMSAvIDAsXG4gICAgICBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MSxcbiAgICAgIE1BWF9JTlRFR0VSID0gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgsXG4gICAgICBOQU4gPSAwIC8gMDtcblxuICAvKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB0aGUgbWF4aW11bSBsZW5ndGggYW5kIGluZGV4IG9mIGFuIGFycmF5LiAqL1xuICB2YXIgTUFYX0FSUkFZX0xFTkdUSCA9IDQyOTQ5NjcyOTUsXG4gICAgICBNQVhfQVJSQVlfSU5ERVggPSBNQVhfQVJSQVlfTEVOR1RIIC0gMSxcbiAgICAgIEhBTEZfTUFYX0FSUkFZX0xFTkdUSCA9IE1BWF9BUlJBWV9MRU5HVEggPj4+IDE7XG5cbiAgLyoqIFVzZWQgdG8gYXNzb2NpYXRlIHdyYXAgbWV0aG9kcyB3aXRoIHRoZWlyIGJpdCBmbGFncy4gKi9cbiAgdmFyIHdyYXBGbGFncyA9IFtcbiAgICBbJ2FyeScsIFdSQVBfQVJZX0ZMQUddLFxuICAgIFsnYmluZCcsIFdSQVBfQklORF9GTEFHXSxcbiAgICBbJ2JpbmRLZXknLCBXUkFQX0JJTkRfS0VZX0ZMQUddLFxuICAgIFsnY3VycnknLCBXUkFQX0NVUlJZX0ZMQUddLFxuICAgIFsnY3VycnlSaWdodCcsIFdSQVBfQ1VSUllfUklHSFRfRkxBR10sXG4gICAgWydmbGlwJywgV1JBUF9GTElQX0ZMQUddLFxuICAgIFsncGFydGlhbCcsIFdSQVBfUEFSVElBTF9GTEFHXSxcbiAgICBbJ3BhcnRpYWxSaWdodCcsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHXSxcbiAgICBbJ3JlYXJnJywgV1JBUF9SRUFSR19GTEFHXVxuICBdO1xuXG4gIC8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbiAgdmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICAgIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgICBkb21FeGNUYWcgPSAnW29iamVjdCBET01FeGNlcHRpb25dJyxcbiAgICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgICBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgICBwcm9taXNlVGFnID0gJ1tvYmplY3QgUHJvbWlzZV0nLFxuICAgICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nLFxuICAgICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJyxcbiAgICAgIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXScsXG4gICAgICB3ZWFrU2V0VGFnID0gJ1tvYmplY3QgV2Vha1NldF0nO1xuXG4gIHZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggZW1wdHkgc3RyaW5nIGxpdGVyYWxzIGluIGNvbXBpbGVkIHRlbXBsYXRlIHNvdXJjZS4gKi9cbiAgdmFyIHJlRW1wdHlTdHJpbmdMZWFkaW5nID0gL1xcYl9fcCBcXCs9ICcnOy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgICAgcmVFbXB0eVN0cmluZ1RyYWlsaW5nID0gLyhfX2VcXCguKj9cXCl8XFxiX190XFwpKSBcXCtcXG4nJzsvZztcblxuICAvKiogVXNlZCB0byBtYXRjaCBIVE1MIGVudGl0aWVzIGFuZCBIVE1MIGNoYXJhY3RlcnMuICovXG4gIHZhciByZUVzY2FwZWRIdG1sID0gLyYoPzphbXB8bHR8Z3R8cXVvdHwjMzkpOy9nLFxuICAgICAgcmVVbmVzY2FwZWRIdG1sID0gL1smPD5cIiddL2csXG4gICAgICByZUhhc0VzY2FwZWRIdG1sID0gUmVnRXhwKHJlRXNjYXBlZEh0bWwuc291cmNlKSxcbiAgICAgIHJlSGFzVW5lc2NhcGVkSHRtbCA9IFJlZ0V4cChyZVVuZXNjYXBlZEh0bWwuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLiAqL1xuICB2YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZyxcbiAgICAgIHJlRXZhbHVhdGUgPSAvPCUoW1xcc1xcU10rPyklPi9nLFxuICAgICAgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbiAgdmFyIHJlSXNEZWVwUHJvcCA9IC9cXC58XFxbKD86W15bXFxdXSp8KFtcIiddKSg/Oig/IVxcMSlbXlxcXFxdfFxcXFwuKSo/XFwxKVxcXS8sXG4gICAgICByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC8sXG4gICAgICByZVByb3BOYW1lID0gL1teLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCQpKS9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gICAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICAgKi9cbiAgdmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcbiAgICAgIHJlSGFzUmVnRXhwQ2hhciA9IFJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTtcblxuICAvKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG4gIHZhciByZVRyaW1TdGFydCA9IC9eXFxzKy87XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuICovXG4gIHZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3cmFwIGRldGFpbCBjb21tZW50cy4gKi9cbiAgdmFyIHJlV3JhcENvbW1lbnQgPSAvXFx7KD86XFxuXFwvXFwqIFxcW3dyYXBwZWQgd2l0aCAuK1xcXSBcXCpcXC8pP1xcbj8vLFxuICAgICAgcmVXcmFwRGV0YWlscyA9IC9cXHtcXG5cXC9cXCogXFxbd3JhcHBlZCB3aXRoICguKylcXF0gXFwqLyxcbiAgICAgIHJlU3BsaXREZXRhaWxzID0gLyw/ICYgLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB3b3JkcyBjb21wb3NlZCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4gKi9cbiAgdmFyIHJlQXNjaWlXb3JkID0gL1teXFx4MDAtXFx4MmZcXHgzYS1cXHg0MFxceDViLVxceDYwXFx4N2ItXFx4N2ZdKy9nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHZhbGlkYXRlIHRoZSBgdmFsaWRhdGVgIG9wdGlvbiBpbiBgXy50ZW1wbGF0ZWAgdmFyaWFibGUuXG4gICAqXG4gICAqIEZvcmJpZHMgY2hhcmFjdGVycyB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGRlZmluaXRpb246XG4gICAqIC0gXCIoKSxcIiAobW9kaWZpY2F0aW9uIG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpXG4gICAqIC0gXCI9XCIgKGRlZmF1bHQgdmFsdWUpXG4gICAqIC0gXCJbXXt9XCIgKGRlc3RydWN0dXJpbmcgb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAgICogLSBcIi9cIiAoYmVnaW5uaW5nIG9mIGEgY29tbWVudClcbiAgICogLSB3aGl0ZXNwYWNlXG4gICAqL1xuICB2YXIgcmVGb3JiaWRkZW5JZGVudGlmaWVyQ2hhcnMgPSAvWygpPSx7fVxcW1xcXVxcL1xcc10vO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGJhY2tzbGFzaGVzIGluIHByb3BlcnR5IHBhdGhzLiAqL1xuICB2YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gbWF0Y2hcbiAgICogW0VTIHRlbXBsYXRlIGRlbGltaXRlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRlbXBsYXRlLWxpdGVyYWwtbGV4aWNhbC1jb21wb25lbnRzKS5cbiAgICovXG4gIHZhciByZUVzVGVtcGxhdGUgPSAvXFwkXFx7KFteXFxcXH1dKig/OlxcXFwuW15cXFxcfV0qKSopXFx9L2c7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG4gIHZhciByZUZsYWdzID0gL1xcdyokLztcblxuICAvKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xuICB2YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4gIC8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xuICB2YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbiAgdmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xuICB2YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIExhdGluIFVuaWNvZGUgbGV0dGVycyAoZXhjbHVkaW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRvcnMpLiAqL1xuICB2YXIgcmVMYXRpbiA9IC9bXFx4YzAtXFx4ZDZcXHhkOC1cXHhmNlxceGY4LVxceGZmXFx1MDEwMC1cXHUwMTdmXS9nO1xuXG4gIC8qKiBVc2VkIHRvIGVuc3VyZSBjYXB0dXJpbmcgb3JkZXIgb2YgdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbiAgdmFyIHJlTm9NYXRjaCA9IC8oJF4pLztcblxuICAvKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciByZVVuZXNjYXBlZFN0cmluZyA9IC9bJ1xcblxcclxcdTIwMjhcXHUyMDI5XFxcXF0vZztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG4gIHZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgICAgcnNEaW5nYmF0UmFuZ2UgPSAnXFxcXHUyNzAwLVxcXFx1MjdiZicsXG4gICAgICByc0xvd2VyUmFuZ2UgPSAnYS16XFxcXHhkZi1cXFxceGY2XFxcXHhmOC1cXFxceGZmJyxcbiAgICAgIHJzTWF0aE9wUmFuZ2UgPSAnXFxcXHhhY1xcXFx4YjFcXFxceGQ3XFxcXHhmNycsXG4gICAgICByc05vbkNoYXJSYW5nZSA9ICdcXFxceDAwLVxcXFx4MmZcXFxceDNhLVxcXFx4NDBcXFxceDViLVxcXFx4NjBcXFxceDdiLVxcXFx4YmYnLFxuICAgICAgcnNQdW5jdHVhdGlvblJhbmdlID0gJ1xcXFx1MjAwMC1cXFxcdTIwNmYnLFxuICAgICAgcnNTcGFjZVJhbmdlID0gJyBcXFxcdFxcXFx4MGJcXFxcZlxcXFx4YTBcXFxcdWZlZmZcXFxcblxcXFxyXFxcXHUyMDI4XFxcXHUyMDI5XFxcXHUxNjgwXFxcXHUxODBlXFxcXHUyMDAwXFxcXHUyMDAxXFxcXHUyMDAyXFxcXHUyMDAzXFxcXHUyMDA0XFxcXHUyMDA1XFxcXHUyMDA2XFxcXHUyMDA3XFxcXHUyMDA4XFxcXHUyMDA5XFxcXHUyMDBhXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwJyxcbiAgICAgIHJzVXBwZXJSYW5nZSA9ICdBLVpcXFxceGMwLVxcXFx4ZDZcXFxceGQ4LVxcXFx4ZGUnLFxuICAgICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnLFxuICAgICAgcnNCcmVha1JhbmdlID0gcnNNYXRoT3BSYW5nZSArIHJzTm9uQ2hhclJhbmdlICsgcnNQdW5jdHVhdGlvblJhbmdlICsgcnNTcGFjZVJhbmdlO1xuXG4gIC8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbiAgdmFyIHJzQXBvcyA9IFwiWydcXHUyMDE5XVwiLFxuICAgICAgcnNBc3RyYWwgPSAnWycgKyByc0FzdHJhbFJhbmdlICsgJ10nLFxuICAgICAgcnNCcmVhayA9ICdbJyArIHJzQnJlYWtSYW5nZSArICddJyxcbiAgICAgIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvUmFuZ2UgKyAnXScsXG4gICAgICByc0RpZ2l0cyA9ICdcXFxcZCsnLFxuICAgICAgcnNEaW5nYmF0ID0gJ1snICsgcnNEaW5nYmF0UmFuZ2UgKyAnXScsXG4gICAgICByc0xvd2VyID0gJ1snICsgcnNMb3dlclJhbmdlICsgJ10nLFxuICAgICAgcnNNaXNjID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyByc0JyZWFrUmFuZ2UgKyByc0RpZ2l0cyArIHJzRGluZ2JhdFJhbmdlICsgcnNMb3dlclJhbmdlICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNGaXR6ID0gJ1xcXFx1ZDgzY1tcXFxcdWRmZmItXFxcXHVkZmZmXScsXG4gICAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgICAgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSArICddJyxcbiAgICAgIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfScsXG4gICAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgICByc1VwcGVyID0gJ1snICsgcnNVcHBlclJhbmdlICsgJ10nLFxuICAgICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuICAvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgcmVnZXhlcy4gKi9cbiAgdmFyIHJzTWlzY0xvd2VyID0gJyg/OicgKyByc0xvd2VyICsgJ3wnICsgcnNNaXNjICsgJyknLFxuICAgICAgcnNNaXNjVXBwZXIgPSAnKD86JyArIHJzVXBwZXIgKyAnfCcgKyByc01pc2MgKyAnKScsXG4gICAgICByc09wdENvbnRyTG93ZXIgPSAnKD86JyArIHJzQXBvcyArICcoPzpkfGxsfG18cmV8c3x0fHZlKSk/JyxcbiAgICAgIHJzT3B0Q29udHJVcHBlciA9ICcoPzonICsgcnNBcG9zICsgJyg/OkR8TEx8TXxSRXxTfFR8VkUpKT8nLFxuICAgICAgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgICAgcnNPcHRWYXIgPSAnWycgKyByc1ZhclJhbmdlICsgJ10/JyxcbiAgICAgIHJzT3B0Sm9pbiA9ICcoPzonICsgcnNaV0ogKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKicsXG4gICAgICByc09yZExvd2VyID0gJ1xcXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcXFxkdGgpKD89XFxcXGJ8W0EtWl9dKScsXG4gICAgICByc09yZFVwcGVyID0gJ1xcXFxkKig/OjFTVHwyTkR8M1JEfCg/IVsxMjNdKVxcXFxkVEgpKD89XFxcXGJ8W2Etel9dKScsXG4gICAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgICByc0Vtb2ppID0gJyg/OicgKyBbcnNEaW5nYmF0LCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc1NlcSxcbiAgICAgIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGFwb3N0cm9waGVzLiAqL1xuICB2YXIgcmVBcG9zID0gUmVnRXhwKHJzQXBvcywgJ2cnKTtcblxuICAvKipcbiAgICogVXNlZCB0byBtYXRjaCBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpIGFuZFxuICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGZvciBzeW1ib2xzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3NfZm9yX1N5bWJvbHMpLlxuICAgKi9cbiAgdmFyIHJlQ29tYm9NYXJrID0gUmVnRXhwKHJzQ29tYm8sICdnJyk7XG5cbiAgLyoqIFVzZWQgdG8gbWF0Y2ggW3N0cmluZyBzeW1ib2xzXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvamF2YXNjcmlwdC11bmljb2RlKS4gKi9cbiAgdmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4gIC8qKiBVc2VkIHRvIG1hdGNoIGNvbXBsZXggb3IgY29tcG91bmQgd29yZHMuICovXG4gIHZhciByZVVuaWNvZGVXb3JkID0gUmVnRXhwKFtcbiAgICByc1VwcGVyICsgJz8nICsgcnNMb3dlciArICcrJyArIHJzT3B0Q29udHJMb3dlciArICcoPz0nICsgW3JzQnJlYWssIHJzVXBwZXIsICckJ10uam9pbignfCcpICsgJyknLFxuICAgIHJzTWlzY1VwcGVyICsgJysnICsgcnNPcHRDb250clVwcGVyICsgJyg/PScgKyBbcnNCcmVhaywgcnNVcHBlciArIHJzTWlzY0xvd2VyLCAnJCddLmpvaW4oJ3wnKSArICcpJyxcbiAgICByc1VwcGVyICsgJz8nICsgcnNNaXNjTG93ZXIgKyAnKycgKyByc09wdENvbnRyTG93ZXIsXG4gICAgcnNVcHBlciArICcrJyArIHJzT3B0Q29udHJVcHBlcixcbiAgICByc09yZFVwcGVyLFxuICAgIHJzT3JkTG93ZXIsXG4gICAgcnNEaWdpdHMsXG4gICAgcnNFbW9qaVxuICBdLmpvaW4oJ3wnKSwgJ2cnKTtcblxuICAvKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbiAgdmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbiAgLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3MgdGhhdCBuZWVkIGEgbW9yZSByb2J1c3QgcmVnZXhwIHRvIG1hdGNoIHdvcmRzLiAqL1xuICB2YXIgcmVIYXNVbmljb2RlV29yZCA9IC9bYS16XVtBLVpdfFtBLVpdezJ9W2Etel18WzAtOV1bYS16QS1aXXxbYS16QS1aXVswLTldfFteYS16QS1aMC05IF0vO1xuXG4gIC8qKiBVc2VkIHRvIGFzc2lnbiBkZWZhdWx0IGBjb250ZXh0YCBvYmplY3QgcHJvcGVydGllcy4gKi9cbiAgdmFyIGNvbnRleHRQcm9wcyA9IFtcbiAgICAnQXJyYXknLCAnQnVmZmVyJywgJ0RhdGFWaWV3JywgJ0RhdGUnLCAnRXJyb3InLCAnRmxvYXQzMkFycmF5JywgJ0Zsb2F0NjRBcnJheScsXG4gICAgJ0Z1bmN0aW9uJywgJ0ludDhBcnJheScsICdJbnQxNkFycmF5JywgJ0ludDMyQXJyYXknLCAnTWFwJywgJ01hdGgnLCAnT2JqZWN0JyxcbiAgICAnUHJvbWlzZScsICdSZWdFeHAnLCAnU2V0JywgJ1N0cmluZycsICdTeW1ib2wnLCAnVHlwZUVycm9yJywgJ1VpbnQ4QXJyYXknLFxuICAgICdVaW50OENsYW1wZWRBcnJheScsICdVaW50MTZBcnJheScsICdVaW50MzJBcnJheScsICdXZWFrTWFwJyxcbiAgICAnXycsICdjbGVhclRpbWVvdXQnLCAnaXNGaW5pdGUnLCAncGFyc2VJbnQnLCAnc2V0VGltZW91dCdcbiAgXTtcblxuICAvKiogVXNlZCB0byBtYWtlIHRlbXBsYXRlIHNvdXJjZVVSTHMgZWFzaWVyIHRvIGlkZW50aWZ5LiAqL1xuICB2YXIgdGVtcGxhdGVDb3VudGVyID0gLTE7XG5cbiAgLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xuICB2YXIgdHlwZWRBcnJheVRhZ3MgPSB7fTtcbiAgdHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbaW50MzJUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDhUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbiAgdHlwZWRBcnJheVRhZ3NbYXJnc1RhZ10gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxuICB0eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbiAgdHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG4gIHR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbiAgdHlwZWRBcnJheVRhZ3Nbc2V0VGFnXSA9IHR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ10gPVxuICB0eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4gIC8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG4gIHZhciBjbG9uZWFibGVUYWdzID0ge307XG4gIGNsb25lYWJsZVRhZ3NbYXJnc1RhZ10gPSBjbG9uZWFibGVUYWdzW2FycmF5VGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuICBjbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW2Zsb2F0NjRUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbiAgY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW251bWJlclRhZ10gPSBjbG9uZWFibGVUYWdzW29iamVjdFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuICBjbG9uZWFibGVUYWdzW3VpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG4gIGNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG4gIGNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcblxuICAvKiogVXNlZCB0byBtYXAgTGF0aW4gVW5pY29kZSBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuICovXG4gIHZhciBkZWJ1cnJlZExldHRlcnMgPSB7XG4gICAgLy8gTGF0aW4tMSBTdXBwbGVtZW50IGJsb2NrLlxuICAgICdcXHhjMCc6ICdBJywgICdcXHhjMSc6ICdBJywgJ1xceGMyJzogJ0EnLCAnXFx4YzMnOiAnQScsICdcXHhjNCc6ICdBJywgJ1xceGM1JzogJ0EnLFxuICAgICdcXHhlMCc6ICdhJywgICdcXHhlMSc6ICdhJywgJ1xceGUyJzogJ2EnLCAnXFx4ZTMnOiAnYScsICdcXHhlNCc6ICdhJywgJ1xceGU1JzogJ2EnLFxuICAgICdcXHhjNyc6ICdDJywgICdcXHhlNyc6ICdjJyxcbiAgICAnXFx4ZDAnOiAnRCcsICAnXFx4ZjAnOiAnZCcsXG4gICAgJ1xceGM4JzogJ0UnLCAgJ1xceGM5JzogJ0UnLCAnXFx4Y2EnOiAnRScsICdcXHhjYic6ICdFJyxcbiAgICAnXFx4ZTgnOiAnZScsICAnXFx4ZTknOiAnZScsICdcXHhlYSc6ICdlJywgJ1xceGViJzogJ2UnLFxuICAgICdcXHhjYyc6ICdJJywgICdcXHhjZCc6ICdJJywgJ1xceGNlJzogJ0knLCAnXFx4Y2YnOiAnSScsXG4gICAgJ1xceGVjJzogJ2knLCAgJ1xceGVkJzogJ2knLCAnXFx4ZWUnOiAnaScsICdcXHhlZic6ICdpJyxcbiAgICAnXFx4ZDEnOiAnTicsICAnXFx4ZjEnOiAnbicsXG4gICAgJ1xceGQyJzogJ08nLCAgJ1xceGQzJzogJ08nLCAnXFx4ZDQnOiAnTycsICdcXHhkNSc6ICdPJywgJ1xceGQ2JzogJ08nLCAnXFx4ZDgnOiAnTycsXG4gICAgJ1xceGYyJzogJ28nLCAgJ1xceGYzJzogJ28nLCAnXFx4ZjQnOiAnbycsICdcXHhmNSc6ICdvJywgJ1xceGY2JzogJ28nLCAnXFx4ZjgnOiAnbycsXG4gICAgJ1xceGQ5JzogJ1UnLCAgJ1xceGRhJzogJ1UnLCAnXFx4ZGInOiAnVScsICdcXHhkYyc6ICdVJyxcbiAgICAnXFx4ZjknOiAndScsICAnXFx4ZmEnOiAndScsICdcXHhmYic6ICd1JywgJ1xceGZjJzogJ3UnLFxuICAgICdcXHhkZCc6ICdZJywgICdcXHhmZCc6ICd5JywgJ1xceGZmJzogJ3knLFxuICAgICdcXHhjNic6ICdBZScsICdcXHhlNic6ICdhZScsXG4gICAgJ1xceGRlJzogJ1RoJywgJ1xceGZlJzogJ3RoJyxcbiAgICAnXFx4ZGYnOiAnc3MnLFxuICAgIC8vIExhdGluIEV4dGVuZGVkLUEgYmxvY2suXG4gICAgJ1xcdTAxMDAnOiAnQScsICAnXFx1MDEwMic6ICdBJywgJ1xcdTAxMDQnOiAnQScsXG4gICAgJ1xcdTAxMDEnOiAnYScsICAnXFx1MDEwMyc6ICdhJywgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTAxMDYnOiAnQycsICAnXFx1MDEwOCc6ICdDJywgJ1xcdTAxMGEnOiAnQycsICdcXHUwMTBjJzogJ0MnLFxuICAgICdcXHUwMTA3JzogJ2MnLCAgJ1xcdTAxMDknOiAnYycsICdcXHUwMTBiJzogJ2MnLCAnXFx1MDEwZCc6ICdjJyxcbiAgICAnXFx1MDEwZSc6ICdEJywgICdcXHUwMTEwJzogJ0QnLCAnXFx1MDEwZic6ICdkJywgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxMTInOiAnRScsICAnXFx1MDExNCc6ICdFJywgJ1xcdTAxMTYnOiAnRScsICdcXHUwMTE4JzogJ0UnLCAnXFx1MDExYSc6ICdFJyxcbiAgICAnXFx1MDExMyc6ICdlJywgICdcXHUwMTE1JzogJ2UnLCAnXFx1MDExNyc6ICdlJywgJ1xcdTAxMTknOiAnZScsICdcXHUwMTFiJzogJ2UnLFxuICAgICdcXHUwMTFjJzogJ0cnLCAgJ1xcdTAxMWUnOiAnRycsICdcXHUwMTIwJzogJ0cnLCAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDExZCc6ICdnJywgICdcXHUwMTFmJzogJ2cnLCAnXFx1MDEyMSc6ICdnJywgJ1xcdTAxMjMnOiAnZycsXG4gICAgJ1xcdTAxMjQnOiAnSCcsICAnXFx1MDEyNic6ICdIJywgJ1xcdTAxMjUnOiAnaCcsICdcXHUwMTI3JzogJ2gnLFxuICAgICdcXHUwMTI4JzogJ0knLCAgJ1xcdTAxMmEnOiAnSScsICdcXHUwMTJjJzogJ0knLCAnXFx1MDEyZSc6ICdJJywgJ1xcdTAxMzAnOiAnSScsXG4gICAgJ1xcdTAxMjknOiAnaScsICAnXFx1MDEyYic6ICdpJywgJ1xcdTAxMmQnOiAnaScsICdcXHUwMTJmJzogJ2knLCAnXFx1MDEzMSc6ICdpJyxcbiAgICAnXFx1MDEzNCc6ICdKJywgICdcXHUwMTM1JzogJ2onLFxuICAgICdcXHUwMTM2JzogJ0snLCAgJ1xcdTAxMzcnOiAnaycsICdcXHUwMTM4JzogJ2snLFxuICAgICdcXHUwMTM5JzogJ0wnLCAgJ1xcdTAxM2InOiAnTCcsICdcXHUwMTNkJzogJ0wnLCAnXFx1MDEzZic6ICdMJywgJ1xcdTAxNDEnOiAnTCcsXG4gICAgJ1xcdTAxM2EnOiAnbCcsICAnXFx1MDEzYyc6ICdsJywgJ1xcdTAxM2UnOiAnbCcsICdcXHUwMTQwJzogJ2wnLCAnXFx1MDE0Mic6ICdsJyxcbiAgICAnXFx1MDE0Myc6ICdOJywgICdcXHUwMTQ1JzogJ04nLCAnXFx1MDE0Nyc6ICdOJywgJ1xcdTAxNGEnOiAnTicsXG4gICAgJ1xcdTAxNDQnOiAnbicsICAnXFx1MDE0Nic6ICduJywgJ1xcdTAxNDgnOiAnbicsICdcXHUwMTRiJzogJ24nLFxuICAgICdcXHUwMTRjJzogJ08nLCAgJ1xcdTAxNGUnOiAnTycsICdcXHUwMTUwJzogJ08nLFxuICAgICdcXHUwMTRkJzogJ28nLCAgJ1xcdTAxNGYnOiAnbycsICdcXHUwMTUxJzogJ28nLFxuICAgICdcXHUwMTU0JzogJ1InLCAgJ1xcdTAxNTYnOiAnUicsICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMTU1JzogJ3InLCAgJ1xcdTAxNTcnOiAncicsICdcXHUwMTU5JzogJ3InLFxuICAgICdcXHUwMTVhJzogJ1MnLCAgJ1xcdTAxNWMnOiAnUycsICdcXHUwMTVlJzogJ1MnLCAnXFx1MDE2MCc6ICdTJyxcbiAgICAnXFx1MDE1Yic6ICdzJywgICdcXHUwMTVkJzogJ3MnLCAnXFx1MDE1Zic6ICdzJywgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTAxNjInOiAnVCcsICAnXFx1MDE2NCc6ICdUJywgJ1xcdTAxNjYnOiAnVCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsICAnXFx1MDE2NSc6ICd0JywgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxNjgnOiAnVScsICAnXFx1MDE2YSc6ICdVJywgJ1xcdTAxNmMnOiAnVScsICdcXHUwMTZlJzogJ1UnLCAnXFx1MDE3MCc6ICdVJywgJ1xcdTAxNzInOiAnVScsXG4gICAgJ1xcdTAxNjknOiAndScsICAnXFx1MDE2Yic6ICd1JywgJ1xcdTAxNmQnOiAndScsICdcXHUwMTZmJzogJ3UnLCAnXFx1MDE3MSc6ICd1JywgJ1xcdTAxNzMnOiAndScsXG4gICAgJ1xcdTAxNzQnOiAnVycsICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MDE3Nic6ICdZJywgICdcXHUwMTc3JzogJ3knLCAnXFx1MDE3OCc6ICdZJyxcbiAgICAnXFx1MDE3OSc6ICdaJywgICdcXHUwMTdiJzogJ1onLCAnXFx1MDE3ZCc6ICdaJyxcbiAgICAnXFx1MDE3YSc6ICd6JywgICdcXHUwMTdjJzogJ3onLCAnXFx1MDE3ZSc6ICd6JyxcbiAgICAnXFx1MDEzMic6ICdJSicsICdcXHUwMTMzJzogJ2lqJyxcbiAgICAnXFx1MDE1Mic6ICdPZScsICdcXHUwMTUzJzogJ29lJyxcbiAgICAnXFx1MDE0OSc6IFwiJ25cIiwgJ1xcdTAxN2YnOiAncydcbiAgfTtcblxuICAvKiogVXNlZCB0byBtYXAgY2hhcmFjdGVycyB0byBIVE1MIGVudGl0aWVzLiAqL1xuICB2YXIgaHRtbEVzY2FwZXMgPSB7XG4gICAgJyYnOiAnJmFtcDsnLFxuICAgICc8JzogJyZsdDsnLFxuICAgICc+JzogJyZndDsnLFxuICAgICdcIic6ICcmcXVvdDsnLFxuICAgIFwiJ1wiOiAnJiMzOTsnXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gbWFwIEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy4gKi9cbiAgdmFyIGh0bWxVbmVzY2FwZXMgPSB7XG4gICAgJyZhbXA7JzogJyYnLFxuICAgICcmbHQ7JzogJzwnLFxuICAgICcmZ3Q7JzogJz4nLFxuICAgICcmcXVvdDsnOiAnXCInLFxuICAgICcmIzM5Oyc6IFwiJ1wiXG4gIH07XG5cbiAgLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG4gIHZhciBzdHJpbmdFc2NhcGVzID0ge1xuICAgICdcXFxcJzogJ1xcXFwnLFxuICAgIFwiJ1wiOiBcIidcIixcbiAgICAnXFxuJzogJ24nLFxuICAgICdcXHInOiAncicsXG4gICAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAgICdcXHUyMDI5JzogJ3UyMDI5J1xuICB9O1xuXG4gIC8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG4gIHZhciBmcmVlUGFyc2VGbG9hdCA9IHBhcnNlRmxvYXQsXG4gICAgICBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xuICB2YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbiAgdmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbiAgLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG4gIHZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4gIC8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG4gIHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuICAvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG4gIHZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbiAgLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbiAgdmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbiAgLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG4gIHZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4gIC8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xuICB2YXIgbm9kZVV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG5cbiAgICAgIGlmICh0eXBlcykge1xuICAgICAgICByZXR1cm4gdHlwZXM7XG4gICAgICB9XG5cbiAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfSgpKTtcblxuICAvKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xuICB2YXIgbm9kZUlzQXJyYXlCdWZmZXIgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc0FycmF5QnVmZmVyLFxuICAgICAgbm9kZUlzRGF0ZSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzRGF0ZSxcbiAgICAgIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwLFxuICAgICAgbm9kZUlzUmVnRXhwID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNSZWdFeHAsXG4gICAgICBub2RlSXNTZXQgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1NldCxcbiAgICAgIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgLyoqXG4gICAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gICAqL1xuICBmdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgY2FzZSAwOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO1xuICAgICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgY2FzZSAzOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VBZ2dyZWdhdG9yYCBmb3IgYXJyYXlzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGBhY2N1bXVsYXRvcmAgdmFsdWVzLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY2N1bXVsYXRvciBUaGUgaW5pdGlhbCBhZ2dyZWdhdGVkIG9iamVjdC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBhY2N1bXVsYXRvcmAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUFnZ3JlZ2F0b3IoYXJyYXksIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlFYWNoUmlnaHQoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbbGVuZ3RoXSwgbGVuZ3RoLCBhcnJheSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmV2ZXJ5YCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFsbCBlbGVtZW50cyBwYXNzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gICAqICBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUV2ZXJ5KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKCFwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZpbHRlcmAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZpbHRlcmVkIGFycmF5LlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmNsdWRlc2AgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiAhIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIDApID4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhcnJheUluY2x1ZGVzYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGEgY29tcGFyYXRvci5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWFwYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2luaXRBY2N1bV0gU3BlY2lmeSB1c2luZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgIGFzXG4gICAqICB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlSZWR1Y2UoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gICAgaWYgKGluaXRBY2N1bSAmJiBsZW5ndGgpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlUmlnaHRgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBbaW5pdEFjY3VtXSBTcGVjaWZ5IHVzaW5nIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICAgKiAgdGhlIGluaXRpYWwgdmFsdWUuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGFycmF5UmVkdWNlUmlnaHQoYXJyYXksIGl0ZXJhdGVlLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIGlmIChpbml0QWNjdW0gJiYgbGVuZ3RoKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGFycmF5Wy0tbGVuZ3RoXTtcbiAgICB9XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtsZW5ndGhdLCBsZW5ndGgsIGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5zb21lYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICogc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGFuIEFTQ0lJIGBzdHJpbmdgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgaW5zcGVjdC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gICAqL1xuICB2YXIgYXNjaWlTaXplID0gYmFzZVByb3BlcnR5KCdsZW5ndGgnKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gQVNDSUkgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYW4gQVNDSUkgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAqL1xuICBmdW5jdGlvbiBhc2NpaVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVBc2NpaVdvcmQpIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5maW5kS2V5YCBhbmQgYF8uZmluZExhc3RLZXlgLFxuICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYGNvbGxlY3Rpb25gXG4gICAqIHVzaW5nIGBlYWNoRnVuY2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZvdW5kIGVsZW1lbnQgb3IgaXRzIGtleSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VGaW5kS2V5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZWFjaEZ1bmMpIHtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGtleSwgY29sbGVjdGlvbikpIHtcbiAgICAgICAgcmVzdWx0ID0ga2V5O1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gICAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICAgIDogYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUlzTmFOLCBmcm9tSW5kZXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYmFzZUluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VJbmRleE9mV2l0aChhcnJheSwgdmFsdWUsIGZyb21JbmRleCwgY29tcGFyYXRvcikge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoY29tcGFyYXRvcihhcnJheVtpbmRleF0sIHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hTmAgd2l0aG91dCBzdXBwb3J0IGZvciBudW1iZXIgb2JqZWN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1lYW5gIGFuZCBgXy5tZWFuQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LCBpdGVyYXRlZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gbGVuZ3RoID8gKGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSAvIGxlbmd0aCkgOiBOQU47XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZWR1Y2VgIGFuZCBgXy5yZWR1Y2VSaWdodGAsIHdpdGhvdXQgc3VwcG9ydFxuICAgKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgKiBAcGFyYW0geyp9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAgICogIGBjb2xsZWN0aW9uYCBhcyB0aGUgaW5pdGlhbCB2YWx1ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZWFjaEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBgY29sbGVjdGlvbmAuXG4gICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VSZWR1Y2UoY29sbGVjdGlvbiwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGVhY2hGdW5jKSB7XG4gICAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICBhY2N1bXVsYXRvciA9IGluaXRBY2N1bVxuICAgICAgICA/IChpbml0QWNjdW0gPSBmYWxzZSwgdmFsdWUpXG4gICAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNvcnRCeWAgd2hpY2ggdXNlcyBgY29tcGFyZXJgIHRvIGRlZmluZSB0aGVcbiAgICogc29ydCBvcmRlciBvZiBgYXJyYXlgIGFuZCByZXBsYWNlcyBjcml0ZXJpYSBvYmplY3RzIHdpdGggdGhlaXIgY29ycmVzcG9uZGluZ1xuICAgKiB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJlciBUaGUgZnVuY3Rpb24gdG8gZGVmaW5lIHNvcnQgb3JkZXIuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVNvcnRCeShhcnJheSwgY29tcGFyZXIpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICBhcnJheVtsZW5ndGhdID0gYXJyYXlbbGVuZ3RoXS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnN1bWAgYW5kIGBfLnN1bUJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yXG4gICAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN1bS5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VTdW0oYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIHJlc3VsdCxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBjdXJyZW50ID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdKTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBjdXJyZW50IDogKHJlc3VsdCArIGN1cnJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRpbWVzYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHNcbiAgICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGluZGV4KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1BhaXJzYCBhbmQgYF8udG9QYWlyc0luYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5XG4gICAqIG9mIGtleS12YWx1ZSBwYWlycyBmb3IgYG9iamVjdGAgY29ycmVzcG9uZGluZyB0byB0aGUgcHJvcGVydHkgbmFtZXMgb2YgYHByb3BzYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZ2V0IHZhbHVlcyBmb3IuXG4gICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGtleS12YWx1ZSBwYWlycy5cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIFtrZXksIG9iamVjdFtrZXldXTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZ1xuICAgICAgPyBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKS5yZXBsYWNlKHJlVHJpbVN0YXJ0LCAnJylcbiAgICAgIDogc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAgICogYXJyYXkgb2YgYG9iamVjdGAgcHJvcGVydHkgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb3BlcnR5IG5hbWVzXG4gICAqIG9mIGBwcm9wc2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAqL1xuICBmdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gYXJyYXlNYXAocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIG9iamVjdFtrZXldO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICovXG4gIGZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgICByZXR1cm4gY2FjaGUuaGFzKGtleSk7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbVN0YXJ0YCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHVubWF0Y2hlZCBzdHJpbmcgc3ltYm9sLlxuICAgKi9cbiAgZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gICAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gICAqL1xuICBmdW5jdGlvbiBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICAgIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgYHBsYWNlaG9sZGVyYCBvY2N1cnJlbmNlcyBpbiBgYXJyYXlgLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gc2VhcmNoIGZvci5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgY291bnQuXG4gICAqL1xuICBmdW5jdGlvbiBjb3VudEhvbGRlcnMoYXJyYXksIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgaWYgKGFycmF5W2xlbmd0aF0gPT09IHBsYWNlaG9sZGVyKSB7XG4gICAgICAgICsrcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZGVidXJyYCB0byBjb252ZXJ0IExhdGluLTEgU3VwcGxlbWVudCBhbmQgTGF0aW4gRXh0ZW5kZWQtQVxuICAgKiBsZXR0ZXJzIHRvIGJhc2ljIExhdGluIGxldHRlcnMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsZXR0ZXIgVGhlIG1hdGNoZWQgbGV0dGVyIHRvIGRlYnVyci5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZGVidXJyZWQgbGV0dGVyLlxuICAgKi9cbiAgdmFyIGRlYnVyckxldHRlciA9IGJhc2VQcm9wZXJ0eU9mKGRlYnVycmVkTGV0dGVycyk7XG5cbiAgLyoqXG4gICAqIFVzZWQgYnkgYF8uZXNjYXBlYCB0byBjb252ZXJ0IGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gZXNjYXBlLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIGNoYXJhY3Rlci5cbiAgICovXG4gIHZhciBlc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxFc2NhcGVzKTtcblxuICAvKipcbiAgICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICAgIHJldHVybiAnXFxcXCcgKyBzdHJpbmdFc2NhcGVzW2Nocl07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0VmFsdWUob2JqZWN0LCBrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAqL1xuICBmdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICAgIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBhIHdvcmQgY29tcG9zZWQgb2YgVW5pY29kZSBzeW1ib2xzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgd29yZCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgKi9cbiAgZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHJlSGFzVW5pY29kZVdvcmQudGVzdChzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBpdGVyYXRvcmAgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBpdGVyYXRvciBUaGUgaXRlcmF0b3IgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBpdGVyYXRvclRvQXJyYXkoaXRlcmF0b3IpIHtcbiAgICB2YXIgZGF0YSxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoIShkYXRhID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICByZXN1bHQucHVzaChkYXRhLnZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG5cbiAgICBtYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgYHBsYWNlaG9sZGVyYCBlbGVtZW50cyBpbiBgYXJyYXlgIHdpdGggYW4gaW50ZXJuYWwgcGxhY2Vob2xkZXJcbiAgICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlaXIgaW5kZXhlcy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHsqfSBwbGFjZWhvbGRlciBUaGUgcGxhY2Vob2xkZXIgdG8gcmVwbGFjZS5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VIb2xkZXJzKGFycmF5LCBwbGFjZWhvbGRlcikge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKHZhbHVlID09PSBwbGFjZWhvbGRlciB8fCB2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gUExBQ0VIT0xERVI7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHZhbHVlcy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIHJlc3VsdCA9IEFycmF5KHNldC5zaXplKTtcblxuICAgIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICByZXN1bHRbKytpbmRleF0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzZXRgIHRvIGl0cyB2YWx1ZS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtPYmplY3R9IHNldCBUaGUgc2V0IHRvIGNvbnZlcnQuXG4gICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWUtdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiBzZXRUb1BhaXJzKHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG5cbiAgICBzZXQuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgcmVzdWx0WysraW5kZXhdID0gW3ZhbHVlLCB2YWx1ZV07XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gICAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICAgKi9cbiAgZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubGFzdEluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICAgKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgdmFyIGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgaW4gYHN0cmluZ2AuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIHN0cmluZ1NpemUoc3RyaW5nKSB7XG4gICAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgICAgPyB1bmljb2RlU2l6ZShzdHJpbmcpXG4gICAgICA6IGFzY2lpU2l6ZShzdHJpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAqL1xuICBmdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgICAgOiBhc2NpaVRvQXJyYXkoc3RyaW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gICAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlIGNoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgICB2YXIgaW5kZXggPSBzdHJpbmcubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIGJ5IGBfLnVuZXNjYXBlYCB0byBjb252ZXJ0IEhUTUwgZW50aXRpZXMgdG8gY2hhcmFjdGVycy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNociBUaGUgbWF0Y2hlZCBjaGFyYWN0ZXIgdG8gdW5lc2NhcGUuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuZXNjYXBlZCBjaGFyYWN0ZXIuXG4gICAqL1xuICB2YXIgdW5lc2NhcGVIdG1sQ2hhciA9IGJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBzaXplIG9mIGEgVW5pY29kZSBgc3RyaW5nYC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHN0cmluZyBzaXplLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVNpemUoc3RyaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHJlVW5pY29kZS5sYXN0SW5kZXggPSAwO1xuICAgIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgICArK3Jlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIFVuaWNvZGUgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAgICovXG4gIGZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBVbmljb2RlIGBzdHJpbmdgIGludG8gYW4gYXJyYXkgb2YgaXRzIHdvcmRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdvcmRzIG9mIGBzdHJpbmdgLlxuICAgKi9cbiAgZnVuY3Rpb24gdW5pY29kZVdvcmRzKHN0cmluZykge1xuICAgIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlV29yZCkgfHwgW107XG4gIH1cblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHByaXN0aW5lIGBsb2Rhc2hgIGZ1bmN0aW9uIHVzaW5nIHRoZSBgY29udGV4dGAgb2JqZWN0LlxuICAgKlxuICAgKiBAc3RhdGljXG4gICAqIEBtZW1iZXJPZiBfXG4gICAqIEBzaW5jZSAxLjEuMFxuICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgKiBAcGFyYW0ge09iamVjdH0gW2NvbnRleHQ9cm9vdF0gVGhlIGNvbnRleHQgb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYSBuZXcgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIF8ubWl4aW4oeyAnZm9vJzogXy5jb25zdGFudCgnZm9vJykgfSk7XG4gICAqXG4gICAqIHZhciBsb2Rhc2ggPSBfLnJ1bkluQ29udGV4dCgpO1xuICAgKiBsb2Rhc2gubWl4aW4oeyAnYmFyJzogbG9kYXNoLmNvbnN0YW50KCdiYXInKSB9KTtcbiAgICpcbiAgICogXy5pc0Z1bmN0aW9uKF8uZm9vKTtcbiAgICogLy8gPT4gdHJ1ZVxuICAgKiBfLmlzRnVuY3Rpb24oXy5iYXIpO1xuICAgKiAvLyA9PiBmYWxzZVxuICAgKlxuICAgKiBsb2Rhc2guaXNGdW5jdGlvbihsb2Rhc2guZm9vKTtcbiAgICogLy8gPT4gZmFsc2VcbiAgICogbG9kYXNoLmlzRnVuY3Rpb24obG9kYXNoLmJhcik7XG4gICAqIC8vID0+IHRydWVcbiAgICpcbiAgICogLy8gQ3JlYXRlIGEgc3VwZWQtdXAgYGRlZmVyYCBpbiBOb2RlLmpzLlxuICAgKiB2YXIgZGVmZXIgPSBfLnJ1bkluQ29udGV4dCh7ICdzZXRUaW1lb3V0Jzogc2V0SW1tZWRpYXRlIH0pLmRlZmVyO1xuICAgKi9cbiAgdmFyIHJ1bkluQ29udGV4dCA9IChmdW5jdGlvbiBydW5JbkNvbnRleHQoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBjb250ZXh0ID09IG51bGwgPyByb290IDogXy5kZWZhdWx0cyhyb290Lk9iamVjdCgpLCBjb250ZXh0LCBfLnBpY2socm9vdCwgY29udGV4dFByb3BzKSk7XG5cbiAgICAvKiogQnVpbHQtaW4gY29uc3RydWN0b3IgcmVmZXJlbmNlcy4gKi9cbiAgICB2YXIgQXJyYXkgPSBjb250ZXh0LkFycmF5LFxuICAgICAgICBEYXRlID0gY29udGV4dC5EYXRlLFxuICAgICAgICBFcnJvciA9IGNvbnRleHQuRXJyb3IsXG4gICAgICAgIEZ1bmN0aW9uID0gY29udGV4dC5GdW5jdGlvbixcbiAgICAgICAgTWF0aCA9IGNvbnRleHQuTWF0aCxcbiAgICAgICAgT2JqZWN0ID0gY29udGV4dC5PYmplY3QsXG4gICAgICAgIFJlZ0V4cCA9IGNvbnRleHQuUmVnRXhwLFxuICAgICAgICBTdHJpbmcgPSBjb250ZXh0LlN0cmluZyxcbiAgICAgICAgVHlwZUVycm9yID0gY29udGV4dC5UeXBlRXJyb3I7XG5cbiAgICAvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG4gICAgdmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGUsXG4gICAgICAgIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICAgICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4gICAgLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xuICAgIHZhciBjb3JlSnNEYXRhID0gY29udGV4dFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbiAgICAvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG4gICAgdmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuICAgIC8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4gICAgLyoqIFVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIElEcy4gKi9cbiAgICB2YXIgaWRDb3VudGVyID0gMDtcblxuICAgIC8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG4gICAgdmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICAgICAgcmV0dXJuIHVpZCA/ICgnU3ltYm9sKHNyYylfMS4nICsgdWlkKSA6ICcnO1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gICAgICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gICAgICogb2YgdmFsdWVzLlxuICAgICAqL1xuICAgIHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4gICAgLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xuICAgIHZhciBvYmplY3RDdG9yU3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblxuICAgIC8qKiBVc2VkIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGBfYCByZWZlcmVuY2UgaW4gYF8ubm9Db25mbGljdGAuICovXG4gICAgdmFyIG9sZERhc2ggPSByb290Ll87XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xuICAgIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4gICAgKTtcblxuICAgIC8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xuICAgIHZhciBCdWZmZXIgPSBtb2R1bGVFeHBvcnRzID8gY29udGV4dC5CdWZmZXIgOiB1bmRlZmluZWQsXG4gICAgICAgIFN5bWJvbCA9IGNvbnRleHQuU3ltYm9sLFxuICAgICAgICBVaW50OEFycmF5ID0gY29udGV4dC5VaW50OEFycmF5LFxuICAgICAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCksXG4gICAgICAgIG9iamVjdENyZWF0ZSA9IE9iamVjdC5jcmVhdGUsXG4gICAgICAgIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGUsXG4gICAgICAgIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlLFxuICAgICAgICBzcHJlYWRhYmxlU3ltYm9sID0gU3ltYm9sID8gU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3ltSXRlcmF0b3IgPSBTeW1ib2wgPyBTeW1ib2wuaXRlcmF0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4gICAgdmFyIGRlZmluZVByb3BlcnR5ID0gKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICAgICAgZnVuYyh7fSwgJycsIHt9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmM7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH0oKSk7XG5cbiAgICAvKiogTW9ja2VkIGJ1aWx0LWlucy4gKi9cbiAgICB2YXIgY3R4Q2xlYXJUaW1lb3V0ID0gY29udGV4dC5jbGVhclRpbWVvdXQgIT09IHJvb3QuY2xlYXJUaW1lb3V0ICYmIGNvbnRleHQuY2xlYXJUaW1lb3V0LFxuICAgICAgICBjdHhOb3cgPSBEYXRlICYmIERhdGUubm93ICE9PSByb290LkRhdGUubm93ICYmIERhdGUubm93LFxuICAgICAgICBjdHhTZXRUaW1lb3V0ID0gY29udGV4dC5zZXRUaW1lb3V0ICE9PSByb290LnNldFRpbWVvdXQgJiYgY29udGV4dC5zZXRUaW1lb3V0O1xuXG4gICAgLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xuICAgIHZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsLFxuICAgICAgICBuYXRpdmVGbG9vciA9IE1hdGguZmxvb3IsXG4gICAgICAgIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICAgICAgICBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICAgICAgbmF0aXZlSXNGaW5pdGUgPSBjb250ZXh0LmlzRmluaXRlLFxuICAgICAgICBuYXRpdmVKb2luID0gYXJyYXlQcm90by5qb2luLFxuICAgICAgICBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KSxcbiAgICAgICAgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluLFxuICAgICAgICBuYXRpdmVOb3cgPSBEYXRlLm5vdyxcbiAgICAgICAgbmF0aXZlUGFyc2VJbnQgPSBjb250ZXh0LnBhcnNlSW50LFxuICAgICAgICBuYXRpdmVSYW5kb20gPSBNYXRoLnJhbmRvbSxcbiAgICAgICAgbmF0aXZlUmV2ZXJzZSA9IGFycmF5UHJvdG8ucmV2ZXJzZTtcblxuICAgIC8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbiAgICB2YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUoY29udGV4dCwgJ0RhdGFWaWV3JyksXG4gICAgICAgIE1hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnTWFwJyksXG4gICAgICAgIFByb21pc2UgPSBnZXROYXRpdmUoY29udGV4dCwgJ1Byb21pc2UnKSxcbiAgICAgICAgU2V0ID0gZ2V0TmF0aXZlKGNvbnRleHQsICdTZXQnKSxcbiAgICAgICAgV2Vha01hcCA9IGdldE5hdGl2ZShjb250ZXh0LCAnV2Vha01hcCcpLFxuICAgICAgICBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbiAgICAvKiogVXNlZCB0byBzdG9yZSBmdW5jdGlvbiBtZXRhZGF0YS4gKi9cbiAgICB2YXIgbWV0YU1hcCA9IFdlYWtNYXAgJiYgbmV3IFdlYWtNYXA7XG5cbiAgICAvKiogVXNlZCB0byBsb29rdXAgdW5taW5pZmllZCBmdW5jdGlvbiBuYW1lcy4gKi9cbiAgICB2YXIgcmVhbE5hbWVzID0ge307XG5cbiAgICAvKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xuICAgIHZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgICAgIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLFxuICAgICAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgICAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICAgICAgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcblxuICAgIC8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xuICAgIHZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQsXG4gICAgICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgbG9kYXNoYCBvYmplY3Qgd2hpY2ggd3JhcHMgYHZhbHVlYCB0byBlbmFibGUgaW1wbGljaXQgbWV0aG9kXG4gICAgICogY2hhaW4gc2VxdWVuY2VzLiBNZXRob2RzIHRoYXQgb3BlcmF0ZSBvbiBhbmQgcmV0dXJuIGFycmF5cywgY29sbGVjdGlvbnMsXG4gICAgICogYW5kIGZ1bmN0aW9ucyBjYW4gYmUgY2hhaW5lZCB0b2dldGhlci4gTWV0aG9kcyB0aGF0IHJldHJpZXZlIGEgc2luZ2xlIHZhbHVlXG4gICAgICogb3IgbWF5IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSB3aWxsIGF1dG9tYXRpY2FsbHkgZW5kIHRoZSBjaGFpbiBzZXF1ZW5jZVxuICAgICAqIGFuZCByZXR1cm4gdGhlIHVud3JhcHBlZCB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgdmFsdWUgbXVzdCBiZSB1bndyYXBwZWRcbiAgICAgKiB3aXRoIGBfI3ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEV4cGxpY2l0IGNoYWluIHNlcXVlbmNlcywgd2hpY2ggbXVzdCBiZSB1bndyYXBwZWQgd2l0aCBgXyN2YWx1ZWAsIG1heSBiZVxuICAgICAqIGVuYWJsZWQgdXNpbmcgYF8uY2hhaW5gLlxuICAgICAqXG4gICAgICogVGhlIGV4ZWN1dGlvbiBvZiBjaGFpbmVkIG1ldGhvZHMgaXMgbGF6eSwgdGhhdCBpcywgaXQncyBkZWZlcnJlZCB1bnRpbFxuICAgICAqIGBfI3ZhbHVlYCBpcyBpbXBsaWNpdGx5IG9yIGV4cGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogTGF6eSBldmFsdWF0aW9uIGFsbG93cyBzZXZlcmFsIG1ldGhvZHMgdG8gc3VwcG9ydCBzaG9ydGN1dCBmdXNpb24uXG4gICAgICogU2hvcnRjdXQgZnVzaW9uIGlzIGFuIG9wdGltaXphdGlvbiB0byBtZXJnZSBpdGVyYXRlZSBjYWxsczsgdGhpcyBhdm9pZHNcbiAgICAgKiB0aGUgY3JlYXRpb24gb2YgaW50ZXJtZWRpYXRlIGFycmF5cyBhbmQgY2FuIGdyZWF0bHkgcmVkdWNlIHRoZSBudW1iZXIgb2ZcbiAgICAgKiBpdGVyYXRlZSBleGVjdXRpb25zLiBTZWN0aW9ucyBvZiBhIGNoYWluIHNlcXVlbmNlIHF1YWxpZnkgZm9yIHNob3J0Y3V0XG4gICAgICogZnVzaW9uIGlmIHRoZSBzZWN0aW9uIGlzIGFwcGxpZWQgdG8gYW4gYXJyYXkgYW5kIGl0ZXJhdGVlcyBhY2NlcHQgb25seVxuICAgICAqIG9uZSBhcmd1bWVudC4gVGhlIGhldXJpc3RpYyBmb3Igd2hldGhlciBhIHNlY3Rpb24gcXVhbGlmaWVzIGZvciBzaG9ydGN1dFxuICAgICAqIGZ1c2lvbiBpcyBzdWJqZWN0IHRvIGNoYW5nZS5cbiAgICAgKlxuICAgICAqIENoYWluaW5nIGlzIHN1cHBvcnRlZCBpbiBjdXN0b20gYnVpbGRzIGFzIGxvbmcgYXMgdGhlIGBfI3ZhbHVlYCBtZXRob2QgaXNcbiAgICAgKiBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluY2x1ZGVkIGluIHRoZSBidWlsZC5cbiAgICAgKlxuICAgICAqIEluIGFkZGl0aW9uIHRvIGxvZGFzaCBtZXRob2RzLCB3cmFwcGVycyBoYXZlIGBBcnJheWAgYW5kIGBTdHJpbmdgIG1ldGhvZHMuXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBgQXJyYXlgIG1ldGhvZHMgYXJlOlxuICAgICAqIGBjb25jYXRgLCBgam9pbmAsIGBwb3BgLCBgcHVzaGAsIGBzaGlmdGAsIGBzb3J0YCwgYHNwbGljZWAsIGFuZCBgdW5zaGlmdGBcbiAgICAgKlxuICAgICAqIFRoZSB3cmFwcGVyIGBTdHJpbmdgIG1ldGhvZHMgYXJlOlxuICAgICAqIGByZXBsYWNlYCBhbmQgYHNwbGl0YFxuICAgICAqXG4gICAgICogVGhlIHdyYXBwZXIgbWV0aG9kcyB0aGF0IHN1cHBvcnQgc2hvcnRjdXQgZnVzaW9uIGFyZTpcbiAgICAgKiBgYXRgLCBgY29tcGFjdGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBkcm9wV2hpbGVgLCBgZmlsdGVyYCwgYGZpbmRgLFxuICAgICAqIGBmaW5kTGFzdGAsIGBoZWFkYCwgYGluaXRpYWxgLCBgbGFzdGAsIGBtYXBgLCBgcmVqZWN0YCwgYHJldmVyc2VgLCBgc2xpY2VgLFxuICAgICAqIGB0YWlsYCwgYHRha2VgLCBgdGFrZVJpZ2h0YCwgYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGFuZCBgdG9BcnJheWBcbiAgICAgKlxuICAgICAqIFRoZSBjaGFpbmFibGUgd3JhcHBlciBtZXRob2RzIGFyZTpcbiAgICAgKiBgYWZ0ZXJgLCBgYXJ5YCwgYGFzc2lnbmAsIGBhc3NpZ25JbmAsIGBhc3NpZ25JbldpdGhgLCBgYXNzaWduV2l0aGAsIGBhdGAsXG4gICAgICogYGJlZm9yZWAsIGBiaW5kYCwgYGJpbmRBbGxgLCBgYmluZEtleWAsIGBjYXN0QXJyYXlgLCBgY2hhaW5gLCBgY2h1bmtgLFxuICAgICAqIGBjb21taXRgLCBgY29tcGFjdGAsIGBjb25jYXRgLCBgY29uZm9ybXNgLCBgY29uc3RhbnRgLCBgY291bnRCeWAsIGBjcmVhdGVgLFxuICAgICAqIGBjdXJyeWAsIGBkZWJvdW5jZWAsIGBkZWZhdWx0c2AsIGBkZWZhdWx0c0RlZXBgLCBgZGVmZXJgLCBgZGVsYXlgLFxuICAgICAqIGBkaWZmZXJlbmNlYCwgYGRpZmZlcmVuY2VCeWAsIGBkaWZmZXJlbmNlV2l0aGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsXG4gICAgICogYGRyb3BSaWdodFdoaWxlYCwgYGRyb3BXaGlsZWAsIGBleHRlbmRgLCBgZXh0ZW5kV2l0aGAsIGBmaWxsYCwgYGZpbHRlcmAsXG4gICAgICogYGZsYXRNYXBgLCBgZmxhdE1hcERlZXBgLCBgZmxhdE1hcERlcHRoYCwgYGZsYXR0ZW5gLCBgZmxhdHRlbkRlZXBgLFxuICAgICAqIGBmbGF0dGVuRGVwdGhgLCBgZmxpcGAsIGBmbG93YCwgYGZsb3dSaWdodGAsIGBmcm9tUGFpcnNgLCBgZnVuY3Rpb25zYCxcbiAgICAgKiBgZnVuY3Rpb25zSW5gLCBgZ3JvdXBCeWAsIGBpbml0aWFsYCwgYGludGVyc2VjdGlvbmAsIGBpbnRlcnNlY3Rpb25CeWAsXG4gICAgICogYGludGVyc2VjdGlvbldpdGhgLCBgaW52ZXJ0YCwgYGludmVydEJ5YCwgYGludm9rZU1hcGAsIGBpdGVyYXRlZWAsIGBrZXlCeWAsXG4gICAgICogYGtleXNgLCBga2V5c0luYCwgYG1hcGAsIGBtYXBLZXlzYCwgYG1hcFZhbHVlc2AsIGBtYXRjaGVzYCwgYG1hdGNoZXNQcm9wZXJ0eWAsXG4gICAgICogYG1lbW9pemVgLCBgbWVyZ2VgLCBgbWVyZ2VXaXRoYCwgYG1ldGhvZGAsIGBtZXRob2RPZmAsIGBtaXhpbmAsIGBuZWdhdGVgLFxuICAgICAqIGBudGhBcmdgLCBgb21pdGAsIGBvbWl0QnlgLCBgb25jZWAsIGBvcmRlckJ5YCwgYG92ZXJgLCBgb3ZlckFyZ3NgLFxuICAgICAqIGBvdmVyRXZlcnlgLCBgb3ZlclNvbWVgLCBgcGFydGlhbGAsIGBwYXJ0aWFsUmlnaHRgLCBgcGFydGl0aW9uYCwgYHBpY2tgLFxuICAgICAqIGBwaWNrQnlgLCBgcGxhbnRgLCBgcHJvcGVydHlgLCBgcHJvcGVydHlPZmAsIGBwdWxsYCwgYHB1bGxBbGxgLCBgcHVsbEFsbEJ5YCxcbiAgICAgKiBgcHVsbEFsbFdpdGhgLCBgcHVsbEF0YCwgYHB1c2hgLCBgcmFuZ2VgLCBgcmFuZ2VSaWdodGAsIGByZWFyZ2AsIGByZWplY3RgLFxuICAgICAqIGByZW1vdmVgLCBgcmVzdGAsIGByZXZlcnNlYCwgYHNhbXBsZVNpemVgLCBgc2V0YCwgYHNldFdpdGhgLCBgc2h1ZmZsZWAsXG4gICAgICogYHNsaWNlYCwgYHNvcnRgLCBgc29ydEJ5YCwgYHNwbGljZWAsIGBzcHJlYWRgLCBgdGFpbGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRha2VSaWdodFdoaWxlYCwgYHRha2VXaGlsZWAsIGB0YXBgLCBgdGhyb3R0bGVgLCBgdGhydWAsIGB0b0FycmF5YCxcbiAgICAgKiBgdG9QYWlyc2AsIGB0b1BhaXJzSW5gLCBgdG9QYXRoYCwgYHRvUGxhaW5PYmplY3RgLCBgdHJhbnNmb3JtYCwgYHVuYXJ5YCxcbiAgICAgKiBgdW5pb25gLCBgdW5pb25CeWAsIGB1bmlvbldpdGhgLCBgdW5pcWAsIGB1bmlxQnlgLCBgdW5pcVdpdGhgLCBgdW5zZXRgLFxuICAgICAqIGB1bnNoaWZ0YCwgYHVuemlwYCwgYHVuemlwV2l0aGAsIGB1cGRhdGVgLCBgdXBkYXRlV2l0aGAsIGB2YWx1ZXNgLFxuICAgICAqIGB2YWx1ZXNJbmAsIGB3aXRob3V0YCwgYHdyYXBgLCBgeG9yYCwgYHhvckJ5YCwgYHhvcldpdGhgLCBgemlwYCxcbiAgICAgKiBgemlwT2JqZWN0YCwgYHppcE9iamVjdERlZXBgLCBhbmQgYHppcFdpdGhgXG4gICAgICpcbiAgICAgKiBUaGUgd3JhcHBlciBtZXRob2RzIHRoYXQgYXJlICoqbm90KiogY2hhaW5hYmxlIGJ5IGRlZmF1bHQgYXJlOlxuICAgICAqIGBhZGRgLCBgYXR0ZW1wdGAsIGBjYW1lbENhc2VgLCBgY2FwaXRhbGl6ZWAsIGBjZWlsYCwgYGNsYW1wYCwgYGNsb25lYCxcbiAgICAgKiBgY2xvbmVEZWVwYCwgYGNsb25lRGVlcFdpdGhgLCBgY2xvbmVXaXRoYCwgYGNvbmZvcm1zVG9gLCBgZGVidXJyYCxcbiAgICAgKiBgZGVmYXVsdFRvYCwgYGRpdmlkZWAsIGBlYWNoYCwgYGVhY2hSaWdodGAsIGBlbmRzV2l0aGAsIGBlcWAsIGBlc2NhcGVgLFxuICAgICAqIGBlc2NhcGVSZWdFeHBgLCBgZXZlcnlgLCBgZmluZGAsIGBmaW5kSW5kZXhgLCBgZmluZEtleWAsIGBmaW5kTGFzdGAsXG4gICAgICogYGZpbmRMYXN0SW5kZXhgLCBgZmluZExhc3RLZXlgLCBgZmlyc3RgLCBgZmxvb3JgLCBgZm9yRWFjaGAsIGBmb3JFYWNoUmlnaHRgLFxuICAgICAqIGBmb3JJbmAsIGBmb3JJblJpZ2h0YCwgYGZvck93bmAsIGBmb3JPd25SaWdodGAsIGBnZXRgLCBgZ3RgLCBgZ3RlYCwgYGhhc2AsXG4gICAgICogYGhhc0luYCwgYGhlYWRgLCBgaWRlbnRpdHlgLCBgaW5jbHVkZXNgLCBgaW5kZXhPZmAsIGBpblJhbmdlYCwgYGludm9rZWAsXG4gICAgICogYGlzQXJndW1lbnRzYCwgYGlzQXJyYXlgLCBgaXNBcnJheUJ1ZmZlcmAsIGBpc0FycmF5TGlrZWAsIGBpc0FycmF5TGlrZU9iamVjdGAsXG4gICAgICogYGlzQm9vbGVhbmAsIGBpc0J1ZmZlcmAsIGBpc0RhdGVgLCBgaXNFbGVtZW50YCwgYGlzRW1wdHlgLCBgaXNFcXVhbGAsXG4gICAgICogYGlzRXF1YWxXaXRoYCwgYGlzRXJyb3JgLCBgaXNGaW5pdGVgLCBgaXNGdW5jdGlvbmAsIGBpc0ludGVnZXJgLCBgaXNMZW5ndGhgLFxuICAgICAqIGBpc01hcGAsIGBpc01hdGNoYCwgYGlzTWF0Y2hXaXRoYCwgYGlzTmFOYCwgYGlzTmF0aXZlYCwgYGlzTmlsYCwgYGlzTnVsbGAsXG4gICAgICogYGlzTnVtYmVyYCwgYGlzT2JqZWN0YCwgYGlzT2JqZWN0TGlrZWAsIGBpc1BsYWluT2JqZWN0YCwgYGlzUmVnRXhwYCxcbiAgICAgKiBgaXNTYWZlSW50ZWdlcmAsIGBpc1NldGAsIGBpc1N0cmluZ2AsIGBpc1VuZGVmaW5lZGAsIGBpc1R5cGVkQXJyYXlgLFxuICAgICAqIGBpc1dlYWtNYXBgLCBgaXNXZWFrU2V0YCwgYGpvaW5gLCBga2ViYWJDYXNlYCwgYGxhc3RgLCBgbGFzdEluZGV4T2ZgLFxuICAgICAqIGBsb3dlckNhc2VgLCBgbG93ZXJGaXJzdGAsIGBsdGAsIGBsdGVgLCBgbWF4YCwgYG1heEJ5YCwgYG1lYW5gLCBgbWVhbkJ5YCxcbiAgICAgKiBgbWluYCwgYG1pbkJ5YCwgYG11bHRpcGx5YCwgYG5vQ29uZmxpY3RgLCBgbm9vcGAsIGBub3dgLCBgbnRoYCwgYHBhZGAsXG4gICAgICogYHBhZEVuZGAsIGBwYWRTdGFydGAsIGBwYXJzZUludGAsIGBwb3BgLCBgcmFuZG9tYCwgYHJlZHVjZWAsIGByZWR1Y2VSaWdodGAsXG4gICAgICogYHJlcGVhdGAsIGByZXN1bHRgLCBgcm91bmRgLCBgcnVuSW5Db250ZXh0YCwgYHNhbXBsZWAsIGBzaGlmdGAsIGBzaXplYCxcbiAgICAgKiBgc25ha2VDYXNlYCwgYHNvbWVgLCBgc29ydGVkSW5kZXhgLCBgc29ydGVkSW5kZXhCeWAsIGBzb3J0ZWRMYXN0SW5kZXhgLFxuICAgICAqIGBzb3J0ZWRMYXN0SW5kZXhCeWAsIGBzdGFydENhc2VgLCBgc3RhcnRzV2l0aGAsIGBzdHViQXJyYXlgLCBgc3R1YkZhbHNlYCxcbiAgICAgKiBgc3R1Yk9iamVjdGAsIGBzdHViU3RyaW5nYCwgYHN0dWJUcnVlYCwgYHN1YnRyYWN0YCwgYHN1bWAsIGBzdW1CeWAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRpbWVzYCwgYHRvRmluaXRlYCwgYHRvSW50ZWdlcmAsIGB0b0pTT05gLCBgdG9MZW5ndGhgLFxuICAgICAqIGB0b0xvd2VyYCwgYHRvTnVtYmVyYCwgYHRvU2FmZUludGVnZXJgLCBgdG9TdHJpbmdgLCBgdG9VcHBlcmAsIGB0cmltYCxcbiAgICAgKiBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBgdHJ1bmNhdGVgLCBgdW5lc2NhcGVgLCBgdW5pcXVlSWRgLCBgdXBwZXJDYXNlYCxcbiAgICAgKiBgdXBwZXJGaXJzdGAsIGB2YWx1ZWAsIGFuZCBgd29yZHNgXG4gICAgICpcbiAgICAgKiBAbmFtZSBfXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAgaW4gYSBgbG9kYXNoYCBpbnN0YW5jZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gc3F1YXJlKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDIsIDNdKTtcbiAgICAgKlxuICAgICAqIC8vIFJldHVybnMgYW4gdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIHdyYXBwZWQucmVkdWNlKF8uYWRkKTtcbiAgICAgKiAvLyA9PiA2XG4gICAgICpcbiAgICAgKiAvLyBSZXR1cm5zIGEgd3JhcHBlZCB2YWx1ZS5cbiAgICAgKiB2YXIgc3F1YXJlcyA9IHdyYXBwZWQubWFwKHNxdWFyZSk7XG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoc3F1YXJlcyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShzcXVhcmVzLnZhbHVlKCkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsb2Rhc2godmFsdWUpIHtcbiAgICAgIGlmIChpc09iamVjdExpa2UodmFsdWUpICYmICFpc0FycmF5KHZhbHVlKSAmJiAhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKSB7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdfX3dyYXBwZWRfXycpKSB7XG4gICAgICAgICAgcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICAgICAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICAgICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgICAgIG9iamVjdC5wcm90b3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0oKSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZnVuY3Rpb24gd2hvc2UgcHJvdG90eXBlIGNoYWluIHNlcXVlbmNlIHdyYXBwZXJzIGluaGVyaXQgZnJvbS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUxvZGFzaCgpIHtcbiAgICAgIC8vIE5vIG9wZXJhdGlvbiBwZXJmb3JtZWQuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgY29uc3RydWN0b3IgZm9yIGNyZWF0aW5nIGBsb2Rhc2hgIHdyYXBwZXIgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtjaGFpbkFsbF0gRW5hYmxlIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gTG9kYXNoV3JhcHBlcih2YWx1ZSwgY2hhaW5BbGwpIHtcbiAgICAgIHRoaXMuX193cmFwcGVkX18gPSB2YWx1ZTtcbiAgICAgIHRoaXMuX19hY3Rpb25zX18gPSBbXTtcbiAgICAgIHRoaXMuX19jaGFpbl9fID0gISFjaGFpbkFsbDtcbiAgICAgIHRoaXMuX19pbmRleF9fID0gMDtcbiAgICAgIHRoaXMuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgdGVtcGxhdGUgZGVsaW1pdGVycyB1c2VkIGJ5IGxvZGFzaCBhcmUgbGlrZSB0aG9zZSBpblxuICAgICAqIGVtYmVkZGVkIFJ1YnkgKEVSQikgYXMgd2VsbCBhcyBFUzIwMTUgdGVtcGxhdGUgc3RyaW5ncy4gQ2hhbmdlIHRoZVxuICAgICAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICovXG4gICAgbG9kYXNoLnRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBiZSBIVE1MLWVzY2FwZWQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2VzY2FwZSc6IHJlRXNjYXBlLFxuXG4gICAgICAvKipcbiAgICAgICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtSZWdFeHB9XG4gICAgICAgKi9cbiAgICAgICdldmFsdWF0ZSc6IHJlRXZhbHVhdGUsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBkZXRlY3QgYGRhdGFgIHByb3BlcnR5IHZhbHVlcyB0byBpbmplY3QuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge1JlZ0V4cH1cbiAgICAgICAqL1xuICAgICAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAgICAgLyoqXG4gICAgICAgKiBVc2VkIHRvIHJlZmVyZW5jZSB0aGUgZGF0YSBvYmplY3QgaW4gdGhlIHRlbXBsYXRlIHRleHQuXG4gICAgICAgKlxuICAgICAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAqL1xuICAgICAgJ3ZhcmlhYmxlJzogJycsXG5cbiAgICAgIC8qKlxuICAgICAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgICAgICpcbiAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3NcbiAgICAgICAqIEB0eXBlIHtPYmplY3R9XG4gICAgICAgKi9cbiAgICAgICdpbXBvcnRzJzoge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHJlZmVyZW5jZSB0byB0aGUgYGxvZGFzaGAgZnVuY3Rpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICAgICAqL1xuICAgICAgICAnXyc6IGxvZGFzaFxuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBFbnN1cmUgd3JhcHBlcnMgYXJlIGluc3RhbmNlcyBvZiBgYmFzZUxvZGFzaGAuXG4gICAgbG9kYXNoLnByb3RvdHlwZSA9IGJhc2VMb2Rhc2gucHJvdG90eXBlO1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBsb2Rhc2g7XG5cbiAgICBMb2Rhc2hXcmFwcGVyLnByb3RvdHlwZSA9IGJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO1xuICAgIExvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9kYXNoV3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBsYXp5IHdyYXBwZXIgb2JqZWN0IHdoaWNoIHdyYXBzIGB2YWx1ZWAgdG8gZW5hYmxlIGxhenkgZXZhbHVhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMYXp5V3JhcHBlcih2YWx1ZSkge1xuICAgICAgdGhpcy5fX3dyYXBwZWRfXyA9IHZhbHVlO1xuICAgICAgdGhpcy5fX2FjdGlvbnNfXyA9IFtdO1xuICAgICAgdGhpcy5fX2Rpcl9fID0gMTtcbiAgICAgIHRoaXMuX19maWx0ZXJlZF9fID0gZmFsc2U7XG4gICAgICB0aGlzLl9faXRlcmF0ZWVzX18gPSBbXTtcbiAgICAgIHRoaXMuX190YWtlQ291bnRfXyA9IE1BWF9BUlJBWV9MRU5HVEg7XG4gICAgICB0aGlzLl9fdmlld3NfXyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgbGF6eSB3cmFwcGVyIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgY2xvbmVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eUNsb25lKCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzLl9fd3JhcHBlZF9fKTtcbiAgICAgIHJlc3VsdC5fX2FjdGlvbnNfXyA9IGNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtcbiAgICAgIHJlc3VsdC5fX2Rpcl9fID0gdGhpcy5fX2Rpcl9fO1xuICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRoaXMuX19maWx0ZXJlZF9fO1xuICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18gPSBjb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtcbiAgICAgIHJlc3VsdC5fX3Rha2VDb3VudF9fID0gdGhpcy5fX3Rha2VDb3VudF9fO1xuICAgICAgcmVzdWx0Ll9fdmlld3NfXyA9IGNvcHlBcnJheSh0aGlzLl9fdmlld3NfXyk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldmVyc2VzIHRoZSBkaXJlY3Rpb24gb2YgbGF6eSBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgcmV2ZXJzZWQgYExhenlXcmFwcGVyYCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGF6eVJldmVyc2UoKSB7XG4gICAgICBpZiAodGhpcy5fX2ZpbHRlcmVkX18pIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgcmVzdWx0Ll9fZGlyX18gPSAtMTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHJlc3VsdC5fX2Rpcl9fICo9IC0xO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB0aGUgdW53cmFwcGVkIHZhbHVlIGZyb20gaXRzIGxhenkgd3JhcHBlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgdmFsdWVcbiAgICAgKiBAbWVtYmVyT2YgTGF6eVdyYXBwZXJcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhenlWYWx1ZSgpIHtcbiAgICAgIHZhciBhcnJheSA9IHRoaXMuX193cmFwcGVkX18udmFsdWUoKSxcbiAgICAgICAgICBkaXIgPSB0aGlzLl9fZGlyX18sXG4gICAgICAgICAgaXNBcnIgPSBpc0FycmF5KGFycmF5KSxcbiAgICAgICAgICBpc1JpZ2h0ID0gZGlyIDwgMCxcbiAgICAgICAgICBhcnJMZW5ndGggPSBpc0FyciA/IGFycmF5Lmxlbmd0aCA6IDAsXG4gICAgICAgICAgdmlldyA9IGdldFZpZXcoMCwgYXJyTGVuZ3RoLCB0aGlzLl9fdmlld3NfXyksXG4gICAgICAgICAgc3RhcnQgPSB2aWV3LnN0YXJ0LFxuICAgICAgICAgIGVuZCA9IHZpZXcuZW5kLFxuICAgICAgICAgIGxlbmd0aCA9IGVuZCAtIHN0YXJ0LFxuICAgICAgICAgIGluZGV4ID0gaXNSaWdodCA/IGVuZCA6IChzdGFydCAtIDEpLFxuICAgICAgICAgIGl0ZXJhdGVlcyA9IHRoaXMuX19pdGVyYXRlZXNfXyxcbiAgICAgICAgICBpdGVyTGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgdGFrZUNvdW50ID0gbmF0aXZlTWluKGxlbmd0aCwgdGhpcy5fX3Rha2VDb3VudF9fKTtcblxuICAgICAgaWYgKCFpc0FyciB8fCAoIWlzUmlnaHQgJiYgYXJyTGVuZ3RoID09IGxlbmd0aCAmJiB0YWtlQ291bnQgPT0gbGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZShhcnJheSwgdGhpcy5fX2FjdGlvbnNfXyk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG5cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKGxlbmd0aC0tICYmIHJlc0luZGV4IDwgdGFrZUNvdW50KSB7XG4gICAgICAgIGluZGV4ICs9IGRpcjtcblxuICAgICAgICB2YXIgaXRlckluZGV4ID0gLTEsXG4gICAgICAgICAgICB2YWx1ZSA9IGFycmF5W2luZGV4XTtcblxuICAgICAgICB3aGlsZSAoKytpdGVySW5kZXggPCBpdGVyTGVuZ3RoKSB7XG4gICAgICAgICAgdmFyIGRhdGEgPSBpdGVyYXRlZXNbaXRlckluZGV4XSxcbiAgICAgICAgICAgICAgaXRlcmF0ZWUgPSBkYXRhLml0ZXJhdGVlLFxuICAgICAgICAgICAgICB0eXBlID0gZGF0YS50eXBlLFxuICAgICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICAgIGlmICh0eXBlID09IExBWllfTUFQX0ZMQUcpIHtcbiAgICAgICAgICAgIHZhbHVlID0gY29tcHV0ZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmICghY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0eXBlID09IExBWllfRklMVEVSX0ZMQUcpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVhayBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEVuc3VyZSBgTGF6eVdyYXBwZXJgIGlzIGFuIGluc3RhbmNlIG9mIGBiYXNlTG9kYXNoYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUgPSBiYXNlQ3JlYXRlKGJhc2VMb2Rhc2gucHJvdG90eXBlKTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBMYXp5V3JhcHBlcjtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIEhhc2hcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gICAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoYXNoIFRoZSBoYXNoIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgICAgIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gICAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaGFzaCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgSGFzaFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc2hTZXQoa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgICAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgICAgIGRhdGFba2V5XSA9IChuYXRpdmVDcmVhdGUgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkgPyBIQVNIX1VOREVGSU5FRCA6IHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuICAgIEhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuICAgIEhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG4gICAgSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbiAgICBIYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuICAgIEhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsaXN0Q2FjaGVDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICAgIHRoaXMuc2l6ZSA9IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlRGVsZXRlKGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGRhdGEubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICAgIC0tdGhpcy5zaXplO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGdldFxuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgICAgIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICAgICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGxpc3QgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICsrdGhpcy5zaXplO1xuICAgICAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFbaW5kZXhdWzFdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbiAgICBMaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG4gICAgTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBjbGVhclxuICAgICAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgICB0aGlzLnNpemUgPSAwO1xuICAgICAgdGhpcy5fX2RhdGFfXyA9IHtcbiAgICAgICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAgICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgICAgICdzdHJpbmcnOiBuZXcgSGFzaFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBkZWxldGVcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgICAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgdmFsdWUgZm9yIGBrZXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBnZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBoYXNcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAbmFtZSBzZXRcbiAgICAgKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuICAgIE1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuICAgIE1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbiAgICBNYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG4gICAgTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IGNhY2hlIG9iamVjdCB0byBzdG9yZSB1bmlxdWUgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFNldENhY2hlKHZhbHVlcykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gdmFsdWVzID09IG51bGwgPyAwIDogdmFsdWVzLmxlbmd0aDtcblxuICAgICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkKHZhbHVlc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGFkZFxuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBhbGlhcyBwdXNoXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2FjaGUgaW5zdGFuY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICAgIHRoaXMuX19kYXRhX18uc2V0KHZhbHVlLCBIQVNIX1VOREVGSU5FRCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBpbiB0aGUgYXJyYXkgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGhhc1xuICAgICAqIEBtZW1iZXJPZiBTZXRDYWNoZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModmFsdWUpO1xuICAgIH1cblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBTZXRDYWNoZWAuXG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG4gICAgU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGNsZWFyXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgICAgdGhpcy5zaXplID0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgc3RhY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBuYW1lIGRlbGV0ZVxuICAgICAqIEBtZW1iZXJPZiBTdGFja1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgZ2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgaGFzXG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrSGFzKGtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgc3RhY2sgYGtleWAgdG8gYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQG5hbWUgc2V0XG4gICAgICogQG1lbWJlck9mIFN0YWNrXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YWNrU2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICAgIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgICAgIHZhciBwYWlycyA9IGRhdGEuX19kYXRhX187XG4gICAgICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgdGhpcy5zaXplID0gKytkYXRhLnNpemU7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGUocGFpcnMpO1xuICAgICAgfVxuICAgICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0byBgU3RhY2tgLlxuICAgIFN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG4gICAgU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuICAgIFN0YWNrLnByb3RvdHlwZS5nZXQgPSBzdGFja0dldDtcbiAgICBTdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG4gICAgU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgICAgIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgICAgIC8vIFNhZmFyaSA5IGhhcyBlbnVtZXJhYmxlIGBhcmd1bWVudHMubGVuZ3RoYCBpbiBzdHJpY3QgbW9kZS5cbiAgICAgICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgICAgICkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlYCBmb3IgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZShhcnJheSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtiYXNlUmFuZG9tKDAsIGxlbmd0aCAtIDEpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc2FtcGxlU2l6ZWAgZm9yIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNhbXBsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhcnJheVNhbXBsZVNpemUoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihjb3B5QXJyYXkoYXJyYXkpLCBiYXNlQ2xhbXAobiwgMCwgYXJyYXkubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIGZvciBhcnJheXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSkge1xuICAgICAgcmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gICAgICogYHVuZGVmaW5lZGAgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgICAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgICAgICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpKSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XTtcbiAgICAgIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGVzIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBvbiBgYWNjdW11bGF0b3JgIHdpdGgga2V5cyB0cmFuc2Zvcm1lZFxuICAgICAqIGJ5IGBpdGVyYXRlZWAgYW5kIHZhbHVlcyBzZXQgYnkgYHNldHRlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIGtleXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGFjY3VtdWxhdG9yIFRoZSBpbml0aWFsIGFnZ3JlZ2F0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgdmFsdWUsIGl0ZXJhdGVlKHZhbHVlKSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICAgICAqIG9yIGBjdXN0b21pemVyYCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbkluYCB3aXRob3V0IHN1cHBvcnQgZm9yIG11bHRpcGxlIHNvdXJjZXNcbiAgICAgKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5c0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAgICAgKiB2YWx1ZSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYXRocyBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHBpY2tlZCBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQXQob2JqZWN0LCBwYXRocykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aHMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCksXG4gICAgICAgICAgc2tpcCA9IG9iamVjdCA9PSBudWxsO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gc2tpcCA/IHVuZGVmaW5lZCA6IGdldChvYmplY3QsIHBhdGhzW2luZGV4XSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsYW1wYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLCBsb3dlciwgdXBwZXIpIHtcbiAgICAgIGlmIChudW1iZXIgPT09IG51bWJlcikge1xuICAgICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG51bWJlciA9IG51bWJlciA8PSB1cHBlciA/IG51bWJlciA6IHVwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbnVtYmVyID0gbnVtYmVyID49IGxvd2VyID8gbnVtYmVyIDogbG93ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICAgICAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBEZWVwIGNsb25lXG4gICAgICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gICAgICogIDQgLSBDbG9uZSBzeW1ib2xzXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgcGFyZW50IG9iamVjdCBvZiBgdmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgICAgIHZhciByZXN1bHQsXG4gICAgICAgICAgaXNEZWVwID0gYml0bWFzayAmIENMT05FX0RFRVBfRkxBRyxcbiAgICAgICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSk7XG4gICAgICBpZiAoaXNBcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgICAgICBpZiAoaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gb2JqZWN0VGFnIHx8IHRhZyA9PSBhcmdzVGFnIHx8IChpc0Z1bmMgJiYgIW9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgICAgIHJldHVybiBpc0ZsYXRcbiAgICAgICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdCA/IHZhbHVlIDoge307XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIHN0YWNrZWQ7XG4gICAgICB9XG4gICAgICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgICAgIGlmIChpc1NldCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICAgICAgcmVzdWx0LnNldChrZXksIGJhc2VDbG9uZShzdWJWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCB2YWx1ZSwgc3RhY2spKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHZhciBrZXlzRnVuYyA9IGlzRnVsbFxuICAgICAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgICAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICAgICAgdmFyIHByb3BzID0gaXNBcnIgPyB1bmRlZmluZWQgOiBrZXlzRnVuYyh2YWx1ZSk7XG4gICAgICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHByb3BzKSB7XG4gICAgICAgICAga2V5ID0gc3ViVmFsdWU7XG4gICAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHBvcHVsYXRlIGNsb25lIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY29uZm9ybXNgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNvdXJjZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlQ29uZm9ybXMoc291cmNlKSB7XG4gICAgICB2YXIgcHJvcHMgPSBrZXlzKHNvdXJjZSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlQ29uZm9ybXNUbyhvYmplY3QsIHNvdXJjZSwgcHJvcHMpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jb25mb3Jtc1RvYCB3aGljaCBhY2NlcHRzIGBwcm9wc2AgdG8gY2hlY2suXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSBwcmVkaWNhdGVzIHRvIGNvbmZvcm0gdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGNvbmZvcm1zLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIHByb3BzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHByb3BzW2xlbmd0aF0sXG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBzb3VyY2Vba2V5XSxcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgICAgaWYgKCh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHx8ICFwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5kZWxheWAgYW5kIGBfLmRlZmVyYCB3aGljaCBhY2NlcHRzIGBhcmdzYFxuICAgICAqIHRvIHByb3ZpZGUgdG8gYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gd2FpdCBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheSBpbnZvY2F0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MgVGhlIGFyZ3VtZW50cyB0byBwcm92aWRlIHRvIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfE9iamVjdH0gUmV0dXJucyB0aGUgdGltZXIgaWQgb3IgdGltZW91dCBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsIHdhaXQsIGFyZ3MpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7IH0sIHdhaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5kaWZmZXJlbmNlYCB3aXRob3V0IHN1cHBvcnRcbiAgICAgKiBmb3IgZXhjbHVkaW5nIG11bHRpcGxlIGFycmF5cyBvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXMsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBbXSxcbiAgICAgICAgICB2YWx1ZXNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoO1xuXG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHZhbHVlcyA9IGFycmF5TWFwKHZhbHVlcywgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICB9XG4gICAgICBpZiAoY29tcGFyYXRvcikge1xuICAgICAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcyA9IG5ldyBTZXRDYWNoZSh2YWx1ZXMpO1xuICAgICAgfVxuICAgICAgb3V0ZXI6XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID09IG51bGwgPyB2YWx1ZSA6IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgIHZhciB2YWx1ZXNJbmRleCA9IHZhbHVlc0xlbmd0aDtcbiAgICAgICAgICB3aGlsZSAodmFsdWVzSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1t2YWx1ZXNJbmRleF0gPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWluY2x1ZGVzKHZhbHVlcywgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoID0gY3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JFYWNoUmlnaHRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICovXG4gICAgdmFyIGJhc2VFYWNoUmlnaHQgPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duUmlnaHQsIHRydWUpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZXZlcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXZlcnkoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikge1xuICAgICAgICByZXN1bHQgPSAhIXByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIG1ldGhvZHMgbGlrZSBgXy5tYXhgIGFuZCBgXy5taW5gIHdoaWNoIGFjY2VwdHMgYVxuICAgICAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyYXRvciBUaGUgY29tcGFyYXRvciB1c2VkIHRvIGNvbXBhcmUgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRXh0cmVtdW0oYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlZSh2YWx1ZSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCAmJiAoY29tcHV0ZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICAgICAgOiBjb21wYXJhdG9yKGN1cnJlbnQsIGNvbXB1dGVkKVxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbGxgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZpbGwuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZmlsbCBgYXJyYXlgIHdpdGguXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICAgICAgc3RhcnQgPSB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgICAgfVxuICAgICAgZW5kID0gKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IGxlbmd0aCkgPyBsZW5ndGggOiB0b0ludGVnZXIoZW5kKTtcbiAgICAgIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIGVuZCArPSBsZW5ndGg7XG4gICAgICB9XG4gICAgICBlbmQgPSBzdGFydCA+IGVuZCA/IDAgOiB0b0xlbmd0aChlbmQpO1xuICAgICAgd2hpbGUgKHN0YXJ0IDwgZW5kKSB7XG4gICAgICAgIGFycmF5W3N0YXJ0KytdID0gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmlsdGVyYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmlsdGVyKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgYmFzZUVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZsYXR0ZW5gIHdpdGggc3VwcG9ydCBmb3IgcmVzdHJpY3RpbmcgZmxhdHRlbmluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRlcHRoIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc1N0cmljdF0gUmVzdHJpY3QgdG8gdmFsdWVzIHRoYXQgcGFzcyBgcHJlZGljYXRlYCBjaGVja3MuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Jlc3VsdD1bXV0gVGhlIGluaXRpYWwgcmVzdWx0IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgfHwgKHByZWRpY2F0ZSA9IGlzRmxhdHRlbmFibGUpO1xuICAgICAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XTtcbiAgICAgICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICAgICAgaWYgKGRlcHRoID4gMSkge1xuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgZmxhdHRlbiBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycmF5UHVzaChyZXN1bHQsIHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaWN0KSB7XG4gICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGhdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAgICAgKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgdmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGJhc2VGb3JgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllc1xuICAgICAqIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICB2YXIgYmFzZUZvclJpZ2h0ID0gY3JlYXRlQmFzZUZvcih0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5mb3JPd25SaWdodGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlRm9yT3duUmlnaHQob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yUmlnaHQob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZnVuY3Rpb25zYCB3aGljaCBjcmVhdGVzIGFuIGFycmF5IG9mXG4gICAgICogYG9iamVjdGAgZnVuY3Rpb24gcHJvcGVydHkgbmFtZXMgZmlsdGVyZWQgZnJvbSBgcHJvcHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgbmFtZXMgdG8gZmlsdGVyLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUZ1bmN0aW9ucyhvYmplY3QsIHByb3BzKSB7XG4gICAgICByZXR1cm4gYXJyYXlGaWx0ZXIocHJvcHMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICByZXR1cm4gaXNGdW5jdGlvbihvYmplY3Rba2V5XSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0KG9iamVjdCwgcGF0aCkge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IDAsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBvYmplY3QgPSBvYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICAgICAqIGBrZXlzRnVuY2AgYW5kIGBzeW1ib2xzRnVuY2AgdG8gZ2V0IHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHN5bWJvbHNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNGdW5jLCBzeW1ib2xzRnVuYykge1xuICAgICAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gICAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gICAgICB9XG4gICAgICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgICAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlR3QodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5oYXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzKG9iamVjdCwga2V5KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IGtleSBUaGUga2V5IHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LCBrZXkpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5SYW5nZWAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG51bWJlcmAgaXMgaW4gdGhlIHJhbmdlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICByZXR1cm4gbnVtYmVyID49IG5hdGl2ZU1pbihzdGFydCwgZW5kKSAmJiBudW1iZXIgPCBuYXRpdmVNYXgoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmludGVyc2VjdGlvbmAsIHdpdGhvdXQgc3VwcG9ydFxuICAgICAqIGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBzaGFyZWQgdmFsdWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnRlcnNlY3Rpb24oYXJyYXlzLCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICAgICAgdmFyIGluY2x1ZGVzID0gY29tcGFyYXRvciA/IGFycmF5SW5jbHVkZXNXaXRoIDogYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheXNbMF0ubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IGFycmF5cy5sZW5ndGgsXG4gICAgICAgICAgb3RoSW5kZXggPSBvdGhMZW5ndGgsXG4gICAgICAgICAgY2FjaGVzID0gQXJyYXkob3RoTGVuZ3RoKSxcbiAgICAgICAgICBtYXhMZW5ndGggPSBJbmZpbml0eSxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKG90aEluZGV4LS0pIHtcbiAgICAgICAgdmFyIGFycmF5ID0gYXJyYXlzW290aEluZGV4XTtcbiAgICAgICAgaWYgKG90aEluZGV4ICYmIGl0ZXJhdGVlKSB7XG4gICAgICAgICAgYXJyYXkgPSBhcnJheU1hcChhcnJheSwgYmFzZVVuYXJ5KGl0ZXJhdGVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgbWF4TGVuZ3RoID0gbmF0aXZlTWluKGFycmF5Lmxlbmd0aCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgY2FjaGVzW290aEluZGV4XSA9ICFjb21wYXJhdG9yICYmIChpdGVyYXRlZSB8fCAobGVuZ3RoID49IDEyMCAmJiBhcnJheS5sZW5ndGggPj0gMTIwKSlcbiAgICAgICAgICA/IG5ldyBTZXRDYWNoZShvdGhJbmRleCAmJiBhcnJheSlcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFycmF5ID0gYXJyYXlzWzBdO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBzZWVuID0gY2FjaGVzWzBdO1xuXG4gICAgICBvdXRlcjpcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoICYmIHJlc3VsdC5sZW5ndGggPCBtYXhMZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoIShzZWVuXG4gICAgICAgICAgICAgID8gY2FjaGVIYXMoc2VlbiwgY29tcHV0ZWQpXG4gICAgICAgICAgICAgIDogaW5jbHVkZXMocmVzdWx0LCBjb21wdXRlZCwgY29tcGFyYXRvcilcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICBvdGhJbmRleCA9IG90aExlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoLS1vdGhJbmRleCkge1xuICAgICAgICAgICAgdmFyIGNhY2hlID0gY2FjaGVzW290aEluZGV4XTtcbiAgICAgICAgICAgIGlmICghKGNhY2hlXG4gICAgICAgICAgICAgICAgICA/IGNhY2hlSGFzKGNhY2hlLCBjb21wdXRlZClcbiAgICAgICAgICAgICAgICAgIDogaW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZlcnRgIGFuZCBgXy5pbnZlcnRCeWAgd2hpY2ggaW52ZXJ0c1xuICAgICAqIGBvYmplY3RgIHdpdGggdmFsdWVzIHRyYW5zZm9ybWVkIGJ5IGBpdGVyYXRlZWAgYW5kIHNldCBieSBgc2V0dGVyYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzZXR0ZXIgVGhlIGZ1bmN0aW9uIHRvIHNldCBgYWNjdW11bGF0b3JgIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgdG8gdHJhbnNmb3JtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgYWNjdW11bGF0b3JgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJbnZlcnRlcihvYmplY3QsIHNldHRlciwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIHNldHRlcihhY2N1bXVsYXRvciwgaXRlcmF0ZWUodmFsdWUpLCBrZXksIG9iamVjdCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbnZva2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIG1ldGhvZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncykge1xuICAgICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgICBvYmplY3QgPSBwYXJlbnQob2JqZWN0LCBwYXRoKTtcbiAgICAgIHZhciBmdW5jID0gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBvYmplY3RbdG9LZXkobGFzdChwYXRoKSldO1xuICAgICAgcmV0dXJuIGZ1bmMgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGFwcGx5KGZ1bmMsIG9iamVjdCwgYXJncyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJyYXlCdWZmZXJgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJyYXlCdWZmZXJUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNEYXRlYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBkYXRlIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGRhdGVUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNFcXVhbGAgd2hpY2ggc3VwcG9ydHMgcGFydGlhbCBjb21wYXJpc29uc1xuICAgICAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuXG4gICAgICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICAgICAqICAyIC0gUGFydGlhbCBjb21wYXJpc29uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICBpZiAodmFsdWUgPT09IG90aGVyKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGJhc2VJc0VxdWFsLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICAgICAqIGRlZXAgY29tcGFyaXNvbnMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAgICAgKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc0VxdWFsRGVlcChvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqSXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgICAgICBvYmpUYWcgPSBvYmpJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG9iamVjdCksXG4gICAgICAgICAgb3RoVGFnID0gb3RoSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvdGhlcik7XG5cbiAgICAgIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICAgICAgb3RoVGFnID0gb3RoVGFnID09IGFyZ3NUYWcgPyBvYmplY3RUYWcgOiBvdGhUYWc7XG5cbiAgICAgIHZhciBvYmpJc09iaiA9IG9ialRhZyA9PSBvYmplY3RUYWcsXG4gICAgICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgICAgIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG5cbiAgICAgIGlmIChpc1NhbWVUYWcgJiYgaXNCdWZmZXIob2JqZWN0KSkge1xuICAgICAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgICAgIG9iaklzT2JqID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgICAgICA6IGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgb2JqVGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIH1cbiAgICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSxcbiAgICAgICAgICAgIG90aElzV3JhcHBlZCA9IG90aElzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsICdfX3dyYXBwZWRfXycpO1xuXG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgdmFyIG9ialVud3JhcHBlZCA9IG9iaklzV3JhcHBlZCA/IG9iamVjdC52YWx1ZSgpIDogb2JqZWN0LFxuICAgICAgICAgICAgICBvdGhVbndyYXBwZWQgPSBvdGhJc1dyYXBwZWQgPyBvdGhlci52YWx1ZSgpIDogb3RoZXI7XG5cbiAgICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICAgIHJldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLCBvdGhVbndyYXBwZWQsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXRjaGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhLCBjdXN0b21pemVyKSB7XG4gICAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgICAgIGxlbmd0aCA9IGluZGV4LFxuICAgICAgICAgIG5vQ3VzdG9taXplciA9ICFjdXN0b21pemVyO1xuXG4gICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICFsZW5ndGg7XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICAgICAgPyBkYXRhWzFdICE9PSBvYmplY3RbZGF0YVswXV1cbiAgICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBkYXRhID0gbWF0Y2hEYXRhW2luZGV4XTtcbiAgICAgICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgICAgICBvYmpWYWx1ZSA9IG9iamVjdFtrZXldLFxuICAgICAgICAgICAgc3JjVmFsdWUgPSBkYXRhWzFdO1xuXG4gICAgICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrO1xuICAgICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdFxuICAgICAgICAgICAgICApKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc05hdGl2ZWAgd2l0aG91dCBiYWQgc2hpbSBjaGVja3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgICByZXR1cm4gcGF0dGVybi50ZXN0KHRvU291cmNlKHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNSZWdFeHBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHJlZ2V4cCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VJc1JlZ0V4cCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gcmVnZXhwVGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGdldFRhZyh2YWx1ZSkgPT0gc2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgICAgIC8vIERvbid0IHN0b3JlIHRoZSBgdHlwZW9mYCByZXN1bHQgaW4gYSB2YXJpYWJsZSB0byBhdm9pZCBhIEpJVCBidWcgaW4gU2FmYXJpIDkuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgPyBiYXNlTWF0Y2hlc1Byb3BlcnR5KHZhbHVlWzBdLCB2YWx1ZVsxXSlcbiAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgICAgIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gICAgICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICAgICAgfVxuICAgICAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgICAgIHJlc3VsdCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTHQodmFsdWUsIG90aGVyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXBgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlLCBrZXksIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc2Agd2hpY2ggZG9lc24ndCBjbG9uZSBgc291cmNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSkge1xuICAgICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgICAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwgbWF0Y2hEYXRhWzBdWzFdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PT0gc291cmNlIHx8IGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICAgIGlmIChpc0tleShwYXRoKSAmJiBpc1N0cmljdENvbXBhcmFibGUoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICAgICAgcmV0dXJuIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG9ialZhbHVlID09PSBzcmNWYWx1ZSlcbiAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgICAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGJhc2VGb3Ioc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgIGlmIChpc09iamVjdChzcmNWYWx1ZSkpIHtcbiAgICAgICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAgICAgKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICAgICAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gICAgICogIGNvdW50ZXJwYXJ0cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgICB2YXIgb2JqVmFsdWUgPSBzYWZlR2V0KG9iamVjdCwga2V5KSxcbiAgICAgICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gICAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksXG4gICAgICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICAgICAgbmV3VmFsdWUgPSBzcmNWYWx1ZTtcbiAgICAgICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gY29weUFycmF5KG9ialZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubnRoYCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmV0dXJuLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBudGggZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VOdGgoYXJyYXksIG4pIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBuICs9IG4gPCAwID8gbGVuZ3RoIDogMDtcbiAgICAgIHJldHVybiBpc0luZGV4KG4sIGxlbmd0aCkgPyBhcnJheVtuXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5vcmRlckJ5YCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBvcmRlcnMgVGhlIHNvcnQgb3JkZXJzIG9mIGBpdGVyYXRlZXNgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBpdGVyYXRlZXMsIG9yZGVycykge1xuICAgICAgaWYgKGl0ZXJhdGVlcy5sZW5ndGgpIHtcbiAgICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgIGlmIChpc0FycmF5KGl0ZXJhdGVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gICAgICB9XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZU1hcChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgICByZXR1cm4gaXRlcmF0ZWUodmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGJhc2VTb3J0QnkocmVzdWx0LCBmdW5jdGlvbihvYmplY3QsIG90aGVyKSB7XG4gICAgICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnBpY2tgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbFxuICAgICAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVBpY2sob2JqZWN0LCBwYXRocykge1xuICAgICAgcmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgZnVuY3Rpb24odmFsdWUsIHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiAgYF8ucGlja0J5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQaWNrQnkob2JqZWN0LCBwYXRocywgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0ge307XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICAgICAgdmFsdWUgPSBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG5cbiAgICAgICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgcGF0aCkpIHtcbiAgICAgICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGFjY2Vzc29yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICByZXR1cm4gYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5wdWxsQWxsQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWVcbiAgICAgKiBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgaW5kZXhPZiA9IGNvbXBhcmF0b3IgPyBiYXNlSW5kZXhPZldpdGggOiBiYXNlSW5kZXhPZixcbiAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICAgICAgc2VlbiA9IGFycmF5O1xuXG4gICAgICBpZiAoYXJyYXkgPT09IHZhbHVlcykge1xuICAgICAgICB2YWx1ZXMgPSBjb3B5QXJyYXkodmFsdWVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICBzZWVuID0gYXJyYXlNYXAoYXJyYXksIGJhc2VVbmFyeShpdGVyYXRlZSkpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGZyb21JbmRleCA9IDAsXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlc1tpbmRleF0sXG4gICAgICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICAgICAgd2hpbGUgKChmcm9tSW5kZXggPSBpbmRleE9mKHNlZW4sIGNvbXB1dGVkLCBmcm9tSW5kZXgsIGNvbXBhcmF0b3IpKSA+IC0xKSB7XG4gICAgICAgICAgaWYgKHNlZW4gIT09IGFycmF5KSB7XG4gICAgICAgICAgICBzcGxpY2UuY2FsbChzZWVuLCBmcm9tSW5kZXgsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzcGxpY2UuY2FsbChhcnJheSwgZnJvbUluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnB1bGxBdGAgd2l0aG91dCBzdXBwb3J0IGZvciBpbmRpdmlkdWFsXG4gICAgICogaW5kZXhlcyBvciBjYXB0dXJpbmcgdGhlIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID8gaW5kZXhlcy5sZW5ndGggOiAwLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIgaW5kZXggPSBpbmRleGVzW2xlbmd0aF07XG4gICAgICAgIGlmIChsZW5ndGggPT0gbGFzdEluZGV4IHx8IGluZGV4ICE9PSBwcmV2aW91cykge1xuICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgIGlmIChpc0luZGV4KGluZGV4KSkge1xuICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzZVVuc2V0KGFycmF5LCBpbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZG9tYCB3aXRob3V0IHN1cHBvcnQgZm9yIHJldHVybmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb3dlciBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByYW5kb20gbnVtYmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5kb20obG93ZXIsIHVwcGVyKSB7XG4gICAgICByZXR1cm4gbG93ZXIgKyBuYXRpdmVGbG9vcihuYXRpdmVSYW5kb20oKSAqICh1cHBlciAtIGxvd2VyICsgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJhbmdlYCBhbmQgYF8ucmFuZ2VSaWdodGAgd2hpY2ggZG9lc24ndFxuICAgICAqIGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0ZXAgVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VSYW5nZShzdGFydCwgZW5kLCBzdGVwLCBmcm9tUmlnaHQpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChuYXRpdmVDZWlsKChlbmQgLSBzdGFydCkgLyAoc3RlcCB8fCAxKSksIDApLFxuICAgICAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF0gPSBzdGFydDtcbiAgICAgICAgc3RhcnQgKz0gc3RlcDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVwZWF0YCB3aGljaCBkb2Vzbid0IGNvZXJjZSBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byByZXBlYXQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByZXBlYXRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlcGVhdChzdHJpbmcsIG4pIHtcbiAgICAgIHZhciByZXN1bHQgPSAnJztcbiAgICAgIGlmICghc3RyaW5nIHx8IG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICAvLyBMZXZlcmFnZSB0aGUgZXhwb25lbnRpYXRpb24gYnkgc3F1YXJpbmcgYWxnb3JpdGhtIGZvciBhIGZhc3RlciByZXBlYXQuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXhwb25lbnRpYXRpb25fYnlfc3F1YXJpbmcgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKG4gJSAyKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgICBuID0gbmF0aXZlRmxvb3IobiAvIDIpO1xuICAgICAgICBpZiAobikge1xuICAgICAgICAgIHN0cmluZyArPSBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIH0gd2hpbGUgKG4pO1xuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNhbXBsZWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIHNhbXBsZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnQuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNhbXBsZShjb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gYXJyYXlTYW1wbGUodmFsdWVzKGNvbGxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zYW1wbGVTaXplYCB3aXRob3V0IHBhcmFtIGd1YXJkcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcmFuZG9tIGVsZW1lbnRzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTYW1wbGVTaXplKGNvbGxlY3Rpb24sIG4pIHtcbiAgICAgIHZhciBhcnJheSA9IHZhbHVlcyhjb2xsZWN0aW9uKTtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZihhcnJheSwgYmFzZUNsYW1wKG4sIDAsIGFycmF5Lmxlbmd0aCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMSxcbiAgICAgICAgICBuZXN0ZWQgPSBvYmplY3Q7XG5cbiAgICAgIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSksXG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICB2YXIgb2JqVmFsdWUgPSBuZXN0ZWRba2V5XTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXIgPyBjdXN0b21pemVyKG9ialZhbHVlLCBrZXksIG5lc3RlZCkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gaXNPYmplY3Qob2JqVmFsdWUpXG4gICAgICAgICAgICAgID8gb2JqVmFsdWVcbiAgICAgICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIG5lc3RlZCA9IG5lc3RlZFtrZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0RGF0YWAgd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzb2NpYXRlIG1ldGFkYXRhIHdpdGguXG4gICAgICogQHBhcmFtIHsqfSBkYXRhIFRoZSBtZXRhZGF0YS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBiYXNlU2V0RGF0YSA9ICFtZXRhTWFwID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBkYXRhKSB7XG4gICAgICBtZXRhTWFwLnNldChmdW5jLCBkYXRhKTtcbiAgICAgIHJldHVybiBmdW5jO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gICAgICovXG4gICAgdmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24oZnVuYywgc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAgICAgJ2VudW1lcmFibGUnOiBmYWxzZSxcbiAgICAgICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAgICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNodWZmbGVgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHJldHVybiBzaHVmZmxlU2VsZih2YWx1ZXMoY29sbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gICAgICB9XG4gICAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICBlbmQgKz0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgICAgc3RhcnQgPj4+PSAwO1xuXG4gICAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29tZWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiAhcmVzdWx0O1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gISFyZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhgIGFuZCBgXy5zb3J0ZWRMYXN0SW5kZXhgIHdoaWNoXG4gICAgICogcGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIG9mIGBhcnJheWAgdG8gZGV0ZXJtaW5lIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgXG4gICAgICogc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0byBtYWludGFpbiBpdHMgc29ydCBvcmRlci5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldEhpZ2hlc3RdIFNwZWNpZnkgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IHF1YWxpZmllZCBpbmRleC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgcmV0SGlnaGVzdCkge1xuICAgICAgdmFyIGxvdyA9IDAsXG4gICAgICAgICAgaGlnaCA9IGFycmF5ID09IG51bGwgPyBsb3cgOiBhcnJheS5sZW5ndGg7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgdmFsdWUgPT09IHZhbHVlICYmIGhpZ2ggPD0gSEFMRl9NQVhfQVJSQVlfTEVOR1RIKSB7XG4gICAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgICAgdmFyIG1pZCA9IChsb3cgKyBoaWdoKSA+Pj4gMSxcbiAgICAgICAgICAgICAgY29tcHV0ZWQgPSBhcnJheVttaWRdO1xuXG4gICAgICAgICAgaWYgKGNvbXB1dGVkICE9PSBudWxsICYmICFpc1N5bWJvbChjb21wdXRlZCkgJiZcbiAgICAgICAgICAgICAgKHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpKSkge1xuICAgICAgICAgICAgbG93ID0gbWlkICsgMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaGlnaCA9IG1pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhpZ2g7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpZGVudGl0eSwgcmV0SGlnaGVzdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc29ydGVkSW5kZXhCeWAgYW5kIGBfLnNvcnRlZExhc3RJbmRleEJ5YFxuICAgICAqIHdoaWNoIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgYHZhbHVlYCBhbmQgZWFjaCBlbGVtZW50IG9mIGBhcnJheWAgdG8gY29tcHV0ZVxuICAgICAqIHRoZWlyIHNvcnQgcmFua2luZy4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ7ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZXRIaWdoZXN0XSBTcGVjaWZ5IHJldHVybmluZyB0aGUgaGlnaGVzdCBxdWFsaWZpZWQgaW5kZXguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUsIHJldEhpZ2hlc3QpIHtcbiAgICAgIHZhciBsb3cgPSAwLFxuICAgICAgICAgIGhpZ2ggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChoaWdoID09PSAwKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICB2YWx1ZSA9IGl0ZXJhdGVlKHZhbHVlKTtcbiAgICAgIHZhciB2YWxJc05hTiA9IHZhbHVlICE9PSB2YWx1ZSxcbiAgICAgICAgICB2YWxJc051bGwgPSB2YWx1ZSA9PT0gbnVsbCxcbiAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKSxcbiAgICAgICAgICB2YWxJc1VuZGVmaW5lZCA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbiAgICAgIHdoaWxlIChsb3cgPCBoaWdoKSB7XG4gICAgICAgIHZhciBtaWQgPSBuYXRpdmVGbG9vcigobG93ICsgaGlnaCkgLyAyKSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUoYXJyYXlbbWlkXSksXG4gICAgICAgICAgICBvdGhJc0RlZmluZWQgPSBjb21wdXRlZCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgICAgb3RoSXNOdWxsID0gY29tcHV0ZWQgPT09IG51bGwsXG4gICAgICAgICAgICBvdGhJc1JlZmxleGl2ZSA9IGNvbXB1dGVkID09PSBjb21wdXRlZCxcbiAgICAgICAgICAgIG90aElzU3ltYm9sID0gaXNTeW1ib2woY29tcHV0ZWQpO1xuXG4gICAgICAgIGlmICh2YWxJc05hTikge1xuICAgICAgICAgIHZhciBzZXRMb3cgPSByZXRIaWdoZXN0IHx8IG90aElzUmVmbGV4aXZlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbElzVW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2V0TG93ID0gb3RoSXNSZWZsZXhpdmUgJiYgKHJldEhpZ2hlc3QgfHwgb3RoSXNEZWZpbmVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxJc051bGwpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgKHJldEhpZ2hlc3QgfHwgIW90aElzTnVsbCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsSXNTeW1ib2wpIHtcbiAgICAgICAgICBzZXRMb3cgPSBvdGhJc1JlZmxleGl2ZSAmJiBvdGhJc0RlZmluZWQgJiYgIW90aElzTnVsbCAmJiAocmV0SGlnaGVzdCB8fCAhb3RoSXNTeW1ib2wpO1xuICAgICAgICB9IGVsc2UgaWYgKG90aElzTnVsbCB8fCBvdGhJc1N5bWJvbCkge1xuICAgICAgICAgIHNldExvdyA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldExvdyA9IHJldEhpZ2hlc3QgPyAoY29tcHV0ZWQgPD0gdmFsdWUpIDogKGNvbXB1dGVkIDwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXRMb3cpIHtcbiAgICAgICAgICBsb3cgPSBtaWQgKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhpZ2ggPSBtaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBuYXRpdmVNaW4oaGlnaCwgTUFYX0FSUkFZX0lOREVYKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0ZWRVbmlxYCBhbmQgYF8uc29ydGVkVW5pcUJ5YCB3aXRob3V0XG4gICAgICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlU29ydGVkVW5pcShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXNJbmRleCA9IDAsXG4gICAgICAgICAgcmVzdWx0ID0gW107XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgICAgIGNvbXB1dGVkID0gaXRlcmF0ZWUgPyBpdGVyYXRlZSh2YWx1ZSkgOiB2YWx1ZTtcblxuICAgICAgICBpZiAoIWluZGV4IHx8ICFlcShjb21wdXRlZCwgc2VlbikpIHtcbiAgICAgICAgICB2YXIgc2VlbiA9IGNvbXB1dGVkO1xuICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvTnVtYmVyYCB3aGljaCBkb2Vzbid0IGVuc3VyZSBjb3JyZWN0XG4gICAgICogY29udmVyc2lvbnMgb2YgYmluYXJ5LCBoZXhhZGVjaW1hbCwgb3Igb2N0YWwgc3RyaW5nIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVRvTnVtYmVyKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5BTjtcbiAgICAgIH1cbiAgICAgIHJldHVybiArdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gICAgICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICAgIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiYXNlVW5pcShhcnJheSwgaXRlcmF0ZWUsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcyxcbiAgICAgICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgICAgIHJlc3VsdCA9IFtdLFxuICAgICAgICAgIHNlZW4gPSByZXN1bHQ7XG5cbiAgICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChsZW5ndGggPj0gTEFSR0VfQVJSQVlfU0laRSkge1xuICAgICAgICB2YXIgc2V0ID0gaXRlcmF0ZWUgPyBudWxsIDogY3JlYXRlU2V0KGFycmF5KTtcbiAgICAgICAgaWYgKHNldCkge1xuICAgICAgICAgIHJldHVybiBzZXRUb0FycmF5KHNldCk7XG4gICAgICAgIH1cbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgaW5jbHVkZXMgPSBjYWNoZUhhcztcbiAgICAgICAgc2VlbiA9IG5ldyBTZXRDYWNoZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIG91dGVyOlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgICAgIHZhbHVlID0gKGNvbXBhcmF0b3IgfHwgdmFsdWUgIT09IDApID8gdmFsdWUgOiAwO1xuICAgICAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChzZWVuSW5kZXgtLSkge1xuICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVyYXRlZSkge1xuICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICBzZWVuLnB1c2goY29tcHV0ZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgICAgb2JqZWN0ID0gcGFyZW50KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgfHwgZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udXBkYXRlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gdXBkYXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHVwZGF0ZXIgVGhlIGZ1bmN0aW9uIHRvIHByb2R1Y2UgdGhlIHVwZGF0ZWQgdmFsdWUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VVcGRhdGUob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICByZXR1cm4gYmFzZVNldChvYmplY3QsIHBhdGgsIHVwZGF0ZXIoYmFzZUdldChvYmplY3QsIHBhdGgpKSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLmRyb3BXaGlsZWAgYW5kIGBfLnRha2VXaGlsZWBcbiAgICAgKiB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0Ryb3BdIFNwZWNpZnkgZHJvcHBpbmcgZWxlbWVudHMgaW5zdGVhZCBvZiB0YWtpbmcgdGhlbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUsIGlzRHJvcCwgZnJvbVJpZ2h0KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGluZGV4ID0gZnJvbVJpZ2h0ID8gbGVuZ3RoIDogLTE7XG5cbiAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpICYmXG4gICAgICAgIHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHt9XG5cbiAgICAgIHJldHVybiBpc0Ryb3BcbiAgICAgICAgPyBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyAwIDogaW5kZXgpLCAoZnJvbVJpZ2h0ID8gaW5kZXggKyAxIDogbGVuZ3RoKSlcbiAgICAgICAgOiBiYXNlU2xpY2UoYXJyYXksIChmcm9tUmlnaHQgPyBpbmRleCArIDEgOiAwKSwgKGZyb21SaWdodCA/IGxlbmd0aCA6IGluZGV4KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHdyYXBwZXJWYWx1ZWAgd2hpY2ggcmV0dXJucyB0aGUgcmVzdWx0IG9mXG4gICAgICogcGVyZm9ybWluZyBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgb24gdGhlIHVud3JhcHBlZCBgdmFsdWVgLCB3aGVyZSBlYWNoXG4gICAgICogc3VjY2Vzc2l2ZSBhY3Rpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHVud3JhcHBlZCB2YWx1ZS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhY3Rpb25zIEFjdGlvbnMgdG8gcGVyZm9ybSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VXcmFwcGVyVmFsdWUodmFsdWUsIGFjdGlvbnMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQudmFsdWUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVJlZHVjZShhY3Rpb25zLCBmdW5jdGlvbihyZXN1bHQsIGFjdGlvbikge1xuICAgICAgICByZXR1cm4gYWN0aW9uLmZ1bmMuYXBwbHkoYWN0aW9uLnRoaXNBcmcsIGFycmF5UHVzaChbcmVzdWx0XSwgYWN0aW9uLmFyZ3MpKTtcbiAgICAgIH0sIHJlc3VsdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kcyBsaWtlIGBfLnhvcmAsIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAgICAgKiBpdGVyYXRlZSBzaG9ydGhhbmRzLCB0aGF0IGFjY2VwdHMgYW4gYXJyYXkgb2YgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5cyBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlXSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiB2YWx1ZXMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gYmFzZVhvcihhcnJheXMsIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXlzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlVW5pcShhcnJheXNbMF0pIDogW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcnJheXNbaW5kZXhdLFxuICAgICAgICAgICAgb3RoSW5kZXggPSAtMTtcblxuICAgICAgICB3aGlsZSAoKytvdGhJbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIGlmIChvdGhJbmRleCAhPSBpbmRleCkge1xuICAgICAgICAgICAgcmVzdWx0W2luZGV4XSA9IGJhc2VEaWZmZXJlbmNlKHJlc3VsdFtpbmRleF0gfHwgYXJyYXksIGFycmF5c1tvdGhJbmRleF0sIGl0ZXJhdGVlLCBjb21wYXJhdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihyZXN1bHQsIDEpLCBpdGVyYXRlZSwgY29tcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnppcE9iamVjdGAgd2hpY2ggYXNzaWducyB2YWx1ZXMgdXNpbmcgYGFzc2lnbkZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduRnVuYyBUaGUgZnVuY3Rpb24gdG8gYXNzaWduIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJhc2VaaXBPYmplY3QocHJvcHMsIHZhbHVlcywgYXNzaWduRnVuYykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgICAgIHZhbHNMZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBpbmRleCA8IHZhbHNMZW5ndGggPyB2YWx1ZXNbaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgICAgICBhc3NpZ25GdW5jKHJlc3VsdCwgcHJvcHNbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhc3RzIGB2YWx1ZWAgdG8gYW4gZW1wdHkgYXJyYXkgaWYgaXQncyBub3QgYW4gYXJyYXkgbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyB0aGUgY2FzdCBhcnJheS1saWtlIG9iamVjdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0QXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpID8gdmFsdWUgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIHRvIGBpZGVudGl0eWAgaWYgaXQncyBub3QgYSBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgY2FzdCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjYXN0RnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlIDogaWRlbnRpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICAgICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc0tleSh2YWx1ZSwgb2JqZWN0KSA/IFt2YWx1ZV0gOiBzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGBiYXNlUmVzdGAgYWxpYXMgd2hpY2ggY2FuIGJlIHJlcGxhY2VkIHdpdGggYGlkZW50aXR5YCBieSBtb2R1bGVcbiAgICAgKiByZXBsYWNlbWVudCBwbHVnaW5zLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAdHlwZSB7RnVuY3Rpb259XG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICB2YXIgY2FzdFJlc3QgPSBiYXNlUmVzdDtcblxuICAgIC8qKlxuICAgICAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kO1xuICAgICAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzaW1wbGUgd3JhcHBlciBhcm91bmQgdGhlIGdsb2JhbCBbYGNsZWFyVGltZW91dGBdKGh0dHBzOi8vbWRuLmlvL2NsZWFyVGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfE9iamVjdH0gaWQgVGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0IG9mIHRoZSB0aW1lciB0byBjbGVhci5cbiAgICAgKi9cbiAgICB2YXIgY2xlYXJUaW1lb3V0ID0gY3R4Q2xlYXJUaW1lb3V0IHx8IGZ1bmN0aW9uKGlkKSB7XG4gICAgICByZXR1cm4gcm9vdC5jbGVhclRpbWVvdXQoaWQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgICBpZiAoaXNEZWVwKSB7XG4gICAgICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAgICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gICAgICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgZGF0YSB2aWV3LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICAgICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIoZGF0YVZpZXcuYnVmZmVyKSA6IGRhdGFWaWV3LmJ1ZmZlcjtcbiAgICAgIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSByZWdleHAgVGhlIHJlZ2V4cCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lUmVnRXhwKHJlZ2V4cCkge1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICAgICAgcmVzdWx0Lmxhc3RJbmRleCA9IHJlZ2V4cC5sYXN0SW5kZXg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiB0aGUgYHN5bWJvbGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ltYm9sIFRoZSBzeW1ib2wgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCkge1xuICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgICAgIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKHR5cGVkQXJyYXkuYnVmZmVyKSA6IHR5cGVkQXJyYXkuYnVmZmVyO1xuICAgICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZXMgdmFsdWVzIHRvIHNvcnQgdGhlbSBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYHZhbHVlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICAgICAgaWYgKHZhbHVlICE9PSBvdGhlcikge1xuICAgICAgICB2YXIgdmFsSXNEZWZpbmVkID0gdmFsdWUgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICAgICAgdmFsSXNSZWZsZXhpdmUgPSB2YWx1ZSA9PT0gdmFsdWUsXG4gICAgICAgICAgICB2YWxJc1N5bWJvbCA9IGlzU3ltYm9sKHZhbHVlKTtcblxuICAgICAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG90aElzTnVsbCA9IG90aGVyID09PSBudWxsLFxuICAgICAgICAgICAgb3RoSXNSZWZsZXhpdmUgPSBvdGhlciA9PT0gb3RoZXIsXG4gICAgICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgICAgICBpZiAoKCFvdGhJc051bGwgJiYgIW90aElzU3ltYm9sICYmICF2YWxJc1N5bWJvbCAmJiB2YWx1ZSA+IG90aGVyKSB8fFxuICAgICAgICAgICAgKHZhbElzU3ltYm9sICYmIG90aElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSAmJiAhb3RoSXNOdWxsICYmICFvdGhJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCF2YWxJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhdmFsSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKCF2YWxJc051bGwgJiYgIXZhbElzU3ltYm9sICYmICFvdGhJc1N5bWJvbCAmJiB2YWx1ZSA8IG90aGVyKSB8fFxuICAgICAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgICAgIChvdGhJc051bGwgJiYgdmFsSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAgICAgKCFvdGhJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgICAqIGFuZCBzdGFibGUgc29ydCB0aGVtLlxuICAgICAqXG4gICAgICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAgICAgKiBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvciBkZXNjZW5kaW5nIG9yIFwiYXNjXCIgZm9yIGFzY2VuZGluZyBzb3J0IG9yZGVyXG4gICAgICogb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtib29sZWFuW118c3RyaW5nW119IG9yZGVycyBUaGUgb3JkZXIgdG8gc29ydCBieSBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzb3J0IG9yZGVyIGluZGljYXRvciBmb3IgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCwgb3RoZXIsIG9yZGVycykge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICAgICAgb3RoQ3JpdGVyaWEgPSBvdGhlci5jcml0ZXJpYSxcbiAgICAgICAgICBsZW5ndGggPSBvYmpDcml0ZXJpYS5sZW5ndGgsXG4gICAgICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGNvbXBhcmVBc2NlbmRpbmcob2JqQ3JpdGVyaWFbaW5kZXhdLCBvdGhDcml0ZXJpYVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgaWYgKGluZGV4ID49IG9yZGVyc0xlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9yZGVyID0gb3JkZXJzW2luZGV4XTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0ICogKG9yZGVyID09ICdkZXNjJyA/IC0xIDogMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEZpeGVzIGFuIGBBcnJheSNzb3J0YCBidWcgaW4gdGhlIEpTIGVuZ2luZSBlbWJlZGRlZCBpbiBBZG9iZSBhcHBsaWNhdGlvbnNcbiAgICAgIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gICAgICAvLyBgb2JqZWN0YCBhbmQgYG90aGVyYC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9wdWxsLzEyNDdcbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAvL1xuICAgICAgLy8gVGhpcyBhbHNvIGVuc3VyZXMgYSBzdGFibGUgc29ydCBpbiBWOCBhbmQgb3RoZXIgZW5naW5lcy5cbiAgICAgIC8vIFNlZSBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD05MCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgdGhhdCBpcyB0aGUgY29tcG9zaXRpb24gb2YgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLFxuICAgICAqIHBsYWNlaG9sZGVycywgYW5kIHByb3ZpZGVkIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGFycmF5IG9mIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBob2xkZXJzIFRoZSBgcGFydGlhbHNgIHBsYWNlaG9sZGVyIGluZGV4ZXMuXG4gICAgICogQHBhcmFtcyB7Ym9vbGVhbn0gW2lzQ3VycmllZF0gU3BlY2lmeSBjb21wb3NpbmcgZm9yIGEgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21wb3NlZCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCkge1xuICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aCxcbiAgICAgICAgICBob2xkZXJzTGVuZ3RoID0gaG9sZGVycy5sZW5ndGgsXG4gICAgICAgICAgbGVmdEluZGV4ID0gLTEsXG4gICAgICAgICAgbGVmdExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkobGVmdExlbmd0aCArIHJhbmdlTGVuZ3RoKSxcbiAgICAgICAgICBpc1VuY3VycmllZCA9ICFpc0N1cnJpZWQ7XG5cbiAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsrYXJnc0luZGV4IDwgaG9sZGVyc0xlbmd0aCkge1xuICAgICAgICBpZiAoaXNVbmN1cnJpZWQgfHwgYXJnc0luZGV4IDwgYXJnc0xlbmd0aCkge1xuICAgICAgICAgIHJlc3VsdFtob2xkZXJzW2FyZ3NJbmRleF1dID0gYXJnc1thcmdzSW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAocmFuZ2VMZW5ndGgtLSkge1xuICAgICAgICByZXN1bHRbbGVmdEluZGV4KytdID0gYXJnc1thcmdzSW5kZXgrK107XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgY29tcG9zZUFyZ3NgIGV4Y2VwdCB0aGF0IHRoZSBhcmd1bWVudHMgY29tcG9zaXRpb25cbiAgICAgKiBpcyB0YWlsb3JlZCBmb3IgYF8ucGFydGlhbFJpZ2h0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gYXBwZW5kIHRvIHRob3NlIHByb3ZpZGVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGhvbGRlcnMgVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW1zIHtib29sZWFufSBbaXNDdXJyaWVkXSBTcGVjaWZ5IGNvbXBvc2luZyBmb3IgYSBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGNvbXBvc2VkIGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb21wb3NlQXJnc1JpZ2h0KGFyZ3MsIHBhcnRpYWxzLCBob2xkZXJzLCBpc0N1cnJpZWQpIHtcbiAgICAgIHZhciBhcmdzSW5kZXggPSAtMSxcbiAgICAgICAgICBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGgsXG4gICAgICAgICAgaG9sZGVyc0luZGV4ID0gLTEsXG4gICAgICAgICAgaG9sZGVyc0xlbmd0aCA9IGhvbGRlcnMubGVuZ3RoLFxuICAgICAgICAgIHJpZ2h0SW5kZXggPSAtMSxcbiAgICAgICAgICByaWdodExlbmd0aCA9IHBhcnRpYWxzLmxlbmd0aCxcbiAgICAgICAgICByYW5nZUxlbmd0aCA9IG5hdGl2ZU1heChhcmdzTGVuZ3RoIC0gaG9sZGVyc0xlbmd0aCwgMCksXG4gICAgICAgICAgcmVzdWx0ID0gQXJyYXkocmFuZ2VMZW5ndGggKyByaWdodExlbmd0aCksXG4gICAgICAgICAgaXNVbmN1cnJpZWQgPSAhaXNDdXJyaWVkO1xuXG4gICAgICB3aGlsZSAoKythcmdzSW5kZXggPCByYW5nZUxlbmd0aCkge1xuICAgICAgICByZXN1bHRbYXJnc0luZGV4XSA9IGFyZ3NbYXJnc0luZGV4XTtcbiAgICAgIH1cbiAgICAgIHZhciBvZmZzZXQgPSBhcmdzSW5kZXg7XG4gICAgICB3aGlsZSAoKytyaWdodEluZGV4IDwgcmlnaHRMZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0W29mZnNldCArIHJpZ2h0SW5kZXhdID0gcGFydGlhbHNbcmlnaHRJbmRleF07XG4gICAgICB9XG4gICAgICB3aGlsZSAoKytob2xkZXJzSW5kZXggPCBob2xkZXJzTGVuZ3RoKSB7XG4gICAgICAgIGlmIChpc1VuY3VycmllZCB8fCBhcmdzSW5kZXggPCBhcmdzTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0W29mZnNldCArIGhvbGRlcnNbaG9sZGVyc0luZGV4XV0gPSBhcmdzW2FyZ3NJbmRleCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gICAgICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgICAgIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOZXcpIHtcbiAgICAgICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzKHNvdXJjZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHMoc291cmNlKSwgb2JqZWN0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyB0by5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBjb3B5T2JqZWN0KHNvdXJjZSwgZ2V0U3ltYm9sc0luKHNvdXJjZSksIG9iamVjdCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uZ3JvdXBCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaW5pdGlhbGl6ZXJdIFRoZSBhY2N1bXVsYXRvciBvYmplY3QgaW5pdGlhbGl6ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWdncmVnYXRvciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVBZ2dyZWdhdG9yKHNldHRlciwgaW5pdGlhbGl6ZXIpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUFnZ3JlZ2F0b3IgOiBiYXNlQWdncmVnYXRvcixcbiAgICAgICAgICAgIGFjY3VtdWxhdG9yID0gaW5pdGlhbGl6ZXIgPyBpbml0aWFsaXplcigpIDoge307XG5cbiAgICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgc2V0dGVyLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGFjY3VtdWxhdG9yKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgICAgICBsZW5ndGggPSAxO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJhc2VFYWNoKGVhY2hGdW5jLCBmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBlYWNoRnVuYyhjb2xsZWN0aW9uLCBpdGVyYXRlZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICAgICAgaW5kZXggPSBmcm9tUmlnaHQgPyBsZW5ndGggOiAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuXG4gICAgICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2luZGV4XSwgaW5kZXgsIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gaW52b2tlIGl0IHdpdGggdGhlIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYywgYml0bWFzaywgdGhpc0FyZykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGZuID0gKHRoaXMgJiYgdGhpcyAhPT0gcm9vdCAmJiB0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcikgPyBDdG9yIDogZnVuYztcbiAgICAgICAgcmV0dXJuIGZuLmFwcGx5KGlzQmluZCA/IHRoaXNBcmcgOiB0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdyYXBwZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8ubG93ZXJGaXJzdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgU3RyaW5nYCBjYXNlIG1ldGhvZCB0byB1c2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FzZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDYXNlRmlyc3QobWV0aG9kTmFtZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuXG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gaGFzVW5pY29kZShzdHJpbmcpXG4gICAgICAgICAgPyBzdHJpbmdUb0FycmF5KHN0cmluZylcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICB2YXIgY2hyID0gc3RyU3ltYm9sc1xuICAgICAgICAgID8gc3RyU3ltYm9sc1swXVxuICAgICAgICAgIDogc3RyaW5nLmNoYXJBdCgwKTtcblxuICAgICAgICB2YXIgdHJhaWxpbmcgPSBzdHJTeW1ib2xzXG4gICAgICAgICAgPyBjYXN0U2xpY2Uoc3RyU3ltYm9scywgMSkuam9pbignJylcbiAgICAgICAgICA6IHN0cmluZy5zbGljZSgxKTtcblxuICAgICAgICByZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkgKyB0cmFpbGluZztcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uY2FtZWxDYXNlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmUgZWFjaCB3b3JkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvdW5kZXIgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlQ29tcG91bmRlcihjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAgICByZXR1cm4gYXJyYXlSZWR1Y2Uod29yZHMoZGVidXJyKHN0cmluZykucmVwbGFjZShyZUFwb3MsICcnKSksIGNhbGxiYWNrLCAnJyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIGBDdG9yYCByZWdhcmRsZXNzIG9mXG4gICAgICogd2hldGhlciBpdCB3YXMgaW52b2tlZCBhcyBwYXJ0IG9mIGEgYG5ld2AgZXhwcmVzc2lvbiBvciBieSBgY2FsbGAgb3IgYGFwcGx5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ3RvciBUaGUgY29uc3RydWN0b3IgdG8gd3JhcC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUN0b3IoQ3Rvcikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBVc2UgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgdG8gd29yayB3aXRoIGNsYXNzIGNvbnN0cnVjdG9ycy4gU2VlXG4gICAgICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtZnVuY3Rpb24tb2JqZWN0cy1jYWxsLXRoaXNhcmd1bWVudC1hcmd1bWVudHNsaXN0XG4gICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IEN0b3I7XG4gICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSk7XG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSk7XG4gICAgICAgICAgY2FzZSA3OiByZXR1cm4gbmV3IEN0b3IoYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSwgYXJnc1s0XSwgYXJnc1s1XSwgYXJnc1s2XSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRoaXNCaW5kaW5nID0gYmFzZUNyZWF0ZShDdG9yLnByb3RvdHlwZSksXG4gICAgICAgICAgICByZXN1bHQgPSBDdG9yLmFwcGx5KHRoaXNCaW5kaW5nLCBhcmdzKTtcblxuICAgICAgICAvLyBNaW1pYyB0aGUgY29uc3RydWN0b3IncyBgcmV0dXJuYCBiZWhhdmlvci5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZXM1LmdpdGh1Yi5pby8jeDEzLjIuMiBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICByZXR1cm4gaXNPYmplY3QocmVzdWx0KSA/IHJlc3VsdCA6IHRoaXNCaW5kaW5nO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCB3cmFwcyBgZnVuY2AgdG8gZW5hYmxlIGN1cnJ5aW5nLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFyaXR5IFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVDdXJyeShmdW5jLCBiaXRtYXNrLCBhcml0eSkge1xuICAgICAgdmFyIEN0b3IgPSBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGgsXG4gICAgICAgICAgICBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKTtcblxuICAgICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICAgIGFyZ3NbaW5kZXhdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaG9sZGVycyA9IChsZW5ndGggPCAzICYmIGFyZ3NbMF0gIT09IHBsYWNlaG9sZGVyICYmIGFyZ3NbbGVuZ3RoIC0gMV0gIT09IHBsYWNlaG9sZGVyKVxuICAgICAgICAgID8gW11cbiAgICAgICAgICA6IHJlcGxhY2VIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcblxuICAgICAgICBsZW5ndGggLT0gaG9sZGVycy5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB1bmRlZmluZWQsXG4gICAgICAgICAgICBhcmdzLCBob2xkZXJzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkgLSBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmbiA9ICh0aGlzICYmIHRoaXMgIT09IHJvb3QgJiYgdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXIpID8gQ3RvciA6IGZ1bmM7XG4gICAgICAgIHJldHVybiBhcHBseShmbiwgdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZpbmQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgICAgdmFyIGl0ZXJhYmxlID0gT2JqZWN0KGNvbGxlY3Rpb24pO1xuICAgICAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgICAgICBjb2xsZWN0aW9uID0ga2V5cyhjb2xsZWN0aW9uKTtcbiAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpOyB9O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpbmRleCA9IGZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBmcm9tSW5kZXgpO1xuICAgICAgICByZXR1cm4gaW5kZXggPiAtMSA/IGl0ZXJhYmxlW2l0ZXJhdGVlID8gY29sbGVjdGlvbltpbmRleF0gOiBpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBgXy5mbG93YCBvciBgXy5mbG93UmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmbG93IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZUZsb3coZnJvbVJpZ2h0KSB7XG4gICAgICByZXR1cm4gZmxhdFJlc3QoZnVuY3Rpb24oZnVuY3MpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IGZ1bmNzLmxlbmd0aCxcbiAgICAgICAgICAgIGluZGV4ID0gbGVuZ3RoLFxuICAgICAgICAgICAgcHJlcmVxID0gTG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtcblxuICAgICAgICBpZiAoZnJvbVJpZ2h0KSB7XG4gICAgICAgICAgZnVuY3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgICAgdmFyIGZ1bmMgPSBmdW5jc1tpbmRleF07XG4gICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByZXJlcSAmJiAhd3JhcHBlciAmJiBnZXRGdW5jTmFtZShmdW5jKSA9PSAnd3JhcHBlcicpIHtcbiAgICAgICAgICAgIHZhciB3cmFwcGVyID0gbmV3IExvZGFzaFdyYXBwZXIoW10sIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IHdyYXBwZXIgPyBpbmRleCA6IGxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBmdW5jID0gZnVuY3NbaW5kZXhdO1xuXG4gICAgICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgICAgIGRhdGEgPSBmdW5jTmFtZSA9PSAnd3JhcHBlcicgPyBnZXREYXRhKGZ1bmMpIDogdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNMYXppYWJsZShkYXRhWzBdKSAmJlxuICAgICAgICAgICAgICAgIGRhdGFbMV0gPT0gKFdSQVBfQVJZX0ZMQUcgfCBXUkFQX0NVUlJZX0ZMQUcgfCBXUkFQX1BBUlRJQUxfRkxBRyB8IFdSQVBfUkVBUkdfRkxBRykgJiZcbiAgICAgICAgICAgICAgICAhZGF0YVs0XS5sZW5ndGggJiYgZGF0YVs5XSA9PSAxXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgd3JhcHBlciA9IHdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsIGRhdGFbM10pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3cmFwcGVyID0gKGZ1bmMubGVuZ3RoID09IDEgJiYgaXNMYXppYWJsZShmdW5jKSlcbiAgICAgICAgICAgICAgPyB3cmFwcGVyW2Z1bmNOYW1lXSgpXG4gICAgICAgICAgICAgIDogd3JhcHBlci50aHJ1KGZ1bmMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICAgIHZhbHVlID0gYXJnc1swXTtcblxuICAgICAgICAgIGlmICh3cmFwcGVyICYmIGFyZ3MubGVuZ3RoID09IDEgJiYgaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLnBsYW50KHZhbHVlKS52YWx1ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgICAgICByZXN1bHQgPSBsZW5ndGggPyBmdW5jc1tpbmRleF0uYXBwbHkodGhpcywgYXJncykgOiB2YWx1ZTtcblxuICAgICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmdW5jc1tpbmRleF0uY2FsbCh0aGlzLCByZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIG9wdGlvbmFsIGB0aGlzYFxuICAgICAqIGJpbmRpbmcgb2YgYHRoaXNBcmdgLCBwYXJ0aWFsIGFwcGxpY2F0aW9uLCBhbmQgY3VycnlpbmcuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHsqfSBbdGhpc0FyZ10gVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtwYXJ0aWFsc1JpZ2h0XSBUaGUgYXJndW1lbnRzIHRvIGFwcGVuZCB0byB0aG9zZSBwcm92aWRlZFxuICAgICAqICB0byB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzUmlnaHRdIFRoZSBgcGFydGlhbHNSaWdodGAgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIHBhcnRpYWxzUmlnaHQsIGhvbGRlcnNSaWdodCwgYXJnUG9zLCBhcnksIGFyaXR5KSB7XG4gICAgICB2YXIgaXNBcnkgPSBiaXRtYXNrICYgV1JBUF9BUllfRkxBRyxcbiAgICAgICAgICBpc0JpbmQgPSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcsXG4gICAgICAgICAgaXNCaW5kS2V5ID0gYml0bWFzayAmIFdSQVBfQklORF9LRVlfRkxBRyxcbiAgICAgICAgICBpc0N1cnJpZWQgPSBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyksXG4gICAgICAgICAgaXNGbGlwID0gYml0bWFzayAmIFdSQVBfRkxJUF9GTEFHLFxuICAgICAgICAgIEN0b3IgPSBpc0JpbmRLZXkgPyB1bmRlZmluZWQgOiBjcmVhdGVDdG9yKGZ1bmMpO1xuXG4gICAgICBmdW5jdGlvbiB3cmFwcGVyKCkge1xuICAgICAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcbiAgICAgICAgICAgIGFyZ3MgPSBBcnJheShsZW5ndGgpLFxuICAgICAgICAgICAgaW5kZXggPSBsZW5ndGg7XG5cbiAgICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQ3VycmllZCkge1xuICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldEhvbGRlcih3cmFwcGVyKSxcbiAgICAgICAgICAgICAgaG9sZGVyc0NvdW50ID0gY291bnRIb2xkZXJzKGFyZ3MsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFydGlhbHMpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3MoYXJncywgcGFydGlhbHMsIGhvbGRlcnMsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRpYWxzUmlnaHQpIHtcbiAgICAgICAgICBhcmdzID0gY29tcG9zZUFyZ3NSaWdodChhcmdzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsIGlzQ3VycmllZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGVuZ3RoIC09IGhvbGRlcnNDb3VudDtcbiAgICAgICAgaWYgKGlzQ3VycmllZCAmJiBsZW5ndGggPCBhcml0eSkge1xuICAgICAgICAgIHZhciBuZXdIb2xkZXJzID0gcmVwbGFjZUhvbGRlcnMoYXJncywgcGxhY2Vob2xkZXIpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVSZWN1cnJ5KFxuICAgICAgICAgICAgZnVuYywgYml0bWFzaywgY3JlYXRlSHlicmlkLCB3cmFwcGVyLnBsYWNlaG9sZGVyLCB0aGlzQXJnLFxuICAgICAgICAgICAgYXJncywgbmV3SG9sZGVycywgYXJnUG9zLCBhcnksIGFyaXR5IC0gbGVuZ3RoXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGhpc0JpbmRpbmcgPSBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcyxcbiAgICAgICAgICAgIGZuID0gaXNCaW5kS2V5ID8gdGhpc0JpbmRpbmdbZnVuY10gOiBmdW5jO1xuXG4gICAgICAgIGxlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICAgICAgICBpZiAoYXJnUG9zKSB7XG4gICAgICAgICAgYXJncyA9IHJlb3JkZXIoYXJncywgYXJnUG9zKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0ZsaXAgJiYgbGVuZ3RoID4gMSkge1xuICAgICAgICAgIGFyZ3MucmV2ZXJzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0FyeSAmJiBhcnkgPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzLmxlbmd0aCA9IGFyeTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSB7XG4gICAgICAgICAgZm4gPSBDdG9yIHx8IGNyZWF0ZUN0b3IoZm4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzQmluZGluZywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5pbnZlcnRCeWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHNldHRlciBUaGUgZnVuY3Rpb24gdG8gc2V0IGFjY3VtdWxhdG9yIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0b0l0ZXJhdGVlIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIGl0ZXJhdGVlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZlcnRlcihzZXR0ZXIsIHRvSXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LCBzZXR0ZXIsIHRvSXRlcmF0ZWUoaXRlcmF0ZWUpLCB7fSk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0d28gdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBvcGVyYXRvciBUaGUgZnVuY3Rpb24gdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZGVmYXVsdFZhbHVlXSBUaGUgdmFsdWUgdXNlZCBmb3IgYHVuZGVmaW5lZGAgYXJndW1lbnRzLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlTWF0aE9wZXJhdGlvbihvcGVyYXRvciwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIHZhciByZXN1bHQ7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIG90aGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG90aGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBvdGhlcjtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gYmFzZVRvU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIG90aGVyID0gYmFzZVRvU3RyaW5nKG90aGVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSBiYXNlVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgb3RoZXIgPSBiYXNlVG9OdW1iZXIob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHQgPSBvcGVyYXRvcih2YWx1ZSwgb3RoZXIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLm92ZXJgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBhcnJheUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGl0ZXJhdGUgb3ZlciBpdGVyYXRlZXMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgb3ZlciBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYykge1xuICAgICAgcmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcykge1xuICAgICAgICBpdGVyYXRlZXMgPSBhcnJheU1hcChpdGVyYXRlZXMsIGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7XG4gICAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgICAgdmFyIHRoaXNBcmcgPSB0aGlzO1xuICAgICAgICAgIHJldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB0aGlzQXJnLCBhcmdzKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBwYWRkaW5nIGZvciBgc3RyaW5nYCBiYXNlZCBvbiBgbGVuZ3RoYC4gVGhlIGBjaGFyc2Agc3RyaW5nXG4gICAgICogaXMgdHJ1bmNhdGVkIGlmIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBleGNlZWRzIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIFRoZSBwYWRkaW5nIGxlbmd0aC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPScgJ10gVGhlIHN0cmluZyB1c2VkIGFzIHBhZGRpbmcuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcGFkZGluZyBmb3IgYHN0cmluZ2AuXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsIGNoYXJzKSB7XG4gICAgICBjaGFycyA9IGNoYXJzID09PSB1bmRlZmluZWQgPyAnICcgOiBiYXNlVG9TdHJpbmcoY2hhcnMpO1xuXG4gICAgICB2YXIgY2hhcnNMZW5ndGggPSBjaGFycy5sZW5ndGg7XG4gICAgICBpZiAoY2hhcnNMZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBjaGFyc0xlbmd0aCA/IGJhc2VSZXBlYXQoY2hhcnMsIGxlbmd0aCkgOiBjaGFycztcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSBiYXNlUmVwZWF0KGNoYXJzLCBuYXRpdmVDZWlsKGxlbmd0aCAvIHN0cmluZ1NpemUoY2hhcnMpKSk7XG4gICAgICByZXR1cm4gaGFzVW5pY29kZShjaGFycylcbiAgICAgICAgPyBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLCAwLCBsZW5ndGgpLmpvaW4oJycpXG4gICAgICAgIDogcmVzdWx0LnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZ1bmNgIHRvIGludm9rZSBpdCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZ1xuICAgICAqIG9mIGB0aGlzQXJnYCBhbmQgYHBhcnRpYWxzYCBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxzIFRoZSBhcmd1bWVudHMgdG8gcHJlcGVuZCB0byB0aG9zZSBwcm92aWRlZCB0b1xuICAgICAqICB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHdyYXBwZWQgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3JlYXRlUGFydGlhbChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscykge1xuICAgICAgdmFyIGlzQmluZCA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfRkxBRyxcbiAgICAgICAgICBDdG9yID0gY3JlYXRlQ3RvcihmdW5jKTtcblxuICAgICAgZnVuY3Rpb24gd3JhcHBlcigpIHtcbiAgICAgICAgdmFyIGFyZ3NJbmRleCA9IC0xLFxuICAgICAgICAgICAgYXJnc0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGgsXG4gICAgICAgICAgICBsZWZ0SW5kZXggPSAtMSxcbiAgICAgICAgICAgIGxlZnRMZW5ndGggPSBwYXJ0aWFscy5sZW5ndGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkobGVmdExlbmd0aCArIGFyZ3NMZW5ndGgpLFxuICAgICAgICAgICAgZm4gPSAodGhpcyAmJiB0aGlzICE9PSByb290ICYmIHRoaXMgaW5zdGFuY2VvZiB3cmFwcGVyKSA/IEN0b3IgOiBmdW5jO1xuXG4gICAgICAgIHdoaWxlICgrK2xlZnRJbmRleCA8IGxlZnRMZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleF0gPSBwYXJ0aWFsc1tsZWZ0SW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChhcmdzTGVuZ3RoLS0pIHtcbiAgICAgICAgICBhcmdzW2xlZnRJbmRleCsrXSA9IGFyZ3VtZW50c1srK2FyZ3NJbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFwcGx5KGZuLCBpc0JpbmQgPyB0aGlzQXJnIDogdGhpcywgYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8ucmFuZ2VgIG9yIGBfLnJhbmdlUmlnaHRgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByYW5nZSBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGFydCwgZW5kLCBzdGVwKSB7XG4gICAgICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICAgICAgZW5kID0gc3RlcCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICAgIHN0YXJ0ID0gdG9GaW5pdGUoc3RhcnQpO1xuICAgICAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgICBzdGFydCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgICAgfVxuICAgICAgICBzdGVwID0gc3RlcCA9PT0gdW5kZWZpbmVkID8gKHN0YXJ0IDwgZW5kID8gMSA6IC0xKSA6IHRvRmluaXRlKHN0ZXApO1xuICAgICAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcmVsYXRpb25hbCBvcGVyYXRpb24gb24gdHdvIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gb3BlcmF0b3IgVGhlIGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZWxhdGlvbmFsIG9wZXJhdGlvbiBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKG9wZXJhdG9yKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG90aGVyKSB7XG4gICAgICAgIGlmICghKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2Ygb3RoZXIgPT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgdmFsdWUgPSB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgb3RoZXIgPSB0b051bWJlcihvdGhlcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yKHZhbHVlLCBvdGhlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHdyYXBzIGBmdW5jYCB0byBjb250aW51ZSBjdXJyeWluZy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBjcmVhdGVXcmFwYCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHdyYXBGdW5jIFRoZSBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIGBmdW5jYCB3cmFwcGVyLlxuICAgICAqIEBwYXJhbSB7Kn0gcGxhY2Vob2xkZXIgVGhlIHBsYWNlaG9sZGVyIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIHByZXBlbmQgdG8gdGhvc2UgcHJvdmlkZWQgdG9cbiAgICAgKiAgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbaG9sZGVyc10gVGhlIGBwYXJ0aWFsc2AgcGxhY2Vob2xkZXIgaW5kZXhlcy5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBbYXJnUG9zXSBUaGUgYXJndW1lbnQgcG9zaXRpb25zIG9mIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcnldIFRoZSBhcml0eSBjYXAgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHldIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgd3JhcHBlZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsIGJpdG1hc2ssIHdyYXBGdW5jLCBwbGFjZWhvbGRlciwgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQ3VycnkgPSBiaXRtYXNrICYgV1JBUF9DVVJSWV9GTEFHLFxuICAgICAgICAgIG5ld0hvbGRlcnMgPSBpc0N1cnJ5ID8gaG9sZGVycyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdIb2xkZXJzUmlnaHQgPSBpc0N1cnJ5ID8gdW5kZWZpbmVkIDogaG9sZGVycyxcbiAgICAgICAgICBuZXdQYXJ0aWFscyA9IGlzQ3VycnkgPyBwYXJ0aWFscyA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBuZXdQYXJ0aWFsc1JpZ2h0ID0gaXNDdXJyeSA/IHVuZGVmaW5lZCA6IHBhcnRpYWxzO1xuXG4gICAgICBiaXRtYXNrIHw9IChpc0N1cnJ5ID8gV1JBUF9QQVJUSUFMX0ZMQUcgOiBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICBiaXRtYXNrICY9IH4oaXNDdXJyeSA/IFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHIDogV1JBUF9QQVJUSUFMX0ZMQUcpO1xuXG4gICAgICBpZiAoIShiaXRtYXNrICYgV1JBUF9DVVJSWV9CT1VORF9GTEFHKSkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9CSU5EX0ZMQUcgfCBXUkFQX0JJTkRfS0VZX0ZMQUcpO1xuICAgICAgfVxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIG5ld1BhcnRpYWxzLCBuZXdIb2xkZXJzLCBuZXdQYXJ0aWFsc1JpZ2h0LFxuICAgICAgICBuZXdIb2xkZXJzUmlnaHQsIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgdmFyIHJlc3VsdCA9IHdyYXBGdW5jLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICBpZiAoaXNMYXppYWJsZShmdW5jKSkge1xuICAgICAgICBzZXREYXRhKHJlc3VsdCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICByZXN1bHQucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LCBmdW5jLCBiaXRtYXNrKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gbGlrZSBgXy5yb3VuZGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBgTWF0aGAgbWV0aG9kIHRvIHVzZSB3aGVuIHJvdW5kaW5nLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJvdW5kIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVJvdW5kKG1ldGhvZE5hbWUpIHtcbiAgICAgIHZhciBmdW5jID0gTWF0aFttZXRob2ROYW1lXTtcbiAgICAgIHJldHVybiBmdW5jdGlvbihudW1iZXIsIHByZWNpc2lvbikge1xuICAgICAgICBudW1iZXIgPSB0b051bWJlcihudW1iZXIpO1xuICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gPT0gbnVsbCA/IDAgOiBuYXRpdmVNaW4odG9JbnRlZ2VyKHByZWNpc2lvbiksIDI5Mik7XG4gICAgICAgIGlmIChwcmVjaXNpb24gJiYgbmF0aXZlSXNGaW5pdGUobnVtYmVyKSkge1xuICAgICAgICAgIC8vIFNoaWZ0IHdpdGggZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYXZvaWQgZmxvYXRpbmctcG9pbnQgaXNzdWVzLlxuICAgICAgICAgIC8vIFNlZSBbTUROXShodHRwczovL21kbi5pby9yb3VuZCNFeGFtcGxlcykgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgICB2YXIgcGFpciA9ICh0b1N0cmluZyhudW1iZXIpICsgJ2UnKS5zcGxpdCgnZScpLFxuICAgICAgICAgICAgICB2YWx1ZSA9IGZ1bmMocGFpclswXSArICdlJyArICgrcGFpclsxXSArIHByZWNpc2lvbikpO1xuXG4gICAgICAgICAgcGFpciA9ICh0b1N0cmluZyh2YWx1ZSkgKyAnZScpLnNwbGl0KCdlJyk7XG4gICAgICAgICAgcmV0dXJuICsocGFpclswXSArICdlJyArICgrcGFpclsxXSAtIHByZWNpc2lvbikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jKG51bWJlcik7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzZXQgb2JqZWN0IG9mIGB2YWx1ZXNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhZGQgdG8gdGhlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgc2V0LlxuICAgICAqL1xuICAgIHZhciBjcmVhdGVTZXQgPSAhKFNldCAmJiAoMSAvIHNldFRvQXJyYXkobmV3IFNldChbLC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24odmFsdWVzKSB7XG4gICAgICByZXR1cm4gbmV3IFNldCh2YWx1ZXMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYF8udG9QYWlyc2Agb3IgYF8udG9QYWlyc0luYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0ga2V5c0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUga2V5cyBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYWlycyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGVUb1BhaXJzKGtleXNGdW5jKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHZhciB0YWcgPSBnZXRUYWcob2JqZWN0KTtcbiAgICAgICAgaWYgKHRhZyA9PSBtYXBUYWcpIHtcbiAgICAgICAgICByZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRvUGFpcnMob2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmFzZVRvUGFpcnMob2JqZWN0LCBrZXlzRnVuYyhvYmplY3QpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgZWl0aGVyIGN1cnJpZXMgb3IgaW52b2tlcyBgZnVuY2Agd2l0aCBvcHRpb25hbFxuICAgICAqIGB0aGlzYCBiaW5kaW5nIGFuZCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258c3RyaW5nfSBmdW5jIFRoZSBmdW5jdGlvbiBvciBtZXRob2QgbmFtZSB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICAgICAqICAgIDEgLSBgXy5iaW5kYFxuICAgICAqICAgIDIgLSBgXy5iaW5kS2V5YFxuICAgICAqICAgIDQgLSBgXy5jdXJyeWAgb3IgYF8uY3VycnlSaWdodGAgb2YgYSBib3VuZCBmdW5jdGlvblxuICAgICAqICAgIDggLSBgXy5jdXJyeWBcbiAgICAgKiAgIDE2IC0gYF8uY3VycnlSaWdodGBcbiAgICAgKiAgIDMyIC0gYF8ucGFydGlhbGBcbiAgICAgKiAgIDY0IC0gYF8ucGFydGlhbFJpZ2h0YFxuICAgICAqICAxMjggLSBgXy5yZWFyZ2BcbiAgICAgKiAgMjU2IC0gYF8uYXJ5YFxuICAgICAqICA1MTIgLSBgXy5mbGlwYFxuICAgICAqIEBwYXJhbSB7Kn0gW3RoaXNBcmddIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFtob2xkZXJzXSBUaGUgYHBhcnRpYWxzYCBwbGFjZWhvbGRlciBpbmRleGVzLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IFthcmdQb3NdIFRoZSBhcmd1bWVudCBwb3NpdGlvbnMgb2YgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyeV0gVGhlIGFyaXR5IGNhcCBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFthcml0eV0gVGhlIGFyaXR5IG9mIGBmdW5jYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB3cmFwcGVkIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNyZWF0ZVdyYXAoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMsIGhvbGRlcnMsIGFyZ1BvcywgYXJ5LCBhcml0eSkge1xuICAgICAgdmFyIGlzQmluZEtleSA9IGJpdG1hc2sgJiBXUkFQX0JJTkRfS0VZX0ZMQUc7XG4gICAgICBpZiAoIWlzQmluZEtleSAmJiB0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSBwYXJ0aWFscyA/IHBhcnRpYWxzLmxlbmd0aCA6IDA7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICBiaXRtYXNrICY9IH4oV1JBUF9QQVJUSUFMX0ZMQUcgfCBXUkFQX1BBUlRJQUxfUklHSFRfRkxBRyk7XG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGFyeSA9IGFyeSA9PT0gdW5kZWZpbmVkID8gYXJ5IDogbmF0aXZlTWF4KHRvSW50ZWdlcihhcnkpLCAwKTtcbiAgICAgIGFyaXR5ID0gYXJpdHkgPT09IHVuZGVmaW5lZCA/IGFyaXR5IDogdG9JbnRlZ2VyKGFyaXR5KTtcbiAgICAgIGxlbmd0aCAtPSBob2xkZXJzID8gaG9sZGVycy5sZW5ndGggOiAwO1xuXG4gICAgICBpZiAoYml0bWFzayAmIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHKSB7XG4gICAgICAgIHZhciBwYXJ0aWFsc1JpZ2h0ID0gcGFydGlhbHMsXG4gICAgICAgICAgICBob2xkZXJzUmlnaHQgPSBob2xkZXJzO1xuXG4gICAgICAgIHBhcnRpYWxzID0gaG9sZGVycyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gaXNCaW5kS2V5ID8gdW5kZWZpbmVkIDogZ2V0RGF0YShmdW5jKTtcblxuICAgICAgdmFyIG5ld0RhdGEgPSBbXG4gICAgICAgIGZ1bmMsIGJpdG1hc2ssIHRoaXNBcmcsIHBhcnRpYWxzLCBob2xkZXJzLCBwYXJ0aWFsc1JpZ2h0LCBob2xkZXJzUmlnaHQsXG4gICAgICAgIGFyZ1BvcywgYXJ5LCBhcml0eVxuICAgICAgXTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgbWVyZ2VEYXRhKG5ld0RhdGEsIGRhdGEpO1xuICAgICAgfVxuICAgICAgZnVuYyA9IG5ld0RhdGFbMF07XG4gICAgICBiaXRtYXNrID0gbmV3RGF0YVsxXTtcbiAgICAgIHRoaXNBcmcgPSBuZXdEYXRhWzJdO1xuICAgICAgcGFydGlhbHMgPSBuZXdEYXRhWzNdO1xuICAgICAgaG9sZGVycyA9IG5ld0RhdGFbNF07XG4gICAgICBhcml0eSA9IG5ld0RhdGFbOV0gPSBuZXdEYXRhWzldID09PSB1bmRlZmluZWRcbiAgICAgICAgPyAoaXNCaW5kS2V5ID8gMCA6IGZ1bmMubGVuZ3RoKVxuICAgICAgICA6IG5hdGl2ZU1heChuZXdEYXRhWzldIC0gbGVuZ3RoLCAwKTtcblxuICAgICAgaWYgKCFhcml0eSAmJiBiaXRtYXNrICYgKFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRykpIHtcbiAgICAgICAgYml0bWFzayAmPSB+KFdSQVBfQ1VSUllfRkxBRyB8IFdSQVBfQ1VSUllfUklHSFRfRkxBRyk7XG4gICAgICB9XG4gICAgICBpZiAoIWJpdG1hc2sgfHwgYml0bWFzayA9PSBXUkFQX0JJTkRfRkxBRykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gY3JlYXRlQmluZChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnKTtcbiAgICAgIH0gZWxzZSBpZiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcgfHwgYml0bWFzayA9PSBXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlQ3VycnkoZnVuYywgYml0bWFzaywgYXJpdHkpO1xuICAgICAgfSBlbHNlIGlmICgoYml0bWFzayA9PSBXUkFQX1BBUlRJQUxfRkxBRyB8fCBiaXRtYXNrID09IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfUEFSVElBTF9GTEFHKSkgJiYgIWhvbGRlcnMubGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCA9IGNyZWF0ZVBhcnRpYWwoZnVuYywgYml0bWFzaywgdGhpc0FyZywgcGFydGlhbHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0ID0gY3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCwgbmV3RGF0YSk7XG4gICAgICB9XG4gICAgICB2YXIgc2V0dGVyID0gZGF0YSA/IGJhc2VTZXREYXRhIDogc2V0RGF0YTtcbiAgICAgIHJldHVybiBzZXRXcmFwVG9TdHJpbmcoc2V0dGVyKHJlc3VsdCwgbmV3RGF0YSksIGZ1bmMsIGJpdG1hc2spO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVzZWQgYnkgYF8uZGVmYXVsdHNgIHRvIGN1c3RvbWl6ZSBpdHMgYF8uYXNzaWduSW5gIHVzZSB0byBhc3NpZ24gcHJvcGVydGllc1xuICAgICAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gICAgICogdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IG9ialZhbHVlIFRoZSBkZXN0aW5hdGlvbiB2YWx1ZS5cbiAgICAgKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSBzb3VyY2UgdmFsdWUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSB2YWx1ZSB0byBhc3NpZ24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gY3VzdG9tRGVmYXVsdHNBc3NpZ25JbihvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICBpZiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICByZXR1cm4gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5kZWZhdWx0c0RlZXBgIHRvIGN1c3RvbWl6ZSBpdHMgYF8ubWVyZ2VgIHVzZSB0byBtZXJnZSBzb3VyY2VcbiAgICAgKiBvYmplY3RzIGludG8gZGVzdGluYXRpb24gb2JqZWN0cyB0aGF0IGFyZSBwYXNzZWQgdGhydS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSBvYmpWYWx1ZSBUaGUgZGVzdGluYXRpb24gdmFsdWUuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gbWVyZ2UuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgcGFyZW50IG9iamVjdCBvZiBgb2JqVmFsdWVgLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHBhcmVudCBvYmplY3Qgb2YgYHNyY1ZhbHVlYC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICAgICAqICBjb3VudGVycGFydHMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spIHtcbiAgICAgIGlmIChpc09iamVjdChvYmpWYWx1ZSkgJiYgaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IG1lcmdlIG9iamVjdHMgYW5kIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG9ialZhbHVlKTtcbiAgICAgICAgYmFzZU1lcmdlKG9ialZhbHVlLCBzcmNWYWx1ZSwgdW5kZWZpbmVkLCBjdXN0b21EZWZhdWx0c01lcmdlLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlZCBieSBgXy5vbWl0YCB0byBjdXN0b21pemUgaXRzIGBfLmNsb25lRGVlcGAgdXNlIHRvIG9ubHkgY2xvbmUgcGxhaW5cbiAgICAgKiBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdW5jbG9uZWQgdmFsdWUgb3IgYHVuZGVmaW5lZGAgdG8gZGVmZXIgY2xvbmluZyB0byBgXy5jbG9uZURlZXBgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1c3RvbU9taXRDbG9uZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzUGxhaW5PYmplY3QodmFsdWUpID8gdW5kZWZpbmVkIDogdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtBcnJheX0gb3RoZXIgVGhlIG90aGVyIGFycmF5IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcnJheXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgYXJyTGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICAgICAgaWYgKGFyckxlbmd0aCAhPSBvdGhMZW5ndGggJiYgIShpc1BhcnRpYWwgJiYgb3RoTGVuZ3RoID4gYXJyTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIGFyclN0YWNrZWQgPSBzdGFjay5nZXQoYXJyYXkpO1xuICAgICAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICAgICAgaWYgKGFyclN0YWNrZWQgJiYgb3RoU3RhY2tlZCkge1xuICAgICAgICByZXR1cm4gYXJyU3RhY2tlZCA9PSBvdGhlciAmJiBvdGhTdGFja2VkID09IGFycmF5O1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgcmVzdWx0ID0gdHJ1ZSxcbiAgICAgICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICAgICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgICBzdGFjay5zZXQob3RoZXIsIGFycmF5KTtcblxuICAgICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgd2hpbGUgKCsraW5kZXggPCBhcnJMZW5ndGgpIHtcbiAgICAgICAgdmFyIGFyclZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICAgICAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICAgICAgOiBjdXN0b21pemVyKGFyclZhbHVlLCBvdGhWYWx1ZSwgaW5kZXgsIGFycmF5LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKGNvbXBhcmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29tcGFyZSBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjYWNoZUhhcyhzZWVuLCBvdGhJbmRleCkgJiZcbiAgICAgICAgICAgICAgICAgICAgKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgICAgICBhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICBlcXVhbEZ1bmMoYXJyVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKGFycmF5KTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAgICAgKiB0aGUgc2FtZSBgdG9TdHJpbmdUYWdgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICAgICAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIG9yIGBTdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCB0YWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICBvdGhlciA9IG90aGVyLmJ1ZmZlcjtcblxuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAgICAgIWVxdWFsRnVuYyhuZXcgVWludDhBcnJheShvYmplY3QpLCBuZXcgVWludDhBcnJheShvdGhlcikpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICAgICAgcmV0dXJuIGVxKCtvYmplY3QsICtvdGhlcik7XG5cbiAgICAgICAgY2FzZSBlcnJvclRhZzpcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgICAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHZhciBjb252ZXJ0ID0gbWFwVG9BcnJheTtcblxuICAgICAgICBjYXNlIHNldFRhZzpcbiAgICAgICAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHO1xuICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcblxuICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgICBiaXRtYXNrIHw9IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7XG5cbiAgICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgICBzdGFjay5zZXQob2JqZWN0LCBvdGhlcik7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgICAgIHJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KSA9PSBzeW1ib2xWYWx1ZU9mLmNhbGwob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsRGVlcGAgZm9yIG9iamVjdHMgd2l0aCBzdXBwb3J0IGZvclxuICAgICAqIHBhcnRpYWwgZGVlcCBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzdGFjayBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsXG4gICAgICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICAgICAgb2JqTGVuZ3RoID0gb2JqUHJvcHMubGVuZ3RoLFxuICAgICAgICAgIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksXG4gICAgICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gICAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IG9iakxlbmd0aDtcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBDaGVjayB0aGF0IGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIHZhciBvdGhTdGFja2VkID0gc3RhY2suZ2V0KG90aGVyKTtcbiAgICAgIGlmIChvYmpTdGFja2VkICYmIG90aFN0YWNrZWQpIHtcbiAgICAgICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcblxuICAgICAgdmFyIHNraXBDdG9yID0gaXNQYXJ0aWFsO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSxcbiAgICAgICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgIHZhciBjb21wYXJlZCA9IGlzUGFydGlhbFxuICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgIDogY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUsIGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoIShjb21wYXJlZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgID8gKG9ialZhbHVlID09PSBvdGhWYWx1ZSB8fCBlcXVhbEZ1bmMob2JqVmFsdWUsIG90aFZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjaykpXG4gICAgICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBza2lwQ3RvciB8fCAoc2tpcEN0b3IgPSBrZXkgPT0gJ2NvbnN0cnVjdG9yJyk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmICFza2lwQ3Rvcikge1xuICAgICAgICB2YXIgb2JqQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcixcbiAgICAgICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgICAgICAvLyBOb24gYE9iamVjdGAgb2JqZWN0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBjb25zdHJ1Y3RvcnMgYXJlIG5vdCBlcXVhbC5cbiAgICAgICAgaWYgKG9iakN0b3IgIT0gb3RoQ3RvciAmJlxuICAgICAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICAgICAhKHR5cGVvZiBvYmpDdG9yID09ICdmdW5jdGlvbicgJiYgb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3IgJiZcbiAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICBzdGFja1snZGVsZXRlJ10ob3RoZXIpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCBmbGF0dGVucyB0aGUgcmVzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0UmVzdChmdW5jKSB7XG4gICAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgdW5kZWZpbmVkLCBmbGF0dGVuKSwgZnVuYyArICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5cywgZ2V0U3ltYm9scyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICAgICAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldEFsbEtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXNJbiwgZ2V0U3ltYm9sc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIG1ldGFkYXRhIGZvciBgZnVuY2AuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBnZXREYXRhID0gIW1ldGFNYXAgPyBub29wIDogZnVuY3Rpb24oZnVuYykge1xuICAgICAgcmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYW1lIG9mIGBmdW5jYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRGdW5jTmFtZShmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gKGZ1bmMubmFtZSArICcnKSxcbiAgICAgICAgICBhcnJheSA9IHJlYWxOYW1lc1tyZXN1bHRdLFxuICAgICAgICAgIGxlbmd0aCA9IGhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLCByZXN1bHQpID8gYXJyYXkubGVuZ3RoIDogMDtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBkYXRhID0gYXJyYXlbbGVuZ3RoXSxcbiAgICAgICAgICAgIG90aGVyRnVuYyA9IGRhdGEuZnVuYztcbiAgICAgICAgaWYgKG90aGVyRnVuYyA9PSBudWxsIHx8IG90aGVyRnVuYyA9PSBmdW5jKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGEubmFtZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhcmd1bWVudCBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwbGFjZWhvbGRlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRIb2xkZXIoZnVuYykge1xuICAgICAgdmFyIG9iamVjdCA9IGhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLCAncGxhY2Vob2xkZXInKSA/IGxvZGFzaCA6IGZ1bmM7XG4gICAgICByZXR1cm4gb2JqZWN0LnBsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIFwiaXRlcmF0ZWVcIiBmdW5jdGlvbi4gSWYgYF8uaXRlcmF0ZWVgIGlzIGN1c3RvbWl6ZWQsXG4gICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXN0b20gbWV0aG9kLCBvdGhlcndpc2UgaXQgcmV0dXJucyBgYmFzZUl0ZXJhdGVlYC5cbiAgICAgKiBJZiBhcmd1bWVudHMgYXJlIHByb3ZpZGVkLCB0aGUgY2hvc2VuIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aGVtIGFuZFxuICAgICAqIGl0cyByZXN1bHQgaXMgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gW3ZhbHVlXSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhbiBpdGVyYXRlZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5XSBUaGUgYXJpdHkgb2YgdGhlIGNyZWF0ZWQgaXRlcmF0ZWUuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBjaG9zZW4gZnVuY3Rpb24gb3IgaXRzIHJlc3VsdC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRJdGVyYXRlZSgpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2guaXRlcmF0ZWUgfHwgaXRlcmF0ZWU7XG4gICAgICByZXN1bHQgPSByZXN1bHQgPT09IGl0ZXJhdGVlID8gYmFzZUl0ZXJhdGVlIDogcmVzdWx0O1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByZXN1bHQoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgICAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gICAgICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICAgICAgPyBkYXRhW3R5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyAnc3RyaW5nJyA6ICdoYXNoJ11cbiAgICAgICAgOiBkYXRhLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgICAgICB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG4gICAgICAgIHJlc3VsdFtsZW5ndGhdID0gW2tleSwgdmFsdWUsIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgICAgIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBzeW1ib2xzLlxuICAgICAqL1xuICAgIHZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgd2hpbGUgKG9iamVjdCkge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgICAgICBvYmplY3QgPSBnZXRQcm90b3R5cGUob2JqZWN0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAgICAgKi9cbiAgICB2YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuICAgIC8vIEZhbGxiYWNrIGZvciBkYXRhIHZpZXdzLCBtYXBzLCBzZXRzLCBhbmQgd2VhayBtYXBzIGluIElFIDExIGFuZCBwcm9taXNlcyBpbiBOb2RlLmpzIDwgNi5cbiAgICBpZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAgICAgKFByb21pc2UgJiYgZ2V0VGFnKFByb21pc2UucmVzb2x2ZSgpKSAhPSBwcm9taXNlVGFnKSB8fFxuICAgICAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICAgIGdldFRhZyA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG5cbiAgICAgICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgIGNhc2UgZGF0YVZpZXdDdG9yU3RyaW5nOiByZXR1cm4gZGF0YVZpZXdUYWc7XG4gICAgICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgIGNhc2Ugc2V0Q3RvclN0cmluZzogcmV0dXJuIHNldFRhZztcbiAgICAgICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2aWV3LCBhcHBseWluZyBhbnkgYHRyYW5zZm9ybXNgIHRvIHRoZSBgc3RhcnRgIGFuZCBgZW5kYCBwb3NpdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHZpZXcuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSB2aWV3LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHRyYW5zZm9ybXMgVGhlIHRyYW5zZm9ybWF0aW9ucyB0byBhcHBseSB0byB0aGUgdmlldy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBgc3RhcnRgIGFuZCBgZW5kYFxuICAgICAqICBwb3NpdGlvbnMgb2YgdGhlIHZpZXcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0VmlldyhzdGFydCwgZW5kLCB0cmFuc2Zvcm1zKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIGRhdGEgPSB0cmFuc2Zvcm1zW2luZGV4XSxcbiAgICAgICAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdkcm9wJzogICAgICBzdGFydCArPSBzaXplOyBicmVhaztcbiAgICAgICAgICBjYXNlICdkcm9wUmlnaHQnOiBlbmQgLT0gc2l6ZTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZSc6ICAgICAgZW5kID0gbmF0aXZlTWluKGVuZCwgc3RhcnQgKyBzaXplKTsgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGFrZVJpZ2h0Jzogc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQsIGVuZCAtIHNpemUpOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgJ3N0YXJ0Jzogc3RhcnQsICdlbmQnOiBlbmQgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHRyYWN0cyB3cmFwcGVyIGRldGFpbHMgZnJvbSB0aGUgYHNvdXJjZWAgYm9keSBjb21tZW50LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc291cmNlIFRoZSBzb3VyY2UgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHdyYXBwZXIgZGV0YWlscy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBnZXRXcmFwRGV0YWlscyhzb3VyY2UpIHtcbiAgICAgIHZhciBtYXRjaCA9IHNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtcbiAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdLnNwbGl0KHJlU3BsaXREZXRhaWxzKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgZXhpc3RzIG9uIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcblxuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgICAgIGlmICghKHJlc3VsdCA9IG9iamVjdCAhPSBudWxsICYmIGhhc0Z1bmMob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJiBpc0xlbmd0aChsZW5ndGgpICYmIGlzSW5kZXgoa2V5LCBsZW5ndGgpICYmXG4gICAgICAgIChpc0FycmF5KG9iamVjdCkgfHwgaXNBcmd1bWVudHMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IG5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gICAgICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICAgICAgaWYgKGxlbmd0aCAmJiB0eXBlb2YgYXJyYXlbMF0gPT0gJ3N0cmluZycgJiYgaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwgJ2luZGV4JykpIHtcbiAgICAgICAgcmVzdWx0LmluZGV4ID0gYXJyYXkuaW5kZXg7XG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgICByZXR1cm4gKHR5cGVvZiBvYmplY3QuY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgICAgICA6IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgY2xvbmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gICAgICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluaXRDbG9uZUJ5VGFnKG9iamVjdCwgdGFnLCBpc0RlZXApIHtcbiAgICAgIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICAgICAgc3dpdGNoICh0YWcpIHtcbiAgICAgICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgICAgIGNhc2UgYm9vbFRhZzpcbiAgICAgICAgY2FzZSBkYXRlVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgICAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZURhdGFWaWV3KG9iamVjdCwgaXNEZWVwKTtcblxuICAgICAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICAgICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgICAgICBjYXNlIHVpbnQ4VGFnOiBjYXNlIHVpbnQ4Q2xhbXBlZFRhZzogY2FzZSB1aW50MTZUYWc6IGNhc2UgdWludDMyVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgICAgIGNhc2UgbWFwVGFnOlxuICAgICAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgICAgICBjYXNlIG51bWJlclRhZzpcbiAgICAgICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICAgICAgY2FzZSBzZXRUYWc6XG4gICAgICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgICAgIHJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgd3JhcHBlciBgZGV0YWlsc2AgaW4gYSBjb21tZW50IGF0IHRoZSB0b3Agb2YgdGhlIGBzb3VyY2VgIGJvZHkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgVGhlIHNvdXJjZSB0byBtb2RpZnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBkZXRhaWxzIFRoZSBkZXRhaWxzIHRvIGluc2VydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzb3VyY2UuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaW5zZXJ0V3JhcERldGFpbHMoc291cmNlLCBkZXRhaWxzKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gZGV0YWlscy5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgfVxuICAgICAgdmFyIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG4gICAgICBkZXRhaWxzW2xhc3RJbmRleF0gPSAobGVuZ3RoID4gMSA/ICcmICcgOiAnJykgKyBkZXRhaWxzW2xhc3RJbmRleF07XG4gICAgICBkZXRhaWxzID0gZGV0YWlscy5qb2luKGxlbmd0aCA+IDIgPyAnLCAnIDogJyAnKTtcbiAgICAgIHJldHVybiBzb3VyY2UucmVwbGFjZShyZVdyYXBDb21tZW50LCAne1xcbi8qIFt3cmFwcGVkIHdpdGggJyArIGRldGFpbHMgKyAnXSAqL1xcbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgZmxhdHRlbmFibGUgYGFyZ3VtZW50c2Agb2JqZWN0IG9yIGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBmbGF0dGVuYWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRmxhdHRlbmFibGUodmFsdWUpIHtcbiAgICAgIHJldHVybiBpc0FycmF5KHZhbHVlKSB8fCBpc0FyZ3VtZW50cyh2YWx1ZSkgfHxcbiAgICAgICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgICAgIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICAgICAodHlwZSA9PSAnbnVtYmVyJyB8fFxuICAgICAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgdmFsdWUgYXJndW1lbnQuXG4gICAgICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAgICAgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFyZ3VtZW50cyBhcmUgZnJvbSBhbiBpdGVyYXRlZSBjYWxsLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJdGVyYXRlZUNhbGwodmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgICAgICA/IChpc0FycmF5TGlrZShvYmplY3QpICYmIGlzSW5kZXgoaW5kZXgsIG9iamVjdC5sZW5ndGgpKVxuICAgICAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICAgICAgKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lIGFuZCBub3QgYSBwcm9wZXJ0eSBwYXRoLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICAgIGlmICh0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHxcbiAgICAgICAgICB2YWx1ZSA9PSBudWxsIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZUlzUGxhaW5Qcm9wLnRlc3QodmFsdWUpIHx8ICFyZUlzRGVlcFByb3AudGVzdCh2YWx1ZSkgfHxcbiAgICAgICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3IgdXNlIGFzIHVuaXF1ZSBvYmplY3Qga2V5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzS2V5YWJsZSh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBhIGxhenkgY291bnRlcnBhcnQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaGFzIGEgbGF6eSBjb3VudGVycGFydCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYykge1xuICAgICAgdmFyIGZ1bmNOYW1lID0gZ2V0RnVuY05hbWUoZnVuYyksXG4gICAgICAgICAgb3RoZXIgPSBsb2Rhc2hbZnVuY05hbWVdO1xuXG4gICAgICBpZiAodHlwZW9mIG90aGVyICE9ICdmdW5jdGlvbicgfHwgIShmdW5jTmFtZSBpbiBMYXp5V3JhcHBlci5wcm90b3R5cGUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChmdW5jID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBkYXRhID0gZ2V0RGF0YShvdGhlcik7XG4gICAgICByZXR1cm4gISFkYXRhICYmIGZ1bmMgPT09IGRhdGFbMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICAgICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYGZ1bmNgIGlzIGNhcGFibGUgb2YgYmVpbmcgbWFza2VkLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2thYmxlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgdmFyIGlzTWFza2FibGUgPSBjb3JlSnNEYXRhID8gaXNGdW5jdGlvbiA6IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgICAgIHZhciBDdG9yID0gdmFsdWUgJiYgdmFsdWUuY29uc3RydWN0b3IsXG4gICAgICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaWYgc3VpdGFibGUgZm9yIHN0cmljdFxuICAgICAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3RyaWN0Q29tcGFyYWJsZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICAgICAqIGZvciBzdHJpY3QgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUoa2V5LCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iamVjdFtrZXldID09PSBzcmNWYWx1ZSAmJlxuICAgICAgICAgIChzcmNWYWx1ZSAhPT0gdW5kZWZpbmVkIHx8IChrZXkgaW4gT2JqZWN0KG9iamVjdCkpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1lbW9pemVgIHdoaWNoIGNsZWFycyB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24nc1xuICAgICAqIGNhY2hlIHdoZW4gaXQgZXhjZWVkcyBgTUFYX01FTU9JWkVfU0laRWAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGhhdmUgaXRzIG91dHB1dCBtZW1vaXplZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZW1vaXplQ2FwcGVkKGZ1bmMpIHtcbiAgICAgIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH0pO1xuXG4gICAgICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1lcmdlcyB0aGUgZnVuY3Rpb24gbWV0YWRhdGEgb2YgYHNvdXJjZWAgaW50byBgZGF0YWAuXG4gICAgICpcbiAgICAgKiBNZXJnaW5nIG1ldGFkYXRhIHJlZHVjZXMgdGhlIG51bWJlciBvZiB3cmFwcGVycyB1c2VkIHRvIGludm9rZSBhIGZ1bmN0aW9uLlxuICAgICAqIFRoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBtZXRob2RzIGxpa2UgYF8uYmluZGAsIGBfLmN1cnJ5YCwgYW5kIGBfLnBhcnRpYWxgXG4gICAgICogbWF5IGJlIGFwcGxpZWQgcmVnYXJkbGVzcyBvZiBleGVjdXRpb24gb3JkZXIuIE1ldGhvZHMgbGlrZSBgXy5hcnlgIGFuZFxuICAgICAqIGBfLnJlYXJnYCBtb2RpZnkgZnVuY3Rpb24gYXJndW1lbnRzLCBtYWtpbmcgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlXG4gICAgICogZXhlY3V0ZWQgaW1wb3J0YW50LCBwcmV2ZW50aW5nIHRoZSBtZXJnaW5nIG9mIG1ldGFkYXRhLiBIb3dldmVyLCB3ZSBtYWtlXG4gICAgICogYW4gZXhjZXB0aW9uIGZvciBhIHNhZmUgY29tYmluZWQgY2FzZSB3aGVyZSBjdXJyaWVkIGZ1bmN0aW9ucyBoYXZlIGBfLmFyeWBcbiAgICAgKiBhbmQgb3IgYF8ucmVhcmdgIGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgVGhlIGRlc3RpbmF0aW9uIG1ldGFkYXRhLlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHNvdXJjZSBUaGUgc291cmNlIG1ldGFkYXRhLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgZGF0YWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVyZ2VEYXRhKGRhdGEsIHNvdXJjZSkge1xuICAgICAgdmFyIGJpdG1hc2sgPSBkYXRhWzFdLFxuICAgICAgICAgIHNyY0JpdG1hc2sgPSBzb3VyY2VbMV0sXG4gICAgICAgICAgbmV3Qml0bWFzayA9IGJpdG1hc2sgfCBzcmNCaXRtYXNrLFxuICAgICAgICAgIGlzQ29tbW9uID0gbmV3Qml0bWFzayA8IChXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRyB8IFdSQVBfQVJZX0ZMQUcpO1xuXG4gICAgICB2YXIgaXNDb21ibyA9XG4gICAgICAgICgoc3JjQml0bWFzayA9PSBXUkFQX0FSWV9GTEFHKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKSB8fFxuICAgICAgICAoKHNyY0JpdG1hc2sgPT0gV1JBUF9BUllfRkxBRykgJiYgKGJpdG1hc2sgPT0gV1JBUF9SRUFSR19GTEFHKSAmJiAoZGF0YVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSkgfHxcbiAgICAgICAgKChzcmNCaXRtYXNrID09IChXUkFQX0FSWV9GTEFHIHwgV1JBUF9SRUFSR19GTEFHKSkgJiYgKHNvdXJjZVs3XS5sZW5ndGggPD0gc291cmNlWzhdKSAmJiAoYml0bWFzayA9PSBXUkFQX0NVUlJZX0ZMQUcpKTtcblxuICAgICAgLy8gRXhpdCBlYXJseSBpZiBtZXRhZGF0YSBjYW4ndCBiZSBtZXJnZWQuXG4gICAgICBpZiAoIShpc0NvbW1vbiB8fCBpc0NvbWJvKSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYHRoaXNBcmdgIGlmIGF2YWlsYWJsZS5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcpIHtcbiAgICAgICAgZGF0YVsyXSA9IHNvdXJjZVsyXTtcbiAgICAgICAgLy8gU2V0IHdoZW4gY3VycnlpbmcgYSBib3VuZCBmdW5jdGlvbi5cbiAgICAgICAgbmV3Qml0bWFzayB8PSBiaXRtYXNrICYgV1JBUF9CSU5EX0ZMQUcgPyAwIDogV1JBUF9DVVJSWV9CT1VORF9GTEFHO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIGFyZ3VtZW50cy5cbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVszXTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICB2YXIgcGFydGlhbHMgPSBkYXRhWzNdO1xuICAgICAgICBkYXRhWzNdID0gcGFydGlhbHMgPyBjb21wb3NlQXJncyhwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs0XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs0XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVszXSwgUExBQ0VIT0xERVIpIDogc291cmNlWzRdO1xuICAgICAgfVxuICAgICAgLy8gQ29tcG9zZSBwYXJ0aWFsIHJpZ2h0IGFyZ3VtZW50cy5cbiAgICAgIHZhbHVlID0gc291cmNlWzVdO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHBhcnRpYWxzID0gZGF0YVs1XTtcbiAgICAgICAgZGF0YVs1XSA9IHBhcnRpYWxzID8gY29tcG9zZUFyZ3NSaWdodChwYXJ0aWFscywgdmFsdWUsIHNvdXJjZVs2XSkgOiB2YWx1ZTtcbiAgICAgICAgZGF0YVs2XSA9IHBhcnRpYWxzID8gcmVwbGFjZUhvbGRlcnMoZGF0YVs1XSwgUExBQ0VIT0xERVIpIDogc291cmNlWzZdO1xuICAgICAgfVxuICAgICAgLy8gVXNlIHNvdXJjZSBgYXJnUG9zYCBpZiBhdmFpbGFibGUuXG4gICAgICB2YWx1ZSA9IHNvdXJjZVs3XTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBkYXRhWzddID0gdmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcnlgIGlmIGl0J3Mgc21hbGxlci5cbiAgICAgIGlmIChzcmNCaXRtYXNrICYgV1JBUF9BUllfRkxBRykge1xuICAgICAgICBkYXRhWzhdID0gZGF0YVs4XSA9PSBudWxsID8gc291cmNlWzhdIDogbmF0aXZlTWluKGRhdGFbOF0sIHNvdXJjZVs4XSk7XG4gICAgICB9XG4gICAgICAvLyBVc2Ugc291cmNlIGBhcml0eWAgaWYgb25lIGlzIG5vdCBwcm92aWRlZC5cbiAgICAgIGlmIChkYXRhWzldID09IG51bGwpIHtcbiAgICAgICAgZGF0YVs5XSA9IHNvdXJjZVs5XTtcbiAgICAgIH1cbiAgICAgIC8vIFVzZSBzb3VyY2UgYGZ1bmNgIGFuZCBtZXJnZSBiaXRtYXNrcy5cbiAgICAgIGRhdGFbMF0gPSBzb3VyY2VbMF07XG4gICAgICBkYXRhWzFdID0gbmV3Qml0bWFzaztcblxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gICAgICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGV4Y2VwdCB0aGF0IGl0IGluY2x1ZGVzIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3QpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICovXG4gICAgZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIHJlc3QgYXJyYXkgdHJhbnNmb3JtLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgICAgIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHBhcmVudCB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIGdldCB0aGUgcGFyZW50IHZhbHVlIG9mLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFyZW50KG9iamVjdCwgcGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgubGVuZ3RoIDwgMiA/IG9iamVjdCA6IGJhc2VHZXQob2JqZWN0LCBiYXNlU2xpY2UocGF0aCwgMCwgLTEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW9yZGVyIGBhcnJheWAgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW5kZXhlcyB3aGVyZSB0aGUgZWxlbWVudCBhdFxuICAgICAqIHRoZSBmaXJzdCBpbmRleCBpcyBhc3NpZ25lZCBhcyB0aGUgZmlyc3QgZWxlbWVudCwgdGhlIGVsZW1lbnQgYXRcbiAgICAgKiB0aGUgc2Vjb25kIGluZGV4IGlzIGFzc2lnbmVkIGFzIHRoZSBzZWNvbmQgZWxlbWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcmVvcmRlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5fSBpbmRleGVzIFRoZSBhcnJhbmdlZCBhcnJheSBpbmRleGVzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlb3JkZXIoYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGluZGV4ZXMubGVuZ3RoLCBhcnJMZW5ndGgpLFxuICAgICAgICAgIG9sZEFycmF5ID0gY29weUFycmF5KGFycmF5KTtcblxuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGluZGV4ZXNbbGVuZ3RoXTtcbiAgICAgICAgYXJyYXlbbGVuZ3RoXSA9IGlzSW5kZXgoaW5kZXgsIGFyckxlbmd0aCkgPyBvbGRBcnJheVtpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAsIHVubGVzcyBga2V5YCBpcyBcIl9fcHJvdG9fX1wiIG9yIFwiY29uc3RydWN0b3JcIi5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gICAgICBpZiAoa2V5ID09PSAnY29uc3RydWN0b3InICYmIHR5cGVvZiBvYmplY3Rba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBtZXRhZGF0YSBmb3IgYGZ1bmNgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIHRoaXMgZnVuY3Rpb24gYmVjb21lcyBob3QsIGkuZS4gaXMgaW52b2tlZCBhIGxvdCBpbiBhIHNob3J0XG4gICAgICogcGVyaW9kIG9mIHRpbWUsIGl0IHdpbGwgdHJpcCBpdHMgYnJlYWtlciBhbmQgdHJhbnNpdGlvbiB0byBhbiBpZGVudGl0eVxuICAgICAqIGZ1bmN0aW9uIHRvIGF2b2lkIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXVzZXMgaW4gVjguIFNlZVxuICAgICAqIFtWOCBpc3N1ZSAyMDcwXShodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMDcwKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFzc29jaWF0ZSBtZXRhZGF0YSB3aXRoLlxuICAgICAqIEBwYXJhbSB7Kn0gZGF0YSBUaGUgbWV0YWRhdGEuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAgICAgKi9cbiAgICB2YXIgc2V0RGF0YSA9IHNob3J0T3V0KGJhc2VTZXREYXRhKTtcblxuICAgIC8qKlxuICAgICAqIEEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIHRoZSBnbG9iYWwgW2BzZXRUaW1lb3V0YF0oaHR0cHM6Ly9tZG4uaW8vc2V0VGltZW91dCkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcnxPYmplY3R9IFJldHVybnMgdGhlIHRpbWVyIGlkIG9yIHRpbWVvdXQgb2JqZWN0LlxuICAgICAqL1xuICAgIHZhciBzZXRUaW1lb3V0ID0gY3R4U2V0VGltZW91dCB8fCBmdW5jdGlvbihmdW5jLCB3YWl0KSB7XG4gICAgICByZXR1cm4gcm9vdC5zZXRUaW1lb3V0KGZ1bmMsIHdhaXQpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgZnVuY2AgdG8gcmV0dXJuIGBzdHJpbmdgLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICAgICAqL1xuICAgIHZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgdG9TdHJpbmdgIG1ldGhvZCBvZiBgd3JhcHBlcmAgdG8gbWltaWMgdGhlIHNvdXJjZSBvZiBgcmVmZXJlbmNlYFxuICAgICAqIHdpdGggd3JhcHBlciBkZXRhaWxzIGluIGEgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBzb3VyY2UgYm9keS5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gd3JhcHBlciBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHJlZmVyZW5jZSBUaGUgcmVmZXJlbmNlIGZ1bmN0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGNyZWF0ZVdyYXBgIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGB3cmFwcGVyYC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXcmFwVG9TdHJpbmcod3JhcHBlciwgcmVmZXJlbmNlLCBiaXRtYXNrKSB7XG4gICAgICB2YXIgc291cmNlID0gKHJlZmVyZW5jZSArICcnKTtcbiAgICAgIHJldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLCBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsIHVwZGF0ZVdyYXBEZXRhaWxzKGdldFdyYXBEZXRhaWxzKHNvdXJjZSksIGJpdG1hc2spKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gICAgICogb2YgYGZ1bmNgIHdoZW4gaXQncyBjYWxsZWQgYEhPVF9DT1VOVGAgb3IgbW9yZSB0aW1lcyBpbiBgSE9UX1NQQU5gXG4gICAgICogbWlsbGlzZWNvbmRzLlxuICAgICAqXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgICAgdmFyIGNvdW50ID0gMCxcbiAgICAgICAgICBsYXN0Q2FsbGVkID0gMDtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgICAgIHJlbWFpbmluZyA9IEhPVF9TUEFOIC0gKHN0YW1wIC0gbGFzdENhbGxlZCk7XG5cbiAgICAgICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgICAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgICAgIGlmICgrK2NvdW50ID49IEhPVF9DT1VOVCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNodWZmbGVgIHdoaWNoIG11dGF0ZXMgYW5kIHNldHMgdGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNodWZmbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzaXplPWFycmF5Lmxlbmd0aF0gVGhlIHNpemUgb2YgYGFycmF5YC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlU2VsZihhcnJheSwgc2l6ZSkge1xuICAgICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIGxhc3RJbmRleCA9IGxlbmd0aCAtIDE7XG5cbiAgICAgIHNpemUgPSBzaXplID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBzaXplO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBzaXplKSB7XG4gICAgICAgIHZhciByYW5kID0gYmFzZVJhbmRvbShpbmRleCwgbGFzdEluZGV4KSxcbiAgICAgICAgICAgIHZhbHVlID0gYXJyYXlbcmFuZF07XG5cbiAgICAgICAgYXJyYXlbcmFuZF0gPSBhcnJheVtpbmRleF07XG4gICAgICAgIGFycmF5W2luZGV4XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgYXJyYXkubGVuZ3RoID0gc2l6ZTtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhIHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAgICAgKi9cbiAgICB2YXIgc3RyaW5nVG9QYXRoID0gbWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpIHtcbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDYgLyogLiAqLykge1xuICAgICAgICByZXN1bHQucHVzaCgnJyk7XG4gICAgICB9XG4gICAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbihtYXRjaCwgbnVtYmVyLCBxdW90ZSwgc3ViU3RyaW5nKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHF1b3RlID8gc3ViU3RyaW5nLnJlcGxhY2UocmVFc2NhcGVDaGFyLCAnJDEnKSA6IChudW1iZXIgfHwgbWF0Y2gpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAgICAgKlxuICAgICAqIEBwcml2YXRlXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8IGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gKHZhbHVlICsgJycpO1xuICAgICAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICAgICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB3cmFwcGVyIGBkZXRhaWxzYCBiYXNlZCBvbiBgYml0bWFza2AgZmxhZ3MuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gZGV0YWlscyBUaGUgZGV0YWlscyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgY3JlYXRlV3JhcGAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGRldGFpbHNgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdyYXBEZXRhaWxzKGRldGFpbHMsIGJpdG1hc2spIHtcbiAgICAgIGFycmF5RWFjaCh3cmFwRmxhZ3MsIGZ1bmN0aW9uKHBhaXIpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gJ18uJyArIHBhaXJbMF07XG4gICAgICAgIGlmICgoYml0bWFzayAmIHBhaXJbMV0pICYmICFhcnJheUluY2x1ZGVzKGRldGFpbHMsIHZhbHVlKSkge1xuICAgICAgICAgIGRldGFpbHMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGRldGFpbHMuc29ydCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgd3JhcHBlcmAuXG4gICAgICpcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSB3cmFwcGVyIFRoZSB3cmFwcGVyIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB3cmFwcGVyLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDbG9uZSh3cmFwcGVyKSB7XG4gICAgICBpZiAod3JhcHBlciBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB7XG4gICAgICAgIHJldHVybiB3cmFwcGVyLmNsb25lKCk7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gbmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXywgd3JhcHBlci5fX2NoYWluX18pO1xuICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fID0gY29weUFycmF5KHdyYXBwZXIuX19hY3Rpb25zX18pO1xuICAgICAgcmVzdWx0Ll9faW5kZXhfXyAgPSB3cmFwcGVyLl9faW5kZXhfXztcbiAgICAgIHJlc3VsdC5fX3ZhbHVlc19fID0gd3JhcHBlci5fX3ZhbHVlc19fO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gZ3JvdXBzIHRoZSBsZW5ndGggb2YgYHNpemVgLlxuICAgICAqIElmIGBhcnJheWAgY2FuJ3QgYmUgc3BsaXQgZXZlbmx5LCB0aGUgZmluYWwgY2h1bmsgd2lsbCBiZSB0aGUgcmVtYWluaW5nXG4gICAgICogZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3NpemU9MV0gVGhlIGxlbmd0aCBvZiBlYWNoIGNodW5rXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjaHVua3MuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2h1bmsoWydhJywgJ2InLCAnYycsICdkJ10sIDIpO1xuICAgICAqIC8vID0+IFtbJ2EnLCAnYiddLCBbJ2MnLCAnZCddXVxuICAgICAqXG4gICAgICogXy5jaHVuayhbJ2EnLCAnYicsICdjJywgJ2QnXSwgMyk7XG4gICAgICogLy8gPT4gW1snYScsICdiJywgJ2MnXSwgWydkJ11dXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2h1bmsoYXJyYXksIHNpemUsIGd1YXJkKSB7XG4gICAgICBpZiAoKGd1YXJkID8gaXNJdGVyYXRlZUNhbGwoYXJyYXksIHNpemUsIGd1YXJkKSA6IHNpemUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgc2l6ZSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gbmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwgMCk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCB8fCBzaXplIDwgMSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBBcnJheShuYXRpdmVDZWlsKGxlbmd0aCAvIHNpemUpKTtcblxuICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGJhc2VTbGljZShhcnJheSwgaW5kZXgsIChpbmRleCArPSBzaXplKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgd2l0aCBhbGwgZmFsc2V5IHZhbHVlcyByZW1vdmVkLiBUaGUgdmFsdWVzIGBmYWxzZWAsIGBudWxsYCxcbiAgICAgKiBgMGAsIGBcIlwiYCwgYHVuZGVmaW5lZGAsIGFuZCBgTmFOYCBhcmUgZmFsc2V5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGNvbXBhY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmNvbXBhY3QoWzAsIDEsIGZhbHNlLCAyLCAnJywgM10pO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXkpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgICAgICByZXN1bHQgPSBbXTtcblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICByZXN1bHRbcmVzSW5kZXgrK10gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGFycmF5IGNvbmNhdGVuYXRpbmcgYGFycmF5YCB3aXRoIGFueSBhZGRpdGlvbmFsIGFycmF5c1xuICAgICAqIGFuZC9vciB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29uY2F0ZW5hdGUuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNvbmNhdGVuYXRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGNvbmNhdGVuYXRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzFdO1xuICAgICAqIHZhciBvdGhlciA9IF8uY29uY2F0KGFycmF5LCAyLCBbM10sIFtbNF1dKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgMywgWzRdXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmNhdCgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgdmFyIGFyZ3MgPSBBcnJheShsZW5ndGggLSAxKSxcbiAgICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXSxcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcblxuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgYXJnc1tpbmRleCAtIDFdID0gYXJndW1lbnRzW2luZGV4XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnJheVB1c2goaXNBcnJheShhcnJheSkgPyBjb3B5QXJyYXkoYXJyYXkpIDogW2FycmF5XSwgYmFzZUZsYXR0ZW4oYXJncywgMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgYGFycmF5YCB2YWx1ZXMgbm90IGluY2x1ZGVkIGluIHRoZSBvdGhlciBnaXZlbiBhcnJheXNcbiAgICAgKiB1c2luZyBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8ud2l0aG91dCwgXy54b3JcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKi9cbiAgICB2YXIgZGlmZmVyZW5jZSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSlcbiAgICAgICAgPyBiYXNlRGlmZmVyZW5jZShhcnJheSwgYmFzZUZsYXR0ZW4odmFsdWVzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSkpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmRpZmZlcmVuY2VgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIG9yZGVyIGFuZCByZWZlcmVuY2VzIG9mIHJlc3VsdCB2YWx1ZXMgYXJlXG4gICAgICogZGV0ZXJtaW5lZCBieSB0aGUgZmlyc3QgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnB1bGxBbGxCeWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGV4Y2x1ZGUuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMl1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZGlmZmVyZW5jZUJ5KFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgW3sgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheSwgdmFsdWVzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KHZhbHVlcyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCBiYXNlRmxhdHRlbih2YWx1ZXMsIDEsIGlzQXJyYXlMaWtlT2JqZWN0LCB0cnVlKSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKVxuICAgICAgICA6IFtdO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5kaWZmZXJlbmNlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgb3JkZXIgYW5kXG4gICAgICogcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS4gVGhlIGNvbXBhcmF0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKGFyclZhbCwgb3RoVmFsKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbEFsbFdpdGhgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBleGNsdWRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5kaWZmZXJlbmNlV2l0aChvYmplY3RzLCBbeyAneCc6IDEsICd5JzogMiB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBkaWZmZXJlbmNlV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LCB2YWx1ZXMpIHtcbiAgICAgIHZhciBjb21wYXJhdG9yID0gbGFzdCh2YWx1ZXMpO1xuICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKSB7XG4gICAgICAgIGNvbXBhcmF0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpXG4gICAgICAgID8gYmFzZURpZmZlcmVuY2UoYXJyYXksIGJhc2VGbGF0dGVuKHZhbHVlcywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3AoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqXG4gICAgICogXy5kcm9wKFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcChbMSwgMiwgM10sIDApO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3AoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgbiA8IDAgPyAwIDogbiwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyBkcm9wcGVkIGZyb20gdGhlIGVuZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiBlbGVtZW50cyB0byBkcm9wLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRyb3BSaWdodChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy5kcm9wUmlnaHQoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMV1cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgNSk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbiA9IChndWFyZCB8fCBuID09PSB1bmRlZmluZWQpID8gMSA6IHRvSW50ZWdlcihuKTtcbiAgICAgIG4gPSBsZW5ndGggLSBuO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgZXhjbHVkaW5nIGVsZW1lbnRzIGRyb3BwZWQgZnJvbSB0aGUgZW5kLlxuICAgICAqIEVsZW1lbnRzIGFyZSBkcm9wcGVkIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BSaWdodFdoaWxlKHVzZXJzLCB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZHJvcFJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leScsICdmcmVkJywgJ3BlYmJsZXMnXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCBleGNsdWRpbmcgZWxlbWVudHMgZHJvcHBlZCBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICogRWxlbWVudHMgYXJlIGRyb3BwZWQgdW50aWwgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkuIFRoZSBwcmVkaWNhdGUgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4LCBhcnJheSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuICFvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5kcm9wV2hpbGUodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmRyb3BXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZHJvcFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgdHJ1ZSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaWxscyBlbGVtZW50cyBvZiBgYXJyYXlgIHdpdGggYHZhbHVlYCBmcm9tIGBzdGFydGAgdXAgdG8sIGJ1dCBub3RcbiAgICAgKiBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmaWxsLlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGZpbGwgYGFycmF5YCB3aXRoLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXy5maWxsKGFycmF5LCAnYScpO1xuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYScsICdhJ11cbiAgICAgKlxuICAgICAqIF8uZmlsbChBcnJheSgzKSwgMik7XG4gICAgICogLy8gPT4gWzIsIDIsIDJdXG4gICAgICpcbiAgICAgKiBfLmZpbGwoWzQsIDYsIDgsIDEwXSwgJyonLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbNCwgJyonLCAnKicsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbGwoYXJyYXksIHZhbHVlLCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgJiYgdHlwZW9mIHN0YXJ0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VGaWxsKGFycmF5LCB2YWx1ZSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5maW5kYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3RcbiAgICAgKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgeyAndXNlcic6ICdmcmVkJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDBcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IGZyb21JbmRleCA9PSBudWxsID8gMCA6IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICBpbmRleCA9IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZEluZGV4YCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzXG4gICAgICogb2YgYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD1hcnJheS5sZW5ndGgtMV0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBlbGVtZW50LCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby51c2VyID09ICdwZWJibGVzJzsgfSk7XG4gICAgICogLy8gPT4gMlxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0SW5kZXgodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZExhc3RJbmRleCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IDBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgdmFyIGluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICAgIGlmIChmcm9tSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpbmRleCA9IHRvSW50ZWdlcihmcm9tSW5kZXgpO1xuICAgICAgICBpbmRleCA9IGZyb21JbmRleCA8IDBcbiAgICAgICAgICA/IG5hdGl2ZU1heChsZW5ndGggKyBpbmRleCwgMClcbiAgICAgICAgICA6IG5hdGl2ZU1pbihpbmRleCwgbGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5mbGF0dGVuKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIFszLCBbNF1dLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWN1cnNpdmVseSBmbGF0dGVucyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGZsYXR0ZW4uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZWVwKFsxLCBbMiwgWzMsIFs0XV0sIDVdXSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIDQsIDVdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdHRlbkRlZXAoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgSU5GSU5JVFkpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgZmxhdHRlbiBgYXJyYXlgIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC40LjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsxLCBbMiwgWzMsIFs0XV0sIDVdXTtcbiAgICAgKlxuICAgICAqIF8uZmxhdHRlbkRlcHRoKGFycmF5LCAxKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgWzMsIFs0XV0sIDVdXG4gICAgICpcbiAgICAgKiBfLmZsYXR0ZW5EZXB0aChhcnJheSwgMik7XG4gICAgICogLy8gPT4gWzEsIDIsIDMsIFs0XSwgNV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0dGVuRGVwdGgoYXJyYXksIGRlcHRoKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBkZXB0aCA9IGRlcHRoID09PSB1bmRlZmluZWQgPyAxIDogdG9JbnRlZ2VyKGRlcHRoKTtcbiAgICAgIHJldHVybiBiYXNlRmxhdHRlbihhcnJheSwgZGVwdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLnRvUGFpcnNgOyB0aGlzIG1ldGhvZCByZXR1cm5zIGFuIG9iamVjdCBjb21wb3NlZFxuICAgICAqIGZyb20ga2V5LXZhbHVlIGBwYWlyc2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBwYWlycyBUaGUga2V5LXZhbHVlIHBhaXJzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZnJvbVBhaXJzKFtbJ2EnLCAxXSwgWydiJywgMl1dKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmcm9tUGFpcnMocGFpcnMpIHtcbiAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgIGxlbmd0aCA9IHBhaXJzID09IG51bGwgPyAwIDogcGFpcnMubGVuZ3RoLFxuICAgICAgICAgIHJlc3VsdCA9IHt9O1xuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgcGFpciA9IHBhaXJzW2luZGV4XTtcbiAgICAgICAgcmVzdWx0W3BhaXJbMF1dID0gcGFpclsxXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgZmlyc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIGZpcnN0XG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaGVhZChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDFcbiAgICAgKlxuICAgICAqIF8uaGVhZChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gaGVhZChhcnJheSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYXJyYXlbMF0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYHZhbHVlYCBpcyBmb3VuZCBpbiBgYXJyYXlgXG4gICAgICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAgICAgKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuIElmIGBmcm9tSW5kZXhgIGlzIG5lZ2F0aXZlLCBpdCdzIHVzZWQgYXMgdGhlXG4gICAgICogb2Zmc2V0IGZyb20gdGhlIGVuZCBvZiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbmRleE9mKFsxLCAyLCAxLCAyXSwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqXG4gICAgICogLy8gU2VhcmNoIGZyb20gdGhlIGBmcm9tSW5kZXhgLlxuICAgICAqIF8uaW5kZXhPZihbMSwgMiwgMSwgMl0sIDIsIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgaW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgaW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIGJ1dCB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmluaXRpYWwoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpbml0aWFsKGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYmFzZVNsaWNlKGFycmF5LCAwLCAtMSkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gYWxsIGdpdmVuIGFycmF5c1xuICAgICAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBUaGUgb3JkZXIgYW5kIHJlZmVyZW5jZXMgb2YgcmVzdWx0IHZhbHVlcyBhcmVcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBmaXJzdCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbihbMiwgMV0sIFsyLCAzXSk7XG4gICAgICogLy8gPT4gWzJdXG4gICAgICovXG4gICAgdmFyIGludGVyc2VjdGlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG4gICAgICByZXR1cm4gKG1hcHBlZC5sZW5ndGggJiYgbWFwcGVkWzBdID09PSBhcnJheXNbMF0pXG4gICAgICAgID8gYmFzZUludGVyc2VjdGlvbihtYXBwZWQpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvblxuICAgICAqIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlcyBvZiByZXN1bHQgdmFsdWVzIGFyZVxuICAgICAqIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBpbnRlcnNlY3RpbmcgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFsyLjEsIDEuMl0sIFsyLjMsIDMuNF0sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IFsyLjFdXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmludGVyc2VjdGlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9XVxuICAgICAqL1xuICAgIHZhciBpbnRlcnNlY3Rpb25CeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGl0ZXJhdGVlID0gbGFzdChhcnJheXMpLFxuICAgICAgICAgIG1hcHBlZCA9IGFycmF5TWFwKGFycmF5cywgY2FzdEFycmF5TGlrZU9iamVjdCk7XG5cbiAgICAgIGlmIChpdGVyYXRlZSA9PT0gbGFzdChtYXBwZWQpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmludGVyc2VjdGlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFRoZSBvcmRlciBhbmQgcmVmZXJlbmNlc1xuICAgICAqIG9mIHJlc3VsdCB2YWx1ZXMgYXJlIGRldGVybWluZWQgYnkgdGhlIGZpcnN0IGFycmF5LiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGludGVyc2VjdGluZyB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XTtcbiAgICAgKiB2YXIgb3RoZXJzID0gW3sgJ3gnOiAxLCAneSc6IDEgfSwgeyAneCc6IDEsICd5JzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8uaW50ZXJzZWN0aW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgaW50ZXJzZWN0aW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyksXG4gICAgICAgICAgbWFwcGVkID0gYXJyYXlNYXAoYXJyYXlzLCBjYXN0QXJyYXlMaWtlT2JqZWN0KTtcblxuICAgICAgY29tcGFyYXRvciA9IHR5cGVvZiBjb21wYXJhdG9yID09ICdmdW5jdGlvbicgPyBjb21wYXJhdG9yIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKGNvbXBhcmF0b3IpIHtcbiAgICAgICAgbWFwcGVkLnBvcCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIChtYXBwZWQubGVuZ3RoICYmIG1hcHBlZFswXSA9PT0gYXJyYXlzWzBdKVxuICAgICAgICA/IGJhc2VJbnRlcnNlY3Rpb24obWFwcGVkLCB1bmRlZmluZWQsIGNvbXBhcmF0b3IpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbGwgZWxlbWVudHMgaW4gYGFycmF5YCBpbnRvIGEgc3RyaW5nIHNlcGFyYXRlZCBieSBgc2VwYXJhdG9yYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjb252ZXJ0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScsJ10gVGhlIGVsZW1lbnQgc2VwYXJhdG9yLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGpvaW5lZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uam9pbihbJ2EnLCAnYicsICdjJ10sICd+Jyk7XG4gICAgICogLy8gPT4gJ2F+Yn5jJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGpvaW4oYXJyYXksIHNlcGFyYXRvcikge1xuICAgICAgcmV0dXJuIGFycmF5ID09IG51bGwgPyAnJyA6IG5hdGl2ZUpvaW4uY2FsbChhcnJheSwgc2VwYXJhdG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBsYXN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubGFzdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICByZXR1cm4gbGVuZ3RoID8gYXJyYXlbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbmRleE9mYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGFycmF5YCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWFycmF5Lmxlbmd0aC0xXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sYXN0SW5kZXhPZihbMSwgMiwgMSwgMl0sIDIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIC8vIFNlYXJjaCBmcm9tIHRoZSBgZnJvbUluZGV4YC5cbiAgICAgKiBfLmxhc3RJbmRleE9mKFsxLCAyLCAxLCAyXSwgMiwgMik7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGxhc3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSBsZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaW5kZXggPSB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyBuYXRpdmVNYXgobGVuZ3RoICsgaW5kZXgsIDApIDogbmF0aXZlTWluKGluZGV4LCBsZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgaW5kZXgsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVsZW1lbnQgYXQgaW5kZXggYG5gIG9mIGBhcnJheWAuIElmIGBuYCBpcyBuZWdhdGl2ZSwgdGhlIG50aFxuICAgICAqIGVsZW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHRvIHJldHVybi5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ107XG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgMSk7XG4gICAgICogLy8gPT4gJ2InXG4gICAgICpcbiAgICAgKiBfLm50aChhcnJheSwgLTIpO1xuICAgICAqIC8vID0+ICdjJztcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGgoYXJyYXksIG4pIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VOdGgoYXJyYXksIHRvSW50ZWdlcihuKSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhbGwgZ2l2ZW4gdmFsdWVzIGZyb20gYGFycmF5YCB1c2luZ1xuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy53aXRob3V0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucmVtb3ZlYFxuICAgICAqIHRvIHJlbW92ZSBlbGVtZW50cyBmcm9tIGFuIGFycmF5IGJ5IHByZWRpY2F0ZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsKGFycmF5LCAnYScsICdjJyk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsnYicsICdiJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbCA9IGJhc2VSZXN0KHB1bGxBbGwpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIHZhbHVlcyB0byByZW1vdmUuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VgLCB0aGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIHJlbW92ZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWydhJywgJ2InLCAnYycsICdhJywgJ2InLCAnYyddO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsKGFycmF5LCBbJ2EnLCAnYyddKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gWydiJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGwoYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGggJiYgdmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpXG4gICAgICAgID8gYmFzZVB1bGxBbGwoYXJyYXksIHZhbHVlcylcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnB1bGxBbGxgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIGFuZCBgdmFsdWVzYCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uXG4gICAgICogYnkgd2hpY2ggdGhleSdyZSBjb21wYXJlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmRpZmZlcmVuY2VCeWAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAzIH0sIHsgJ3gnOiAxIH1dO1xuICAgICAqXG4gICAgICogXy5wdWxsQWxsQnkoYXJyYXksIFt7ICd4JzogMSB9LCB7ICd4JzogMyB9XSwgJ3gnKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAyIH1dXG4gICAgICovXG4gICAgZnVuY3Rpb24gcHVsbEFsbEJ5KGFycmF5LCB2YWx1ZXMsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCAmJiB2YWx1ZXMgJiYgdmFsdWVzLmxlbmd0aClcbiAgICAgICAgPyBiYXNlUHVsbEFsbChhcnJheSwgdmFsdWVzLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpXG4gICAgICAgIDogYXJyYXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wdWxsQWxsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgIHRvIGB2YWx1ZXNgLiBUaGUgY29tcGFyYXRvciBpc1xuICAgICAqIGludm9rZWQgd2l0aCB0d28gYXJndW1lbnRzOiAoYXJyVmFsLCBvdGhWYWwpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFVubGlrZSBgXy5kaWZmZXJlbmNlV2l0aGAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjYuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gcmVtb3ZlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMywgJ3knOiA0IH0sIHsgJ3gnOiA1LCAneSc6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLnB1bGxBbGxXaXRoKGFycmF5LCBbeyAneCc6IDMsICd5JzogNCB9XSwgXy5pc0VxdWFsKTtcbiAgICAgKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDUsICd5JzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHB1bGxBbGxXaXRoKGFycmF5LCB2YWx1ZXMsIGNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoICYmIHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoKVxuICAgICAgICA/IGJhc2VQdWxsQWxsKGFycmF5LCB2YWx1ZXMsIHVuZGVmaW5lZCwgY29tcGFyYXRvcilcbiAgICAgICAgOiBhcnJheTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGVsZW1lbnRzIGZyb20gYGFycmF5YCBjb3JyZXNwb25kaW5nIHRvIGBpbmRleGVzYCBhbmQgcmV0dXJucyBhblxuICAgICAqIGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLmF0YCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0gey4uLihudW1iZXJ8bnVtYmVyW10pfSBbaW5kZXhlc10gVGhlIGluZGV4ZXMgb2YgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIHJlbW92ZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFsnYScsICdiJywgJ2MnLCAnZCddO1xuICAgICAqIHZhciBwdWxsZWQgPSBfLnB1bGxBdChhcnJheSwgWzEsIDNdKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYyddXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhwdWxsZWQpO1xuICAgICAqIC8vID0+IFsnYicsICdkJ11cbiAgICAgKi9cbiAgICB2YXIgcHVsbEF0ID0gZmxhdFJlc3QoZnVuY3Rpb24oYXJyYXksIGluZGV4ZXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgICAgICByZXN1bHQgPSBiYXNlQXQoYXJyYXksIGluZGV4ZXMpO1xuXG4gICAgICBiYXNlUHVsbEF0KGFycmF5LCBhcnJheU1hcChpbmRleGVzLCBmdW5jdGlvbihpbmRleCkge1xuICAgICAgICByZXR1cm4gaXNJbmRleChpbmRleCwgbGVuZ3RoKSA/ICtpbmRleCA6IGluZGV4O1xuICAgICAgfSkuc29ydChjb21wYXJlQXNjZW5kaW5nKSk7XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBlbGVtZW50cyBmcm9tIGBhcnJheWAgdGhhdCBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3JcbiAgICAgKiBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0aGUgcmVtb3ZlZCBlbGVtZW50cy4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8uZmlsdGVyYCwgdGhpcyBtZXRob2QgbXV0YXRlcyBgYXJyYXlgLiBVc2UgYF8ucHVsbGBcbiAgICAgKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZW1vdmVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgMywgNF07XG4gICAgICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICUgMiA9PSAwO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAzXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coZXZlbnMpO1xuICAgICAqIC8vID0+IFsyLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlbW92ZShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpbmRleGVzID0gW10sXG4gICAgICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gICAgICBwcmVkaWNhdGUgPSBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpO1xuICAgICAgICAgIGluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlcyBgYXJyYXlgIHNvIHRoYXQgdGhlIGZpcnN0IGVsZW1lbnQgYmVjb21lcyB0aGUgbGFzdCwgdGhlIHNlY29uZFxuICAgICAqIGVsZW1lbnQgYmVjb21lcyB0aGUgc2Vjb25kIHRvIGxhc3QsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBhcnJheWAgYW5kIGlzIGJhc2VkIG9uXG4gICAgICogW2BBcnJheSNyZXZlcnNlYF0oaHR0cHM6Ly9tZG4uaW8vQXJyYXkvcmV2ZXJzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICpcbiAgICAgKiBfLnJldmVyc2UoYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFszLCAyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJldmVyc2UoYXJyYXkpIHtcbiAgICAgIHJldHVybiBhcnJheSA9PSBudWxsID8gYXJyYXkgOiBuYXRpdmVSZXZlcnNlLmNhbGwoYXJyYXkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIGZyb20gYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW5zdGVhZCBvZlxuICAgICAqIFtgQXJyYXkjc2xpY2VgXShodHRwczovL21kbi5pby9BcnJheS9zbGljZSkgdG8gZW5zdXJlIGRlbnNlIGFycmF5cyBhcmVcbiAgICAgKiByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoZW5kICYmIHR5cGVvZiBlbmQgIT0gJ251bWJlcicgJiYgaXNJdGVyYXRlZUNhbGwoYXJyYXksIHN0YXJ0LCBlbmQpKSB7XG4gICAgICAgIHN0YXJ0ID0gMDtcbiAgICAgICAgZW5kID0gbGVuZ3RoO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoc3RhcnQpO1xuICAgICAgICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW50ZWdlcihlbmQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXNlcyBhIGJpbmFyeSBzZWFyY2ggdG8gZGV0ZXJtaW5lIHRoZSBsb3dlc3QgaW5kZXggYXQgd2hpY2ggYHZhbHVlYFxuICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIGBhcnJheWAgaW4gb3JkZXIgdG8gbWFpbnRhaW4gaXRzIHNvcnQgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgc29ydGVkIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXZhbHVhdGUuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNvcnRlZEluZGV4KFszMCwgNTBdLCA0MCk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkSW5kZXhgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgZm9yIGB2YWx1ZWAgYW5kIGVhY2ggZWxlbWVudCBvZiBgYXJyYXlgIHRvIGNvbXB1dGUgdGhlaXJcbiAgICAgKiBzb3J0IHJhbmtpbmcuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBhdCB3aGljaCBgdmFsdWVgIHNob3VsZCBiZSBpbnNlcnRlZFxuICAgICAqICBpbnRvIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiA0IH0sIHsgJ3gnOiA1IH1dO1xuICAgICAqXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ueDsgfSk7XG4gICAgICogLy8gPT4gMFxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5zb3J0ZWRJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksIHZhbHVlLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LCB2YWx1ZSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmluZGV4T2ZgIGV4Y2VwdCB0aGF0IGl0IHBlcmZvcm1zIGEgYmluYXJ5XG4gICAgICogc2VhcmNoIG9uIGEgc29ydGVkIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkSW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDFcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRJbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICAgICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCkge1xuICAgICAgICB2YXIgaW5kZXggPSBiYXNlU29ydGVkSW5kZXgoYXJyYXksIHZhbHVlKTtcbiAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGVxKGFycmF5W2luZGV4XSwgdmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0ZWRJbmRleGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaGlnaGVzdFxuICAgICAqIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkIGludG8gYGFycmF5YCBpbiBvcmRlciB0b1xuICAgICAqIG1haW50YWluIGl0cyBzb3J0IG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIHNvcnRlZCBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGV2YWx1YXRlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIGB2YWx1ZWAgc2hvdWxkIGJlIGluc2VydGVkXG4gICAgICogIGludG8gYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXgoWzQsIDUsIDUsIDUsIDZdLCA1KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwgdmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc29ydGVkTGFzdEluZGV4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWBcbiAgICAgKiB3aGljaCBpcyBpbnZva2VkIGZvciBgdmFsdWVgIGFuZCBlYWNoIGVsZW1lbnQgb2YgYGFycmF5YCB0byBjb21wdXRlIHRoZWlyXG4gICAgICogc29ydCByYW5raW5nLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBzb3J0ZWQgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBldmFsdWF0ZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggYHZhbHVlYCBzaG91bGQgYmUgaW5zZXJ0ZWRcbiAgICAgKiAgaW50byBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogNCB9LCB7ICd4JzogNSB9XTtcbiAgICAgKlxuICAgICAqIF8uc29ydGVkTGFzdEluZGV4Qnkob2JqZWN0cywgeyAneCc6IDQgfSwgZnVuY3Rpb24obykgeyByZXR1cm4gby54OyB9KTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvcnRlZExhc3RJbmRleEJ5KG9iamVjdHMsIHsgJ3gnOiA0IH0sICd4Jyk7XG4gICAgICogLy8gPT4gMVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LCB2YWx1ZSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSwgdmFsdWUsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5sYXN0SW5kZXhPZmAgZXhjZXB0IHRoYXQgaXQgcGVyZm9ybXMgYSBiaW5hcnlcbiAgICAgKiBzZWFyY2ggb24gYSBzb3J0ZWQgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5zb3J0ZWRMYXN0SW5kZXhPZihbNCwgNSwgNSwgNSwgNl0sIDUpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzb3J0ZWRMYXN0SW5kZXhPZihhcnJheSwgdmFsdWUpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYmFzZVNvcnRlZEluZGV4KGFycmF5LCB2YWx1ZSwgdHJ1ZSkgLSAxO1xuICAgICAgICBpZiAoZXEoYXJyYXlbaW5kZXhdLCB2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuaXFgIGV4Y2VwdCB0aGF0IGl0J3MgZGVzaWduZWQgYW5kIG9wdGltaXplZFxuICAgICAqIGZvciBzb3J0ZWQgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcShbMSwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTb3J0ZWRVbmlxKGFycmF5KVxuICAgICAgICA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcUJ5YCBleGNlcHQgdGhhdCBpdCdzIGRlc2lnbmVkIGFuZCBvcHRpbWl6ZWRcbiAgICAgKiBmb3Igc29ydGVkIGFycmF5cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29ydGVkVW5pcUJ5KFsxLjEsIDEuMiwgMi4zLCAyLjRdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiBbMS4xLCAyLjNdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29ydGVkVW5pcUJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZVNvcnRlZFVuaXEoYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFpbChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRhaWwoYXJyYXkpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICAgIHJldHVybiBsZW5ndGggPyBiYXNlU2xpY2UoYXJyYXksIDEsIGxlbmd0aCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgc2xpY2Ugb2YgYGFycmF5YCB3aXRoIGBuYCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gdGFrZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzFdXG4gICAgICpcbiAgICAgKiBfLnRha2UoWzEsIDIsIDNdLCAyKTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIF8udGFrZShbMSwgMiwgM10sIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlKFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlKGFycmF5LCBuLCBndWFyZCkge1xuICAgICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgcmV0dXJuIGJhc2VTbGljZShhcnJheSwgMCwgbiA8IDAgPyAwIDogbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBgbmAgZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj0xXSBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIHRha2UuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gWzNdXG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodChbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFsyLCAzXVxuICAgICAqXG4gICAgICogXy50YWtlUmlnaHQoWzEsIDIsIDNdLCA1KTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIF8udGFrZVJpZ2h0KFsxLCAyLCAzXSwgMCk7XG4gICAgICogLy8gPT4gW11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0YWtlUmlnaHQoYXJyYXksIG4sIGd1YXJkKSB7XG4gICAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgICBpZiAoIWxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuID0gKGd1YXJkIHx8IG4gPT09IHVuZGVmaW5lZCkgPyAxIDogdG9JbnRlZ2VyKG4pO1xuICAgICAgbiA9IGxlbmd0aCAtIG47XG4gICAgICByZXR1cm4gYmFzZVNsaWNlKGFycmF5LCBuIDwgMCA/IDAgOiBuLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBzbGljZSBvZiBgYXJyYXlgIHdpdGggZWxlbWVudHMgdGFrZW4gZnJvbSB0aGUgZW5kLiBFbGVtZW50cyBhcmVcbiAgICAgKiB0YWtlbiB1bnRpbCBgcHJlZGljYXRlYCByZXR1cm5zIGZhbHNleS4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnRha2VSaWdodFdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgeyAndXNlcic6ICdwZWJibGVzJywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsncGViYmxlcyddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy50YWtlUmlnaHRXaGlsZSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVJpZ2h0V2hpbGUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSwgZmFsc2UsIHRydWUpXG4gICAgICAgIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNsaWNlIG9mIGBhcnJheWAgd2l0aCBlbGVtZW50cyB0YWtlbiBmcm9tIHRoZSBiZWdpbm5pbmcuIEVsZW1lbnRzXG4gICAgICogYXJlIHRha2VuIHVudGlsIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aFxuICAgICAqIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleCwgYXJyYXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5JywgJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8udGFrZVdoaWxlKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknLCAnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnRha2VXaGlsZSh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFrZVdoaWxlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VXaGlsZShhcnJheSwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSlcbiAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMsIGluIG9yZGVyLCBmcm9tIGFsbCBnaXZlbiBhcnJheXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb24oWzJdLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciB1bmlvbiA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pb25gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBvZiBlYWNoIGBhcnJheXNgIHRvIGdlbmVyYXRlIHRoZSBjcml0ZXJpb24gYnlcbiAgICAgKiB3aGljaCB1bmlxdWVuZXNzIGlzIGNvbXB1dGVkLiBSZXN1bHQgdmFsdWVzIGFyZSBjaG9zZW4gZnJvbSB0aGUgZmlyc3RcbiAgICAgKiBhcnJheSBpbiB3aGljaCB0aGUgdmFsdWUgb2NjdXJzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDpcbiAgICAgKiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBjb21iaW5lZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pb25CeShbMi4xXSwgWzEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlvbkJ5KFt7ICd4JzogMSB9XSwgW3sgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIHZhciB1bmlvbkJ5ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBsYXN0KGFycmF5cyk7XG4gICAgICBpZiAoaXNBcnJheUxpa2VPYmplY3QoaXRlcmF0ZWUpKSB7XG4gICAgICAgIGl0ZXJhdGVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlvbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY29tcGFyYXRvcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgZWxlbWVudHMgb2YgYGFycmF5c2AuIFJlc3VsdCB2YWx1ZXMgYXJlIGNob3NlbiBmcm9tXG4gICAgICogdGhlIGZpcnN0IGFycmF5IGluIHdoaWNoIHRoZSB2YWx1ZSBvY2N1cnMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaW9uV2l0aChvYmplY3RzLCBvdGhlcnMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAxIH1dXG4gICAgICovXG4gICAgdmFyIHVuaW9uV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLCAxLCBpc0FycmF5TGlrZU9iamVjdCwgdHJ1ZSksIHVuZGVmaW5lZCwgY29tcGFyYXRvcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZHVwbGljYXRlLWZyZWUgdmVyc2lvbiBvZiBhbiBhcnJheSwgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAgICAgKiBpcyBrZXB0LiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyXG4gICAgICogaW4gdGhlIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcShbMiwgMSwgMl0pO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5KSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udW5pcWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IGluIGBhcnJheWAgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieSB3aGljaFxuICAgICAqIHVuaXF1ZW5lc3MgaXMgY29tcHV0ZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlXG4gICAgICogb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OlxuICAgICAqICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udW5pcUJ5KFsyLjEsIDEuMiwgMi4zXSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzIuMSwgMS4yXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy51bmlxQnkoW3sgJ3gnOiAxIH0sIHsgJ3gnOiAyIH0sIHsgJ3gnOiAxIH1dLCAneCcpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMSB9LCB7ICd4JzogMiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFCeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSA/IGJhc2VVbmlxKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMikpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlgLiBUaGUgb3JkZXIgb2YgcmVzdWx0IHZhbHVlcyBpc1xuICAgICAqIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXIgaW4gdGhlIGFycmF5LlRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY29tcGFyYXRvcl0gVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAneCc6IDEsICd5JzogMiB9LCB7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnVuaXFXaXRoKG9iamVjdHMsIF8uaXNFcXVhbCk7XG4gICAgICogLy8gPT4gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuaXFXaXRoKGFycmF5LCBjb21wYXJhdG9yKSB7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGFuIGFycmF5IG9mIGdyb3VwZWRcbiAgICAgKiBlbGVtZW50cyBhbmQgY3JlYXRlcyBhbiBhcnJheSByZWdyb3VwaW5nIHRoZSBlbGVtZW50cyB0byB0aGVpciBwcmUtemlwXG4gICAgICogY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjIuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzIHRvIHByb2Nlc3MuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgemlwcGVkID0gXy56aXAoWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMSwgdHJ1ZV0sIFsnYicsIDIsIGZhbHNlXV1cbiAgICAgKlxuICAgICAqIF8udW56aXAoemlwcGVkKTtcbiAgICAgKiAvLyA9PiBbWydhJywgJ2InXSwgWzEsIDJdLCBbdHJ1ZSwgZmFsc2VdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuemlwKGFycmF5KSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBsZW5ndGggPSAwO1xuICAgICAgYXJyYXkgPSBhcnJheUZpbHRlcihhcnJheSwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KGdyb3VwKSkge1xuICAgICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChncm91cC5sZW5ndGgsIGxlbmd0aCk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsIGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBhcnJheU1hcChhcnJheSwgYmFzZVByb3BlcnR5KGluZGV4KSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnVuemlwYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgdG8gc3BlY2lmeVxuICAgICAqIGhvdyByZWdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIHRvIGNvbWJpbmVcbiAgICAgKiAgcmVncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiByZWdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB6aXBwZWQgPSBfLnppcChbMSwgMl0sIFsxMCwgMjBdLCBbMTAwLCAyMDBdKTtcbiAgICAgKiAvLyA9PiBbWzEsIDEwLCAxMDBdLCBbMiwgMjAsIDIwMF1dXG4gICAgICpcbiAgICAgKiBfLnVuemlwV2l0aCh6aXBwZWQsIF8uYWRkKTtcbiAgICAgKiAvLyA9PiBbMywgMzAsIDMwMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgICBpZiAoIShhcnJheSAmJiBhcnJheS5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciByZXN1bHQgPSB1bnppcChhcnJheSk7XG4gICAgICBpZiAoaXRlcmF0ZWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycmF5TWFwKHJlc3VsdCwgZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGl0ZXJhdGVlLCB1bmRlZmluZWQsIGdyb3VwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgZXhjbHVkaW5nIGFsbCBnaXZlbiB2YWx1ZXMgdXNpbmdcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBVbmxpa2UgYF8ucHVsbGAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFt2YWx1ZXNdIFRoZSB2YWx1ZXMgdG8gZXhjbHVkZS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQHNlZSBfLmRpZmZlcmVuY2UsIF8ueG9yXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud2l0aG91dChbMiwgMSwgMiwgM10sIDEsIDIpO1xuICAgICAqIC8vID0+IFszXVxuICAgICAqL1xuICAgIHZhciB3aXRob3V0ID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KVxuICAgICAgICA/IGJhc2VEaWZmZXJlbmNlKGFycmF5LCB2YWx1ZXMpXG4gICAgICAgIDogW107XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHVuaXF1ZSB2YWx1ZXMgdGhhdCBpcyB0aGVcbiAgICAgKiBbc3ltbWV0cmljIGRpZmZlcmVuY2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1N5bW1ldHJpY19kaWZmZXJlbmNlKVxuICAgICAqIG9mIHRoZSBnaXZlbiBhcnJheXMuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyXG4gICAgICogdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGFycmF5IG9mIGZpbHRlcmVkIHZhbHVlcy5cbiAgICAgKiBAc2VlIF8uZGlmZmVyZW5jZSwgXy53aXRob3V0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yKFsyLCAxXSwgWzIsIDNdKTtcbiAgICAgKiAvLyA9PiBbMSwgM11cbiAgICAgKi9cbiAgICB2YXIgeG9yID0gYmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKSB7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnhvcmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCBmb3IgZWFjaCBlbGVtZW50IG9mIGVhY2ggYGFycmF5c2AgdG8gZ2VuZXJhdGUgdGhlIGNyaXRlcmlvbiBieVxuICAgICAqIHdoaWNoIGJ5IHdoaWNoIHRoZXkncmUgY29tcGFyZWQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWRcbiAgICAgKiBieSB0aGUgb3JkZXIgdGhleSBvY2N1ciBpbiB0aGUgYXJyYXlzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZVxuICAgICAqIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBmaWx0ZXJlZCB2YWx1ZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ueG9yQnkoWzIuMSwgMS4yXSwgWzIuMywgMy40XSwgTWF0aC5mbG9vcik7XG4gICAgICogLy8gPT4gWzEuMiwgMy40XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy54b3JCeShbeyAneCc6IDEgfV0sIFt7ICd4JzogMiB9LCB7ICd4JzogMSB9XSwgJ3gnKTtcbiAgICAgKiAvLyA9PiBbeyAneCc6IDIgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yQnkgPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBpdGVyYXRlZSA9IGxhc3QoYXJyYXlzKTtcbiAgICAgIGlmIChpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpIHtcbiAgICAgICAgaXRlcmF0ZWUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ueG9yYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgdG8gY29tcGFyZSBlbGVtZW50cyBvZiBgYXJyYXlzYC4gVGhlIG9yZGVyIG9mIHJlc3VsdCB2YWx1ZXMgaXNcbiAgICAgKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheXMuIFRoZSBjb21wYXJhdG9yIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQXJyYXlcbiAgICAgKiBAcGFyYW0gey4uLkFycmF5fSBbYXJyYXlzXSBUaGUgYXJyYXlzIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgZmlsdGVyZWQgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV07XG4gICAgICogdmFyIG90aGVycyA9IFt7ICd4JzogMSwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDIgfV07XG4gICAgICpcbiAgICAgKiBfLnhvcldpdGgob2JqZWN0cywgb3RoZXJzLCBfLmlzRXF1YWwpO1xuICAgICAqIC8vID0+IFt7ICd4JzogMiwgJ3knOiAxIH0sIHsgJ3gnOiAxLCAneSc6IDEgfV1cbiAgICAgKi9cbiAgICB2YXIgeG9yV2l0aCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cykge1xuICAgICAgdmFyIGNvbXBhcmF0b3IgPSBsYXN0KGFycmF5cyk7XG4gICAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsIGlzQXJyYXlMaWtlT2JqZWN0KSwgdW5kZWZpbmVkLCBjb21wYXJhdG9yKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgZ3JvdXBlZCBlbGVtZW50cywgdGhlIGZpcnN0IG9mIHdoaWNoIGNvbnRhaW5zIHRoZVxuICAgICAqIGZpcnN0IGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIHRoZSBzZWNvbmQgb2Ygd2hpY2ggY29udGFpbnMgdGhlXG4gICAgICogc2Vjb25kIGVsZW1lbnRzIG9mIHRoZSBnaXZlbiBhcnJheXMsIGFuZCBzbyBvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBBcnJheVxuICAgICAqIEBwYXJhbSB7Li4uQXJyYXl9IFthcnJheXNdIFRoZSBhcnJheXMgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcChbJ2EnLCAnYiddLCBbMSwgMl0sIFt0cnVlLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IFtbJ2EnLCAxLCB0cnVlXSwgWydiJywgMiwgZmFsc2VdXVxuICAgICAqL1xuICAgIHZhciB6aXAgPSBiYXNlUmVzdCh1bnppcCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICAgICAqIG9uZSBvZiBwcm9wZXJ0eSBpZGVudGlmaWVycyBhbmQgb25lIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuNC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gICAgICByZXR1cm4gYmFzZVppcE9iamVjdChwcm9wcyB8fCBbXSwgdmFsdWVzIHx8IFtdLCBhc3NpZ25WYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBPYmplY3RgIGV4Y2VwdCB0aGF0IGl0IHN1cHBvcnRzIHByb3BlcnR5IHBhdGhzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMS4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHtBcnJheX0gW3Byb3BzPVtdXSBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMuXG4gICAgICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlcz1bXV0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcE9iamVjdERlZXAoWydhLmJbMF0uYycsICdhLmJbMV0uZCddLCBbMSwgMl0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiB7ICdiJzogW3sgJ2MnOiAxIH0sIHsgJ2QnOiAyIH1dIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHppcE9iamVjdERlZXAocHJvcHMsIHZhbHVlcykge1xuICAgICAgcmV0dXJuIGJhc2VaaXBPYmplY3QocHJvcHMgfHwgW10sIHZhbHVlcyB8fCBbXSwgYmFzZVNldCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy56aXBgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB0byBzcGVjaWZ5XG4gICAgICogaG93IGdyb3VwZWQgdmFsdWVzIHNob3VsZCBiZSBjb21iaW5lZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aGVcbiAgICAgKiBlbGVtZW50cyBvZiBlYWNoIGdyb3VwOiAoLi4uZ3JvdXApLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOC4wXG4gICAgICogQGNhdGVnb3J5IEFycmF5XG4gICAgICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBwcm9jZXNzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gdG8gY29tYmluZVxuICAgICAqICBncm91cGVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBhcnJheSBvZiBncm91cGVkIGVsZW1lbnRzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnppcFdpdGgoWzEsIDJdLCBbMTAsIDIwXSwgWzEwMCwgMjAwXSwgZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIGEgKyBiICsgYztcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBbMTExLCAyMjJdXG4gICAgICovXG4gICAgdmFyIHppcFdpdGggPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBhcnJheXMubGVuZ3RoLFxuICAgICAgICAgIGl0ZXJhdGVlID0gbGVuZ3RoID4gMSA/IGFycmF5c1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcblxuICAgICAgaXRlcmF0ZWUgPSB0eXBlb2YgaXRlcmF0ZWUgPT0gJ2Z1bmN0aW9uJyA/IChhcnJheXMucG9wKCksIGl0ZXJhdGVlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB1bnppcFdpdGgoYXJyYXlzLCBpdGVyYXRlZSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB0aGF0IHdyYXBzIGB2YWx1ZWAgd2l0aCBleHBsaWNpdCBtZXRob2RcbiAgICAgKiBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC4gVGhlIHJlc3VsdCBvZiBzdWNoIHNlcXVlbmNlcyBtdXN0IGJlIHVud3JhcHBlZFxuICAgICAqIHdpdGggYF8jdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMy4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHdyYXAuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIHZhciB5b3VuZ2VzdCA9IF9cbiAgICAgKiAgIC5jaGFpbih1c2VycylcbiAgICAgKiAgIC5zb3J0QnkoJ2FnZScpXG4gICAgICogICAubWFwKGZ1bmN0aW9uKG8pIHtcbiAgICAgKiAgICAgcmV0dXJuIG8udXNlciArICcgaXMgJyArIG8uYWdlO1xuICAgICAqICAgfSlcbiAgICAgKiAgIC5oZWFkKClcbiAgICAgKiAgIC52YWx1ZSgpO1xuICAgICAqIC8vID0+ICdwZWJibGVzIGlzIDEnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2hhaW4odmFsdWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2godmFsdWUpO1xuICAgICAgcmVzdWx0Ll9fY2hhaW5fXyA9IHRydWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGludm9rZXMgYGludGVyY2VwdG9yYCBhbmQgcmV0dXJucyBgdmFsdWVgLiBUaGUgaW50ZXJjZXB0b3JcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OyAodmFsdWUpLiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0b1xuICAgICAqIFwidGFwIGludG9cIiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZSBpbiBvcmRlciB0byBtb2RpZnkgaW50ZXJtZWRpYXRlIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvdmlkZSB0byBgaW50ZXJjZXB0b3JgLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGludGVyY2VwdG9yIFRoZSBmdW5jdGlvbiB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXyhbMSwgMiwgM10pXG4gICAgICogIC50YXAoZnVuY3Rpb24oYXJyYXkpIHtcbiAgICAgKiAgICAvLyBNdXRhdGUgaW5wdXQgYXJyYXkuXG4gICAgICogICAgYXJyYXkucG9wKCk7XG4gICAgICogIH0pXG4gICAgICogIC5yZXZlcnNlKClcbiAgICAgKiAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdGFwKHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgaW50ZXJjZXB0b3IodmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8udGFwYCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIHRoZSByZXN1bHQgb2YgYGludGVyY2VwdG9yYC5cbiAgICAgKiBUaGUgcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBcInBhc3MgdGhydVwiIHZhbHVlcyByZXBsYWNpbmcgaW50ZXJtZWRpYXRlXG4gICAgICogcmVzdWx0cyBpbiBhIG1ldGhvZCBjaGFpbiBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm92aWRlIHRvIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gaW50ZXJjZXB0b3IgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIGBpbnRlcmNlcHRvcmAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8oJyAgYWJjICAnKVxuICAgICAqICAuY2hhaW4oKVxuICAgICAqICAudHJpbSgpXG4gICAgICogIC50aHJ1KGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgICogIH0pXG4gICAgICogIC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsnYWJjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0aHJ1KHZhbHVlLCBpbnRlcmNlcHRvcikge1xuICAgICAgcmV0dXJuIGludGVyY2VwdG9yKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgd3JhcHBlciB2ZXJzaW9uIG9mIGBfLmF0YC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGF0XG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gW3BhdGhzXSBUaGUgcHJvcGVydHkgcGF0aHMgdG8gcGljay5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8ob2JqZWN0KS5hdChbJ2FbMF0uYi5jJywgJ2FbMV0nXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKi9cbiAgICB2YXIgd3JhcHBlckF0ID0gZmxhdFJlc3QoZnVuY3Rpb24ocGF0aHMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBsZW5ndGggPyBwYXRoc1swXSA6IDAsXG4gICAgICAgICAgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgIGludGVyY2VwdG9yID0gZnVuY3Rpb24ob2JqZWN0KSB7IHJldHVybiBiYXNlQXQob2JqZWN0LCBwYXRocyk7IH07XG5cbiAgICAgIGlmIChsZW5ndGggPiAxIHx8IHRoaXMuX19hY3Rpb25zX18ubGVuZ3RoIHx8XG4gICAgICAgICAgISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKSB8fCAhaXNJbmRleChzdGFydCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICB9XG4gICAgICB2YWx1ZSA9IHZhbHVlLnNsaWNlKHN0YXJ0LCArc3RhcnQgKyAobGVuZ3RoID8gMSA6IDApKTtcbiAgICAgIHZhbHVlLl9fYWN0aW9uc19fLnB1c2goe1xuICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICdhcmdzJzogW2ludGVyY2VwdG9yXSxcbiAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlLCB0aGlzLl9fY2hhaW5fXykudGhydShmdW5jdGlvbihhcnJheSkge1xuICAgICAgICBpZiAobGVuZ3RoICYmICFhcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICBhcnJheS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZSB3aXRoIGV4cGxpY2l0IG1ldGhvZCBjaGFpbiBzZXF1ZW5jZXMgZW5hYmxlZC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNoYWluXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU2VxXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IGBsb2Rhc2hgIHdyYXBwZXIgaW5zdGFuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiA0MCB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIEEgc2VxdWVuY2Ugd2l0aG91dCBleHBsaWNpdCBjaGFpbmluZy5cbiAgICAgKiBfKHVzZXJzKS5oZWFkKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfVxuICAgICAqXG4gICAgICogLy8gQSBzZXF1ZW5jZSB3aXRoIGV4cGxpY2l0IGNoYWluaW5nLlxuICAgICAqIF8odXNlcnMpXG4gICAgICogICAuY2hhaW4oKVxuICAgICAqICAgLmhlYWQoKVxuICAgICAqICAgLnBpY2soJ3VzZXInKVxuICAgICAqICAgLnZhbHVlKCk7XG4gICAgICogLy8gPT4geyAndXNlcic6ICdiYXJuZXknIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyQ2hhaW4oKSB7XG4gICAgICByZXR1cm4gY2hhaW4odGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhlY3V0ZXMgdGhlIGNoYWluIHNlcXVlbmNlIGFuZCByZXR1cm5zIHRoZSB3cmFwcGVkIHJlc3VsdC5cbiAgICAgKlxuICAgICAqIEBuYW1lIGNvbW1pdFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMl07XG4gICAgICogdmFyIHdyYXBwZWQgPSBfKGFycmF5KS5wdXNoKDMpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogd3JhcHBlZCA9IHdyYXBwZWQuY29tbWl0KCk7XG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogd3JhcHBlZC5sYXN0KCk7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2coYXJyYXkpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKSB7XG4gICAgICByZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgbmV4dCB2YWx1ZSBvbiBhIHdyYXBwZWQgb2JqZWN0IGZvbGxvd2luZyB0aGVcbiAgICAgKiBbaXRlcmF0b3IgcHJvdG9jb2xdKGh0dHBzOi8vbWRuLmlvL2l0ZXJhdGlvbl9wcm90b2NvbHMjaXRlcmF0b3IpLlxuICAgICAqXG4gICAgICogQG5hbWUgbmV4dFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5leHQgaXRlcmF0b3IgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pO1xuICAgICAqXG4gICAgICogd3JhcHBlZC5uZXh0KCk7XG4gICAgICogLy8gPT4geyAnZG9uZSc6IGZhbHNlLCAndmFsdWUnOiAxIH1cbiAgICAgKlxuICAgICAqIHdyYXBwZWQubmV4dCgpO1xuICAgICAqIC8vID0+IHsgJ2RvbmUnOiBmYWxzZSwgJ3ZhbHVlJzogMiB9XG4gICAgICpcbiAgICAgKiB3cmFwcGVkLm5leHQoKTtcbiAgICAgKiAvLyA9PiB7ICdkb25lJzogdHJ1ZSwgJ3ZhbHVlJzogdW5kZWZpbmVkIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyTmV4dCgpIHtcbiAgICAgIGlmICh0aGlzLl9fdmFsdWVzX18gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9fdmFsdWVzX18gPSB0b0FycmF5KHRoaXMudmFsdWUoKSk7XG4gICAgICB9XG4gICAgICB2YXIgZG9uZSA9IHRoaXMuX19pbmRleF9fID49IHRoaXMuX192YWx1ZXNfXy5sZW5ndGgsXG4gICAgICAgICAgdmFsdWUgPSBkb25lID8gdW5kZWZpbmVkIDogdGhpcy5fX3ZhbHVlc19fW3RoaXMuX19pbmRleF9fKytdO1xuXG4gICAgICByZXR1cm4geyAnZG9uZSc6IGRvbmUsICd2YWx1ZSc6IHZhbHVlIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcyB0aGUgd3JhcHBlciB0byBiZSBpdGVyYWJsZS5cbiAgICAgKlxuICAgICAqIEBuYW1lIFN5bWJvbC5pdGVyYXRvclxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHdyYXBwZXIgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgd3JhcHBlZCA9IF8oWzEsIDJdKTtcbiAgICAgKlxuICAgICAqIHdyYXBwZWRbU3ltYm9sLml0ZXJhdG9yXSgpID09PSB3cmFwcGVkO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIEFycmF5LmZyb20od3JhcHBlZCk7XG4gICAgICogLy8gPT4gWzEsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gd3JhcHBlclRvSXRlcmF0b3IoKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGNoYWluIHNlcXVlbmNlIHBsYW50aW5nIGB2YWx1ZWAgYXMgdGhlIHdyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBwbGFudFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IFNlcVxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHBsYW50LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBgbG9kYXNoYCB3cmFwcGVyIGluc3RhbmNlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciB3cmFwcGVkID0gXyhbMSwgMl0pLm1hcChzcXVhcmUpO1xuICAgICAqIHZhciBvdGhlciA9IHdyYXBwZWQucGxhbnQoWzMsIDRdKTtcbiAgICAgKlxuICAgICAqIG90aGVyLnZhbHVlKCk7XG4gICAgICogLy8gPT4gWzksIDE2XVxuICAgICAqXG4gICAgICogd3JhcHBlZC52YWx1ZSgpO1xuICAgICAqIC8vID0+IFsxLCA0XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHdyYXBwZXJQbGFudCh2YWx1ZSkge1xuICAgICAgdmFyIHJlc3VsdCxcbiAgICAgICAgICBwYXJlbnQgPSB0aGlzO1xuXG4gICAgICB3aGlsZSAocGFyZW50IGluc3RhbmNlb2YgYmFzZUxvZGFzaCkge1xuICAgICAgICB2YXIgY2xvbmUgPSB3cmFwcGVyQ2xvbmUocGFyZW50KTtcbiAgICAgICAgY2xvbmUuX19pbmRleF9fID0gMDtcbiAgICAgICAgY2xvbmUuX192YWx1ZXNfXyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gY2xvbmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZpb3VzID0gY2xvbmU7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5fX3dyYXBwZWRfXztcbiAgICAgIH1cbiAgICAgIHByZXZpb3VzLl9fd3JhcHBlZF9fID0gdmFsdWU7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRoZSB3cmFwcGVyIHZlcnNpb24gb2YgYF8ucmV2ZXJzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyB0aGUgd3JhcHBlZCBhcnJheS5cbiAgICAgKlxuICAgICAqIEBuYW1lIHJldmVyc2VcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgYGxvZGFzaGAgd3JhcHBlciBpbnN0YW5jZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gWzEsIDIsIDNdO1xuICAgICAqXG4gICAgICogXyhhcnJheSkucmV2ZXJzZSgpLnZhbHVlKClcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyUmV2ZXJzZSgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX193cmFwcGVkX187XG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcikge1xuICAgICAgICB2YXIgd3JhcHBlZCA9IHZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgpIHtcbiAgICAgICAgICB3cmFwcGVkID0gbmV3IExhenlXcmFwcGVyKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHdyYXBwZWQgPSB3cmFwcGVkLnJldmVyc2UoKTtcbiAgICAgICAgd3JhcHBlZC5fX2FjdGlvbnNfXy5wdXNoKHtcbiAgICAgICAgICAnZnVuYyc6IHRocnUsXG4gICAgICAgICAgJ2FyZ3MnOiBbcmV2ZXJzZV0sXG4gICAgICAgICAgJ3RoaXNBcmcnOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgTG9kYXNoV3JhcHBlcih3cmFwcGVkLCB0aGlzLl9fY2hhaW5fXyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50aHJ1KHJldmVyc2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4ZWN1dGVzIHRoZSBjaGFpbiBzZXF1ZW5jZSB0byByZXNvbHZlIHRoZSB1bndyYXBwZWQgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbmFtZSB2YWx1ZVxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGFsaWFzIHRvSlNPTiwgdmFsdWVPZlxuICAgICAqIEBjYXRlZ29yeSBTZXFcbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdW53cmFwcGVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfKFsxLCAyLCAzXSkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwcGVyVmFsdWUoKSB7XG4gICAgICByZXR1cm4gYmFzZVdyYXBwZXJWYWx1ZSh0aGlzLl9fd3JhcHBlZF9fLCB0aGlzLl9fYWN0aW9uc19fKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiBrZXlzIGdlbmVyYXRlZCBmcm9tIHRoZSByZXN1bHRzIG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYC4gVGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgb2ZcbiAgICAgKiBlYWNoIGtleSBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBrZXkgd2FzIHJldHVybmVkIGJ5IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC41LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIHRvIHRyYW5zZm9ybSBrZXlzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbXBvc2VkIGFnZ3JlZ2F0ZSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY291bnRCeShbNi4xLCA0LjIsIDYuM10sIE1hdGguZmxvb3IpO1xuICAgICAqIC8vID0+IHsgJzQnOiAxLCAnNic6IDIgfVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5jb3VudEJ5KFsnb25lJywgJ3R3bycsICd0aHJlZSddLCAnbGVuZ3RoJyk7XG4gICAgICogLy8gPT4geyAnMyc6IDIsICc1JzogMSB9XG4gICAgICovXG4gICAgdmFyIGNvdW50QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LCBrZXkpKSB7XG4gICAgICAgICsrcmVzdWx0W2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciAqKmFsbCoqIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgZmFsc2V5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHJldHVybnMgYHRydWVgIGZvclxuICAgICAqIFtlbXB0eSBjb2xsZWN0aW9uc10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRW1wdHlfc2V0KSBiZWNhdXNlXG4gICAgICogW2V2ZXJ5dGhpbmcgaXMgdHJ1ZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVmFjdW91c190cnV0aCkgb2ZcbiAgICAgKiBlbGVtZW50cyBvZiBlbXB0eSBjb2xsZWN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbGwgZWxlbWVudHMgcGFzcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXZlcnkoW3RydWUsIDEsIG51bGwsICd5ZXMnXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FjdGl2ZSc6IGZhbHNlIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5ldmVyeSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZXZlcnkodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZ3VhcmQpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RXZlcnkgOiBiYXNlRXZlcnk7XG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbiwgcHJlZGljYXRlLCBndWFyZCkpIHtcbiAgICAgICAgcHJlZGljYXRlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgZ2V0SXRlcmF0ZWUocHJlZGljYXRlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyBhbiBhcnJheSBvZiBhbGwgZWxlbWVudHNcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIGBfLnJlbW92ZWAsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gICAgICogQHNlZSBfLnJlamVjdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcih1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gIW8uYWN0aXZlOyB9KTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbJ2ZyZWQnXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbHRlcih1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAgICAgKlxuICAgICAqIC8vIENvbWJpbmluZyBzZXZlcmFsIHByZWRpY2F0ZXMgdXNpbmcgYF8ub3ZlckV2ZXJ5YCBvciBgXy5vdmVyU29tZWAuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8ub3ZlclNvbWUoW3sgJ2FnZSc6IDM2IH0sIFsnYWdlJywgNDBdXSkpO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2YgYGNvbGxlY3Rpb25gLCByZXR1cm5pbmcgdGhlIGZpcnN0IGVsZW1lbnRcbiAgICAgKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmQodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICAgICAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAgICAgKi9cbiAgICB2YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PWNvbGxlY3Rpb24ubGVuZ3RoLTFdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZpbmRMYXN0KFsxLCAyLCAzLCA0XSwgZnVuY3Rpb24obikge1xuICAgICAqICAgcmV0dXJuIG4gJSAyID09IDE7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIHZhciBmaW5kTGFzdCA9IGNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZmxhdHRlbmVkIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aHJ1IGBpdGVyYXRlZWAgYW5kIGZsYXR0ZW5pbmcgdGhlIG1hcHBlZCByZXN1bHRzLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW24sIG5dO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8uZmxhdE1hcChbMSwgMl0sIGR1cGxpY2F0ZSk7XG4gICAgICogLy8gPT4gWzEsIDEsIDIsIDJdXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIDEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmxhdE1hcGAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgZmxhdHRlbnMgdGhlXG4gICAgICogbWFwcGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZWVwKFsxLCAyXSwgZHVwbGljYXRlKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMiwgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmbGF0TWFwRGVlcChjb2xsZWN0aW9uLCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIElORklOSVRZKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsYXRNYXBgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIHRoZVxuICAgICAqIG1hcHBlZCByZXN1bHRzIHVwIHRvIGBkZXB0aGAgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2RlcHRoPTFdIFRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmbGF0dGVuZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGR1cGxpY2F0ZShuKSB7XG4gICAgICogICByZXR1cm4gW1tbbiwgbl1dXTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZsYXRNYXBEZXB0aChbMSwgMl0sIGR1cGxpY2F0ZSwgMik7XG4gICAgICogLy8gPT4gW1sxLCAxXSwgWzIsIDJdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgZGVwdGgpIHtcbiAgICAgIGRlcHRoID0gZGVwdGggPT09IHVuZGVmaW5lZCA/IDEgOiB0b0ludGVnZXIoZGVwdGgpO1xuICAgICAgcmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLCBpdGVyYXRlZSksIGRlcHRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIGVsZW1lbnQuXG4gICAgICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXQgaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICAgICAqIHByb3BlcnR5IGFyZSBpdGVyYXRlZCBsaWtlIGFycmF5cy4gVG8gYXZvaWQgdGhpcyBiZWhhdmlvciB1c2UgYF8uZm9ySW5gXG4gICAgICogb3IgYF8uZm9yT3duYCBmb3Igb2JqZWN0IGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBhbGlhcyBlYWNoXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fE9iamVjdH0gUmV0dXJucyBgY29sbGVjdGlvbmAuXG4gICAgICogQHNlZSBfLmZvckVhY2hSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAqICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JFYWNoKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2ggOiBiYXNlRWFjaDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5mb3JFYWNoYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mXG4gICAgICogYGNvbGxlY3Rpb25gIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBhbGlhcyBlYWNoUmlnaHRcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl8T2JqZWN0fSBSZXR1cm5zIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBAc2VlIF8uZm9yRWFjaFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZvckVhY2hSaWdodChbMSwgMl0sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyBgMmAgdGhlbiBgMWAuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheUVhY2hSaWdodCA6IGJhc2VFYWNoUmlnaHQ7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gdGhlIHJlc3VsdHMgb2YgcnVubmluZ1xuICAgICAqIGVhY2ggZWxlbWVudCBvZiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgb3JkZXIgb2YgZ3JvdXBlZCB2YWx1ZXNcbiAgICAgKiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIGBjb2xsZWN0aW9uYC4gVGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiB2YWx1ZSBvZiBlYWNoIGtleSBpcyBhbiBhcnJheSBvZiBlbGVtZW50cyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGVcbiAgICAgKiBrZXkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmdyb3VwQnkoWzYuMSwgNC4yLCA2LjNdLCBNYXRoLmZsb29yKTtcbiAgICAgKiAvLyA9PiB7ICc0JzogWzQuMl0sICc2JzogWzYuMSwgNi4zXSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmdyb3VwQnkoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sICdsZW5ndGgnKTtcbiAgICAgKiAvLyA9PiB7ICczJzogWydvbmUnLCAndHdvJ10sICc1JzogWyd0aHJlZSddIH1cbiAgICAgKi9cbiAgICB2YXIgZ3JvdXBCeSA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBrZXksIFt2YWx1ZV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgaW4gYGNvbGxlY3Rpb25gLiBJZiBgY29sbGVjdGlvbmAgaXMgYSBzdHJpbmcsIGl0J3NcbiAgICAgKiBjaGVja2VkIGZvciBhIHN1YnN0cmluZyBvZiBgdmFsdWVgLCBvdGhlcndpc2VcbiAgICAgKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICAgICAqIGlzIHVzZWQgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLiBJZiBgZnJvbUluZGV4YCBpcyBuZWdhdGl2ZSwgaXQncyB1c2VkIGFzXG4gICAgICogdGhlIG9mZnNldCBmcm9tIHRoZSBlbmQgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5yZWR1Y2VgLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoWzEsIDIsIDNdLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKFsxLCAyLCAzXSwgMSwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5jbHVkZXMoeyAnYSc6IDEsICdiJzogMiB9LCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluY2x1ZGVzKCdhYmNkJywgJ2JjJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sIHZhbHVlLCBmcm9tSW5kZXgsIGd1YXJkKSB7XG4gICAgICBjb2xsZWN0aW9uID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBjb2xsZWN0aW9uIDogdmFsdWVzKGNvbGxlY3Rpb24pO1xuICAgICAgZnJvbUluZGV4ID0gKGZyb21JbmRleCAmJiAhZ3VhcmQpID8gdG9JbnRlZ2VyKGZyb21JbmRleCkgOiAwO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gY29sbGVjdGlvbi5sZW5ndGg7XG4gICAgICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgICAgICBmcm9tSW5kZXggPSBuYXRpdmVNYXgobGVuZ3RoICsgZnJvbUluZGV4LCAwKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKVxuICAgICAgICA/IChmcm9tSW5kZXggPD0gbGVuZ3RoICYmIGNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKVxuICAgICAgICA6ICghIWxlbmd0aCAmJiBiYXNlSW5kZXhPZihjb2xsZWN0aW9uLCB2YWx1ZSwgZnJvbUluZGV4KSA+IC0xKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAsIHJldHVybmluZ1xuICAgICAqIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mIGVhY2ggaW52b2tlZCBtZXRob2QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIGFyZSBwcm92aWRlZCB0byBlYWNoIGludm9rZWQgbWV0aG9kLiBJZiBgcGF0aGAgaXMgYSBmdW5jdGlvbiwgaXQncyBpbnZva2VkXG4gICAgICogZm9yLCBhbmQgYHRoaXNgIGJvdW5kIHRvLCBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbnxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIG1ldGhvZCB0byBpbnZva2Ugb3JcbiAgICAgKiAgdGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBlYWNoIG1ldGhvZCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcmVzdWx0cy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pbnZva2VNYXAoW1s1LCAxLCA3XSwgWzMsIDIsIDFdXSwgJ3NvcnQnKTtcbiAgICAgKiAvLyA9PiBbWzEsIDUsIDddLCBbMSwgMiwgM11dXG4gICAgICpcbiAgICAgKiBfLmludm9rZU1hcChbMTIzLCA0NTZdLCBTdHJpbmcucHJvdG90eXBlLnNwbGl0LCAnJyk7XG4gICAgICogLy8gPT4gW1snMScsICcyJywgJzMnXSwgWyc0JywgJzUnLCAnNiddXVxuICAgICAqL1xuICAgIHZhciBpbnZva2VNYXAgPSBiYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLCBwYXRoLCBhcmdzKSB7XG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBpc0Z1bmMgPSB0eXBlb2YgcGF0aCA9PSAnZnVuY3Rpb24nLFxuICAgICAgICAgIHJlc3VsdCA9IGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pID8gQXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpIDogW107XG5cbiAgICAgIGJhc2VFYWNoKGNvbGxlY3Rpb24sIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IGlzRnVuYyA/IGFwcGx5KHBhdGgsIHZhbHVlLCBhcmdzKSA6IGJhc2VJbnZva2UodmFsdWUsIHBhdGgsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2Yga2V5cyBnZW5lcmF0ZWQgZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nXG4gICAgICogZWFjaCBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYCB0aHJ1IGBpdGVyYXRlZWAuIFRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIG9mXG4gICAgICogZWFjaCBrZXkgaXMgdGhlIGxhc3QgZWxlbWVudCByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUga2V5LiBUaGVcbiAgICAgKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSB0byB0cmFuc2Zvcm0ga2V5cy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjb21wb3NlZCBhZ2dyZWdhdGUgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbXG4gICAgICogICB7ICdkaXInOiAnbGVmdCcsICdjb2RlJzogOTcgfSxcbiAgICAgKiAgIHsgJ2Rpcic6ICdyaWdodCcsICdjb2RlJzogMTAwIH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogXy5rZXlCeShhcnJheSwgZnVuY3Rpb24obykge1xuICAgICAqICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoby5jb2RlKTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiB7ICdhJzogeyAnZGlyJzogJ2xlZnQnLCAnY29kZSc6IDk3IH0sICdkJzogeyAnZGlyJzogJ3JpZ2h0JywgJ2NvZGUnOiAxMDAgfSB9XG4gICAgICpcbiAgICAgKiBfLmtleUJ5KGFycmF5LCAnZGlyJyk7XG4gICAgICogLy8gPT4geyAnbGVmdCc6IHsgJ2Rpcic6ICdsZWZ0JywgJ2NvZGUnOiA5NyB9LCAncmlnaHQnOiB7ICdkaXInOiAncmlnaHQnLCAnY29kZSc6IDEwMCB9IH1cbiAgICAgKi9cbiAgICB2YXIga2V5QnkgPSBjcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCwgdmFsdWUsIGtleSkge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCB2YWx1ZSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICAgICAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICAgICAqICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAgICAgKlxuICAgICAqIE1hbnkgbG9kYXNoIG1ldGhvZHMgYXJlIGd1YXJkZWQgdG8gd29yayBhcyBpdGVyYXRlZXMgZm9yIG1ldGhvZHMgbGlrZVxuICAgICAqIGBfLmV2ZXJ5YCwgYF8uZmlsdGVyYCwgYF8ubWFwYCwgYF8ubWFwVmFsdWVzYCwgYF8ucmVqZWN0YCwgYW5kIGBfLnNvbWVgLlxuICAgICAqXG4gICAgICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gICAgICogYGFyeWAsIGBjaHVua2AsIGBjdXJyeWAsIGBjdXJyeVJpZ2h0YCwgYGRyb3BgLCBgZHJvcFJpZ2h0YCwgYGV2ZXJ5YCxcbiAgICAgKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAgICAgKiBgc2FtcGxlU2l6ZWAsIGBzbGljZWAsIGBzb21lYCwgYHNvcnRCeWAsIGBzcGxpdGAsIGB0YWtlYCwgYHRha2VSaWdodGAsXG4gICAgICogYHRlbXBsYXRlYCwgYHRyaW1gLCBgdHJpbUVuZGAsIGB0cmltU3RhcnRgLCBhbmQgYHdvcmRzYFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIF8ubWFwKFs0LCA4XSwgc3F1YXJlKTtcbiAgICAgKiAvLyA9PiBbMTYsIDY0XVxuICAgICAqXG4gICAgICogXy5tYXAoeyAnYSc6IDQsICdiJzogOCB9LCBzcXVhcmUpO1xuICAgICAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSBbXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgJ3VzZXInKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtYXAoY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5zb3J0QnlgIGV4Y2VwdCB0aGF0IGl0IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBzb3J0XG4gICAgICogb3JkZXJzIG9mIHRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS4gSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXNcbiAgICAgKiBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4gT3RoZXJ3aXNlLCBzcGVjaWZ5IGFuIG9yZGVyIG9mIFwiZGVzY1wiIGZvclxuICAgICAqIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXIgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0FycmF5W118RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbb3JkZXJzXSBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ucmVkdWNlYC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQ4IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNCB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH1cbiAgICAgKiBdO1xuICAgICAqXG4gICAgICogLy8gU29ydCBieSBgdXNlcmAgaW4gYXNjZW5kaW5nIG9yZGVyIGFuZCBieSBgYWdlYCBpbiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqIF8ub3JkZXJCeSh1c2VycywgWyd1c2VyJywgJ2FnZSddLCBbJ2FzYycsICdkZXNjJ10pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgNDBdXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9yZGVyQnkoY29sbGVjdGlvbiwgaXRlcmF0ZWVzLCBvcmRlcnMsIGd1YXJkKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNBcnJheShpdGVyYXRlZXMpKSB7XG4gICAgICAgIGl0ZXJhdGVlcyA9IGl0ZXJhdGVlcyA9PSBudWxsID8gW10gOiBbaXRlcmF0ZWVzXTtcbiAgICAgIH1cbiAgICAgIG9yZGVycyA9IGd1YXJkID8gdW5kZWZpbmVkIDogb3JkZXJzO1xuICAgICAgaWYgKCFpc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgb3JkZXJzID0gb3JkZXJzID09IG51bGwgPyBbXSA6IFtvcmRlcnNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzIHNwbGl0IGludG8gdHdvIGdyb3VwcywgdGhlIGZpcnN0IG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLCB0aGUgc2Vjb25kIG9mIHdoaWNoXG4gICAgICogY29udGFpbnMgZWxlbWVudHMgYHByZWRpY2F0ZWAgcmV0dXJucyBmYWxzZXkgZm9yLiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIGdyb3VwZWQgZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFjdGl2ZTsgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1sncGViYmxlcyddLCBbJ2Jhcm5leScsICdmcmVkJ11dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5wYXJ0aXRpb24odXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAncGViYmxlcyddLCBbJ2ZyZWQnXV1cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucGFydGl0aW9uKHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snZnJlZCddLCBbJ2Jhcm5leScsICdwZWJibGVzJ11dXG4gICAgICovXG4gICAgdmFyIHBhcnRpdGlvbiA9IGNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHRba2V5ID8gMCA6IDFdLnB1c2godmFsdWUpO1xuICAgIH0sIGZ1bmN0aW9uKCkgeyByZXR1cm4gW1tdLCBbXV07IH0pO1xuXG4gICAgLyoqXG4gICAgICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAgICAgKiBlYWNoIGVsZW1lbnQgaW4gYGNvbGxlY3Rpb25gIHRocnUgYGl0ZXJhdGVlYCwgd2hlcmUgZWFjaCBzdWNjZXNzaXZlXG4gICAgICogaW52b2NhdGlvbiBpcyBzdXBwbGllZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cy4gSWYgYGFjY3VtdWxhdG9yYFxuICAgICAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAgICAgKiB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czpcbiAgICAgKiAoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gICAgICogYF8ucmVkdWNlYCwgYF8ucmVkdWNlUmlnaHRgLCBhbmQgYF8udHJhbnNmb3JtYC5cbiAgICAgKlxuICAgICAqIFRoZSBndWFyZGVkIG1ldGhvZHMgYXJlOlxuICAgICAqIGBhc3NpZ25gLCBgZGVmYXVsdHNgLCBgZGVmYXVsdHNEZWVwYCwgYGluY2x1ZGVzYCwgYG1lcmdlYCwgYG9yZGVyQnlgLFxuICAgICAqIGFuZCBgc29ydEJ5YFxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHBhcmFtIHsqfSBbYWNjdW11bGF0b3JdIFRoZSBpbml0aWFsIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8ucmVkdWNlUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZWR1Y2UoWzEsIDJdLCBmdW5jdGlvbihzdW0sIG4pIHtcbiAgICAgKiAgIHJldHVybiBzdW0gKyBuO1xuICAgICAqIH0sIDApO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gICAgICogICByZXR1cm4gcmVzdWx0O1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlSZWR1Y2UgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnJlZHVjZWAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZlxuICAgICAqIGBjb2xsZWN0aW9uYCBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICAgICAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5yZWR1Y2VcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFycmF5ID0gW1swLCAxXSwgWzIsIDNdLCBbNCwgNV1dO1xuICAgICAqXG4gICAgICogXy5yZWR1Y2VSaWdodChhcnJheSwgZnVuY3Rpb24oZmxhdHRlbmVkLCBvdGhlcikge1xuICAgICAqICAgcmV0dXJuIGZsYXR0ZW5lZC5jb25jYXQob3RoZXIpO1xuICAgICAqIH0sIFtdKTtcbiAgICAgKiAvLyA9PiBbNCwgNSwgMiwgMywgMCwgMV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5UmVkdWNlUmlnaHQgOiBiYXNlUmVkdWNlLFxuICAgICAgICAgIGluaXRBY2N1bSA9IGFyZ3VtZW50cy5sZW5ndGggPCAzO1xuXG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCksIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0sIGJhc2VFYWNoUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5maWx0ZXJgOyB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmBcbiAgICAgKiB0aGF0IGBwcmVkaWNhdGVgIGRvZXMgKipub3QqKiByZXR1cm4gdHJ1dGh5IGZvci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAgICAgKiBAc2VlIF8uZmlsdGVyXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnZnJlZCcsICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogdHJ1ZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCddXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCB7ICdhZ2UnOiA0MCwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ucmVqZWN0KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgWydiYXJuZXknXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgICAgIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHJhbmRvbSBlbGVtZW50IGZyb20gYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJhbmRvbSBlbGVtZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNhbXBsZShbMSwgMiwgMywgNF0pO1xuICAgICAqIC8vID0+IDJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbikge1xuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGUgOiBiYXNlU2FtcGxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBgbmAgcmFuZG9tIGVsZW1lbnRzIGF0IHVuaXF1ZSBrZXlzIGZyb20gYGNvbGxlY3Rpb25gIHVwIHRvIHRoZVxuICAgICAqIHNpemUgb2YgYGNvbGxlY3Rpb25gLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzYW1wbGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtuPTFdIFRoZSBudW1iZXIgb2YgZWxlbWVudHMgdG8gc2FtcGxlLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5kb20gZWxlbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc2FtcGxlU2l6ZShbMSwgMiwgM10sIDIpO1xuICAgICAqIC8vID0+IFszLCAxXVxuICAgICAqXG4gICAgICogXy5zYW1wbGVTaXplKFsxLCAyLCAzXSwgNCk7XG4gICAgICogLy8gPT4gWzIsIDMsIDFdXG4gICAgICovXG4gICAgZnVuY3Rpb24gc2FtcGxlU2l6ZShjb2xsZWN0aW9uLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIG4sIGd1YXJkKSA6IG4gPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgfVxuICAgICAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlTYW1wbGVTaXplIDogYmFzZVNhbXBsZVNpemU7XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHNodWZmbGVkIHZhbHVlcywgdXNpbmcgYSB2ZXJzaW9uIG9mIHRoZVxuICAgICAqIFtGaXNoZXItWWF0ZXMgc2h1ZmZsZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRmlzaGVyLVlhdGVzX3NodWZmbGUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBzaHVmZmxlLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNodWZmbGVkIGFycmF5LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNodWZmbGUoWzEsIDIsIDMsIDRdKTtcbiAgICAgKiAvLyA9PiBbNCwgMSwgMywgMl1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pIHtcbiAgICAgIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5U2h1ZmZsZSA6IGJhc2VTaHVmZmxlO1xuICAgICAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAgICAgKiB2YWx1ZXMgb3IgdGhlIG51bWJlciBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBmb3Igb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R8c3RyaW5nfSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29sbGVjdGlvbiBzaXplLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnNpemUoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnNpemUoeyAnYSc6IDEsICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLnNpemUoJ3BlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiA3XG4gICAgICovXG4gICAgZnVuY3Rpb24gc2l6ZShjb2xsZWN0aW9uKSB7XG4gICAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjb2xsZWN0aW9uKSA/IHN0cmluZ1NpemUoY29sbGVjdGlvbikgOiBjb2xsZWN0aW9uLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gICAgICBpZiAodGFnID09IG1hcFRhZyB8fCB0YWcgPT0gc2V0VGFnKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IgKiphbnkqKiBlbGVtZW50IG9mIGBjb2xsZWN0aW9uYC5cbiAgICAgKiBJdGVyYXRpb24gaXMgc3RvcHBlZCBvbmNlIGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5LiBUaGUgcHJlZGljYXRlIGlzXG4gICAgICogaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBpbmRleHxrZXksIGNvbGxlY3Rpb24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAgICAgKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFueSBlbGVtZW50IHBhc3NlcyB0aGUgcHJlZGljYXRlIGNoZWNrLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc29tZShbbnVsbCwgMCwgJ3llcycsIGZhbHNlXSwgQm9vbGVhbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWN0aXZlJzogZmFsc2UgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uc29tZSh1c2VycywgeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnNvbWUodXNlcnMsICdhY3RpdmUnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc29tZShjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSB7XG4gICAgICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVNvbWUgOiBiYXNlU29tZTtcbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGd1YXJkKSkge1xuICAgICAgICBwcmVkaWNhdGUgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIGVsZW1lbnRzLCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSByZXN1bHRzIG9mXG4gICAgICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAgICAgKiBwZXJmb3JtcyBhIHN0YWJsZSBzb3J0LCB0aGF0IGlzLCBpdCBwcmVzZXJ2ZXMgdGhlIG9yaWdpbmFsIHNvcnQgb3JkZXIgb2ZcbiAgICAgKiBlcXVhbCBlbGVtZW50cy4gVGhlIGl0ZXJhdGVlcyBhcmUgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gICAgICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIGl0ZXJhdGVlcyB0byBzb3J0IGJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHNvcnRlZCBhcnJheS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHVzZXJzID0gW1xuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2IH0sXG4gICAgICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICdhZ2UnOiAzMCB9LFxuICAgICAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICAgICAqIC8vID0+IG9iamVjdHMgZm9yIFtbJ2Jhcm5leScsIDM2XSwgWydiYXJuZXknLCAzNF0sIFsnZnJlZCcsIDQ4XSwgWydmcmVkJywgMzBdXVxuICAgICAqXG4gICAgICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gICAgICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzRdLCBbJ2Jhcm5leScsIDM2XSwgWydmcmVkJywgMzBdLCBbJ2ZyZWQnLCA0OF1dXG4gICAgICovXG4gICAgdmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICAgICAgaWYgKGNvbGxlY3Rpb24gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gaXRlcmF0ZWVzLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggPiAxICYmIGlzSXRlcmF0ZWVDYWxsKGNvbGxlY3Rpb24sIGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMiAmJiBpc0l0ZXJhdGVlQ2FsbChpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSwgaXRlcmF0ZWVzWzJdKSkge1xuICAgICAgICBpdGVyYXRlZXMgPSBbaXRlcmF0ZWVzWzBdXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlT3JkZXJCeShjb2xsZWN0aW9uLCBiYXNlRmxhdHRlbihpdGVyYXRlZXMsIDEpLCBbXSk7XG4gICAgfSk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAgICAgKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBEYXRlXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gICAgICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICAgICAqIH0sIF8ubm93KCkpO1xuICAgICAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gICAgICovXG4gICAgdmFyIG5vdyA9IGN0eE5vdyB8fCBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiByb290LkRhdGUubm93KCk7XG4gICAgfTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5iZWZvcmVgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzXG4gICAgICogYGZ1bmNgIG9uY2UgaXQncyBjYWxsZWQgYG5gIG9yIG1vcmUgdGltZXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgbnVtYmVyIG9mIGNhbGxzIGJlZm9yZSBgZnVuY2AgaXMgaW52b2tlZC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgc2F2ZXMgPSBbJ3Byb2ZpbGUnLCAnc2V0dGluZ3MnXTtcbiAgICAgKlxuICAgICAqIHZhciBkb25lID0gXy5hZnRlcihzYXZlcy5sZW5ndGgsIGZ1bmN0aW9uKCkge1xuICAgICAqICAgY29uc29sZS5sb2coJ2RvbmUgc2F2aW5nIScpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5mb3JFYWNoKHNhdmVzLCBmdW5jdGlvbih0eXBlKSB7XG4gICAgICogICBhc3luY1NhdmUoeyAndHlwZSc6IHR5cGUsICdjb21wbGV0ZSc6IGRvbmUgfSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnZG9uZSBzYXZpbmchJyBhZnRlciB0aGUgdHdvIGFzeW5jIHNhdmVzIGhhdmUgY29tcGxldGVkLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFmdGVyKG4sIGZ1bmMpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICgtLW4gPCAxKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCwgd2l0aCB1cCB0byBgbmAgYXJndW1lbnRzLFxuICAgICAqIGlnbm9yaW5nIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbbj1mdW5jLmxlbmd0aF0gVGhlIGFyaXR5IGNhcC5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXAoWyc2JywgJzgnLCAnMTAnXSwgXy5hcnkocGFyc2VJbnQsIDEpKTtcbiAgICAgKiAvLyA9PiBbNiwgOCwgMTBdXG4gICAgICovXG4gICAgZnVuY3Rpb24gYXJ5KGZ1bmMsIG4sIGd1YXJkKSB7XG4gICAgICBuID0gZ3VhcmQgPyB1bmRlZmluZWQgOiBuO1xuICAgICAgbiA9IChmdW5jICYmIG4gPT0gbnVsbCkgPyBmdW5jLmxlbmd0aCA6IG47XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0FSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgLCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzXG4gICAgICogb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoaWxlIGl0J3MgY2FsbGVkIGxlc3MgdGhhbiBgbmAgdGltZXMuIFN1YnNlcXVlbnRcbiAgICAgKiBjYWxscyB0byB0aGUgY3JlYXRlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgY2FsbHMgYXQgd2hpY2ggYGZ1bmNgIGlzIG5vIGxvbmdlciBpbnZva2VkLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHJlc3RyaWN0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHJlc3RyaWN0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmJlZm9yZSg1LCBhZGRDb250YWN0VG9MaXN0KSk7XG4gICAgICogLy8gPT4gQWxsb3dzIGFkZGluZyB1cCB0byA0IGNvbnRhY3RzIHRvIHRoZSBsaXN0LlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGJlZm9yZShuLCBmdW5jKSB7XG4gICAgICB2YXIgcmVzdWx0O1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKC0tbiA+IDApIHtcbiAgICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPD0gMSkge1xuICAgICAgICAgIGZ1bmMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgXG4gICAgICogYW5kIGBwYXJ0aWFsc2AgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZC5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVW5saWtlIG5hdGl2ZSBgRnVuY3Rpb24jYmluZGAsIHRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiXG4gICAgICogcHJvcGVydHkgb2YgYm91bmQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYmluZC5cbiAgICAgKiBAcGFyYW0geyp9IHRoaXNBcmcgVGhlIGB0aGlzYCBiaW5kaW5nIG9mIGBmdW5jYC5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBib3VuZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyB0aGlzLnVzZXIgKyBwdW5jdHVhdGlvbjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAndXNlcic6ICdmcmVkJyB9O1xuICAgICAqXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kKGdyZWV0LCBvYmplY3QsIF8sICchJyk7XG4gICAgICogYm91bmQoJ2hpJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqL1xuICAgIHZhciBiaW5kID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgdGhpc0FyZywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBiaXRtYXNrID0gV1JBUF9CSU5EX0ZMQUc7XG4gICAgICBpZiAocGFydGlhbHMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihiaW5kKSk7XG4gICAgICAgIGJpdG1hc2sgfD0gV1JBUF9QQVJUSUFMX0ZMQUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBiaXRtYXNrLCB0aGlzQXJnLCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYG9iamVjdFtrZXldYCB3aXRoIGBwYXJ0aWFsc2BcbiAgICAgKiBwcmVwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSBgXy5iaW5kYCBieSBhbGxvd2luZyBib3VuZCBmdW5jdGlvbnMgdG8gcmVmZXJlbmNlXG4gICAgICogbWV0aG9kcyB0aGF0IG1heSBiZSByZWRlZmluZWQgb3IgZG9uJ3QgeWV0IGV4aXN0LiBTZWVcbiAgICAgKiBbUGV0ZXIgTWljaGF1eCdzIGFydGljbGVdKGh0dHA6Ly9wZXRlci5taWNoYXV4LmNhL2FydGljbGVzL2xhenktZnVuY3Rpb24tZGVmaW5pdGlvbi1wYXR0ZXJuKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBUaGUgYF8uYmluZEtleS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljXG4gICAgICogYnVpbGRzLCBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGludm9rZSB0aGUgbWV0aG9kIG9uLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW3BhcnRpYWxzXSBUaGUgYXJndW1lbnRzIHRvIGJlIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJvdW5kIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge1xuICAgICAqICAgJ3VzZXInOiAnZnJlZCcsXG4gICAgICogICAnZ3JlZXQnOiBmdW5jdGlvbihncmVldGluZywgcHVuY3R1YXRpb24pIHtcbiAgICAgKiAgICAgcmV0dXJuIGdyZWV0aW5nICsgJyAnICsgdGhpcy51c2VyICsgcHVuY3R1YXRpb247XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBib3VuZCA9IF8uYmluZEtleShvYmplY3QsICdncmVldCcsICdoaScpO1xuICAgICAqIGJvdW5kKCchJyk7XG4gICAgICogLy8gPT4gJ2hpIGZyZWQhJ1xuICAgICAqXG4gICAgICogb2JqZWN0LmdyZWV0ID0gZnVuY3Rpb24oZ3JlZXRpbmcsIHB1bmN0dWF0aW9uKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAneWEgJyArIHRoaXMudXNlciArIHB1bmN0dWF0aW9uO1xuICAgICAqIH07XG4gICAgICpcbiAgICAgKiBib3VuZCgnIScpO1xuICAgICAqIC8vID0+ICdoaXlhIGZyZWQhJ1xuICAgICAqXG4gICAgICogLy8gQm91bmQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogdmFyIGJvdW5kID0gXy5iaW5kS2V5KG9iamVjdCwgJ2dyZWV0JywgXywgJyEnKTtcbiAgICAgKiBib3VuZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGl5YSBmcmVkISdcbiAgICAgKi9cbiAgICB2YXIgYmluZEtleSA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwga2V5LCBwYXJ0aWFscykge1xuICAgICAgdmFyIGJpdG1hc2sgPSBXUkFQX0JJTkRfRkxBRyB8IFdSQVBfQklORF9LRVlfRkxBRztcbiAgICAgIGlmIChwYXJ0aWFscy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGhvbGRlcnMgPSByZXBsYWNlSG9sZGVycyhwYXJ0aWFscywgZ2V0SG9sZGVyKGJpbmRLZXkpKTtcbiAgICAgICAgYml0bWFzayB8PSBXUkFQX1BBUlRJQUxfRkxBRztcbiAgICAgIH1cbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGtleSwgYml0bWFzaywgb2JqZWN0LCBwYXJ0aWFscywgaG9sZGVycyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFyZ3VtZW50cyBvZiBgZnVuY2AgYW5kIGVpdGhlciBpbnZva2VzXG4gICAgICogYGZ1bmNgIHJldHVybmluZyBpdHMgcmVzdWx0LCBpZiBhdCBsZWFzdCBgYXJpdHlgIG51bWJlciBvZiBhcmd1bWVudHMgaGF2ZVxuICAgICAqIGJlZW4gcHJvdmlkZWQsIG9yIHJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHJlbWFpbmluZyBgZnVuY2BcbiAgICAgKiBhcmd1bWVudHMsIGFuZCBzbyBvbi4gVGhlIGFyaXR5IG9mIGBmdW5jYCBtYXkgYmUgc3BlY2lmaWVkIGlmIGBmdW5jLmxlbmd0aGBcbiAgICAgKiBpcyBub3Qgc3VmZmljaWVudC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeS5wbGFjZWhvbGRlcmAgdmFsdWUsIHdoaWNoIGRlZmF1bHRzIHRvIGBfYCBpbiBtb25vbGl0aGljIGJ1aWxkcyxcbiAgICAgKiBtYXkgYmUgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIGZvciBwcm92aWRlZCBhcmd1bWVudHMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgZG9lc24ndCBzZXQgdGhlIFwibGVuZ3RoXCIgcHJvcGVydHkgb2YgY3VycmllZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjdXJyeS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2FyaXR5PWZ1bmMubGVuZ3RoXSBUaGUgYXJpdHkgb2YgYGZ1bmNgLlxuICAgICAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY3VycmllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIGFiYyA9IGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBjdXJyaWVkID0gXy5jdXJyeShhYmMpO1xuICAgICAqXG4gICAgICogY3VycmllZCgxKSgyKSgzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMSwgMikoMyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDEsIDIsIDMpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogLy8gQ3VycmllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiBjdXJyaWVkKDEpKF8sIDMpKDIpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGN1cnJ5KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnkucGxhY2Vob2xkZXI7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uY3VycnlgIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgYXBwbGllZCB0byBgZnVuY2BcbiAgICAgKiBpbiB0aGUgbWFubmVyIG9mIGBfLnBhcnRpYWxSaWdodGAgaW5zdGVhZCBvZiBgXy5wYXJ0aWFsYC5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBjdXJyaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGN1cnJ5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbYXJpdHk9ZnVuYy5sZW5ndGhdIFRoZSBhcml0eSBvZiBgZnVuY2AuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjdXJyaWVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYWJjID0gZnVuY3Rpb24oYSwgYiwgYykge1xuICAgICAqICAgcmV0dXJuIFthLCBiLCBjXTtcbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogdmFyIGN1cnJpZWQgPSBfLmN1cnJ5UmlnaHQoYWJjKTtcbiAgICAgKlxuICAgICAqIGN1cnJpZWQoMykoMikoMSk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdXG4gICAgICpcbiAgICAgKiBjdXJyaWVkKDIsIDMpKDEpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzXVxuICAgICAqXG4gICAgICogY3VycmllZCgxLCAyLCAzKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKlxuICAgICAqIC8vIEN1cnJpZWQgd2l0aCBwbGFjZWhvbGRlcnMuXG4gICAgICogY3VycmllZCgzKSgxLCBfKSgyKTtcbiAgICAgKiAvLyA9PiBbMSwgMiwgM11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjdXJyeVJpZ2h0KGZ1bmMsIGFyaXR5LCBndWFyZCkge1xuICAgICAgYXJpdHkgPSBndWFyZCA/IHVuZGVmaW5lZCA6IGFyaXR5O1xuICAgICAgdmFyIHJlc3VsdCA9IGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9DVVJSWV9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgYXJpdHkpO1xuICAgICAgcmVzdWx0LnBsYWNlaG9sZGVyID0gY3VycnlSaWdodC5wbGFjZWhvbGRlcjtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gICAgICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gICAgICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICAgICAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICAgICAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICAgICAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gICAgICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAgICAgKiBpbnZvY2F0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICAgICAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gICAgICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICAgICAqXG4gICAgICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gICAgICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICAgICAqXG4gICAgICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gICAgICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAgICAgKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICAgICAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAgICAgKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICAgICAqXG4gICAgICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gICAgICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICAgICAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICAgICAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAgICAgKiB9KSk7XG4gICAgICpcbiAgICAgKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICAgICAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICAgICAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAgICAgKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gICAgICpcbiAgICAgKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgICAgIHZhciBsYXN0QXJncyxcbiAgICAgICAgICBsYXN0VGhpcyxcbiAgICAgICAgICBtYXhXYWl0LFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICB0aW1lcklkLFxuICAgICAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gICAgICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICAgICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgICAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICAgICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICAgICAgcmV0dXJuIG1heGluZ1xuICAgICAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgICAgICA6IHRpbWVXYWl0aW5nO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgICAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgICAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgICAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgICAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgICAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgICAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgICAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICAgICAgfVxuICAgICAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgICAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICAgICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgICAgIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICAgICAgcmV0dXJuIGRlYm91bmNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZlcnMgaW52b2tpbmcgdGhlIGBmdW5jYCB1bnRpbCB0aGUgY3VycmVudCBjYWxsIHN0YWNrIGhhcyBjbGVhcmVkLiBBbnlcbiAgICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVmZXIuXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmZXIoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgJ2RlZmVycmVkJyk7XG4gICAgICogLy8gPT4gTG9ncyAnZGVmZXJyZWQnIGFmdGVyIG9uZSBtaWxsaXNlY29uZC5cbiAgICAgKi9cbiAgICB2YXIgZGVmZXIgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICByZXR1cm4gYmFzZURlbGF5KGZ1bmMsIDEsIGFyZ3MpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogSW52b2tlcyBgZnVuY2AgYWZ0ZXIgYHdhaXRgIG1pbGxpc2Vjb25kcy4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlbGF5LlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB3YWl0IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5IGludm9jYXRpb24uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbYXJnc10gVGhlIGFyZ3VtZW50cyB0byBpbnZva2UgYGZ1bmNgIHdpdGguXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXIgaWQuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVsYXkoZnVuY3Rpb24odGV4dCkge1xuICAgICAqICAgY29uc29sZS5sb2codGV4dCk7XG4gICAgICogfSwgMTAwMCwgJ2xhdGVyJyk7XG4gICAgICogLy8gPT4gTG9ncyAnbGF0ZXInIGFmdGVyIG9uZSBzZWNvbmQuXG4gICAgICovXG4gICAgdmFyIGRlbGF5ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgd2FpdCwgYXJncykge1xuICAgICAgcmV0dXJuIGJhc2VEZWxheShmdW5jLCB0b051bWJlcih3YWl0KSB8fCAwLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIHJldmVyc2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZmxpcCBhcmd1bWVudHMgZm9yLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZsaXBwZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmbGlwcGVkID0gXy5mbGlwKGZ1bmN0aW9uKCkge1xuICAgICAqICAgcmV0dXJuIF8udG9BcnJheShhcmd1bWVudHMpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogZmxpcHBlZCgnYScsICdiJywgJ2MnLCAnZCcpO1xuICAgICAqIC8vID0+IFsnZCcsICdjJywgJ2InLCAnYSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmxpcChmdW5jKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX0ZMSVBfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbWVtb2l6ZXMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuIElmIGByZXNvbHZlcmAgaXNcbiAgICAgKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gICAgICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gICAgICogcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIG1hcCBjYWNoZSBrZXkuIFRoZSBgZnVuY2BcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY2FjaGUgaXMgZXhwb3NlZCBhcyB0aGUgYGNhY2hlYCBwcm9wZXJ0eSBvbiB0aGUgbWVtb2l6ZWRcbiAgICAgKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAgICAgKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICAgICAqIFtgTWFwYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcHJvcGVydGllcy1vZi10aGUtbWFwLXByb3RvdHlwZS1vYmplY3QpXG4gICAgICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG1lbW9pemVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiB9O1xuICAgICAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAgICAgKlxuICAgICAqIHZhciB2YWx1ZXMgPSBfLm1lbW9pemUoXy52YWx1ZXMpO1xuICAgICAqIHZhbHVlcyhvYmplY3QpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogdmFsdWVzKG90aGVyKTtcbiAgICAgKiAvLyA9PiBbMywgNF1cbiAgICAgKlxuICAgICAqIG9iamVjdC5hID0gMjtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbMSwgMl1cbiAgICAgKlxuICAgICAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICAgICAqIHZhbHVlcy5jYWNoZS5zZXQob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAgICAgKiB2YWx1ZXMob2JqZWN0KTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICpcbiAgICAgKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICAgICAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicgfHwgKHJlc29sdmVyICE9IG51bGwgJiYgdHlwZW9mIHJlc29sdmVyICE9ICdmdW5jdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHZhciBtZW1vaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICAgICAgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcblxuICAgICAgICBpZiAoY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG4gICAgICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG4gICAgbWVtb2l6ZS5DYWNoZSA9IE1hcENhY2hlO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgbmVnYXRlcyB0aGUgcmVzdWx0IG9mIHRoZSBwcmVkaWNhdGUgYGZ1bmNgLiBUaGVcbiAgICAgKiBgZnVuY2AgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgYW5kIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBwcmVkaWNhdGUgdG8gbmVnYXRlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IG5lZ2F0ZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzRXZlbihuKSB7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihbMSwgMiwgMywgNCwgNSwgNl0sIF8ubmVnYXRlKGlzRXZlbikpO1xuICAgICAqIC8vID0+IFsxLCAzLCA1XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpIHtcbiAgICAgIGlmICh0eXBlb2YgcHJlZGljYXRlICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgIGNhc2UgMDogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzKTtcbiAgICAgICAgICBjYXNlIDE6IHJldHVybiAhcHJlZGljYXRlLmNhbGwodGhpcywgYXJnc1swXSk7XG4gICAgICAgICAgY2FzZSAyOiByZXR1cm4gIXByZWRpY2F0ZS5jYWxsKHRoaXMsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuICFwcmVkaWNhdGUuY2FsbCh0aGlzLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXByZWRpY2F0ZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaXMgcmVzdHJpY3RlZCB0byBpbnZva2luZyBgZnVuY2Agb25jZS4gUmVwZWF0IGNhbGxzXG4gICAgICogdG8gdGhlIGZ1bmN0aW9uIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGludm9jYXRpb24uIFRoZSBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIGFuZCBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyByZXN0cmljdGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgaW5pdGlhbGl6ZSA9IF8ub25jZShjcmVhdGVBcHBsaWNhdGlvbik7XG4gICAgICogaW5pdGlhbGl6ZSgpO1xuICAgICAqIGluaXRpYWxpemUoKTtcbiAgICAgKiAvLyA9PiBgY3JlYXRlQXBwbGljYXRpb25gIGlzIGludm9rZWQgb25jZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9uY2UoZnVuYykge1xuICAgICAgcmV0dXJuIGJlZm9yZSgyLCBmdW5jKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudHMgdHJhbnNmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbdHJhbnNmb3Jtcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm1zLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBkb3VibGVkKG4pIHtcbiAgICAgKiAgIHJldHVybiBuICogMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBzcXVhcmUobikge1xuICAgICAqICAgcmV0dXJuIG4gKiBuO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyQXJncyhmdW5jdGlvbih4LCB5KSB7XG4gICAgICogICByZXR1cm4gW3gsIHldO1xuICAgICAqIH0sIFtzcXVhcmUsIGRvdWJsZWRdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoOSwgMyk7XG4gICAgICogLy8gPT4gWzgxLCA2XVxuICAgICAqXG4gICAgICogZnVuYygxMCwgNSk7XG4gICAgICogLy8gPT4gWzEwMCwgMTBdXG4gICAgICovXG4gICAgdmFyIG92ZXJBcmdzID0gY2FzdFJlc3QoZnVuY3Rpb24oZnVuYywgdHJhbnNmb3Jtcykge1xuICAgICAgdHJhbnNmb3JtcyA9ICh0cmFuc2Zvcm1zLmxlbmd0aCA9PSAxICYmIGlzQXJyYXkodHJhbnNmb3Jtc1swXSkpXG4gICAgICAgID8gYXJyYXlNYXAodHJhbnNmb3Jtc1swXSwgYmFzZVVuYXJ5KGdldEl0ZXJhdGVlKCkpKVxuICAgICAgICA6IGFycmF5TWFwKGJhc2VGbGF0dGVuKHRyYW5zZm9ybXMsIDEpLCBiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO1xuXG4gICAgICB2YXIgZnVuY3NMZW5ndGggPSB0cmFuc2Zvcm1zLmxlbmd0aDtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKGFyZ3MubGVuZ3RoLCBmdW5jc0xlbmd0aCk7XG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICBhcmdzW2luZGV4XSA9IHRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcywgYXJnc1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBgcGFydGlhbHNgIHByZXBlbmRlZCB0byB0aGVcbiAgICAgKiBhcmd1bWVudHMgaXQgcmVjZWl2ZXMuIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYmluZGAgZXhjZXB0IGl0IGRvZXMgKipub3QqKlxuICAgICAqIGFsdGVyIHRoZSBgdGhpc2AgYmluZGluZy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsLnBsYWNlaG9sZGVyYCB2YWx1ZSwgd2hpY2ggZGVmYXVsdHMgdG8gYF9gIGluIG1vbm9saXRoaWNcbiAgICAgKiBidWlsZHMsIG1heSBiZSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIHBhcnRpYWxseSBhcHBsaWVkIGFyZ3VtZW50cy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBwYXJ0aWFsbHlcbiAgICAgKiBhcHBsaWVkIGZ1bmN0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjIuMFxuICAgICAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIHBhcnRpYWxseSBhcHBseSBhcmd1bWVudHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4qfSBbcGFydGlhbHNdIFRoZSBhcmd1bWVudHMgdG8gYmUgcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFydGlhbGx5IGFwcGxpZWQgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGdyZWV0KGdyZWV0aW5nLCBuYW1lKSB7XG4gICAgICogICByZXR1cm4gZ3JlZXRpbmcgKyAnICcgKyBuYW1lO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsKGdyZWV0LCAnaGVsbG8nKTtcbiAgICAgKiBzYXlIZWxsb1RvKCdmcmVkJyk7XG4gICAgICogLy8gPT4gJ2hlbGxvIGZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBQYXJ0aWFsbHkgYXBwbGllZCB3aXRoIHBsYWNlaG9sZGVycy5cbiAgICAgKiB2YXIgZ3JlZXRGcmVkID0gXy5wYXJ0aWFsKGdyZWV0LCBfLCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIHBhcnRpYWxzKSB7XG4gICAgICB2YXIgaG9sZGVycyA9IHJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLCBnZXRIb2xkZXIocGFydGlhbCkpO1xuICAgICAgcmV0dXJuIGNyZWF0ZVdyYXAoZnVuYywgV1JBUF9QQVJUSUFMX0ZMQUcsIHVuZGVmaW5lZCwgcGFydGlhbHMsIGhvbGRlcnMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5wYXJ0aWFsYCBleGNlcHQgdGhhdCBwYXJ0aWFsbHkgYXBwbGllZCBhcmd1bWVudHNcbiAgICAgKiBhcmUgYXBwZW5kZWQgdG8gdGhlIGFyZ3VtZW50cyBpdCByZWNlaXZlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgXy5wYXJ0aWFsUmlnaHQucGxhY2Vob2xkZXJgIHZhbHVlLCB3aGljaCBkZWZhdWx0cyB0byBgX2AgaW4gbW9ub2xpdGhpY1xuICAgICAqIGJ1aWxkcywgbWF5IGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBmb3IgcGFydGlhbGx5IGFwcGxpZWQgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGRvZXNuJ3Qgc2V0IHRoZSBcImxlbmd0aFwiIHByb3BlcnR5IG9mIHBhcnRpYWxseVxuICAgICAqIGFwcGxpZWQgZnVuY3Rpb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcGFydGlhbGx5IGFwcGx5IGFyZ3VtZW50cyB0by5cbiAgICAgKiBAcGFyYW0gey4uLip9IFtwYXJ0aWFsc10gVGhlIGFyZ3VtZW50cyB0byBiZSBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBwYXJ0aWFsbHkgYXBwbGllZCBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gZ3JlZXQoZ3JlZXRpbmcsIG5hbWUpIHtcbiAgICAgKiAgIHJldHVybiBncmVldGluZyArICcgJyArIG5hbWU7XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGdyZWV0RnJlZCA9IF8ucGFydGlhbFJpZ2h0KGdyZWV0LCAnZnJlZCcpO1xuICAgICAqIGdyZWV0RnJlZCgnaGknKTtcbiAgICAgKiAvLyA9PiAnaGkgZnJlZCdcbiAgICAgKlxuICAgICAqIC8vIFBhcnRpYWxseSBhcHBsaWVkIHdpdGggcGxhY2Vob2xkZXJzLlxuICAgICAqIHZhciBzYXlIZWxsb1RvID0gXy5wYXJ0aWFsUmlnaHQoZ3JlZXQsICdoZWxsbycsIF8pO1xuICAgICAqIHNheUhlbGxvVG8oJ2ZyZWQnKTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gZnJlZCdcbiAgICAgKi9cbiAgICB2YXIgcGFydGlhbFJpZ2h0ID0gYmFzZVJlc3QoZnVuY3Rpb24oZnVuYywgcGFydGlhbHMpIHtcbiAgICAgIHZhciBob2xkZXJzID0gcmVwbGFjZUhvbGRlcnMocGFydGlhbHMsIGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtcbiAgICAgIHJldHVybiBjcmVhdGVXcmFwKGZ1bmMsIFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLCB1bmRlZmluZWQsIHBhcnRpYWxzLCBob2xkZXJzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggYXJndW1lbnRzIGFycmFuZ2VkIGFjY29yZGluZ1xuICAgICAqIHRvIHRoZSBzcGVjaWZpZWQgYGluZGV4ZXNgIHdoZXJlIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgZmlyc3QgaW5kZXggaXNcbiAgICAgKiBwcm92aWRlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIHRoZSBhcmd1bWVudCB2YWx1ZSBhdCB0aGUgc2Vjb25kIGluZGV4IGlzXG4gICAgICogcHJvdmlkZWQgYXMgdGhlIHNlY29uZCBhcmd1bWVudCwgYW5kIHNvIG9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVhcnJhbmdlIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHBhcmFtIHsuLi4obnVtYmVyfG51bWJlcltdKX0gaW5kZXhlcyBUaGUgYXJyYW5nZWQgYXJndW1lbnQgaW5kZXhlcy5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIHJlYXJnZWQgPSBfLnJlYXJnKGZ1bmN0aW9uKGEsIGIsIGMpIHtcbiAgICAgKiAgIHJldHVybiBbYSwgYiwgY107XG4gICAgICogfSwgWzIsIDAsIDFdKTtcbiAgICAgKlxuICAgICAqIHJlYXJnZWQoJ2InLCAnYycsICdhJylcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICB2YXIgcmVhcmcgPSBmbGF0UmVzdChmdW5jdGlvbihmdW5jLCBpbmRleGVzKSB7XG4gICAgICByZXR1cm4gY3JlYXRlV3JhcChmdW5jLCBXUkFQX1JFQVJHX0ZMQUcsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGluZGV4ZXMpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlXG4gICAgICogY3JlYXRlZCBmdW5jdGlvbiBhbmQgYXJndW1lbnRzIGZyb20gYHN0YXJ0YCBhbmQgYmV5b25kIHByb3ZpZGVkIGFzXG4gICAgICogYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb24gdGhlXG4gICAgICogW3Jlc3QgcGFyYW1ldGVyXShodHRwczovL21kbi5pby9yZXN0X3BhcmFtZXRlcnMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnJlc3QoZnVuY3Rpb24od2hhdCwgbmFtZXMpIHtcbiAgICAgKiAgIHJldHVybiB3aGF0ICsgJyAnICsgXy5pbml0aWFsKG5hbWVzKS5qb2luKCcsICcpICtcbiAgICAgKiAgICAgKF8uc2l6ZShuYW1lcykgPiAxID8gJywgJiAnIDogJycpICsgXy5sYXN0KG5hbWVzKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIHNheSgnaGVsbG8nLCAnZnJlZCcsICdiYXJuZXknLCAncGViYmxlcycpO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkLCBiYXJuZXksICYgcGViYmxlcydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gICAgICB9XG4gICAgICBzdGFydCA9IHN0YXJ0ID09PSB1bmRlZmluZWQgPyBzdGFydCA6IHRvSW50ZWdlcihzdGFydCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuYywgc3RhcnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZVxuICAgICAqIGNyZWF0ZSBmdW5jdGlvbiBhbmQgYW4gYXJyYXkgb2YgYXJndW1lbnRzIG11Y2ggbGlrZVxuICAgICAqIFtgRnVuY3Rpb24jYXBwbHlgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGVcbiAgICAgKiBbc3ByZWFkIG9wZXJhdG9yXShodHRwczovL21kbi5pby9zcHJlYWRfb3BlcmF0b3IpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMi4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gc3ByZWFkIGFyZ3VtZW50cyBvdmVyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBzcHJlYWQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBzYXkgPSBfLnNwcmVhZChmdW5jdGlvbih3aG8sIHdoYXQpIHtcbiAgICAgKiAgIHJldHVybiB3aG8gKyAnIHNheXMgJyArIHdoYXQ7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiBzYXkoWydmcmVkJywgJ2hlbGxvJ10pO1xuICAgICAqIC8vID0+ICdmcmVkIHNheXMgaGVsbG8nXG4gICAgICpcbiAgICAgKiB2YXIgbnVtYmVycyA9IFByb21pc2UuYWxsKFtcbiAgICAgKiAgIFByb21pc2UucmVzb2x2ZSg0MCksXG4gICAgICogICBQcm9taXNlLnJlc29sdmUoMzYpXG4gICAgICogXSk7XG4gICAgICpcbiAgICAgKiBudW1iZXJzLnRoZW4oXy5zcHJlYWQoZnVuY3Rpb24oeCwgeSkge1xuICAgICAqICAgcmV0dXJuIHggKyB5O1xuICAgICAqIH0pKTtcbiAgICAgKiAvLyA9PiBhIFByb21pc2Ugb2YgNzZcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzcHJlYWQoZnVuYywgc3RhcnQpIHtcbiAgICAgIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gc3RhcnQgPT0gbnVsbCA/IDAgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwgMCk7XG4gICAgICByZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncykge1xuICAgICAgICB2YXIgYXJyYXkgPSBhcmdzW3N0YXJ0XSxcbiAgICAgICAgICAgIG90aGVyQXJncyA9IGNhc3RTbGljZShhcmdzLCAwLCBzdGFydCk7XG5cbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgYXJyYXlQdXNoKG90aGVyQXJncywgYXJyYXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHRocm90dGxlZCBmdW5jdGlvbiB0aGF0IG9ubHkgaW52b2tlcyBgZnVuY2AgYXQgbW9zdCBvbmNlIHBlclxuICAgICAqIGV2ZXJ5IGB3YWl0YCBtaWxsaXNlY29uZHMuIFRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgXG4gICAgICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICAgICAqIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYFxuICAgICAqIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZSBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGBcbiAgICAgKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gICAgICogdGhyb3R0bGVkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb24gcmV0dXJuIHRoZVxuICAgICAqIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2AgaW52b2NhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAgICAgKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIHRocm90dGxlZCBmdW5jdGlvblxuICAgICAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAgICAgKlxuICAgICAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICAgICAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAgICAgKlxuICAgICAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICAgICAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gdGhyb3R0bGUgaW52b2NhdGlvbnMgdG8uXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gICAgICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgdGhyb3R0bGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiAvLyBBdm9pZCBleGNlc3NpdmVseSB1cGRhdGluZyB0aGUgcG9zaXRpb24gd2hpbGUgc2Nyb2xsaW5nLlxuICAgICAqIGpRdWVyeSh3aW5kb3cpLm9uKCdzY3JvbGwnLCBfLnRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCAxMDApKTtcbiAgICAgKlxuICAgICAqIC8vIEludm9rZSBgcmVuZXdUb2tlbmAgd2hlbiB0aGUgY2xpY2sgZXZlbnQgaXMgZmlyZWQsIGJ1dCBub3QgbW9yZSB0aGFuIG9uY2UgZXZlcnkgNSBtaW51dGVzLlxuICAgICAqIHZhciB0aHJvdHRsZWQgPSBfLnRocm90dGxlKHJlbmV3VG9rZW4sIDMwMDAwMCwgeyAndHJhaWxpbmcnOiBmYWxzZSB9KTtcbiAgICAgKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAgICAgKlxuICAgICAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgdGhyb3R0bGVkIGludm9jYXRpb24uXG4gICAgICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gdGhyb3R0bGUoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICAgICAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICAgICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgICAgICdsZWFkaW5nJzogbGVhZGluZyxcbiAgICAgICAgJ21heFdhaXQnOiB3YWl0LFxuICAgICAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB1cCB0byBvbmUgYXJndW1lbnQsIGlnbm9yaW5nIGFueVxuICAgICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnOCcsICcxMCddLCBfLnVuYXJ5KHBhcnNlSW50KSk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVuYXJ5KGZ1bmMpIHtcbiAgICAgIHJldHVybiBhcnkoZnVuYywgMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYHZhbHVlYCB0byBgd3JhcHBlcmAgYXMgaXRzIGZpcnN0XG4gICAgICogYXJndW1lbnQuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGFwcGVuZGVkXG4gICAgICogdG8gdGhvc2UgcHJvdmlkZWQgdG8gdGhlIGB3cmFwcGVyYC4gVGhlIHdyYXBwZXIgaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2BcbiAgICAgKiBiaW5kaW5nIG9mIHRoZSBjcmVhdGVkIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gd3JhcC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbd3JhcHBlcj1pZGVudGl0eV0gVGhlIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBwID0gXy53cmFwKF8uZXNjYXBlLCBmdW5jdGlvbihmdW5jLCB0ZXh0KSB7XG4gICAgICogICByZXR1cm4gJzxwPicgKyBmdW5jKHRleHQpICsgJzwvcD4nO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcCgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnPHA+ZnJlZCwgYmFybmV5LCAmYW1wOyBwZWJibGVzPC9wPidcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB3cmFwKHZhbHVlLCB3cmFwcGVyKSB7XG4gICAgICByZXR1cm4gcGFydGlhbChjYXN0RnVuY3Rpb24od3JhcHBlciksIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBDYXN0cyBgdmFsdWVgIGFzIGFuIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FzdEFycmF5KDEpO1xuICAgICAqIC8vID0+IFsxXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkoeyAnYSc6IDEgfSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxIH1dXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gWydhYmMnXVxuICAgICAqXG4gICAgICogXy5jYXN0QXJyYXkobnVsbCk7XG4gICAgICogLy8gPT4gW251bGxdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSh1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IFt1bmRlZmluZWRdXG4gICAgICpcbiAgICAgKiBfLmNhc3RBcnJheSgpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbMSwgMiwgM107XG4gICAgICogY29uc29sZS5sb2coXy5jYXN0QXJyYXkoYXJyYXkpID09PSBhcnJheSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNhc3RBcnJheSgpIHtcbiAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICB2YXIgdmFsdWUgPSBhcmd1bWVudHNbMF07XG4gICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIHNoYWxsb3cgY2xvbmUgb2YgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uIHRoZVxuICAgICAqIFtzdHJ1Y3R1cmVkIGNsb25lIGFsZ29yaXRobV0oaHR0cHM6Ly9tZG4uaW8vU3RydWN0dXJlZF9jbG9uZV9hbGdvcml0aG0pXG4gICAgICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICAgICAqIG51bWJlcnMsIGBPYmplY3RgIG9iamVjdHMsIHJlZ2V4ZXMsIHNldHMsIHN0cmluZ3MsIHN5bWJvbHMsIGFuZCB0eXBlZFxuICAgICAqIGFycmF5cy4gVGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXMgb2YgYGFyZ3VtZW50c2Agb2JqZWN0cyBhcmUgY2xvbmVkXG4gICAgICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICAgICAqIGFzIGVycm9yIG9iamVjdHMsIGZ1bmN0aW9ucywgRE9NIG5vZGVzLCBhbmQgV2Vha01hcHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBzaGFsbG93ID0gXy5jbG9uZShvYmplY3RzKTtcbiAgICAgKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIGNsb25lZCB2YWx1ZS4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsXG4gICAgICogY2xvbmluZyBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGhcbiAgICAgKiB1cCB0byBmb3VyIGFyZ3VtZW50czsgKHZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBzdGFja10pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gICAgICogQHNlZSBfLmNsb25lRGVlcFdpdGhcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcih2YWx1ZSkge1xuICAgICAqICAgaWYgKF8uaXNFbGVtZW50KHZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdmFsdWUuY2xvbmVOb2RlKGZhbHNlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lV2l0aChkb2N1bWVudC5ib2R5LCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGVsID09PSBkb2N1bWVudC5ib2R5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqIGNvbnNvbGUubG9nKGVsLm5vZGVOYW1lKTtcbiAgICAgKiAvLyA9PiAnQk9EWSdcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5jaGlsZE5vZGVzLmxlbmd0aCk7XG4gICAgICogLy8gPT4gMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb25lV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmNsb25lYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBjbG9uZXMgYHZhbHVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmVjdXJzaXZlbHkgY2xvbmUuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICAgICAqIEBzZWUgXy5jbG9uZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAgICAgKlxuICAgICAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gICAgICogY29uc29sZS5sb2coZGVlcFswXSA9PT0gb2JqZWN0c1swXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbG9uZURlZXAodmFsdWUpIHtcbiAgICAgIHJldHVybiBiYXNlQ2xvbmUodmFsdWUsIENMT05FX0RFRVBfRkxBRyB8IENMT05FX1NZTUJPTFNfRkxBRyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZVdpdGhgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGNsb25lcyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZWN1cnNpdmVseSBjbG9uZS5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjbG9uaW5nLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBkZWVwIGNsb25lZCB2YWx1ZS5cbiAgICAgKiBAc2VlIF8uY2xvbmVXaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIodmFsdWUpIHtcbiAgICAgKiAgIGlmIChfLmlzRWxlbWVudCh2YWx1ZSkpIHtcbiAgICAgKiAgICAgcmV0dXJuIHZhbHVlLmNsb25lTm9kZSh0cnVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZWwgPSBfLmNsb25lRGVlcFdpdGgoZG9jdW1lbnQuYm9keSwgY3VzdG9taXplcik7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhlbCA9PT0gZG9jdW1lbnQuYm9keSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKiBjb25zb2xlLmxvZyhlbC5ub2RlTmFtZSk7XG4gICAgICogLy8gPT4gJ0JPRFknXG4gICAgICogY29uc29sZS5sb2coZWwuY2hpbGROb2Rlcy5sZW5ndGgpO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvbmVEZWVwV2l0aCh2YWx1ZSwgY3VzdG9taXplcikge1xuICAgICAgY3VzdG9taXplciA9IHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicgPyBjdXN0b21pemVyIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfREVFUF9GTEFHIHwgQ0xPTkVfU1lNQk9MU19GTEFHLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYG9iamVjdGAgY29uZm9ybXMgdG8gYHNvdXJjZWAgYnkgaW52b2tpbmcgdGhlIHByZWRpY2F0ZVxuICAgICAqIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSB2YWx1ZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0byBgXy5jb25mb3Jtc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTQuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYG9iamVjdGAgY29uZm9ybXMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAgICAgKlxuICAgICAqIF8uY29uZm9ybXNUbyhvYmplY3QsIHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmNvbmZvcm1zVG8ob2JqZWN0LCB7ICdiJzogZnVuY3Rpb24obikgeyByZXR1cm4gbiA+IDI7IH0gfSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtc1RvKG9iamVjdCwgc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlID09IG51bGwgfHwgYmFzZUNvbmZvcm1zVG8ob2JqZWN0LCBzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGVyZm9ybXMgYVxuICAgICAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gICAgICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5lcShOYU4sIE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBvdGhlciB8fCAodmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgZ3JlYXRlciB0aGFuIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gYG90aGVyYCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5sdFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0KDMsIDEpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZ3QoMywgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZ3QoMSwgMyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgZ3QgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGJhc2VHdCk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYG90aGVyYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjkuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICAqICBgb3RoZXJgLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQHNlZSBfLmx0ZVxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgzLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmd0ZSgxLCAzKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBndGUgPSBjcmVhdGVSZWxhdGlvbmFsT3BlcmF0aW9uKGZ1bmN0aW9uKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIHZhbHVlID49IG90aGVyO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID8gYmFzZUlzQXJndW1lbnRzIDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheSgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheShfLm5vb3ApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXlCdWZmZXIoMikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUJ1ZmZlcihuZXcgQXJyYXkoMikpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzQXJyYXlCdWZmZXIgPSBub2RlSXNBcnJheUJ1ZmZlciA/IGJhc2VVbmFyeShub2RlSXNBcnJheUJ1ZmZlcikgOiBiYXNlSXNBcnJheUJ1ZmZlcjtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAgICAgKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gICAgICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICAgICAqIGlzIGFuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGJvb2xlYW4gcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQm9vbGVhbihudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBib29sVGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjMuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGRhdGUgb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNEYXRlKG5ldyBEYXRlKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRGF0ZSgnTW9uIEFwcmlsIDIzIDIwMTInKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIHZhciBpc0RhdGUgPSBub2RlSXNEYXRlID8gYmFzZVVuYXJ5KG5vZGVJc0RhdGUpIDogYmFzZUlzRGF0ZTtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIERPTSBlbGVtZW50LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIERPTSBlbGVtZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KGRvY3VtZW50LmJvZHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbGVtZW50KCc8Ym9keT4nKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRWxlbWVudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDEgJiYgIWlzUGxhaW5PYmplY3QodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGVtcHR5IG9iamVjdCwgY29sbGVjdGlvbiwgbWFwLCBvciBzZXQuXG4gICAgICpcbiAgICAgKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAgICAgKiBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gICAgICogalF1ZXJ5LWxpa2UgY29sbGVjdGlvbnMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYGxlbmd0aGAgb2YgYDBgLlxuICAgICAqIFNpbWlsYXJseSwgbWFwcyBhbmQgc2V0cyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgc2l6ZWAgb2YgYDBgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHRydWUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNFbXB0eSgxKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpICYmXG4gICAgICAgICAgKGlzQXJyYXkodmFsdWUpIHx8IHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUuc3BsaWNlID09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgICAgIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICAgICAgcmV0dXJuICF2YWx1ZS5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKGlzUHJvdG90eXBlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gIWJhc2VLZXlzKHZhbHVlKS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmVcbiAgICAgKiBlcXVpdmFsZW50LlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGNvbXBhcmluZyBhcnJheXMsIGFycmF5IGJ1ZmZlcnMsIGJvb2xlYW5zLFxuICAgICAqIGRhdGUgb2JqZWN0cywgZXJyb3Igb2JqZWN0cywgbWFwcywgbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcyxcbiAgICAgKiBzZXRzLCBzdHJpbmdzLCBzeW1ib2xzLCBhbmQgdHlwZWQgYXJyYXlzLiBgT2JqZWN0YCBvYmplY3RzIGFyZSBjb21wYXJlZFxuICAgICAqIGJ5IHRoZWlyIG93biwgbm90IGluaGVyaXRlZCwgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLiBGdW5jdGlvbnMgYW5kIERPTVxuICAgICAqIG5vZGVzIGFyZSBjb21wYXJlZCBieSBzdHJpY3QgZXF1YWxpdHksIGkuZS4gYD09PWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICAgICAqXG4gICAgICogXy5pc0VxdWFsKG9iamVjdCwgb3RoZXIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIG9iamVjdCA9PT0gb3RoZXI7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc0VxdWFsKHZhbHVlLCBvdGhlcikge1xuICAgICAgcmV0dXJuIGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0VxdWFsYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gY29tcGFyZSB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBjb21wYXJpc29uc1xuICAgICAqIGFyZSBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkIHdpdGggdXAgdG9cbiAgICAgKiBzaXggYXJndW1lbnRzOiAob2JqVmFsdWUsIG90aFZhbHVlIFssIGluZGV4fGtleSwgb2JqZWN0LCBvdGhlciwgc3RhY2tdKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgb3RoVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKG90aFZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBbJ2hlbGxvJywgJ2dvb2RieWUnXTtcbiAgICAgKiB2YXIgb3RoZXIgPSBbJ2hpJywgJ2dvb2RieWUnXTtcbiAgICAgKlxuICAgICAqIF8uaXNFcXVhbFdpdGgoYXJyYXksIG90aGVyLCBjdXN0b21pemVyKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsIG90aGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICB2YXIgcmVzdWx0ID0gY3VzdG9taXplciA/IGN1c3RvbWl6ZXIodmFsdWUsIG90aGVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGJhc2VJc0VxdWFsKHZhbHVlLCBvdGhlciwgdW5kZWZpbmVkLCBjdXN0b21pemVyKSA6ICEhcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gICAgICogYFN5bnRheEVycm9yYCwgYFR5cGVFcnJvcmAsIG9yIGBVUklFcnJvcmAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBlcnJvciBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKG5ldyBFcnJvcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Vycm9yKEVycm9yKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRXJyb3IodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGVycm9yVGFnIHx8IHRhZyA9PSBkb21FeGNUYWcgfHxcbiAgICAgICAgKHR5cGVvZiB2YWx1ZS5tZXNzYWdlID09ICdzdHJpbmcnICYmIHR5cGVvZiB2YWx1ZS5uYW1lID09ICdzdHJpbmcnICYmICFpc1BsYWluT2JqZWN0KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgcHJpbWl0aXZlIG51bWJlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzRmluaXRlYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzRmluaXRlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmaW5pdGUgbnVtYmVyLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNGaW5pdGUoMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzRmluaXRlKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0Zpbml0ZSgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiYgbmF0aXZlSXNGaW5pdGUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBmdW5jdGlvbiwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzRnVuY3Rpb24oXyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc0Z1bmN0aW9uKC9hYmMvKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAgICAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gICAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYE51bWJlci5pc0ludGVnZXJgXShodHRwczovL21kbi5pby9OdW1iZXIvaXNJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0ludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzSW50ZWdlcignMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc0xlbmd0aCgnMycpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgJiZcbiAgICAgICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICAgICAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAgICAgKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KHt9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdChfLm5vb3ApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3QobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICAgICAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICAgICAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2Uoe30pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMy4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGlzTWFwID0gbm9kZUlzTWFwID8gYmFzZVVuYXJ5KG5vZGVJc01hcCkgOiBiYXNlSXNNYXA7XG5cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhIHBhcnRpYWwgZGVlcCBjb21wYXJpc29uIGJldHdlZW4gYG9iamVjdGAgYW5kIGBzb3VyY2VgIHRvXG4gICAgICogZGV0ZXJtaW5lIGlmIGBvYmplY3RgIGNvbnRhaW5zIGVxdWl2YWxlbnQgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8gYF8ubWF0Y2hlc2Agd2hlbiBgc291cmNlYCBpc1xuICAgICAqIHBhcnRpYWxseSBhcHBsaWVkLlxuICAgICAqXG4gICAgICogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3QgYHNvdXJjZWBcbiAgICAgKiB2YWx1ZXMgYWdhaW5zdCBhbnkgYXJyYXkgb3Igb2JqZWN0IHZhbHVlLCByZXNwZWN0aXZlbHkuIFNlZSBgXy5pc0VxdWFsYFxuICAgICAqIGZvciBhIGxpc3Qgb2Ygc3VwcG9ydGVkIHZhbHVlIGNvbXBhcmlzb25zLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMiB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTWF0Y2gob2JqZWN0LCB7ICdiJzogMSB9KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2gob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgZ2V0TWF0Y2hEYXRhKHNvdXJjZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uaXNNYXRjaGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAgICAgKiBpcyBpbnZva2VkIHRvIGNvbXBhcmUgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJucyBgdW5kZWZpbmVkYCwgY29tcGFyaXNvbnNcbiAgICAgKiBhcmUgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIGZpdmVcbiAgICAgKiBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGluZGV4fGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGlzR3JlZXRpbmcodmFsdWUpIHtcbiAgICAgKiAgIHJldHVybiAvXmgoPzppfGVsbG8pJC8udGVzdCh2YWx1ZSk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUpIHtcbiAgICAgKiAgIGlmIChpc0dyZWV0aW5nKG9ialZhbHVlKSAmJiBpc0dyZWV0aW5nKHNyY1ZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnZ3JlZXRpbmcnOiAnaGVsbG8nIH07XG4gICAgICogdmFyIHNvdXJjZSA9IHsgJ2dyZWV0aW5nJzogJ2hpJyB9O1xuICAgICAqXG4gICAgICogXy5pc01hdGNoV2l0aChvYmplY3QsIHNvdXJjZSwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTWF0Y2hXaXRoKG9iamVjdCwgc291cmNlLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIGdldE1hdGNoRGF0YShzb3VyY2UpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgTmFOYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICAgICAqIFtgTnVtYmVyLmlzTmFOYF0oaHR0cHM6Ly9tZG4uaW8vTnVtYmVyL2lzTmFOKSBhbmQgaXMgbm90IHRoZSBzYW1lIGFzXG4gICAgICogZ2xvYmFsIFtgaXNOYU5gXShodHRwczovL21kbi5pby9pc05hTikgd2hpY2ggcmV0dXJucyBgdHJ1ZWAgZm9yXG4gICAgICogYHVuZGVmaW5lZGAgYW5kIG90aGVyIG5vbi1udW1iZXIgdmFsdWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgTmFOYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmFOKE5hTik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTihuZXcgTnVtYmVyKE5hTikpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGlzTmFOKHVuZGVmaW5lZCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc05hTih1bmRlZmluZWQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcbiAgICAgIC8vIEFuIGBOYU5gIHByaW1pdGl2ZSBpcyB0aGUgb25seSB2YWx1ZSB0aGF0IGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuXG4gICAgICAvLyBQZXJmb3JtIHRoZSBgdG9TdHJpbmdUYWdgIGNoZWNrIGZpcnN0IHRvIGF2b2lkIGVycm9ycyB3aXRoIHNvbWVcbiAgICAgIC8vIEFjdGl2ZVggb2JqZWN0cyBpbiBJRS5cbiAgICAgIHJldHVybiBpc051bWJlcih2YWx1ZSkgJiYgdmFsdWUgIT0gK3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJpc3RpbmUgbmF0aXZlIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGNhbid0IHJlbGlhYmx5IGRldGVjdCBuYXRpdmUgZnVuY3Rpb25zIGluIHRoZSBwcmVzZW5jZVxuICAgICAqIG9mIHRoZSBjb3JlLWpzIHBhY2thZ2UgYmVjYXVzZSBjb3JlLWpzIGNpcmN1bXZlbnRzIHRoaXMga2luZCBvZiBkZXRlY3Rpb24uXG4gICAgICogRGVzcGl0ZSBtdWx0aXBsZSByZXF1ZXN0cywgdGhlIGNvcmUtanMgbWFpbnRhaW5lciBoYXMgbWFkZSBpdCBjbGVhcjogYW55XG4gICAgICogYXR0ZW1wdCB0byBmaXggdGhlIGRldGVjdGlvbiB3aWxsIGJlIG9ic3RydWN0ZWQuIEFzIGEgcmVzdWx0LCB3ZSdyZSBsZWZ0XG4gICAgICogd2l0aCBsaXR0bGUgY2hvaWNlIGJ1dCB0byB0aHJvdyBhbiBlcnJvci4gVW5mb3J0dW5hdGVseSwgdGhpcyBhbHNvIGFmZmVjdHNcbiAgICAgKiBwYWNrYWdlcywgbGlrZSBbYmFiZWwtcG9seWZpbGxdKGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2JhYmVsLXBvbHlmaWxsKSxcbiAgICAgKiB3aGljaCByZWx5IG9uIGNvcmUtanMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICAgICAqICBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoQXJyYXkucHJvdG90eXBlLnB1c2gpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOYXRpdmUoXyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05hdGl2ZSh2YWx1ZSkge1xuICAgICAgaWYgKGlzTWFza2FibGUodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihDT1JFX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBgbnVsbGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bGwobnVsbCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc051bGwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGBudWxsYCBvciBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbnVsbGlzaCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOaWwodm9pZCAwKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTmlsKE5hTik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc05pbCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVG8gZXhjbHVkZSBgSW5maW5pdHlgLCBgLUluZmluaXR5YCwgYW5kIGBOYU5gLCB3aGljaCBhcmVcbiAgICAgKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBudW1iZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc051bWJlcigzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNOdW1iZXIoJzMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzTnVtYmVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICAgICAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjguMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2NvbnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG4gICAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgUmVnRXhwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcmVnZXhwLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoL2FiYy8pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNSZWdFeHAoJy9hYmMvJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNSZWdFeHAgPSBub2RlSXNSZWdFeHAgPyBiYXNlVW5hcnkobm9kZUlzUmVnRXhwKSA6IGJhc2VJc1JlZ0V4cDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgc2FmZSBpbnRlZ2VyLiBBbiBpbnRlZ2VyIGlzIHNhZmUgaWYgaXQncyBhbiBJRUVFLTc1NFxuICAgICAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzYWZlIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKDMpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNTYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogXy5pc1NhZmVJbnRlZ2VyKCczJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1NhZmVJbnRlZ2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNJbnRlZ2VyKHZhbHVlKSAmJiB2YWx1ZSA+PSAtTUFYX1NBRkVfSU5URUdFUiAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc2V0LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTZXQobmV3IFNldCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pc1NldChuZXcgV2Vha1NldCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNTZXQgPSBub2RlSXNTZXQgPyBiYXNlVW5hcnkobm9kZUlzU2V0KSA6IGJhc2VJc1NldDtcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3RyaW5nKDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYHVuZGVmaW5lZGAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1VuZGVmaW5lZCh2b2lkIDApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNVbmRlZmluZWQobnVsbCk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrTWFwYCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBtYXAsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtNYXAobmV3IFdlYWtNYXApO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrTWFwKG5ldyBNYXApO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrTWFwKHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IHdlYWtNYXBUYWc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBXZWFrU2V0YCBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgd2VhayBzZXQsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5pc1dlYWtTZXQobmV3IFdlYWtTZXQpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaXNXZWFrU2V0KG5ldyBTZXQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaXNXZWFrU2V0KHZhbHVlKSB7XG4gICAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSB3ZWFrU2V0VGFnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuOS4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICAgICAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIGBvdGhlcmAsXG4gICAgICogIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAc2VlIF8uZ3RcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdCgxLCAzKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDMpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmx0KDMsIDEpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIGx0ID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO1xuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBvdGhlcmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy45LjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gICAgICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICAgKiAgYG90aGVyYCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5ndGVcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5sdGUoMSwgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5sdGUoMywgMSk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICB2YXIgbHRlID0gY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSwgb3RoZXIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA8PSBvdGhlcjtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9BcnJheSh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KCdhYmMnKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKlxuICAgICAqIF8udG9BcnJheSgxKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqXG4gICAgICogXy50b0FycmF5KG51bGwpO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9BcnJheSh2YWx1ZSkge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBpZiAoaXNBcnJheUxpa2UodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyh2YWx1ZSkgPyBzdHJpbmdUb0FycmF5KHZhbHVlKSA6IGNvcHlBcnJheSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3ltSXRlcmF0b3IgJiYgdmFsdWVbc3ltSXRlcmF0b3JdKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclRvQXJyYXkodmFsdWVbc3ltSXRlcmF0b3JdKCkpO1xuICAgICAgfVxuICAgICAgdmFyIHRhZyA9IGdldFRhZyh2YWx1ZSksXG4gICAgICAgICAgZnVuYyA9IHRhZyA9PSBtYXBUYWcgPyBtYXBUb0FycmF5IDogKHRhZyA9PSBzZXRUYWcgPyBzZXRUb0FycmF5IDogdmFsdWVzKTtcblxuICAgICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTIuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKDMuMik7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICpcbiAgICAgKiBfLnRvRmluaXRlKE51bWJlci5NSU5fVkFMVUUpO1xuICAgICAqIC8vID0+IDVlLTMyNFxuICAgICAqXG4gICAgICogXy50b0Zpbml0ZShJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9GaW5pdGUoJzMuMicpO1xuICAgICAqIC8vID0+IDMuMlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKSB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgICAgIH1cbiAgICAgIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpO1xuICAgICAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgICAgIHZhciBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSk7XG4gICAgICAgIHJldHVybiBzaWduICogTUFYX0lOVEVHRVI7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gICAgICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b0ludGVnZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gICAgICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAgICAgKlxuICAgICAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgICAgIHJlbWFpbmRlciA9IHJlc3VsdCAlIDE7XG5cbiAgICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIgc3VpdGFibGUgZm9yIHVzZSBhcyB0aGUgbGVuZ3RoIG9mIGFuXG4gICAgICogYXJyYXktbGlrZSBvYmplY3QuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAgICAgKiBbYFRvTGVuZ3RoYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9sZW5ndGgpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IExhbmdcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKDMuMik7XG4gICAgICogLy8gPT4gM1xuICAgICAqXG4gICAgICogXy50b0xlbmd0aChOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiA0Mjk0OTY3Mjk1XG4gICAgICpcbiAgICAgKiBfLnRvTGVuZ3RoKCczLjInKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9MZW5ndGgodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAwLCBNQVhfQVJSQVlfTEVOR1RIKSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBMYW5nXG4gICAgICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoMy4yKTtcbiAgICAgKiAvLyA9PiAzLjJcbiAgICAgKlxuICAgICAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gICAgICogLy8gPT4gNWUtMzI0XG4gICAgICpcbiAgICAgKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAgICAgKiAvLyA9PiBJbmZpbml0eVxuICAgICAqXG4gICAgICogXy50b051bWJlcignMy4yJyk7XG4gICAgICogLy8gPT4gMy4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTkFOO1xuICAgICAgfVxuICAgICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gICAgICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICAgICAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgICAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gICAgICoga2V5ZWQgcHJvcGVydGllcyBvZiBgdmFsdWVgIHRvIG93biBwcm9wZXJ0aWVzIG9mIHRoZSBwbGFpbiBvYmplY3QuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICpcbiAgICAgKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGNvcHlPYmplY3QodmFsdWUsIGtleXNJbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzYWZlIGludGVnZXIuIEEgc2FmZSBpbnRlZ2VyIGNhbiBiZSBjb21wYXJlZCBhbmRcbiAgICAgKiByZXByZXNlbnRlZCBjb3JyZWN0bHkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcigzLjIpO1xuICAgICAqIC8vID0+IDNcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICpcbiAgICAgKiBfLnRvU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICAgICAqIC8vID0+IDkwMDcxOTkyNTQ3NDA5OTFcbiAgICAgKlxuICAgICAqIF8udG9TYWZlSW50ZWdlcignMy4yJyk7XG4gICAgICogLy8gPT4gM1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICA/IGJhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLCAtTUFYX1NBRkVfSU5URUdFUiwgTUFYX1NBRkVfSU5URUdFUilcbiAgICAgICAgOiAodmFsdWUgPT09IDAgPyB2YWx1ZSA6IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcuIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBmb3IgYG51bGxgXG4gICAgICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTGFuZ1xuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50b1N0cmluZyhudWxsKTtcbiAgICAgKiAvLyA9PiAnJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZygtMCk7XG4gICAgICogLy8gPT4gJy0wJ1xuICAgICAqXG4gICAgICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICAgICAqIC8vID0+ICcxLDIsMydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXNzaWducyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyB0byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAgICAgKiBTdWJzZXF1ZW50IHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YCBhbmQgaXMgbG9vc2VseSBiYXNlZCBvblxuICAgICAqIFtgT2JqZWN0LmFzc2lnbmBdKGh0dHBzOi8vbWRuLmlvL09iamVjdC9hc3NpZ24pLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDAuMTAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uYXNzaWduSW5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBCYXIoKSB7XG4gICAgICogICB0aGlzLmMgPSAzO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYiA9IDI7XG4gICAgICogQmFyLnByb3RvdHlwZS5kID0gNDtcbiAgICAgKlxuICAgICAqIF8uYXNzaWduKHsgJ2EnOiAwIH0sIG5ldyBGb28sIG5ldyBCYXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ24gPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSkge1xuICAgICAgaWYgKGlzUHJvdG90eXBlKHNvdXJjZSkgfHwgaXNBcnJheUxpa2Uoc291cmNlKSkge1xuICAgICAgICBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBpdGVyYXRlcyBvdmVyIG93biBhbmRcbiAgICAgKiBpbmhlcml0ZWQgc291cmNlIHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBhbGlhcyBleHRlbmRcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEJhcigpIHtcbiAgICAgKiAgIHRoaXMuYyA9IDM7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5iID0gMjtcbiAgICAgKiBCYXIucHJvdG90eXBlLmQgPSA0O1xuICAgICAqXG4gICAgICogXy5hc3NpZ25Jbih7ICdhJzogMCB9LCBuZXcgRm9vLCBuZXcgQmFyKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMsICdkJzogNCB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbkluID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduSW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgXG4gICAgICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gICAgICogYHVuZGVmaW5lZGAsIGFzc2lnbm1lbnQgaXMgaGFuZGxlZCBieSB0aGUgbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmBcbiAgICAgKiBpcyBpbnZva2VkIHdpdGggZml2ZSBhcmd1bWVudHM6IChvYmpWYWx1ZSwgc3JjVmFsdWUsIGtleSwgb2JqZWN0LCBzb3VyY2UpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICByZXR1cm4gXy5pc1VuZGVmaW5lZChvYmpWYWx1ZSkgPyBzcmNWYWx1ZSA6IG9ialZhbHVlO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIHZhciBkZWZhdWx0cyA9IF8ucGFydGlhbFJpZ2h0KF8uYXNzaWduSW5XaXRoLCBjdXN0b21pemVyKTtcbiAgICAgKlxuICAgICAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0LCBjdXN0b21pemVyKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICAgICAqIHdoaWNoIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgYXNzaWduZWQgdmFsdWVzLiBJZiBgY3VzdG9taXplcmAgcmV0dXJuc1xuICAgICAqIGB1bmRlZmluZWRgLCBhc3NpZ25tZW50IGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gey4uLk9iamVjdH0gc291cmNlcyBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmFzc2lnbkluV2l0aFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICAgICAqICAgcmV0dXJuIF8uaXNVbmRlZmluZWQob2JqVmFsdWUpID8gc3JjVmFsdWUgOiBvYmpWYWx1ZTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgZGVmYXVsdHMgPSBfLnBhcnRpYWxSaWdodChfLmFzc2lnbldpdGgsIGN1c3RvbWl6ZXIpO1xuICAgICAqXG4gICAgICogZGVmYXVsdHMoeyAnYSc6IDEgfSwgeyAnYic6IDIgfSwgeyAnYSc6IDMgfSk7XG4gICAgICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gICAgICovXG4gICAgdmFyIGFzc2lnbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCwgY3VzdG9taXplcik7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGBwYXRoc2Agb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMS4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcGlja2VkIHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfSwgNF0gfTtcbiAgICAgKlxuICAgICAqIF8uYXQob2JqZWN0LCBbJ2FbMF0uYi5jJywgJ2FbMV0nXSk7XG4gICAgICogLy8gPT4gWzMsIDRdXG4gICAgICovXG4gICAgdmFyIGF0ID0gZmxhdFJlc3QoYmFzZUF0KTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IHRoYXQgaW5oZXJpdHMgZnJvbSB0aGUgYHByb3RvdHlwZWAgb2JqZWN0LiBJZiBhXG4gICAgICogYHByb3BlcnRpZXNgIG9iamVjdCBpcyBnaXZlbiwgaXRzIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzXG4gICAgICogYXJlIGFzc2lnbmVkIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBbcHJvcGVydGllc10gVGhlIHByb3BlcnRpZXMgdG8gYXNzaWduIHRvIHRoZSBvYmplY3QuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gU2hhcGUoKSB7XG4gICAgICogICB0aGlzLnggPSAwO1xuICAgICAqICAgdGhpcy55ID0gMDtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBDaXJjbGUoKSB7XG4gICAgICogICBTaGFwZS5jYWxsKHRoaXMpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIENpcmNsZS5wcm90b3R5cGUgPSBfLmNyZWF0ZShTaGFwZS5wcm90b3R5cGUsIHtcbiAgICAgKiAgICdjb25zdHJ1Y3Rvcic6IENpcmNsZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogdmFyIGNpcmNsZSA9IG5ldyBDaXJjbGU7XG4gICAgICogY2lyY2xlIGluc3RhbmNlb2YgQ2lyY2xlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNpcmNsZSBpbnN0YW5jZW9mIFNoYXBlO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjcmVhdGUocHJvdG90eXBlLCBwcm9wZXJ0aWVzKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gYmFzZUNyZWF0ZShwcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIHByb3BlcnRpZXMgPT0gbnVsbCA/IHJlc3VsdCA6IGJhc2VBc3NpZ24ocmVzdWx0LCBwcm9wZXJ0aWVzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gICAgICogb2JqZWN0cyB0byB0aGUgZGVzdGluYXRpb24gb2JqZWN0IGZvciBhbGwgZGVzdGluYXRpb24gcHJvcGVydGllcyB0aGF0XG4gICAgICogcmVzb2x2ZSB0byBgdW5kZWZpbmVkYC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuICAgICAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzRGVlcFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqL1xuICAgIHZhciBkZWZhdWx0cyA9IGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgdmFyIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoO1xuICAgICAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgIH1cblxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHNvdXJjZXNbaW5kZXhdO1xuICAgICAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICAgICAgdmFyIHByb3BzSW5kZXggPSAtMTtcbiAgICAgICAgdmFyIHByb3BzTGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1twcm9wc0luZGV4XTtcbiAgICAgICAgICB2YXIgdmFsdWUgPSBvYmplY3Rba2V5XTtcblxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgIChlcSh2YWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgICAgICAgICAgb2JqZWN0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZGVmYXVsdHNgIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IGFzc2lnbnNcbiAgICAgKiBkZWZhdWx0IHByb3BlcnRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmRlZmF1bHRzXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdHNEZWVwKHsgJ2EnOiB7ICdiJzogMiB9IH0sIHsgJ2EnOiB7ICdiJzogMSwgJ2MnOiAzIH0gfSk7XG4gICAgICogLy8gPT4geyAnYSc6IHsgJ2InOiAyLCAnYyc6IDMgfSB9XG4gICAgICovXG4gICAgdmFyIGRlZmF1bHRzRGVlcCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGFyZ3MucHVzaCh1bmRlZmluZWQsIGN1c3RvbURlZmF1bHRzTWVyZ2UpO1xuICAgICAgcmV0dXJuIGFwcGx5KG1lcmdlV2l0aCwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUga2V5IG9mIHRoZSBmaXJzdFxuICAgICAqIGVsZW1lbnQgYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yIGluc3RlYWQgb2YgdGhlIGVsZW1lbnQgaXRzZWxmLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDEuMS4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAgICAgKiAvLyA9PiAnYmFybmV5JyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRLZXkodXNlcnMsIHsgJ2FnZSc6IDEsICdhY3RpdmUnOiB0cnVlIH0pO1xuICAgICAqIC8vID0+ICdwZWJibGVzJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmluZEtleSh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maW5kS2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmaW5kS2V5KG9iamVjdCwgcHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gYmFzZUZpbmRLZXkob2JqZWN0LCBnZXRJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBiYXNlRm9yT3duKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZpbmRLZXlgIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgZWxlbWVudHMgb2ZcbiAgICAgKiBhIGNvbGxlY3Rpb24gaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfHVuZGVmaW5lZH0gUmV0dXJucyB0aGUga2V5IG9mIHRoZSBtYXRjaGVkIGVsZW1lbnQsXG4gICAgICogIGVsc2UgYHVuZGVmaW5lZGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IHtcbiAgICAgKiAgICdiYXJuZXknOiAgeyAnYWdlJzogMzYsICdhY3RpdmUnOiB0cnVlIH0sXG4gICAgICogICAnZnJlZCc6ICAgIHsgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAgICAgKiAgICdwZWJibGVzJzogeyAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAgICAgKiB9O1xuICAgICAqXG4gICAgICogXy5maW5kTGFzdEtleSh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gICAgICogLy8gPT4gcmV0dXJucyAncGViYmxlcycgYXNzdW1pbmcgYF8uZmluZEtleWAgcmV0dXJucyAnYmFybmV5J1xuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCB7ICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gICAgICogLy8gPT4gJ2Jhcm5leSdcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gICAgICogLy8gPT4gJ2ZyZWQnXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLmZpbmRMYXN0S2V5KHVzZXJzLCAnYWN0aXZlJyk7XG4gICAgICogLy8gPT4gJ3BlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZmluZExhc3RLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBiYXNlRmluZEtleShvYmplY3QsIGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGJhc2VGb3JPd25SaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGFuXG4gICAgICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwga2V5LCBvYmplY3QpLiBJdGVyYXRlZSBmdW5jdGlvbnMgbWF5IGV4aXRcbiAgICAgKiBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluUmlnaHRcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JJbihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLCBrZXlzSW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZm9ySW5gIGV4Y2VwdCB0aGF0IGl0IGl0ZXJhdGVzIG92ZXIgcHJvcGVydGllcyBvZlxuICAgICAqIGBvYmplY3RgIGluIHRoZSBvcHBvc2l0ZSBvcmRlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQHNlZSBfLmZvckluXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvckluUmlnaHQobmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdjJywgJ2InLCB0aGVuICdhJyBhc3N1bWluZyBgXy5mb3JJbmAgbG9ncyAnYScsICdiJywgdGhlbiAnYycuXG4gICAgICovXG4gICAgZnVuY3Rpb24gZm9ySW5SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICAgICAgPyBvYmplY3RcbiAgICAgICAgOiBiYXNlRm9yUmlnaHQob2JqZWN0LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMyksIGtleXNJbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgb3ZlciBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhbiBvYmplY3QgYW5kXG4gICAgICogaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gICAgICogYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS4gSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvblxuICAgICAqIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBzZWUgXy5mb3JPd25SaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy5mb3JPd24obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgY29uc29sZS5sb2coa2V5KTtcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiBMb2dzICdhJyB0aGVuICdiJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBiYXNlRm9yT3duKG9iamVjdCwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZvck93bmAgZXhjZXB0IHRoYXQgaXQgaXRlcmF0ZXMgb3ZlciBwcm9wZXJ0aWVzIG9mXG4gICAgICogYG9iamVjdGAgaW4gdGhlIG9wcG9zaXRlIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAc2VlIF8uZm9yT3duXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmZvck93blJpZ2h0KG5ldyBGb28sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKGtleSk7XG4gICAgICogfSk7XG4gICAgICogLy8gPT4gTG9ncyAnYicgdGhlbiAnYScgYXNzdW1pbmcgYF8uZm9yT3duYCBsb2dzICdhJyB0aGVuICdiJy5cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmb3JPd25SaWdodChvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3JPd25SaWdodChvYmplY3QsIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBlbnVtZXJhYmxlIHByb3BlcnRpZXNcbiAgICAgKiBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW5zcGVjdC5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGZ1bmN0aW9uIG5hbWVzLlxuICAgICAqIEBzZWUgXy5mdW5jdGlvbnNJblxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZ1bmN0aW9ucyhvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXMob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBmdW5jdGlvbiBwcm9wZXJ0eSBuYW1lcyBmcm9tIG93biBhbmQgaW5oZXJpdGVkXG4gICAgICogZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgZnVuY3Rpb24gbmFtZXMuXG4gICAgICogQHNlZSBfLmZ1bmN0aW9uc1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSBfLmNvbnN0YW50KCdhJyk7XG4gICAgICogICB0aGlzLmIgPSBfLmNvbnN0YW50KCdiJyk7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gXy5jb25zdGFudCgnYycpO1xuICAgICAqXG4gICAgICogXy5mdW5jdGlvbnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBmdW5jdGlvbnNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IFtdIDogYmFzZUZ1bmN0aW9ucyhvYmplY3QsIGtleXNJbihvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICAgICAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gICAgICogLy8gPT4gJ2RlZmF1bHQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiB7ICdiJzogMiB9IH07XG4gICAgICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXMob2JqZWN0LCAnYScpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgJ2EuYicpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaGFzKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXMob3RoZXIsICdhJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXMob2JqZWN0LCBwYXRoKSB7XG4gICAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHBhdGhgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBoYXNQYXRoKG9iamVjdCwgcGF0aCwgYmFzZUhhc0luKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgaW52ZXJ0ZWQga2V5cyBhbmQgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqIElmIGBvYmplY3RgIGNvbnRhaW5zIGR1cGxpY2F0ZSB2YWx1ZXMsIHN1YnNlcXVlbnQgdmFsdWVzIG92ZXJ3cml0ZVxuICAgICAqIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjcuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBpbnZlcnRlZCBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfTtcbiAgICAgKlxuICAgICAqIF8uaW52ZXJ0KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6ICdjJywgJzInOiAnYicgfVxuICAgICAqL1xuICAgIHZhciBpbnZlcnQgPSBjcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmXG4gICAgICAgICAgdHlwZW9mIHZhbHVlLnRvU3RyaW5nICE9ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdmFsdWUgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmVzdWx0W3ZhbHVlXSA9IGtleTtcbiAgICB9LCBjb25zdGFudChpZGVudGl0eSkpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pbnZlcnRgIGV4Y2VwdCB0aGF0IHRoZSBpbnZlcnRlZCBvYmplY3QgaXMgZ2VuZXJhdGVkXG4gICAgICogZnJvbSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggZWxlbWVudCBvZiBgb2JqZWN0YCB0aHJ1IGBpdGVyYXRlZWAuIFRoZVxuICAgICAqIGNvcnJlc3BvbmRpbmcgaW52ZXJ0ZWQgdmFsdWUgb2YgZWFjaCBpbnZlcnRlZCBrZXkgaXMgYW4gYXJyYXkgb2Yga2V5c1xuICAgICAqIHJlc3BvbnNpYmxlIGZvciBnZW5lcmF0aW5nIHRoZSBpbnZlcnRlZCB2YWx1ZS4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaW52ZXJ0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgaW52ZXJ0ZWQgb2JqZWN0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAxIH07XG4gICAgICpcbiAgICAgKiBfLmludmVydEJ5KG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnMSc6IFsnYScsICdjJ10sICcyJzogWydiJ10gfVxuICAgICAqXG4gICAgICogXy5pbnZlcnRCeShvYmplY3QsIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICogICByZXR1cm4gJ2dyb3VwJyArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2dyb3VwMSc6IFsnYScsICdjJ10sICdncm91cDInOiBbJ2InXSB9XG4gICAgICovXG4gICAgdmFyIGludmVydEJ5ID0gY3JlYXRlSW52ZXJ0ZXIoZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS50b1N0cmluZyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCwgdmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFt2YWx1ZV0ucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0W3ZhbHVlXSA9IFtrZXldO1xuICAgICAgfVxuICAgIH0sIGdldEl0ZXJhdGVlKTtcblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIG1ldGhvZCBhdCBgcGF0aGAgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBtZXRob2QgdG8gaW52b2tlLlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiBbMSwgMiwgMywgNF0gfSB9XSB9O1xuICAgICAqXG4gICAgICogXy5pbnZva2Uob2JqZWN0LCAnYVswXS5iLmMuc2xpY2UnLCAxLCAzKTtcbiAgICAgKiAvLyA9PiBbMiwgM11cbiAgICAgKi9cbiAgICB2YXIgaW52b2tlID0gYmFzZVJlc3QoYmFzZUludm9rZSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gICAgICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICAgICAqIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLmtleXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogXy5rZXlzKCdoaScpO1xuICAgICAqIC8vID0+IFsnMCcsICcxJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8ua2V5c0luKG5ldyBGb28pO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5tYXBWYWx1ZXNgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAqIHNhbWUgdmFsdWVzIGFzIGBvYmplY3RgIGFuZCBrZXlzIGdlbmVyYXRlZCBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGVcbiAgICAgKiBzdHJpbmcga2V5ZWQgcHJvcGVydHkgb2YgYG9iamVjdGAgdGhydSBgaXRlcmF0ZWVgLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZFxuICAgICAqIHdpdGggdGhyZWUgYXJndW1lbnRzOiAodmFsdWUsIGtleSwgb2JqZWN0KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjguMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgb2JqZWN0LlxuICAgICAqIEBzZWUgXy5tYXBWYWx1ZXNcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXBLZXlzKHsgJ2EnOiAxLCAnYic6IDIgfSwgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICAgICAqICAgcmV0dXJuIGtleSArIHZhbHVlO1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+IHsgJ2ExJzogMSwgJ2IyJzogMiB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwS2V5cyhvYmplY3QsIGl0ZXJhdGVlKSB7XG4gICAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAzKTtcblxuICAgICAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgICAgICBiYXNlQXNzaWduVmFsdWUocmVzdWx0LCBpdGVyYXRlZSh2YWx1ZSwga2V5LCBvYmplY3QpLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gICAgICogYnkgcnVubmluZyBlYWNoIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YCB0aHJ1XG4gICAgICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gICAgICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi40LjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIG9iamVjdC5cbiAgICAgKiBAc2VlIF8ubWFwS2V5c1xuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdXNlcnMgPSB7XG4gICAgICogICAnZnJlZCc6ICAgIHsgJ3VzZXInOiAnZnJlZCcsICAgICdhZ2UnOiA0MCB9LFxuICAgICAqICAgJ3BlYmJsZXMnOiB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWFwVmFsdWVzKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZTsgfSk7XG4gICAgICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAgICAgKiAvLyA9PiB7ICdmcmVkJzogNDAsICdwZWJibGVzJzogMSB9IChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGl0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpO1xuXG4gICAgICBiYXNlRm9yT3duKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGtleSwgb2JqZWN0KSB7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gICAgICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAgICAgKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAgICAgKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAgICAgKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICAgICAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICAgICAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjUuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIHZhciBvdGhlciA9IHtcbiAgICAgKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICAgICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lcmdlYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYCB3aGljaFxuICAgICAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICAgICAqIHByb3BlcnRpZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgLCBtZXJnaW5nIGlzIGhhbmRsZWQgYnkgdGhlXG4gICAgICogbWV0aG9kIGluc3RlYWQuIFRoZSBgY3VzdG9taXplcmAgaXMgaW52b2tlZCB3aXRoIHNpeCBhcmd1bWVudHM6XG4gICAgICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gICAgICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAqICAgICByZXR1cm4gb2JqVmFsdWUuY29uY2F0KHNyY1ZhbHVlKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFsxXSwgJ2InOiBbMl0gfTtcbiAgICAgKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICAgICAqXG4gICAgICogXy5tZXJnZVdpdGgob2JqZWN0LCBvdGhlciwgY3VzdG9taXplcik7XG4gICAgICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICAgICAqL1xuICAgIHZhciBtZXJnZVdpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLnBpY2tgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGVcbiAgICAgKiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IHBhdGhzIG9mIGBvYmplY3RgIHRoYXQgYXJlIG5vdCBvbWl0dGVkLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGNvbnNpZGVyYWJseSBzbG93ZXIgdGhhbiBgXy5waWNrYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIG9taXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLm9taXQob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICB2YXIgb21pdCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgdmFyIGlzRGVlcCA9IGZhbHNlO1xuICAgICAgcGF0aHMgPSBhcnJheU1hcChwYXRocywgZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICBwYXRoID0gY2FzdFBhdGgocGF0aCwgb2JqZWN0KTtcbiAgICAgICAgaXNEZWVwIHx8IChpc0RlZXAgPSBwYXRoLmxlbmd0aCA+IDEpO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH0pO1xuICAgICAgY29weU9iamVjdChvYmplY3QsIGdldEFsbEtleXNJbihvYmplY3QpLCByZXN1bHQpO1xuICAgICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXN1bHQgPSBiYXNlQ2xvbmUocmVzdWx0LCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9GTEFUX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcsIGN1c3RvbU9taXRDbG9uZSk7XG4gICAgICB9XG4gICAgICB2YXIgbGVuZ3RoID0gcGF0aHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICAgIGJhc2VVbnNldChyZXN1bHQsIHBhdGhzW2xlbmd0aF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5waWNrQnlgOyB0aGlzIG1ldGhvZCBjcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZlxuICAgICAqIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIGBvYmplY3RgIHRoYXRcbiAgICAgKiBgcHJlZGljYXRlYCBkb2Vzbid0IHJldHVybiB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0d29cbiAgICAgKiBhcmd1bWVudHM6ICh2YWx1ZSwga2V5KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAnMicsICdjJzogMyB9O1xuICAgICAqXG4gICAgICogXy5vbWl0Qnkob2JqZWN0LCBfLmlzTnVtYmVyKTtcbiAgICAgKiAvLyA9PiB7ICdiJzogJzInIH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBvbWl0Qnkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiBwaWNrQnkob2JqZWN0LCBuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbXBvc2VkIG9mIHRoZSBwaWNrZWQgYG9iamVjdGAgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICAgICAqIEBwYXJhbSB7Li4uKHN0cmluZ3xzdHJpbmdbXSl9IFtwYXRoc10gVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2sob2JqZWN0LCBbJ2EnLCAnYyddKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAgICAgKi9cbiAgICB2YXIgcGljayA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgcGF0aHMpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIG9iamVjdCBjb21wb3NlZCBvZiB0aGUgYG9iamVjdGAgcHJvcGVydGllcyBgcHJlZGljYXRlYCByZXR1cm5zXG4gICAgICogdHJ1dGh5IGZvci4gVGhlIHByZWRpY2F0ZSBpcyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50czogKHZhbHVlLCBrZXkpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgcHJvcGVydHkuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gICAgICpcbiAgICAgKiBfLnBpY2tCeShvYmplY3QsIF8uaXNOdW1iZXIpO1xuICAgICAqIC8vID0+IHsgJ2EnOiAxLCAnYyc6IDMgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBpY2tCeShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wcyA9IGFycmF5TWFwKGdldEFsbEtleXNJbihvYmplY3QpLCBmdW5jdGlvbihwcm9wKSB7XG4gICAgICAgIHJldHVybiBbcHJvcF07XG4gICAgICB9KTtcbiAgICAgIHByZWRpY2F0ZSA9IGdldEl0ZXJhdGVlKHByZWRpY2F0ZSk7XG4gICAgICByZXR1cm4gYmFzZVBpY2tCeShvYmplY3QsIHByb3BzLCBmdW5jdGlvbih2YWx1ZSwgcGF0aCkge1xuICAgICAgICByZXR1cm4gcHJlZGljYXRlKHZhbHVlLCBwYXRoWzBdKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZ2V0YCBleGNlcHQgdGhhdCBpZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXMgYVxuICAgICAqIGZ1bmN0aW9uIGl0J3MgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiBpdHMgcGFyZW50IG9iamVjdCBhbmRcbiAgICAgKiBpdHMgcmVzdWx0IGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gcmVzb2x2ZS5cbiAgICAgKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MxJzogMywgJ2MyJzogXy5jb25zdGFudCg0KSB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzEnKTtcbiAgICAgKiAvLyA9PiAzXG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzInKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnJlc3VsdChvYmplY3QsICdhWzBdLmIuYzMnLCAnZGVmYXVsdCcpO1xuICAgICAqIC8vID0+ICdkZWZhdWx0J1xuICAgICAqXG4gICAgICogXy5yZXN1bHQob2JqZWN0LCAnYVswXS5iLmMzJywgXy5jb25zdGFudCgnZGVmYXVsdCcpKTtcbiAgICAgKiAvLyA9PiAnZGVmYXVsdCdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXN1bHQob2JqZWN0LCBwYXRoLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gICAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgICBsZW5ndGggPSBwYXRoLmxlbmd0aDtcblxuICAgICAgLy8gRW5zdXJlIHRoZSBsb29wIGlzIGVudGVyZWQgd2hlbiBwYXRoIGlzIGVtcHR5LlxuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgb2JqZWN0ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3RbdG9LZXkocGF0aFtpbmRleF0pXTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpbmRleCA9IGxlbmd0aDtcbiAgICAgICAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlLmNhbGwob2JqZWN0KSA6IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIGEgcG9ydGlvbiBvZiBgcGF0aGAgZG9lc24ndCBleGlzdCxcbiAgICAgKiBpdCdzIGNyZWF0ZWQuIEFycmF5cyBhcmUgY3JlYXRlZCBmb3IgbWlzc2luZyBpbmRleCBwcm9wZXJ0aWVzIHdoaWxlIG9iamVjdHNcbiAgICAgKiBhcmUgY3JlYXRlZCBmb3IgYWxsIG90aGVyIG1pc3NpbmcgcHJvcGVydGllcy4gVXNlIGBfLnNldFdpdGhgIHRvIGN1c3RvbWl6ZVxuICAgICAqIGBwYXRoYCBjcmVhdGlvbi5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbeyAnYic6IHsgJ2MnOiAzIH0gfV0gfTtcbiAgICAgKlxuICAgICAqIF8uc2V0KG9iamVjdCwgJ2FbMF0uYi5jJywgNCk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LmFbMF0uYi5jKTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLnNldChvYmplY3QsIFsneCcsICcwJywgJ3knLCAneiddLCA1KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QueFswXS55LnopO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVNldChvYmplY3QsIHBhdGgsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIHRvIHByb2R1Y2UgdGhlIG9iamVjdHMgb2YgYHBhdGhgLiAgSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGBcbiAgICAgKiBwYXRoIGNyZWF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWRcbiAgICAgKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKG5zVmFsdWUsIGtleSwgbnNPYmplY3QpLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gICAgICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdCA9IHt9O1xuICAgICAqXG4gICAgICogXy5zZXRXaXRoKG9iamVjdCwgJ1swXVsxXScsICdhJywgT2JqZWN0KTtcbiAgICAgKiAvLyA9PiB7ICcwJzogeyAnMSc6ICdhJyB9IH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRXaXRoKG9iamVjdCwgcGF0aCwgdmFsdWUsIGN1c3RvbWl6ZXIpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nID8gY3VzdG9taXplciA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IG9iamVjdCA6IGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQtdmFsdWUgcGFpcnMgZm9yIGBvYmplY3RgXG4gICAgICogd2hpY2ggY2FuIGJlIGNvbnN1bWVkIGJ5IGBfLmZyb21QYWlyc2AuIElmIGBvYmplY3RgIGlzIGEgbWFwIG9yIHNldCwgaXRzXG4gICAgICogZW50cmllcyBhcmUgcmV0dXJuZWQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAYWxpYXMgZW50cmllc1xuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gW1snYScsIDFdLCBbJ2InLCAyXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlycyA9IGNyZWF0ZVRvUGFpcnMoa2V5cyk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkLXZhbHVlIHBhaXJzXG4gICAgICogZm9yIGBvYmplY3RgIHdoaWNoIGNhbiBiZSBjb25zdW1lZCBieSBgXy5mcm9tUGFpcnNgLiBJZiBgb2JqZWN0YCBpcyBhIG1hcFxuICAgICAqIG9yIHNldCwgaXRzIGVudHJpZXMgYXJlIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGFsaWFzIGVudHJpZXNJblxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIEZvbygpIHtcbiAgICAgKiAgIHRoaXMuYSA9IDE7XG4gICAgICogICB0aGlzLmIgPSAyO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gICAgICpcbiAgICAgKiBfLnRvUGFpcnNJbihuZXcgRm9vKTtcbiAgICAgKiAvLyA9PiBbWydhJywgMV0sIFsnYicsIDJdLCBbJ2MnLCAzXV0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAgICAgKi9cbiAgICB2YXIgdG9QYWlyc0luID0gY3JlYXRlVG9QYWlycyhrZXlzSW4pO1xuXG4gICAgLyoqXG4gICAgICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICAgICAqIGBhY2N1bXVsYXRvcmAgb2JqZWN0IHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgcnVubmluZyBlYWNoIG9mIGl0cyBvd25cbiAgICAgKiBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIHRocnUgYGl0ZXJhdGVlYCwgd2l0aCBlYWNoIGludm9jYXRpb25cbiAgICAgKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gICAgICogcHJvdmlkZWQsIGEgbmV3IG9iamVjdCB3aXRoIHRoZSBzYW1lIGBbW1Byb3RvdHlwZV1dYCB3aWxsIGJlIHVzZWQuIFRoZVxuICAgICAqIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBmb3VyIGFyZ3VtZW50czogKGFjY3VtdWxhdG9yLCB2YWx1ZSwga2V5LCBvYmplY3QpLlxuICAgICAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjMuMFxuICAgICAqIEBjYXRlZ29yeSBPYmplY3RcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICAgICAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgY3VzdG9tIGFjY3VtdWxhdG9yIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAgICAgKiAgIHJlc3VsdC5wdXNoKG4gKj0gbik7XG4gICAgICogICByZXR1cm4gbiAlIDIgPT0gMDtcbiAgICAgKiB9LCBbXSk7XG4gICAgICogLy8gPT4gWzQsIDldXG4gICAgICpcbiAgICAgKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gICAgICogICAocmVzdWx0W3ZhbHVlXSB8fCAocmVzdWx0W3ZhbHVlXSA9IFtdKSkucHVzaChrZXkpO1xuICAgICAqIH0sIHt9KTtcbiAgICAgKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yKSB7XG4gICAgICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICAgICAgaXNBcnJMaWtlID0gaXNBcnIgfHwgaXNCdWZmZXIob2JqZWN0KSB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KTtcblxuICAgICAgaXRlcmF0ZWUgPSBnZXRJdGVyYXRlZShpdGVyYXRlZSwgNCk7XG4gICAgICBpZiAoYWNjdW11bGF0b3IgPT0gbnVsbCkge1xuICAgICAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgICAgIGlmIChpc0Fyckxpa2UpIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IGlzQXJyID8gbmV3IEN0b3IgOiBbXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgICAgYWNjdW11bGF0b3IgPSBpc0Z1bmN0aW9uKEN0b3IpID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSkgOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBhY2N1bXVsYXRvciA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAoaXNBcnJMaWtlID8gYXJyYXlFYWNoIDogYmFzZUZvck93bikob2JqZWN0LCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHByb3BlcnR5IGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHVuc2V0LlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvcGVydHkgaXMgZGVsZXRlZCwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDcgfSB9XSB9O1xuICAgICAqIF8udW5zZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QpO1xuICAgICAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IHt9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVuc2V0KG9iamVjdCwgWydhJywgJzAnLCAnYicsICdjJ10pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdCk7XG4gICAgICogLy8gPT4geyAnYSc6IFt7ICdiJzoge30gfV0gfTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bnNldChvYmplY3QsIHBhdGgpIHtcbiAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHRydWUgOiBiYXNlVW5zZXQob2JqZWN0LCBwYXRoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLnNldGAgZXhjZXB0IHRoYXQgYWNjZXB0cyBgdXBkYXRlcmAgdG8gcHJvZHVjZSB0aGVcbiAgICAgKiB2YWx1ZSB0byBzZXQuIFVzZSBgXy51cGRhdGVXaXRoYCB0byBjdXN0b21pemUgYHBhdGhgIGNyZWF0aW9uLiBUaGUgYHVwZGF0ZXJgXG4gICAgICogaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZShvYmplY3QsICdhWzBdLmIuYycsIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG4gKiBuOyB9KTtcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3QuYVswXS5iLmMpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKlxuICAgICAqIF8udXBkYXRlKG9iamVjdCwgJ3hbMF0ueS56JywgZnVuY3Rpb24obikgeyByZXR1cm4gbiA/IG4gKyAxIDogMDsgfSk7XG4gICAgICogY29uc29sZS5sb2cob2JqZWN0LnhbMF0ueS56KTtcbiAgICAgKiAvLyA9PiAwXG4gICAgICovXG4gICAgZnVuY3Rpb24gdXBkYXRlKG9iamVjdCwgcGF0aCwgdXBkYXRlcikge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gb2JqZWN0IDogYmFzZVVwZGF0ZShvYmplY3QsIHBhdGgsIGNhc3RGdW5jdGlvbih1cGRhdGVyKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51cGRhdGVgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGN1c3RvbWl6ZXJgIHdoaWNoIGlzXG4gICAgICogaW52b2tlZCB0byBwcm9kdWNlIHRoZSBvYmplY3RzIG9mIGBwYXRoYC4gIElmIGBjdXN0b21pemVyYCByZXR1cm5zIGB1bmRlZmluZWRgXG4gICAgICogcGF0aCBjcmVhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYCBpcyBpbnZva2VkXG4gICAgICogd2l0aCB0aHJlZSBhcmd1bWVudHM6IChuc1ZhbHVlLCBrZXksIG5zT2JqZWN0KS5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuNi4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIHNldC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSB1cGRhdGVyIFRoZSBmdW5jdGlvbiB0byBwcm9kdWNlIHRoZSB1cGRhdGVkIHZhbHVlLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0ge307XG4gICAgICpcbiAgICAgKiBfLnVwZGF0ZVdpdGgob2JqZWN0LCAnWzBdWzFdJywgXy5jb25zdGFudCgnYScpLCBPYmplY3QpO1xuICAgICAqIC8vID0+IHsgJzAnOiB7ICcxJzogJ2EnIH0gfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHVwZGF0ZVdpdGgob2JqZWN0LCBwYXRoLCB1cGRhdGVyLCBjdXN0b21pemVyKSB7XG4gICAgICBjdXN0b21pemVyID0gdHlwZW9mIGN1c3RvbWl6ZXIgPT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbWl6ZXIgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBvYmplY3QgOiBiYXNlVXBkYXRlKG9iamVjdCwgcGF0aCwgY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpLCBjdXN0b21pemVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydHkgdmFsdWVzIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgT2JqZWN0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiBGb28oKSB7XG4gICAgICogICB0aGlzLmEgPSAxO1xuICAgICAqICAgdGhpcy5iID0gMjtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICAgICAqXG4gICAgICogXy52YWx1ZXMobmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDJdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICpcbiAgICAgKiBfLnZhbHVlcygnaGknKTtcbiAgICAgKiAvLyA9PiBbJ2gnLCAnaSddXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gW10gOiBiYXNlVmFsdWVzKG9iamVjdCwga2V5cyhvYmplY3QpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0eVxuICAgICAqIHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IE9iamVjdFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogZnVuY3Rpb24gRm9vKCkge1xuICAgICAqICAgdGhpcy5hID0gMTtcbiAgICAgKiAgIHRoaXMuYiA9IDI7XG4gICAgICogfVxuICAgICAqXG4gICAgICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAgICAgKlxuICAgICAqIF8udmFsdWVzSW4obmV3IEZvbyk7XG4gICAgICogLy8gPT4gWzEsIDIsIDNdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gICAgICovXG4gICAgZnVuY3Rpb24gdmFsdWVzSW4ob2JqZWN0KSB7XG4gICAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzSW4ob2JqZWN0KSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ2xhbXBzIGBudW1iZXJgIHdpdGhpbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byBjbGFtcC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xvd2VyXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHVwcGVyIFRoZSB1cHBlciBib3VuZC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjbGFtcGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jbGFtcCgtMTAsIC01LCA1KTtcbiAgICAgKiAvLyA9PiAtNVxuICAgICAqXG4gICAgICogXy5jbGFtcCgxMCwgLTUsIDUpO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjbGFtcChudW1iZXIsIGxvd2VyLCB1cHBlcikge1xuICAgICAgaWYgKHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAodXBwZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB1cHBlciA9IHRvTnVtYmVyKHVwcGVyKTtcbiAgICAgICAgdXBwZXIgPSB1cHBlciA9PT0gdXBwZXIgPyB1cHBlciA6IDA7XG4gICAgICB9XG4gICAgICBpZiAobG93ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsb3dlciA9IHRvTnVtYmVyKGxvd2VyKTtcbiAgICAgICAgbG93ZXIgPSBsb3dlciA9PT0gbG93ZXIgPyBsb3dlciA6IDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZUNsYW1wKHRvTnVtYmVyKG51bWJlciksIGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGBuYCBpcyBiZXR3ZWVuIGBzdGFydGAgYW5kIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgYGVuZGAuIElmXG4gICAgICogYGVuZGAgaXMgbm90IHNwZWNpZmllZCwgaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqIElmIGBzdGFydGAgaXMgZ3JlYXRlciB0aGFuIGBlbmRgIHRoZSBwYXJhbXMgYXJlIHN3YXBwZWQgdG8gc3VwcG9ydFxuICAgICAqIG5lZ2F0aXZlIHJhbmdlcy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjMuMFxuICAgICAqIEBjYXRlZ29yeSBOdW1iZXJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gY2hlY2suXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBudW1iZXJgIGlzIGluIHRoZSByYW5nZSwgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBzZWUgXy5yYW5nZSwgXy5yYW5nZVJpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgzLCAyLCA0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoNCwgOCk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5pblJhbmdlKDQsIDIpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoMiwgMik7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSgxLjIsIDIpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uaW5SYW5nZSg1LjIsIDQpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLmluUmFuZ2UoLTMsIC0yLCAtNik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvRmluaXRlKHN0YXJ0KTtcbiAgICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBlbmQgPSBzdGFydDtcbiAgICAgICAgc3RhcnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICAgIH1cbiAgICAgIG51bWJlciA9IHRvTnVtYmVyKG51bWJlcik7XG4gICAgICByZXR1cm4gYmFzZUluUmFuZ2UobnVtYmVyLCBzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9kdWNlcyBhIHJhbmRvbSBudW1iZXIgYmV0d2VlbiB0aGUgaW5jbHVzaXZlIGBsb3dlcmAgYW5kIGB1cHBlcmAgYm91bmRzLlxuICAgICAqIElmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHByb3ZpZGVkIGEgbnVtYmVyIGJldHdlZW4gYDBgIGFuZCB0aGUgZ2l2ZW4gbnVtYmVyXG4gICAgICogaXMgcmV0dXJuZWQuIElmIGBmbG9hdGluZ2AgaXMgYHRydWVgLCBvciBlaXRoZXIgYGxvd2VyYCBvciBgdXBwZXJgIGFyZVxuICAgICAqIGZsb2F0cywgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgaXMgcmV0dXJuZWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTnVtYmVyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsb3dlcj0wXSBUaGUgbG93ZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFt1cHBlcj0xXSBUaGUgdXBwZXIgYm91bmQuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbZmxvYXRpbmddIFNwZWNpZnkgcmV0dXJuaW5nIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHJhbmRvbSBudW1iZXIuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDAsIDUpO1xuICAgICAqIC8vID0+IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1KTtcbiAgICAgKiAvLyA9PiBhbHNvIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA1XG4gICAgICpcbiAgICAgKiBfLnJhbmRvbSg1LCB0cnVlKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDAgYW5kIDVcbiAgICAgKlxuICAgICAqIF8ucmFuZG9tKDEuMiwgNS4yKTtcbiAgICAgKiAvLyA9PiBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBiZXR3ZWVuIDEuMiBhbmQgNS4yXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmFuZG9tKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpIHtcbiAgICAgIGlmIChmbG9hdGluZyAmJiB0eXBlb2YgZmxvYXRpbmcgIT0gJ2Jvb2xlYW4nICYmIGlzSXRlcmF0ZWVDYWxsKGxvd2VyLCB1cHBlciwgZmxvYXRpbmcpKSB7XG4gICAgICAgIHVwcGVyID0gZmxvYXRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoZmxvYXRpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIHVwcGVyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gdXBwZXI7XG4gICAgICAgICAgdXBwZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGxvd2VyID09ICdib29sZWFuJykge1xuICAgICAgICAgIGZsb2F0aW5nID0gbG93ZXI7XG4gICAgICAgICAgbG93ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA9PT0gdW5kZWZpbmVkICYmIHVwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbG93ZXIgPSAwO1xuICAgICAgICB1cHBlciA9IDE7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbG93ZXIgPSB0b0Zpbml0ZShsb3dlcik7XG4gICAgICAgIGlmICh1cHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdXBwZXIgPSBsb3dlcjtcbiAgICAgICAgICBsb3dlciA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXBwZXIgPSB0b0Zpbml0ZSh1cHBlcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsb3dlciA+IHVwcGVyKSB7XG4gICAgICAgIHZhciB0ZW1wID0gbG93ZXI7XG4gICAgICAgIGxvd2VyID0gdXBwZXI7XG4gICAgICAgIHVwcGVyID0gdGVtcDtcbiAgICAgIH1cbiAgICAgIGlmIChmbG9hdGluZyB8fCBsb3dlciAlIDEgfHwgdXBwZXIgJSAxKSB7XG4gICAgICAgIHZhciByYW5kID0gbmF0aXZlUmFuZG9tKCk7XG4gICAgICAgIHJldHVybiBuYXRpdmVNaW4obG93ZXIgKyAocmFuZCAqICh1cHBlciAtIGxvd2VyICsgZnJlZVBhcnNlRmxvYXQoJzFlLScgKyAoKHJhbmQgKyAnJykubGVuZ3RoIC0gMSkpKSksIHVwcGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBiYXNlUmFuZG9tKGxvd2VyLCB1cHBlcik7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG8gW2NhbWVsIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhbWVsQ2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjYW1lbCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb0JhcidcbiAgICAgKlxuICAgICAqIF8uY2FtZWxDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdmb29CYXInXG4gICAgICpcbiAgICAgKiBfLmNhbWVsQ2FzZSgnX19GT09fQkFSX18nKTtcbiAgICAgKiAvLyA9PiAnZm9vQmFyJ1xuICAgICAqL1xuICAgIHZhciBjYW1lbENhc2UgPSBjcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCwgd29yZCwgaW5kZXgpIHtcbiAgICAgIHdvcmQgPSB3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gY2FwaXRhbGl6ZSh3b3JkKSA6IHdvcmQpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBgc3RyaW5nYCB0byB1cHBlciBjYXNlIGFuZCB0aGUgcmVtYWluaW5nXG4gICAgICogdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjYXBpdGFsaXplLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNhcGl0YWxpemVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jYXBpdGFsaXplKCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZyZWQnXG4gICAgICovXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHJpbmcpIHtcbiAgICAgIHJldHVybiB1cHBlckZpcnN0KHRvU3RyaW5nKHN0cmluZykudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVidXJycyBgc3RyaW5nYCBieSBjb252ZXJ0aW5nXG4gICAgICogW0xhdGluLTEgU3VwcGxlbWVudF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW4tMV9TdXBwbGVtZW50XyhVbmljb2RlX2Jsb2NrKSNDaGFyYWN0ZXJfdGFibGUpXG4gICAgICogYW5kIFtMYXRpbiBFeHRlbmRlZC1BXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MYXRpbl9FeHRlbmRlZC1BKVxuICAgICAqIGxldHRlcnMgdG8gYmFzaWMgTGF0aW4gbGV0dGVycyBhbmQgcmVtb3ZpbmdcbiAgICAgKiBbY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Db21iaW5pbmdfRGlhY3JpdGljYWxfTWFya3MpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGRlYnVyci5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBkZWJ1cnJlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVidXJyKCdkw6lqw6AgdnUnKTtcbiAgICAgKiAvLyA9PiAnZGVqYSB2dSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkZWJ1cnIoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIHN0cmluZyAmJiBzdHJpbmcucmVwbGFjZShyZUxhdGluLCBkZWJ1cnJMZXR0ZXIpLnJlcGxhY2UocmVDb21ib01hcmssICcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHN0cmluZ2AgZW5kcyB3aXRoIHRoZSBnaXZlbiB0YXJnZXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFt0YXJnZXRdIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3Bvc2l0aW9uPXN0cmluZy5sZW5ndGhdIFRoZSBwb3NpdGlvbiB0byBzZWFyY2ggdXAgdG8uXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBzdHJpbmdgIGVuZHMgd2l0aCBgdGFyZ2V0YCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVuZHNXaXRoKCdhYmMnLCAnYycpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJyk7XG4gICAgICogLy8gPT4gZmFsc2VcbiAgICAgKlxuICAgICAqIF8uZW5kc1dpdGgoJ2FiYycsICdiJywgMik7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVuZHNXaXRoKHN0cmluZywgdGFyZ2V0LCBwb3NpdGlvbikge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHRhcmdldCA9IGJhc2VUb1N0cmluZyh0YXJnZXQpO1xuXG4gICAgICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcbiAgICAgIHBvc2l0aW9uID0gcG9zaXRpb24gPT09IHVuZGVmaW5lZFxuICAgICAgICA/IGxlbmd0aFxuICAgICAgICA6IGJhc2VDbGFtcCh0b0ludGVnZXIocG9zaXRpb24pLCAwLCBsZW5ndGgpO1xuXG4gICAgICB2YXIgZW5kID0gcG9zaXRpb247XG4gICAgICBwb3NpdGlvbiAtPSB0YXJnZXQubGVuZ3RoO1xuICAgICAgcmV0dXJuIHBvc2l0aW9uID49IDAgJiYgc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBlbmQpID09IHRhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyB0aGUgY2hhcmFjdGVycyBcIiZcIiwgXCI8XCIsIFwiPlwiLCAnXCInLCBhbmQgXCInXCIgaW4gYHN0cmluZ2AgdG8gdGhlaXJcbiAgICAgKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTm8gb3RoZXIgY2hhcmFjdGVycyBhcmUgZXNjYXBlZC4gVG8gZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIFRob3VnaCB0aGUgXCI+XCIgY2hhcmFjdGVyIGlzIGVzY2FwZWQgZm9yIHN5bW1ldHJ5LCBjaGFyYWN0ZXJzIGxpa2VcbiAgICAgKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICAgICAqIHVubGVzcyB0aGV5J3JlIHBhcnQgb2YgYSB0YWcgb3IgdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLiBTZWVcbiAgICAgKiBbTWF0aGlhcyBCeW5lbnMncyBhcnRpY2xlXShodHRwczovL21hdGhpYXNieW5lbnMuYmUvbm90ZXMvYW1iaWd1b3VzLWFtcGVyc2FuZHMpXG4gICAgICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICpcbiAgICAgKiBXaGVuIHdvcmtpbmcgd2l0aCBIVE1MIHlvdSBzaG91bGQgYWx3YXlzXG4gICAgICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAgICAgKiBYU1MgdmVjdG9ycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZXNjYXBlKCdmcmVkLCBiYXJuZXksICYgcGViYmxlcycpO1xuICAgICAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gZXNjYXBlKHN0cmluZykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHJldHVybiAoc3RyaW5nICYmIHJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLCBlc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXNjYXBlcyB0aGUgYFJlZ0V4cGAgc3BlY2lhbCBjaGFyYWN0ZXJzIFwiXlwiLCBcIiRcIiwgXCJcXFwiLCBcIi5cIiwgXCIqXCIsIFwiK1wiLFxuICAgICAqIFwiP1wiLCBcIihcIiwgXCIpXCIsIFwiW1wiLCBcIl1cIiwgXCJ7XCIsIFwifVwiLCBhbmQgXCJ8XCIgaW4gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmVzY2FwZVJlZ0V4cCgnW2xvZGFzaF0oaHR0cHM6Ly9sb2Rhc2guY29tLyknKTtcbiAgICAgKiAvLyA9PiAnXFxbbG9kYXNoXFxdXFwoaHR0cHM6Ly9sb2Rhc2hcXC5jb20vXFwpJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHJpbmcpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1JlZ0V4cENoYXIudGVzdChzdHJpbmcpKVxuICAgICAgICA/IHN0cmluZy5yZXBsYWNlKHJlUmVnRXhwQ2hhciwgJ1xcXFwkJicpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW2tlYmFiIGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9jYXNlI1NwZWNpYWxfY2FzZV9zdHlsZXMpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUga2ViYWIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmtlYmFiQ2FzZSgnRm9vIEJhcicpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb28tYmFyJ1xuICAgICAqXG4gICAgICogXy5rZWJhYkNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2Zvby1iYXInXG4gICAgICovXG4gICAgdmFyIGtlYmFiQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICctJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgLCBhcyBzcGFjZSBzZXBhcmF0ZWQgd29yZHMsIHRvIGxvd2VyIGNhc2UuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBsb3dlciBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubG93ZXJDYXNlKCctLUZvby1CYXItLScpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdmb28gYmFyJ1xuICAgICAqXG4gICAgICogXy5sb3dlckNhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ2ZvbyBiYXInXG4gICAgICovXG4gICAgdmFyIGxvd2VyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gbG93ZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubG93ZXJGaXJzdCgnRnJlZCcpO1xuICAgICAqIC8vID0+ICdmcmVkJ1xuICAgICAqXG4gICAgICogXy5sb3dlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ2ZSRUQnXG4gICAgICovXG4gICAgdmFyIGxvd2VyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvTG93ZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBQYWRzIGBzdHJpbmdgIG9uIHRoZSBsZWZ0IGFuZCByaWdodCBzaWRlcyBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC5cbiAgICAgKiBQYWRkaW5nIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGNhbid0IGJlIGV2ZW5seSBkaXZpZGVkIGJ5IGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkKCdhYmMnLCA4KTtcbiAgICAgKiAvLyA9PiAnICBhYmMgICAnXG4gICAgICpcbiAgICAgKiBfLnBhZCgnYWJjJywgOCwgJ18tJyk7XG4gICAgICogLy8gPT4gJ18tYWJjXy1fJ1xuICAgICAqXG4gICAgICogXy5wYWQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkKHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIGlmICghbGVuZ3RoIHx8IHN0ckxlbmd0aCA+PSBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBtaWQgPSAobGVuZ3RoIC0gc3RyTGVuZ3RoKSAvIDI7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBjcmVhdGVQYWRkaW5nKG5hdGl2ZUZsb29yKG1pZCksIGNoYXJzKSArXG4gICAgICAgIHN0cmluZyArXG4gICAgICAgIGNyZWF0ZVBhZGRpbmcobmF0aXZlQ2VpbChtaWQpLCBjaGFycylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgcmlnaHQgc2lkZSBpZiBpdCdzIHNob3J0ZXIgdGhhbiBgbGVuZ3RoYC4gUGFkZGluZ1xuICAgICAqIGNoYXJhY3RlcnMgYXJlIHRydW5jYXRlZCBpZiB0aGV5IGV4Y2VlZCBgbGVuZ3RoYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBwYWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9MF0gVGhlIHBhZGRpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9JyAnXSBUaGUgc3RyaW5nIHVzZWQgYXMgcGFkZGluZy5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBwYWRkZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnBhZEVuZCgnYWJjJywgNik7XG4gICAgICogLy8gPT4gJ2FiYyAgICdcbiAgICAgKlxuICAgICAqIF8ucGFkRW5kKCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjXy1fJ1xuICAgICAqXG4gICAgICogXy5wYWRFbmQoJ2FiYycsIDMpO1xuICAgICAqIC8vID0+ICdhYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gcGFkRW5kKHN0cmluZywgbGVuZ3RoLCBjaGFycykge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGxlbmd0aCA9IHRvSW50ZWdlcihsZW5ndGgpO1xuXG4gICAgICB2YXIgc3RyTGVuZ3RoID0gbGVuZ3RoID8gc3RyaW5nU2l6ZShzdHJpbmcpIDogMDtcbiAgICAgIHJldHVybiAobGVuZ3RoICYmIHN0ckxlbmd0aCA8IGxlbmd0aClcbiAgICAgICAgPyAoc3RyaW5nICsgY3JlYXRlUGFkZGluZyhsZW5ndGggLSBzdHJMZW5ndGgsIGNoYXJzKSlcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFkcyBgc3RyaW5nYCBvbiB0aGUgbGVmdCBzaWRlIGlmIGl0J3Mgc2hvcnRlciB0aGFuIGBsZW5ndGhgLiBQYWRkaW5nXG4gICAgICogY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIGlmIHRoZXkgZXhjZWVkIGBsZW5ndGhgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHBhZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD0wXSBUaGUgcGFkZGluZyBsZW5ndGguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz0nICddIFRoZSBzdHJpbmcgdXNlZCBhcyBwYWRkaW5nLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHBhZGRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucGFkU3RhcnQoJ2FiYycsIDYpO1xuICAgICAqIC8vID0+ICcgICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnBhZFN0YXJ0KCdhYmMnLCA2LCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnXy1fYWJjJ1xuICAgICAqXG4gICAgICogXy5wYWRTdGFydCgnYWJjJywgMyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwYWRTdGFydChzdHJpbmcsIGxlbmd0aCwgY2hhcnMpIHtcbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBsZW5ndGggPSB0b0ludGVnZXIobGVuZ3RoKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IGxlbmd0aCA/IHN0cmluZ1NpemUoc3RyaW5nKSA6IDA7XG4gICAgICByZXR1cm4gKGxlbmd0aCAmJiBzdHJMZW5ndGggPCBsZW5ndGgpXG4gICAgICAgID8gKGNyZWF0ZVBhZGRpbmcobGVuZ3RoIC0gc3RyTGVuZ3RoLCBjaGFycykgKyBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvIGFuIGludGVnZXIgb2YgdGhlIHNwZWNpZmllZCByYWRpeC4gSWYgYHJhZGl4YCBpc1xuICAgICAqIGB1bmRlZmluZWRgIG9yIGAwYCwgYSBgcmFkaXhgIG9mIGAxMGAgaXMgdXNlZCB1bmxlc3MgYHZhbHVlYCBpcyBhXG4gICAgICogaGV4YWRlY2ltYWwsIGluIHdoaWNoIGNhc2UgYSBgcmFkaXhgIG9mIGAxNmAgaXMgdXNlZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBhbGlnbnMgd2l0aCB0aGVcbiAgICAgKiBbRVM1IGltcGxlbWVudGF0aW9uXShodHRwczovL2VzNS5naXRodWIuaW8vI3gxNS4xLjIuMikgb2YgYHBhcnNlSW50YC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAxLjEuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3JhZGl4PTEwXSBUaGUgcmFkaXggdG8gaW50ZXJwcmV0IGB2YWx1ZWAgYnkuXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5wYXJzZUludCgnMDgnKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1hcChbJzYnLCAnMDgnLCAnMTAnXSwgXy5wYXJzZUludCk7XG4gICAgICogLy8gPT4gWzYsIDgsIDEwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgsIGd1YXJkKSB7XG4gICAgICBpZiAoZ3VhcmQgfHwgcmFkaXggPT0gbnVsbCkge1xuICAgICAgICByYWRpeCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHJhZGl4KSB7XG4gICAgICAgIHJhZGl4ID0gK3JhZGl4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hdGl2ZVBhcnNlSW50KHRvU3RyaW5nKHN0cmluZykucmVwbGFjZShyZVRyaW1TdGFydCwgJycpLCByYWRpeCB8fCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBlYXRzIHRoZSBnaXZlbiBzdHJpbmcgYG5gIHRpbWVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHJlcGVhdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MV0gVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXBlYXQgdGhlIHN0cmluZy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJlcGVhdGVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yZXBlYXQoJyonLCAzKTtcbiAgICAgKiAvLyA9PiAnKioqJ1xuICAgICAqXG4gICAgICogXy5yZXBlYXQoJ2FiYycsIDIpO1xuICAgICAqIC8vID0+ICdhYmNhYmMnXG4gICAgICpcbiAgICAgKiBfLnJlcGVhdCgnYWJjJywgMCk7XG4gICAgICogLy8gPT4gJydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiByZXBlYXQoc3RyaW5nLCBuLCBndWFyZCkge1xuICAgICAgaWYgKChndWFyZCA/IGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgbiwgZ3VhcmQpIDogbiA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBuID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG4gPSB0b0ludGVnZXIobik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYmFzZVJlcGVhdCh0b1N0cmluZyhzdHJpbmcpLCBuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBtYXRjaGVzIGZvciBgcGF0dGVybmAgaW4gYHN0cmluZ2Agd2l0aCBgcmVwbGFjZW1lbnRgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BTdHJpbmcjcmVwbGFjZWBdKGh0dHBzOi8vbWRuLmlvL1N0cmluZy9yZXBsYWNlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBtb2RpZnkuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbnxzdHJpbmd9IHJlcGxhY2VtZW50IFRoZSBtYXRjaCByZXBsYWNlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBtb2RpZmllZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmVwbGFjZSgnSGkgRnJlZCcsICdGcmVkJywgJ0Jhcm5leScpO1xuICAgICAqIC8vID0+ICdIaSBCYXJuZXknXG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVwbGFjZSgpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgIHN0cmluZyA9IHRvU3RyaW5nKGFyZ3NbMF0pO1xuXG4gICAgICByZXR1cm4gYXJncy5sZW5ndGggPCAzID8gc3RyaW5nIDogc3RyaW5nLnJlcGxhY2UoYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AgdG9cbiAgICAgKiBbc25ha2UgY2FzZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU25ha2VfY2FzZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzbmFrZSBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc25ha2VDYXNlKCdGb28gQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnZm9vQmFyJyk7XG4gICAgICogLy8gPT4gJ2Zvb19iYXInXG4gICAgICpcbiAgICAgKiBfLnNuYWtlQ2FzZSgnLS1GT08tQkFSLS0nKTtcbiAgICAgKiAvLyA9PiAnZm9vX2JhcidcbiAgICAgKi9cbiAgICB2YXIgc25ha2VDYXNlID0gY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsIHdvcmQsIGluZGV4KSB7XG4gICAgICByZXR1cm4gcmVzdWx0ICsgKGluZGV4ID8gJ18nIDogJycpICsgd29yZC50b0xvd2VyQ2FzZSgpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogU3BsaXRzIGBzdHJpbmdgIGJ5IGBzZXBhcmF0b3JgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGJhc2VkIG9uXG4gICAgICogW2BTdHJpbmcjc3BsaXRgXShodHRwczovL21kbi5pby9TdHJpbmcvc3BsaXQpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHNwbGl0LlxuICAgICAqIEBwYXJhbSB7UmVnRXhwfHN0cmluZ30gc2VwYXJhdG9yIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byBzcGxpdCBieS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW2xpbWl0XSBUaGUgbGVuZ3RoIHRvIHRydW5jYXRlIHJlc3VsdHMgdG8uXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzdHJpbmcgc2VnbWVudHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3BsaXQoJ2EtYi1jJywgJy0nLCAyKTtcbiAgICAgKiAvLyA9PiBbJ2EnLCAnYiddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICBpZiAobGltaXQgJiYgdHlwZW9mIGxpbWl0ICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgc2VwYXJhdG9yLCBsaW1pdCkpIHtcbiAgICAgICAgc2VwYXJhdG9yID0gbGltaXQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBsaW1pdCA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfQVJSQVlfTEVOR1RIIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAoIWxpbWl0KSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBpZiAoc3RyaW5nICYmIChcbiAgICAgICAgICAgIHR5cGVvZiBzZXBhcmF0b3IgPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICAgIChzZXBhcmF0b3IgIT0gbnVsbCAmJiAhaXNSZWdFeHAoc2VwYXJhdG9yKSlcbiAgICAgICAgICApKSB7XG4gICAgICAgIHNlcGFyYXRvciA9IGJhc2VUb1N0cmluZyhzZXBhcmF0b3IpO1xuICAgICAgICBpZiAoIXNlcGFyYXRvciAmJiBoYXNVbmljb2RlKHN0cmluZykpIHtcbiAgICAgICAgICByZXR1cm4gY2FzdFNsaWNlKHN0cmluZ1RvQXJyYXkoc3RyaW5nKSwgMCwgbGltaXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RyaW5nLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGBzdHJpbmdgIHRvXG4gICAgICogW3N0YXJ0IGNhc2VdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xldHRlcl9jYXNlI1N0eWxpc3RpY19vcl9zcGVjaWFsaXNlZF91c2FnZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdGFydCBjYXNlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3RhcnRDYXNlKCctLWZvby1iYXItLScpO1xuICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGb28gQmFyJ1xuICAgICAqXG4gICAgICogXy5zdGFydENhc2UoJ19fRk9PX0JBUl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHN0YXJ0Q2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHVwcGVyRmlyc3Qod29yZCk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgYHN0cmluZ2Agc3RhcnRzIHdpdGggdGhlIGdpdmVuIHRhcmdldCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3RhcmdldF0gVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcG9zaXRpb249MF0gVGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgc3RyaW5nYCBzdGFydHMgd2l0aCBgdGFyZ2V0YCxcbiAgICAgKiAgZWxzZSBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdhJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogXy5zdGFydHNXaXRoKCdhYmMnLCAnYicpO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICpcbiAgICAgKiBfLnN0YXJ0c1dpdGgoJ2FiYycsICdiJywgMSk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyaW5nLCB0YXJnZXQsIHBvc2l0aW9uKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbiA9PSBudWxsXG4gICAgICAgID8gMFxuICAgICAgICA6IGJhc2VDbGFtcCh0b0ludGVnZXIocG9zaXRpb24pLCAwLCBzdHJpbmcubGVuZ3RoKTtcblxuICAgICAgdGFyZ2V0ID0gYmFzZVRvU3RyaW5nKHRhcmdldCk7XG4gICAgICByZXR1cm4gc3RyaW5nLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIHRhcmdldC5sZW5ndGgpID09IHRhcmdldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24gdGhhdCBjYW4gaW50ZXJwb2xhdGUgZGF0YSBwcm9wZXJ0aWVzXG4gICAgICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAgICAgKiBcImVzY2FwZVwiIGRlbGltaXRlcnMsIGFuZCBleGVjdXRlIEphdmFTY3JpcHQgaW4gXCJldmFsdWF0ZVwiIGRlbGltaXRlcnMuIERhdGFcbiAgICAgKiBwcm9wZXJ0aWVzIG1heSBiZSBhY2Nlc3NlZCBhcyBmcmVlIHZhcmlhYmxlcyBpbiB0aGUgdGVtcGxhdGUuIElmIGEgc2V0dGluZ1xuICAgICAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBJbiB0aGUgZGV2ZWxvcG1lbnQgYnVpbGQgYF8udGVtcGxhdGVgIHV0aWxpemVzXG4gICAgICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gICAgICogZm9yIGVhc2llciBkZWJ1Z2dpbmcuXG4gICAgICpcbiAgICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICAgICAqIFtsb2Rhc2gncyBjdXN0b20gYnVpbGRzIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vbG9kYXNoLmNvbS9jdXN0b20tYnVpbGRzKS5cbiAgICAgKlxuICAgICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICAgICAqIFtDaHJvbWUncyBleHRlbnNpb25zIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLmNocm9tZS5jb20vZXh0ZW5zaW9ucy9zYW5kYm94aW5nRXZhbCkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSB0ZW1wbGF0ZSBzdHJpbmcuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gICAgICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICAgICAqICBUaGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuZXZhbHVhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmV2YWx1YXRlXVxuICAgICAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMuaW1wb3J0cz1fLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c11cbiAgICAgKiAgQW4gb2JqZWN0IHRvIGltcG9ydCBpbnRvIHRoZSB0ZW1wbGF0ZSBhcyBmcmVlIHZhcmlhYmxlcy5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICAgICAqICBUaGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlci5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuc291cmNlVVJMPSdsb2Rhc2gudGVtcGxhdGVTb3VyY2VzW25dJ11cbiAgICAgKiAgVGhlIHNvdXJjZVVSTCBvZiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnZhcmlhYmxlPSdvYmonXVxuICAgICAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY29tcGlsZWQgdGVtcGxhdGUgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlciB0byBjcmVhdGUgYSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ2ZyZWQnIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBmcmVkISdcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgSFRNTCBcImVzY2FwZVwiIGRlbGltaXRlciB0byBlc2NhcGUgZGF0YSBwcm9wZXJ0eSB2YWx1ZXMuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPGI+PCUtIHZhbHVlICU+PC9iPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAgICAgKiAvLyA9PiAnPGI+Jmx0O3NjcmlwdCZndDs8L2I+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JSBfLmZvckVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPicpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXJzJzogWydmcmVkJywgJ2Jhcm5leSddIH0pO1xuICAgICAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBpbnRlcm5hbCBgcHJpbnRgIGZ1bmN0aW9uIGluIFwiZXZhbHVhdGVcIiBkZWxpbWl0ZXJzLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcic6ICdiYXJuZXknIH0pO1xuICAgICAqIC8vID0+ICdoZWxsbyBiYXJuZXkhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBFUyB0ZW1wbGF0ZSBsaXRlcmFsIGRlbGltaXRlciBhcyBhbiBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICAgICAqIC8vIERpc2FibGUgc3VwcG9ydCBieSByZXBsYWNpbmcgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICAgICAqIGNvbXBpbGVkKHsgJ3VzZXInOiAncGViYmxlcycgfSk7XG4gICAgICogLy8gPT4gJ2hlbGxvIHBlYmJsZXMhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIGJhY2tzbGFzaGVzIHRvIHRyZWF0IGRlbGltaXRlcnMgYXMgcGxhaW4gdGV4dC5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCc8JT0gXCJcXFxcPCUtIHZhbHVlICVcXFxcPlwiICU+Jyk7XG4gICAgICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gICAgICogLy8gPT4gJzwlLSB2YWx1ZSAlPidcbiAgICAgKlxuICAgICAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAgICAgKiB2YXIgdGV4dCA9ICc8JSBqcS5lYWNoKHVzZXJzLCBmdW5jdGlvbih1c2VyKSB7ICU+PGxpPjwlLSB1c2VyICU+PC9saT48JSB9KTsgJT4nO1xuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUodGV4dCwgeyAnaW1wb3J0cyc6IHsgJ2pxJzogalF1ZXJ5IH0gfSk7XG4gICAgICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gICAgICogLy8gPT4gJzxsaT5mcmVkPC9saT48bGk+YmFybmV5PC9saT4nXG4gICAgICpcbiAgICAgKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICAgICAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJ2hlbGxvIDwlPSB1c2VyICU+IScsIHsgJ3NvdXJjZVVSTCc6ICcvYmFzaWMvZ3JlZXRpbmcuanN0JyB9KTtcbiAgICAgKiBjb21waWxlZChkYXRhKTtcbiAgICAgKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgdmFyaWFibGVgIG9wdGlvbiB0byBlbnN1cmUgYSB3aXRoLXN0YXRlbWVudCBpc24ndCB1c2VkIGluIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAgICAgKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICAgICAqIGNvbXBpbGVkLnNvdXJjZTtcbiAgICAgKiAvLyA9PiBmdW5jdGlvbihkYXRhKSB7XG4gICAgICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAgICAgKiAvLyAgIF9fcCArPSAnaGkgJyArICgoX190ID0gKCBkYXRhLnVzZXIgKSkgPT0gbnVsbCA/ICcnIDogX190KSArICchJztcbiAgICAgKiAvLyAgIHJldHVybiBfX3A7XG4gICAgICogLy8gfVxuICAgICAqXG4gICAgICogLy8gVXNlIGN1c3RvbSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzLlxuICAgICAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gICAgICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8ge3sgdXNlciB9fSEnKTtcbiAgICAgKiBjb21waWxlZCh7ICd1c2VyJzogJ211c3RhY2hlJyB9KTtcbiAgICAgKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICAgICAqXG4gICAgICogLy8gVXNlIHRoZSBgc291cmNlYCBwcm9wZXJ0eSB0byBpbmxpbmUgY29tcGlsZWQgdGVtcGxhdGVzIGZvciBtZWFuaW5nZnVsXG4gICAgICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gICAgICogZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ2pzdC5qcycpLCAnXFxcbiAgICAgKiAgIHZhciBKU1QgPSB7XFxcbiAgICAgKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAgICAgKiAgIH07XFxcbiAgICAgKiAnKTtcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0ZW1wbGF0ZShzdHJpbmcsIG9wdGlvbnMsIGd1YXJkKSB7XG4gICAgICAvLyBCYXNlZCBvbiBKb2huIFJlc2lnJ3MgYHRtcGxgIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gICAgICAvLyBhbmQgTGF1cmEgRG9rdG9yb3ZhJ3MgZG9ULmpzIChodHRwczovL2dpdGh1Yi5jb20vb2xhZG8vZG9UKS5cbiAgICAgIHZhciBzZXR0aW5ncyA9IGxvZGFzaC50ZW1wbGF0ZVNldHRpbmdzO1xuXG4gICAgICBpZiAoZ3VhcmQgJiYgaXNJdGVyYXRlZUNhbGwoc3RyaW5nLCBvcHRpb25zLCBndWFyZCkpIHtcbiAgICAgICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gICAgICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgICAgIHZhciBpbXBvcnRzID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLmltcG9ydHMsIHNldHRpbmdzLmltcG9ydHMsIGN1c3RvbURlZmF1bHRzQXNzaWduSW4pLFxuICAgICAgICAgIGltcG9ydHNLZXlzID0ga2V5cyhpbXBvcnRzKSxcbiAgICAgICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgICAgIHZhciBpc0VzY2FwaW5nLFxuICAgICAgICAgIGlzRXZhbHVhdGluZyxcbiAgICAgICAgICBpbmRleCA9IDAsXG4gICAgICAgICAgaW50ZXJwb2xhdGUgPSBvcHRpb25zLmludGVycG9sYXRlIHx8IHJlTm9NYXRjaCxcbiAgICAgICAgICBzb3VyY2UgPSBcIl9fcCArPSAnXCI7XG5cbiAgICAgIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgICAgIHZhciByZURlbGltaXRlcnMgPSBSZWdFeHAoXG4gICAgICAgIChvcHRpb25zLmVzY2FwZSB8fCByZU5vTWF0Y2gpLnNvdXJjZSArICd8JyArXG4gICAgICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgICAgIChpbnRlcnBvbGF0ZSA9PT0gcmVJbnRlcnBvbGF0ZSA/IHJlRXNUZW1wbGF0ZSA6IHJlTm9NYXRjaCkuc291cmNlICsgJ3wnICtcbiAgICAgICAgKG9wdGlvbnMuZXZhbHVhdGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCQnXG4gICAgICAsICdnJyk7XG5cbiAgICAgIC8vIFVzZSBhIHNvdXJjZVVSTCBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAgICAgIC8vIFRoZSBzb3VyY2VVUkwgZ2V0cyBpbmplY3RlZCBpbnRvIHRoZSBzb3VyY2UgdGhhdCdzIGV2YWwtZWQsIHNvIGJlIGNhcmVmdWxcbiAgICAgIC8vIHRvIG5vcm1hbGl6ZSBhbGwga2luZHMgb2Ygd2hpdGVzcGFjZSwgc28gZS5nLiBuZXdsaW5lcyAoYW5kIHVuaWNvZGUgdmVyc2lvbnMgb2YgaXQpIGNhbid0IHNuZWFrIGluXG4gICAgICAvLyBhbmQgZXNjYXBlIHRoZSBjb21tZW50LCB0aHVzIGluamVjdGluZyBjb2RlIHRoYXQgZ2V0cyBldmFsZWQuXG4gICAgICB2YXIgc291cmNlVVJMID0gJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICdzb3VyY2VVUkwnKVxuICAgICAgICAgID8gKG9wdGlvbnMuc291cmNlVVJMICsgJycpLnJlcGxhY2UoL1xccy9nLCAnICcpXG4gICAgICAgICAgOiAoJ2xvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbJyArICgrK3RlbXBsYXRlQ291bnRlcikgKyAnXScpXG4gICAgICAgICkgKyAnXFxuJztcblxuICAgICAgc3RyaW5nLnJlcGxhY2UocmVEZWxpbWl0ZXJzLCBmdW5jdGlvbihtYXRjaCwgZXNjYXBlVmFsdWUsIGludGVycG9sYXRlVmFsdWUsIGVzVGVtcGxhdGVWYWx1ZSwgZXZhbHVhdGVWYWx1ZSwgb2Zmc2V0KSB7XG4gICAgICAgIGludGVycG9sYXRlVmFsdWUgfHwgKGludGVycG9sYXRlVmFsdWUgPSBlc1RlbXBsYXRlVmFsdWUpO1xuXG4gICAgICAgIC8vIEVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmUgaW5jbHVkZWQgaW4gc3RyaW5nIGxpdGVyYWxzLlxuICAgICAgICBzb3VyY2UgKz0gc3RyaW5nLnNsaWNlKGluZGV4LCBvZmZzZXQpLnJlcGxhY2UocmVVbmVzY2FwZWRTdHJpbmcsIGVzY2FwZVN0cmluZ0NoYXIpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgZGVsaW1pdGVycyB3aXRoIHNuaXBwZXRzLlxuICAgICAgICBpZiAoZXNjYXBlVmFsdWUpIHtcbiAgICAgICAgICBpc0VzY2FwaW5nID0gdHJ1ZTtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInICtcXG5fX2UoXCIgKyBlc2NhcGVWYWx1ZSArIFwiKSArXFxuJ1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmFsdWF0ZVZhbHVlKSB7XG4gICAgICAgICAgaXNFdmFsdWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInO1xcblwiICsgZXZhbHVhdGVWYWx1ZSArIFwiO1xcbl9fcCArPSAnXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludGVycG9sYXRlVmFsdWUpIHtcbiAgICAgICAgICBzb3VyY2UgKz0gXCInICtcXG4oKF9fdCA9IChcIiArIGludGVycG9sYXRlVmFsdWUgKyBcIikpID09IG51bGwgPyAnJyA6IF9fdCkgK1xcbidcIjtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgICAgICAvLyBUaGUgSlMgZW5naW5lIGVtYmVkZGVkIGluIEFkb2JlIHByb2R1Y3RzIG5lZWRzIGBtYXRjaGAgcmV0dXJuZWQgaW5cbiAgICAgICAgLy8gb3JkZXIgdG8gcHJvZHVjZSB0aGUgY29ycmVjdCBgb2Zmc2V0YCB2YWx1ZS5cbiAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgfSk7XG5cbiAgICAgIHNvdXJjZSArPSBcIic7XFxuXCI7XG5cbiAgICAgIC8vIElmIGB2YXJpYWJsZWAgaXMgbm90IHNwZWNpZmllZCB3cmFwIGEgd2l0aC1zdGF0ZW1lbnQgYXJvdW5kIHRoZSBnZW5lcmF0ZWRcbiAgICAgIC8vIGNvZGUgdG8gYWRkIHRoZSBkYXRhIG9iamVjdCB0byB0aGUgdG9wIG9mIHRoZSBzY29wZSBjaGFpbi5cbiAgICAgIHZhciB2YXJpYWJsZSA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3ZhcmlhYmxlJykgJiYgb3B0aW9ucy52YXJpYWJsZTtcbiAgICAgIGlmICghdmFyaWFibGUpIHtcbiAgICAgICAgc291cmNlID0gJ3dpdGggKG9iaikge1xcbicgKyBzb3VyY2UgKyAnXFxufVxcbic7XG4gICAgICB9XG4gICAgICAvLyBUaHJvdyBhbiBlcnJvciBpZiBhIGZvcmJpZGRlbiBjaGFyYWN0ZXIgd2FzIGZvdW5kIGluIGB2YXJpYWJsZWAsIHRvIHByZXZlbnRcbiAgICAgIC8vIHBvdGVudGlhbCBjb21tYW5kIGluamVjdGlvbiBhdHRhY2tzLlxuICAgICAgZWxzZSBpZiAocmVGb3JiaWRkZW5JZGVudGlmaWVyQ2hhcnMudGVzdCh2YXJpYWJsZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfVEVNUExfVkFSX0VSUk9SX1RFWFQpO1xuICAgICAgfVxuXG4gICAgICAvLyBDbGVhbnVwIGNvZGUgYnkgc3RyaXBwaW5nIGVtcHR5IHN0cmluZ3MuXG4gICAgICBzb3VyY2UgPSAoaXNFdmFsdWF0aW5nID8gc291cmNlLnJlcGxhY2UocmVFbXB0eVN0cmluZ0xlYWRpbmcsICcnKSA6IHNvdXJjZSlcbiAgICAgICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ01pZGRsZSwgJyQxJylcbiAgICAgICAgLnJlcGxhY2UocmVFbXB0eVN0cmluZ1RyYWlsaW5nLCAnJDE7Jyk7XG5cbiAgICAgIC8vIEZyYW1lIGNvZGUgYXMgdGhlIGZ1bmN0aW9uIGJvZHkuXG4gICAgICBzb3VyY2UgPSAnZnVuY3Rpb24oJyArICh2YXJpYWJsZSB8fCAnb2JqJykgKyAnKSB7XFxuJyArXG4gICAgICAgICh2YXJpYWJsZVxuICAgICAgICAgID8gJydcbiAgICAgICAgICA6ICdvYmogfHwgKG9iaiA9IHt9KTtcXG4nXG4gICAgICAgICkgK1xuICAgICAgICBcInZhciBfX3QsIF9fcCA9ICcnXCIgK1xuICAgICAgICAoaXNFc2NhcGluZ1xuICAgICAgICAgICA/ICcsIF9fZSA9IF8uZXNjYXBlJ1xuICAgICAgICAgICA6ICcnXG4gICAgICAgICkgK1xuICAgICAgICAoaXNFdmFsdWF0aW5nXG4gICAgICAgICAgPyAnLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcXG4nICtcbiAgICAgICAgICAgIFwiZnVuY3Rpb24gcHJpbnQoKSB7IF9fcCArPSBfX2ouY2FsbChhcmd1bWVudHMsICcnKSB9XFxuXCJcbiAgICAgICAgICA6ICc7XFxuJ1xuICAgICAgICApICtcbiAgICAgICAgc291cmNlICtcbiAgICAgICAgJ3JldHVybiBfX3BcXG59JztcblxuICAgICAgdmFyIHJlc3VsdCA9IGF0dGVtcHQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBGdW5jdGlvbihpbXBvcnRzS2V5cywgc291cmNlVVJMICsgJ3JldHVybiAnICsgc291cmNlKVxuICAgICAgICAgIC5hcHBseSh1bmRlZmluZWQsIGltcG9ydHNWYWx1ZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFByb3ZpZGUgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uJ3Mgc291cmNlIGJ5IGl0cyBgdG9TdHJpbmdgIG1ldGhvZCBvclxuICAgICAgLy8gdGhlIGBzb3VyY2VgIHByb3BlcnR5IGFzIGEgY29udmVuaWVuY2UgZm9yIGlubGluaW5nIGNvbXBpbGVkIHRlbXBsYXRlcy5cbiAgICAgIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG4gICAgICBpZiAoaXNFcnJvcihyZXN1bHQpKSB7XG4gICAgICAgIHRocm93IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIGEgd2hvbGUsIHRvIGxvd2VyIGNhc2UganVzdCBsaWtlXG4gICAgICogW1N0cmluZyN0b0xvd2VyQ2FzZV0oaHR0cHM6Ly9tZG4uaW8vdG9Mb3dlckNhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgbG93ZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvTG93ZXIoJy0tRm9vLUJhci0tJyk7XG4gICAgICogLy8gPT4gJy0tZm9vLWJhci0tJ1xuICAgICAqXG4gICAgICogXy50b0xvd2VyKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnZm9vYmFyJ1xuICAgICAqXG4gICAgICogXy50b0xvd2VyKCdfX0ZPT19CQVJfXycpO1xuICAgICAqIC8vID0+ICdfX2Zvb19iYXJfXydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b0xvd2VyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIGEgd2hvbGUsIHRvIHVwcGVyIGNhc2UganVzdCBsaWtlXG4gICAgICogW1N0cmluZyN0b1VwcGVyQ2FzZV0oaHR0cHM6Ly9tZG4uaW8vdG9VcHBlckNhc2UpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFN0cmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gICAgICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdXBwZXIgY2FzZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRvVXBwZXIoJy0tZm9vLWJhci0tJyk7XG4gICAgICogLy8gPT4gJy0tRk9PLUJBUi0tJ1xuICAgICAqXG4gICAgICogXy50b1VwcGVyKCdmb29CYXInKTtcbiAgICAgKiAvLyA9PiAnRk9PQkFSJ1xuICAgICAqXG4gICAgICogXy50b1VwcGVyKCdfX2Zvb19iYXJfXycpO1xuICAgICAqIC8vID0+ICdfX0ZPT19CQVJfXydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1VwcGVyKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdG9TdHJpbmcodmFsdWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yIHNwZWNpZmllZCBjaGFyYWN0ZXJzIGZyb20gYHN0cmluZ2AuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPXdoaXRlc3BhY2VdIFRoZSBjaGFyYWN0ZXJzIHRvIHRyaW0uXG4gICAgICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50cmltKCcgIGFiYyAgJyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKlxuICAgICAqIF8udHJpbSgnLV8tYWJjLV8tJywgJ18tJyk7XG4gICAgICogLy8gPT4gJ2FiYydcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnICBmb28gICcsICcgIGJhciAgJ10sIF8udHJpbSk7XG4gICAgICogLy8gPT4gWydmb28nLCAnYmFyJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0cmltKHN0cmluZywgY2hhcnMsIGd1YXJkKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgcmV0dXJuIGJhc2VUcmltKHN0cmluZyk7XG4gICAgICB9XG4gICAgICBpZiAoIXN0cmluZyB8fCAhKGNoYXJzID0gYmFzZVRvU3RyaW5nKGNoYXJzKSkpIHtcbiAgICAgICAgcmV0dXJuIHN0cmluZztcbiAgICAgIH1cbiAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpLFxuICAgICAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgICAgICBlbmQgPSBjaGFyc0VuZEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpICsgMTtcblxuICAgICAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJyAgYWJjICAnKTtcbiAgICAgKiAvLyA9PiAnICBhYmMnXG4gICAgICpcbiAgICAgKiBfLnRyaW1FbmQoJy1fLWFiYy1fLScsICdfLScpO1xuICAgICAqIC8vID0+ICctXy1hYmMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcuc2xpY2UoMCwgdHJpbW1lZEVuZEluZGV4KHN0cmluZykgKyAxKTtcbiAgICAgIH1cbiAgICAgIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgICAgfVxuICAgICAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSkgKyAxO1xuXG4gICAgICByZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsIDAsIGVuZCkuam9pbignJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBsZWFkaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbY2hhcnM9d2hpdGVzcGFjZV0gVGhlIGNoYXJhY3RlcnMgdG8gdHJpbS5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRyaW1TdGFydCgnICBhYmMgICcpO1xuICAgICAqIC8vID0+ICdhYmMgICdcbiAgICAgKlxuICAgICAqIF8udHJpbVN0YXJ0KCctXy1hYmMtXy0nLCAnXy0nKTtcbiAgICAgKiAvLyA9PiAnYWJjLV8tJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIGlmIChzdHJpbmcgJiYgKGd1YXJkIHx8IGNoYXJzID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmcucmVwbGFjZShyZVRyaW1TdGFydCwgJycpO1xuICAgICAgfVxuICAgICAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBzdHJpbmdUb0FycmF5KGNoYXJzKSk7XG5cbiAgICAgIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQpLmpvaW4oJycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRydW5jYXRlcyBgc3RyaW5nYCBpZiBpdCdzIGxvbmdlciB0aGFuIHRoZSBnaXZlbiBtYXhpbXVtIHN0cmluZyBsZW5ndGguXG4gICAgICogVGhlIGxhc3QgY2hhcmFjdGVycyBvZiB0aGUgdHJ1bmNhdGVkIHN0cmluZyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgb21pc3Npb25cbiAgICAgKiBzdHJpbmcgd2hpY2ggZGVmYXVsdHMgdG8gXCIuLi5cIi5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cnVuY2F0ZS5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTMwXSBUaGUgbWF4aW11bSBzdHJpbmcgbGVuZ3RoLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5vbWlzc2lvbj0nLi4uJ10gVGhlIHN0cmluZyB0byBpbmRpY2F0ZSB0ZXh0IGlzIG9taXR0ZWQuXG4gICAgICogQHBhcmFtIHtSZWdFeHB8c3RyaW5nfSBbb3B0aW9ucy5zZXBhcmF0b3JdIFRoZSBzZXBhcmF0b3IgcGF0dGVybiB0byB0cnVuY2F0ZSB0by5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cnVuY2F0ZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJyk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hiby4uLidcbiAgICAgKlxuICAgICAqIF8udHJ1bmNhdGUoJ2hpLWRpZGRseS1obyB0aGVyZSwgbmVpZ2hib3Jpbm8nLCB7XG4gICAgICogICAnbGVuZ3RoJzogMjQsXG4gICAgICogICAnc2VwYXJhdG9yJzogJyAnXG4gICAgICogfSk7XG4gICAgICogLy8gPT4gJ2hpLWRpZGRseS1obyB0aGVyZSwuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ2xlbmd0aCc6IDI0LFxuICAgICAqICAgJ3NlcGFyYXRvcic6IC8sPyArL1xuICAgICAqIH0pO1xuICAgICAqIC8vID0+ICdoaS1kaWRkbHktaG8gdGhlcmUuLi4nXG4gICAgICpcbiAgICAgKiBfLnRydW5jYXRlKCdoaS1kaWRkbHktaG8gdGhlcmUsIG5laWdoYm9yaW5vJywge1xuICAgICAqICAgJ29taXNzaW9uJzogJyBbLi4uXSdcbiAgICAgKiB9KTtcbiAgICAgKiAvLyA9PiAnaGktZGlkZGx5LWhvIHRoZXJlLCBuZWlnIFsuLi5dJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZywgb3B0aW9ucykge1xuICAgICAgdmFyIGxlbmd0aCA9IERFRkFVTFRfVFJVTkNfTEVOR1RILFxuICAgICAgICAgIG9taXNzaW9uID0gREVGQVVMVF9UUlVOQ19PTUlTU0lPTjtcblxuICAgICAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgICAgIHZhciBzZXBhcmF0b3IgPSAnc2VwYXJhdG9yJyBpbiBvcHRpb25zID8gb3B0aW9ucy5zZXBhcmF0b3IgOiBzZXBhcmF0b3I7XG4gICAgICAgIGxlbmd0aCA9ICdsZW5ndGgnIGluIG9wdGlvbnMgPyB0b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpIDogbGVuZ3RoO1xuICAgICAgICBvbWlzc2lvbiA9ICdvbWlzc2lvbicgaW4gb3B0aW9ucyA/IGJhc2VUb1N0cmluZyhvcHRpb25zLm9taXNzaW9uKSA6IG9taXNzaW9uO1xuICAgICAgfVxuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcblxuICAgICAgdmFyIHN0ckxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAoaGFzVW5pY29kZShzdHJpbmcpKSB7XG4gICAgICAgIHZhciBzdHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShzdHJpbmcpO1xuICAgICAgICBzdHJMZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGggPj0gc3RyTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICB9XG4gICAgICB2YXIgZW5kID0gbGVuZ3RoIC0gc3RyaW5nU2l6ZShvbWlzc2lvbik7XG4gICAgICBpZiAoZW5kIDwgMSkge1xuICAgICAgICByZXR1cm4gb21pc3Npb247XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0ID0gc3RyU3ltYm9sc1xuICAgICAgICA/IGNhc3RTbGljZShzdHJTeW1ib2xzLCAwLCBlbmQpLmpvaW4oJycpXG4gICAgICAgIDogc3RyaW5nLnNsaWNlKDAsIGVuZCk7XG5cbiAgICAgIGlmIChzZXBhcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0ICsgb21pc3Npb247XG4gICAgICB9XG4gICAgICBpZiAoc3RyU3ltYm9scykge1xuICAgICAgICBlbmQgKz0gKHJlc3VsdC5sZW5ndGggLSBlbmQpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgaWYgKHN0cmluZy5zbGljZShlbmQpLnNlYXJjaChzZXBhcmF0b3IpKSB7XG4gICAgICAgICAgdmFyIG1hdGNoLFxuICAgICAgICAgICAgICBzdWJzdHJpbmcgPSByZXN1bHQ7XG5cbiAgICAgICAgICBpZiAoIXNlcGFyYXRvci5nbG9iYWwpIHtcbiAgICAgICAgICAgIHNlcGFyYXRvciA9IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCB0b1N0cmluZyhyZUZsYWdzLmV4ZWMoc2VwYXJhdG9yKSkgKyAnZycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzZXBhcmF0b3IubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3Vic3RyaW5nKSkpIHtcbiAgICAgICAgICAgIHZhciBuZXdFbmQgPSBtYXRjaC5pbmRleDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIG5ld0VuZCA9PT0gdW5kZWZpbmVkID8gZW5kIDogbmV3RW5kKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSwgZW5kKSAhPSBlbmQpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKHNlcGFyYXRvcik7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdCArIG9taXNzaW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpbnZlcnNlIG9mIGBfLmVzY2FwZWA7IHRoaXMgbWV0aG9kIGNvbnZlcnRzIHRoZSBIVE1MIGVudGl0aWVzXG4gICAgICogYCZhbXA7YCwgYCZsdDtgLCBgJmd0O2AsIGAmcXVvdDtgLCBhbmQgYCYjMzk7YCBpbiBgc3RyaW5nYCB0b1xuICAgICAqIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycy5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBObyBvdGhlciBIVE1MIGVudGl0aWVzIGFyZSB1bmVzY2FwZWQuIFRvIHVuZXNjYXBlIGFkZGl0aW9uYWxcbiAgICAgKiBIVE1MIGVudGl0aWVzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAwLjYuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB1bmVzY2FwZS5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB1bmVzY2FwZWQgc3RyaW5nLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnVuZXNjYXBlKCdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnKTtcbiAgICAgKiAvLyA9PiAnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnXG4gICAgICovXG4gICAgZnVuY3Rpb24gdW5lc2NhcGUoc3RyaW5nKSB7XG4gICAgICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICAgICAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZykpXG4gICAgICAgID8gc3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCwgdW5lc2NhcGVIdG1sQ2hhcilcbiAgICAgICAgOiBzdHJpbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydHMgYHN0cmluZ2AsIGFzIHNwYWNlIHNlcGFyYXRlZCB3b3JkcywgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVwcGVyIGNhc2VkIHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJy0tZm9vLWJhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ2Zvb0JhcicpO1xuICAgICAqIC8vID0+ICdGT08gQkFSJ1xuICAgICAqXG4gICAgICogXy51cHBlckNhc2UoJ19fZm9vX2Jhcl9fJyk7XG4gICAgICogLy8gPT4gJ0ZPTyBCQVInXG4gICAgICovXG4gICAgdmFyIHVwcGVyQ2FzZSA9IGNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LCB3b3JkLCBpbmRleCkge1xuICAgICAgcmV0dXJuIHJlc3VsdCArIChpbmRleCA/ICcgJyA6ICcnKSArIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AgdG8gdXBwZXIgY2FzZS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBTdHJpbmdcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udXBwZXJGaXJzdCgnZnJlZCcpO1xuICAgICAqIC8vID0+ICdGcmVkJ1xuICAgICAqXG4gICAgICogXy51cHBlckZpcnN0KCdGUkVEJyk7XG4gICAgICogLy8gPT4gJ0ZSRUQnXG4gICAgICovXG4gICAgdmFyIHVwcGVyRmlyc3QgPSBjcmVhdGVDYXNlRmlyc3QoJ3RvVXBwZXJDYXNlJyk7XG5cbiAgICAvKipcbiAgICAgKiBTcGxpdHMgYHN0cmluZ2AgaW50byBhbiBhcnJheSBvZiBpdHMgd29yZHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgU3RyaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAgICAgKiBAcGFyYW0ge1JlZ0V4cHxzdHJpbmd9IFtwYXR0ZXJuXSBUaGUgcGF0dGVybiB0byBtYXRjaCB3b3Jkcy5cbiAgICAgKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgd29yZHMgb2YgYHN0cmluZ2AuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJyk7XG4gICAgICogLy8gPT4gWydmcmVkJywgJ2Jhcm5leScsICdwZWJibGVzJ11cbiAgICAgKlxuICAgICAqIF8ud29yZHMoJ2ZyZWQsIGJhcm5leSwgJiBwZWJibGVzJywgL1teLCBdKy9nKTtcbiAgICAgKiAvLyA9PiBbJ2ZyZWQnLCAnYmFybmV5JywgJyYnLCAncGViYmxlcyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gd29yZHMoc3RyaW5nLCBwYXR0ZXJuLCBndWFyZCkge1xuICAgICAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgICAgIHBhdHRlcm4gPSBndWFyZCA/IHVuZGVmaW5lZCA6IHBhdHRlcm47XG5cbiAgICAgIGlmIChwYXR0ZXJuID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGhhc1VuaWNvZGVXb3JkKHN0cmluZykgPyB1bmljb2RlV29yZHMoc3RyaW5nKSA6IGFzY2lpV29yZHMoc3RyaW5nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdHJpbmcubWF0Y2gocGF0dGVybikgfHwgW107XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4gICAgLyoqXG4gICAgICogQXR0ZW1wdHMgdG8gaW52b2tlIGBmdW5jYCwgcmV0dXJuaW5nIGVpdGhlciB0aGUgcmVzdWx0IG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAgICAgKiBvYmplY3QuIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gYGZ1bmNgIHdoZW4gaXQncyBpbnZva2VkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhdHRlbXB0LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBgZnVuY2AgcmVzdWx0IG9yIGVycm9yIG9iamVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogLy8gQXZvaWQgdGhyb3dpbmcgZXJyb3JzIGZvciBpbnZhbGlkIHNlbGVjdG9ycy5cbiAgICAgKiB2YXIgZWxlbWVudHMgPSBfLmF0dGVtcHQoZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAgICAgKiB9LCAnPl8+Jyk7XG4gICAgICpcbiAgICAgKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICAgICAqICAgZWxlbWVudHMgPSBbXTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgdmFyIGF0dGVtcHQgPSBiYXNlUmVzdChmdW5jdGlvbihmdW5jLCBhcmdzKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGlzRXJyb3IoZSkgPyBlIDogbmV3IEVycm9yKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQmluZHMgbWV0aG9kcyBvZiBhbiBvYmplY3QgdG8gdGhlIG9iamVjdCBpdHNlbGYsIG92ZXJ3cml0aW5nIHRoZSBleGlzdGluZ1xuICAgICAqIG1ldGhvZC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHNldCB0aGUgXCJsZW5ndGhcIiBwcm9wZXJ0eSBvZiBib3VuZCBmdW5jdGlvbnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBiaW5kIGFuZCBhc3NpZ24gdGhlIGJvdW5kIG1ldGhvZHMgdG8uXG4gICAgICogQHBhcmFtIHsuLi4oc3RyaW5nfHN0cmluZ1tdKX0gbWV0aG9kTmFtZXMgVGhlIG9iamVjdCBtZXRob2QgbmFtZXMgdG8gYmluZC5cbiAgICAgKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgdmlldyA9IHtcbiAgICAgKiAgICdsYWJlbCc6ICdkb2NzJyxcbiAgICAgKiAgICdjbGljayc6IGZ1bmN0aW9uKCkge1xuICAgICAqICAgICBjb25zb2xlLmxvZygnY2xpY2tlZCAnICsgdGhpcy5sYWJlbCk7XG4gICAgICogICB9XG4gICAgICogfTtcbiAgICAgKlxuICAgICAqIF8uYmluZEFsbCh2aWV3LCBbJ2NsaWNrJ10pO1xuICAgICAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCB2aWV3LmNsaWNrKTtcbiAgICAgKiAvLyA9PiBMb2dzICdjbGlja2VkIGRvY3MnIHdoZW4gY2xpY2tlZC5cbiAgICAgKi9cbiAgICB2YXIgYmluZEFsbCA9IGZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCwgbWV0aG9kTmFtZXMpIHtcbiAgICAgIGFycmF5RWFjaChtZXRob2ROYW1lcywgZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGtleSA9IHRvS2V5KGtleSk7XG4gICAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgYmluZChvYmplY3Rba2V5XSwgb2JqZWN0KSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpdGVyYXRlcyBvdmVyIGBwYWlyc2AgYW5kIGludm9rZXMgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAgKiBmdW5jdGlvbiBvZiB0aGUgZmlyc3QgcHJlZGljYXRlIHRvIHJldHVybiB0cnV0aHkuIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb25cbiAgICAgKiBwYWlycyBhcmUgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBhbmQgYXJndW1lbnRzIG9mIHRoZSBjcmVhdGVkXG4gICAgICogZnVuY3Rpb24uXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhaXJzIFRoZSBwcmVkaWNhdGUtZnVuY3Rpb24gcGFpcnMuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8uY29uZChbXG4gICAgICogICBbXy5tYXRjaGVzKHsgJ2EnOiAxIH0pLCAgICAgICAgICAgXy5jb25zdGFudCgnbWF0Y2hlcyBBJyldLFxuICAgICAqICAgW18uY29uZm9ybXMoeyAnYic6IF8uaXNOdW1iZXIgfSksIF8uY29uc3RhbnQoJ21hdGNoZXMgQicpXSxcbiAgICAgKiAgIFtfLnN0dWJUcnVlLCAgICAgICAgICAgICAgICAgICAgICBfLmNvbnN0YW50KCdubyBtYXRjaCcpXVxuICAgICAqIF0pO1xuICAgICAqXG4gICAgICogZnVuYyh7ICdhJzogMSwgJ2InOiAyIH0pO1xuICAgICAqIC8vID0+ICdtYXRjaGVzIEEnXG4gICAgICpcbiAgICAgKiBmdW5jKHsgJ2EnOiAwLCAnYic6IDEgfSk7XG4gICAgICogLy8gPT4gJ21hdGNoZXMgQidcbiAgICAgKlxuICAgICAqIGZ1bmMoeyAnYSc6ICcxJywgJ2InOiAnMicgfSk7XG4gICAgICogLy8gPT4gJ25vIG1hdGNoJ1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNvbmQocGFpcnMpIHtcbiAgICAgIHZhciBsZW5ndGggPSBwYWlycyA9PSBudWxsID8gMCA6IHBhaXJzLmxlbmd0aCxcbiAgICAgICAgICB0b0l0ZXJhdGVlID0gZ2V0SXRlcmF0ZWUoKTtcblxuICAgICAgcGFpcnMgPSAhbGVuZ3RoID8gW10gOiBhcnJheU1hcChwYWlycywgZnVuY3Rpb24ocGFpcikge1xuICAgICAgICBpZiAodHlwZW9mIHBhaXJbMV0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3RvSXRlcmF0ZWUocGFpclswXSksIHBhaXJbMV1dO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHZhciBpbmRleCA9IC0xO1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICAgIHZhciBwYWlyID0gcGFpcnNbaW5kZXhdO1xuICAgICAgICAgIGlmIChhcHBseShwYWlyWzBdLCB0aGlzLCBhcmdzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGFwcGx5KHBhaXJbMV0sIHRoaXMsIGFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgcHJlZGljYXRlIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgd2l0aFxuICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5IHZhbHVlcyBvZiBhIGdpdmVuIG9iamVjdCwgcmV0dXJuaW5nIGB0cnVlYCBpZlxuICAgICAqIGFsbCBwcmVkaWNhdGVzIHJldHVybiB0cnV0aHksIGVsc2UgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqICoqTm90ZToqKiBUaGUgY3JlYXRlZCBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGBfLmNvbmZvcm1zVG9gIHdpdGhcbiAgICAgKiBgc291cmNlYCBwYXJ0aWFsbHkgYXBwbGllZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHByZWRpY2F0ZXMgdG8gY29uZm9ybSB0by5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzcGVjIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFtcbiAgICAgKiAgIHsgJ2EnOiAyLCAnYic6IDEgfSxcbiAgICAgKiAgIHsgJ2EnOiAxLCAnYic6IDIgfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLmNvbmZvcm1zKHsgJ2InOiBmdW5jdGlvbihuKSB7IHJldHVybiBuID4gMTsgfSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ2EnOiAxLCAnYic6IDIgfV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25mb3Jtcyhzb3VyY2UpIHtcbiAgICAgIHJldHVybiBiYXNlQ29uZm9ybXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDIuNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gICAgICpcbiAgICAgKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBgdmFsdWVgIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVmYXVsdCB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgaW5cbiAgICAgKiBpdHMgcGxhY2UuIFRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBgbnVsbGAsXG4gICAgICogb3IgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xNC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICAgKiBAcGFyYW0geyp9IGRlZmF1bHRWYWx1ZSBUaGUgZGVmYXVsdCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uZGVmYXVsdFRvKDEsIDEwKTtcbiAgICAgKiAvLyA9PiAxXG4gICAgICpcbiAgICAgKiBfLmRlZmF1bHRUbyh1bmRlZmluZWQsIDEwKTtcbiAgICAgKiAvLyA9PiAxMFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRlZmF1bHRUbyh2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gKHZhbHVlID09IG51bGwgfHwgdmFsdWUgIT09IHZhbHVlKSA/IGRlZmF1bHRWYWx1ZSA6IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyB0aGUgZ2l2ZW4gZnVuY3Rpb25zXG4gICAgICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNyZWF0ZWQgZnVuY3Rpb24sIHdoZXJlIGVhY2ggc3VjY2Vzc2l2ZVxuICAgICAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbZnVuY3NdIFRoZSBmdW5jdGlvbnMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAgICAgKiBAc2VlIF8uZmxvd1JpZ2h0XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvdyhbXy5hZGQsIHNxdWFyZV0pO1xuICAgICAqIGFkZFNxdWFyZSgxLCAyKTtcbiAgICAgKiAvLyA9PiA5XG4gICAgICovXG4gICAgdmFyIGZsb3cgPSBjcmVhdGVGbG93KCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZsb3dgIGV4Y2VwdCB0aGF0IGl0IGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0XG4gICAgICogaW52b2tlcyB0aGUgZ2l2ZW4gZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtmdW5jc10gVGhlIGZ1bmN0aW9ucyB0byBpbnZva2UuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICAgICAqIEBzZWUgXy5mbG93XG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gICAgICogICByZXR1cm4gbiAqIG47XG4gICAgICogfVxuICAgICAqXG4gICAgICogdmFyIGFkZFNxdWFyZSA9IF8uZmxvd1JpZ2h0KFtzcXVhcmUsIF8uYWRkXSk7XG4gICAgICogYWRkU3F1YXJlKDEsIDIpO1xuICAgICAqIC8vID0+IDlcbiAgICAgKi9cbiAgICB2YXIgZmxvd1JpZ2h0ID0gY3JlYXRlRmxvdyh0cnVlKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICovXG4gICAgZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIHRoZSBhcmd1bWVudHMgb2YgdGhlIGNyZWF0ZWRcbiAgICAgKiBmdW5jdGlvbi4gSWYgYGZ1bmNgIGlzIGEgcHJvcGVydHkgbmFtZSwgdGhlIGNyZWF0ZWQgZnVuY3Rpb24gcmV0dXJucyB0aGVcbiAgICAgKiBwcm9wZXJ0eSB2YWx1ZSBmb3IgYSBnaXZlbiBlbGVtZW50LiBJZiBgZnVuY2AgaXMgYW4gYXJyYXkgb3Igb2JqZWN0LCB0aGVcbiAgICAgKiBjcmVhdGVkIGZ1bmN0aW9uIHJldHVybnMgYHRydWVgIGZvciBlbGVtZW50cyB0aGF0IGNvbnRhaW4gdGhlIGVxdWl2YWxlbnRcbiAgICAgKiBzb3VyY2UgcHJvcGVydGllcywgb3RoZXJ3aXNlIGl0IHJldHVybnMgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsqfSBbZnVuYz1fLmlkZW50aXR5XSBUaGUgdmFsdWUgdG8gY29udmVydCB0byBhIGNhbGxiYWNrLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgY2FsbGJhY2suXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciB1c2VycyA9IFtcbiAgICAgKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICAgICAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5tYXRjaGVzYCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gICAgICogXy5maWx0ZXIodXNlcnMsIF8uaXRlcmF0ZWUoeyAndXNlcic6ICdiYXJuZXknLCAnYWN0aXZlJzogdHJ1ZSB9KSk7XG4gICAgICogLy8gPT4gW3sgJ3VzZXInOiAnYmFybmV5JywgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9XVxuICAgICAqXG4gICAgICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8uZmlsdGVyKHVzZXJzLCBfLml0ZXJhdGVlKFsndXNlcicsICdmcmVkJ10pKTtcbiAgICAgKiAvLyA9PiBbeyAndXNlcic6ICdmcmVkJywgJ2FnZSc6IDQwIH1dXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1hcCh1c2VycywgXy5pdGVyYXRlZSgndXNlcicpKTtcbiAgICAgKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAgICAgKlxuICAgICAqIC8vIENyZWF0ZSBjdXN0b20gaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAgICAgKiBfLml0ZXJhdGVlID0gXy53cmFwKF8uaXRlcmF0ZWUsIGZ1bmN0aW9uKGl0ZXJhdGVlLCBmdW5jKSB7XG4gICAgICogICByZXR1cm4gIV8uaXNSZWdFeHAoZnVuYykgPyBpdGVyYXRlZShmdW5jKSA6IGZ1bmN0aW9uKHN0cmluZykge1xuICAgICAqICAgICByZXR1cm4gZnVuYy50ZXN0KHN0cmluZyk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogXy5maWx0ZXIoWydhYmMnLCAnZGVmJ10sIC9lZi8pO1xuICAgICAqIC8vID0+IFsnZGVmJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBpdGVyYXRlZShmdW5jKSB7XG4gICAgICByZXR1cm4gYmFzZUl0ZXJhdGVlKHR5cGVvZiBmdW5jID09ICdmdW5jdGlvbicgPyBmdW5jIDogYmFzZUNsb25lKGZ1bmMsIENMT05FX0RFRVBfRkxBRykpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIGEgcGFydGlhbCBkZWVwIGNvbXBhcmlzb24gYmV0d2VlbiBhIGdpdmVuXG4gICAgICogb2JqZWN0IGFuZCBgc291cmNlYCwgcmV0dXJuaW5nIGB0cnVlYCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGhhcyBlcXVpdmFsZW50XG4gICAgICogcHJvcGVydHkgdmFsdWVzLCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBgXy5pc01hdGNoYCB3aXRoIGBzb3VyY2VgXG4gICAgICogcGFydGlhbGx5IGFwcGxpZWQuXG4gICAgICpcbiAgICAgKiBQYXJ0aWFsIGNvbXBhcmlzb25zIHdpbGwgbWF0Y2ggZW1wdHkgYXJyYXkgYW5kIGVtcHR5IG9iamVjdCBgc291cmNlYFxuICAgICAqIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlIGBfLmlzRXF1YWxgXG4gICAgICogZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCBvZiBwcm9wZXJ0eSB2YWx1ZXMgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmlsdGVyKG9iamVjdHMsIF8ubWF0Y2hlcyh7ICdhJzogNCwgJ2MnOiA2IH0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDQsICdiJzogNSwgJ2MnOiA2IH1dXG4gICAgICpcbiAgICAgKiAvLyBDaGVja2luZyBmb3Igc2V2ZXJhbCBwb3NzaWJsZSB2YWx1ZXNcbiAgICAgKiBfLmZpbHRlcihvYmplY3RzLCBfLm92ZXJTb21lKFtfLm1hdGNoZXMoeyAnYSc6IDEgfSksIF8ubWF0Y2hlcyh7ICdhJzogNCB9KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXMoc291cmNlKSB7XG4gICAgICByZXR1cm4gYmFzZU1hdGNoZXMoYmFzZUNsb25lKHNvdXJjZSwgQ0xPTkVfREVFUF9GTEFHKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcGVyZm9ybXMgYSBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbiBiZXR3ZWVuIHRoZVxuICAgICAqIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdCB0byBgc3JjVmFsdWVgLCByZXR1cm5pbmcgYHRydWVgIGlmIHRoZVxuICAgICAqIG9iamVjdCB2YWx1ZSBpcyBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogUGFydGlhbCBjb21wYXJpc29ucyB3aWxsIG1hdGNoIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBvYmplY3RcbiAgICAgKiBgc3JjVmFsdWVgIHZhbHVlcyBhZ2FpbnN0IGFueSBhcnJheSBvciBvYmplY3QgdmFsdWUsIHJlc3BlY3RpdmVseS4gU2VlXG4gICAgICogYF8uaXNFcXVhbGAgZm9yIGEgbGlzdCBvZiBzdXBwb3J0ZWQgdmFsdWUgY29tcGFyaXNvbnMuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogTXVsdGlwbGUgdmFsdWVzIGNhbiBiZSBjaGVja2VkIGJ5IGNvbWJpbmluZyBzZXZlcmFsIG1hdGNoZXJzXG4gICAgICogdXNpbmcgYF8ub3ZlclNvbWVgXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4yLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gICAgICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2guXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDMgfSxcbiAgICAgKiAgIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XG4gICAgICogXTtcbiAgICAgKlxuICAgICAqIF8uZmluZChvYmplY3RzLCBfLm1hdGNoZXNQcm9wZXJ0eSgnYScsIDQpKTtcbiAgICAgKiAvLyA9PiB7ICdhJzogNCwgJ2InOiA1LCAnYyc6IDYgfVxuICAgICAqXG4gICAgICogLy8gQ2hlY2tpbmcgZm9yIHNldmVyYWwgcG9zc2libGUgdmFsdWVzXG4gICAgICogXy5maWx0ZXIob2JqZWN0cywgXy5vdmVyU29tZShbXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCAxKSwgXy5tYXRjaGVzUHJvcGVydHkoJ2EnLCA0KV0pKTtcbiAgICAgKiAvLyA9PiBbeyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2EnOiA0LCAnYic6IDUsICdjJzogNiB9XVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICAgICAgcmV0dXJuIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgYmFzZUNsb25lKHNyY1ZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHRoZSBtZXRob2QgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICAgICAqIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQgdG8gdGhlIGludm9rZWQgbWV0aG9kLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgbWV0aG9kIHRvIGludm9rZS5cbiAgICAgKiBAcGFyYW0gey4uLip9IFthcmdzXSBUaGUgYXJndW1lbnRzIHRvIGludm9rZSB0aGUgbWV0aG9kIHdpdGguXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgaW52b2tlciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IF8uY29uc3RhbnQoMikgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiBfLmNvbnN0YW50KDEpIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLm1ldGhvZCgnYS5iJykpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqXG4gICAgICogXy5tYXAob2JqZWN0cywgXy5tZXRob2QoWydhJywgJ2InXSkpO1xuICAgICAqIC8vID0+IFsyLCAxXVxuICAgICAqL1xuICAgIHZhciBtZXRob2QgPSBiYXNlUmVzdChmdW5jdGlvbihwYXRoLCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlSW52b2tlKG9iamVjdCwgcGF0aCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVGhlIG9wcG9zaXRlIG9mIGBfLm1ldGhvZGA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXNcbiAgICAgKiB0aGUgbWV0aG9kIGF0IGEgZ2l2ZW4gcGF0aCBvZiBgb2JqZWN0YC4gQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGFyZVxuICAgICAqIHByb3ZpZGVkIHRvIHRoZSBpbnZva2VkIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjcuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICAgICAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIHRoZSBtZXRob2Qgd2l0aC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBpbnZva2VyIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgYXJyYXkgPSBfLnRpbWVzKDMsIF8uY29uc3RhbnQpLFxuICAgICAqICAgICBvYmplY3QgPSB7ICdhJzogYXJyYXksICdiJzogYXJyYXksICdjJzogYXJyYXkgfTtcbiAgICAgKlxuICAgICAqIF8ubWFwKFsnYVsyXScsICdjWzBdJ10sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ubWV0aG9kT2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICovXG4gICAgdmFyIG1ldGhvZE9mID0gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LCBhcmdzKSB7XG4gICAgICByZXR1cm4gZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZShvYmplY3QsIHBhdGgsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEFkZHMgYWxsIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBmdW5jdGlvbiBwcm9wZXJ0aWVzIG9mIGEgc291cmNlXG4gICAgICogb2JqZWN0IHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QuIElmIGBvYmplY3RgIGlzIGEgZnVuY3Rpb24sIHRoZW4gbWV0aG9kc1xuICAgICAqIGFyZSBhZGRlZCB0byBpdHMgcHJvdG90eXBlIGFzIHdlbGwuXG4gICAgICpcbiAgICAgKiAqKk5vdGU6KiogVXNlIGBfLnJ1bkluQ29udGV4dGAgdG8gY3JlYXRlIGEgcHJpc3RpbmUgYGxvZGFzaGAgZnVuY3Rpb24gdG9cbiAgICAgKiBhdm9pZCBjb25mbGljdHMgY2F1c2VkIGJ5IG1vZGlmeWluZyB0aGUgb3JpZ2luYWwuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBbb2JqZWN0PWxvZGFzaF0gVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgZnVuY3Rpb25zIHRvIGFkZC5cbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoYWluPXRydWVdIFNwZWNpZnkgd2hldGhlciBtaXhpbnMgYXJlIGNoYWluYWJsZS5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb258T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBmdW5jdGlvbiB2b3dlbHMoc3RyaW5nKSB7XG4gICAgICogICByZXR1cm4gXy5maWx0ZXIoc3RyaW5nLCBmdW5jdGlvbih2KSB7XG4gICAgICogICAgIHJldHVybiAvW2FlaW91XS9pLnRlc3Qodik7XG4gICAgICogICB9KTtcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBfLm1peGluKHsgJ3Zvd2Vscyc6IHZvd2VscyB9KTtcbiAgICAgKiBfLnZvd2VscygnZnJlZCcpO1xuICAgICAqIC8vID0+IFsnZSddXG4gICAgICpcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCkudmFsdWUoKTtcbiAgICAgKiAvLyA9PiBbJ2UnXVxuICAgICAqXG4gICAgICogXy5taXhpbih7ICd2b3dlbHMnOiB2b3dlbHMgfSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcbiAgICAgKiBfKCdmcmVkJykudm93ZWxzKCk7XG4gICAgICogLy8gPT4gWydlJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtaXhpbihvYmplY3QsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgICAgdmFyIHByb3BzID0ga2V5cyhzb3VyY2UpLFxuICAgICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIHByb3BzKTtcblxuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCAmJlxuICAgICAgICAgICEoaXNPYmplY3Qoc291cmNlKSAmJiAobWV0aG9kTmFtZXMubGVuZ3RoIHx8ICFwcm9wcy5sZW5ndGgpKSkge1xuICAgICAgICBvcHRpb25zID0gc291cmNlO1xuICAgICAgICBzb3VyY2UgPSBvYmplY3Q7XG4gICAgICAgIG9iamVjdCA9IHRoaXM7XG4gICAgICAgIG1ldGhvZE5hbWVzID0gYmFzZUZ1bmN0aW9ucyhzb3VyY2UsIGtleXMoc291cmNlKSk7XG4gICAgICB9XG4gICAgICB2YXIgY2hhaW4gPSAhKGlzT2JqZWN0KG9wdGlvbnMpICYmICdjaGFpbicgaW4gb3B0aW9ucykgfHwgISFvcHRpb25zLmNoYWluLFxuICAgICAgICAgIGlzRnVuYyA9IGlzRnVuY3Rpb24ob2JqZWN0KTtcblxuICAgICAgYXJyYXlFYWNoKG1ldGhvZE5hbWVzLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICAgIHZhciBmdW5jID0gc291cmNlW21ldGhvZE5hbWVdO1xuICAgICAgICBvYmplY3RbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICBpZiAoaXNGdW5jKSB7XG4gICAgICAgICAgb2JqZWN0LnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX187XG4gICAgICAgICAgICBpZiAoY2hhaW4gfHwgY2hhaW5BbGwpIHtcbiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IG9iamVjdCh0aGlzLl9fd3JhcHBlZF9fKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnMgPSByZXN1bHQuX19hY3Rpb25zX18gPSBjb3B5QXJyYXkodGhpcy5fX2FjdGlvbnNfXyk7XG5cbiAgICAgICAgICAgICAgYWN0aW9ucy5wdXNoKHsgJ2Z1bmMnOiBmdW5jLCAnYXJncyc6IGFyZ3VtZW50cywgJ3RoaXNBcmcnOiBvYmplY3QgfSk7XG4gICAgICAgICAgICAgIHJlc3VsdC5fX2NoYWluX18gPSBjaGFpbkFsbDtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KG9iamVjdCwgYXJyYXlQdXNoKFt0aGlzLnZhbHVlKCldLCBhcmd1bWVudHMpKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIHRoZSBgX2AgdmFyaWFibGUgdG8gaXRzIHByZXZpb3VzIHZhbHVlIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvXG4gICAgICogdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBzaW5jZSAwLjEuMFxuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGBsb2Rhc2hgIGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgbG9kYXNoID0gXy5ub0NvbmZsaWN0KCk7XG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9Db25mbGljdCgpIHtcbiAgICAgIGlmIChyb290Ll8gPT09IHRoaXMpIHtcbiAgICAgICAgcm9vdC5fID0gb2xkRGFzaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMi4zLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gICAgICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIGFyZ3VtZW50IGF0IGluZGV4IGBuYC4gSWYgYG5gIGlzIG5lZ2F0aXZlLFxuICAgICAqIHRoZSBudGggYXJndW1lbnQgZnJvbSB0aGUgZW5kIGlzIHJldHVybmVkLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW249MF0gVGhlIGluZGV4IG9mIHRoZSBhcmd1bWVudCB0byByZXR1cm4uXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcGFzcy10aHJ1IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ubnRoQXJnKDEpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYidcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5udGhBcmcoLTIpO1xuICAgICAqIGZ1bmMoJ2EnLCAnYicsICdjJywgJ2QnKTtcbiAgICAgKiAvLyA9PiAnYydcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBudGhBcmcobikge1xuICAgICAgbiA9IHRvSW50ZWdlcihuKTtcbiAgICAgIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKSB7XG4gICAgICAgIHJldHVybiBiYXNlTnRoKGFyZ3MsIG4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgaXRlcmF0ZWVzYCB3aXRoIHRoZSBhcmd1bWVudHMgaXQgcmVjZWl2ZXNcbiAgICAgKiBhbmQgcmV0dXJucyB0aGVpciByZXN1bHRzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0gey4uLihGdW5jdGlvbnxGdW5jdGlvbltdKX0gW2l0ZXJhdGVlcz1bXy5pZGVudGl0eV1dXG4gICAgICogIFRoZSBpdGVyYXRlZXMgdG8gaW52b2tlLlxuICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgZnVuYyA9IF8ub3ZlcihbTWF0aC5tYXgsIE1hdGgubWluXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKDEsIDIsIDMsIDQpO1xuICAgICAqIC8vID0+IFs0LCAxXVxuICAgICAqL1xuICAgIHZhciBvdmVyID0gY3JlYXRlT3ZlcihhcnJheU1hcCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbGwqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyRXZlcnkoW0Jvb2xlYW4sIGlzRmluaXRlXSk7XG4gICAgICpcbiAgICAgKiBmdW5jKCcxJyk7XG4gICAgICogLy8gPT4gdHJ1ZVxuICAgICAqXG4gICAgICogZnVuYyhudWxsKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogZnVuYyhOYU4pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgdmFyIG92ZXJFdmVyeSA9IGNyZWF0ZU92ZXIoYXJyYXlFdmVyeSk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgaWYgKiphbnkqKiBvZiB0aGUgYHByZWRpY2F0ZXNgIHJldHVyblxuICAgICAqIHRydXRoeSB3aGVuIGludm9rZWQgd2l0aCB0aGUgYXJndW1lbnRzIGl0IHJlY2VpdmVzLlxuICAgICAqXG4gICAgICogRm9sbG93aW5nIHNob3J0aGFuZHMgYXJlIHBvc3NpYmxlIGZvciBwcm92aWRpbmcgcHJlZGljYXRlcy5cbiAgICAgKiBQYXNzIGFuIGBPYmplY3RgIGFuZCBpdCB3aWxsIGJlIHVzZWQgYXMgYW4gcGFyYW1ldGVyIGZvciBgXy5tYXRjaGVzYCB0byBjcmVhdGUgdGhlIHByZWRpY2F0ZS5cbiAgICAgKiBQYXNzIGFuIGBBcnJheWAgb2YgcGFyYW1ldGVycyBmb3IgYF8ubWF0Y2hlc1Byb3BlcnR5YCBhbmQgdGhlIHByZWRpY2F0ZSB3aWxsIGJlIGNyZWF0ZWQgdXNpbmcgdGhlbS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjAuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHsuLi4oRnVuY3Rpb258RnVuY3Rpb25bXSl9IFtwcmVkaWNhdGVzPVtfLmlkZW50aXR5XV1cbiAgICAgKiAgVGhlIHByZWRpY2F0ZXMgdG8gY2hlY2suXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBmdW5jID0gXy5vdmVyU29tZShbQm9vbGVhbiwgaXNGaW5pdGVdKTtcbiAgICAgKlxuICAgICAqIGZ1bmMoJzEnKTtcbiAgICAgKiAvLyA9PiB0cnVlXG4gICAgICpcbiAgICAgKiBmdW5jKG51bGwpO1xuICAgICAqIC8vID0+IHRydWVcbiAgICAgKlxuICAgICAqIGZ1bmMoTmFOKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqXG4gICAgICogdmFyIG1hdGNoZXNGdW5jID0gXy5vdmVyU29tZShbeyAnYSc6IDEgfSwgeyAnYSc6IDIgfV0pXG4gICAgICogdmFyIG1hdGNoZXNQcm9wZXJ0eUZ1bmMgPSBfLm92ZXJTb21lKFtbJ2EnLCAxXSwgWydhJywgMl1dKVxuICAgICAqL1xuICAgIHZhciBvdmVyU29tZSA9IGNyZWF0ZU92ZXIoYXJyYXlTb21lKTtcblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHZhbHVlIGF0IGBwYXRoYCBvZiBhIGdpdmVuIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAyLjQuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAgICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbXG4gICAgICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICAgICAqICAgeyAnYSc6IHsgJ2InOiAxIH0gfVxuICAgICAqIF07XG4gICAgICpcbiAgICAgKiBfLm1hcChvYmplY3RzLCBfLnByb3BlcnR5KCdhLmInKSk7XG4gICAgICogLy8gPT4gWzIsIDFdXG4gICAgICpcbiAgICAgKiBfLm1hcChfLnNvcnRCeShvYmplY3RzLCBfLnByb3BlcnR5KFsnYScsICdiJ10pKSwgJ2EuYicpO1xuICAgICAqIC8vID0+IFsxLCAyXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHByb3BlcnR5KHBhdGgpIHtcbiAgICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBvcHBvc2l0ZSBvZiBgXy5wcm9wZXJ0eWA7IHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnNcbiAgICAgKiB0aGUgdmFsdWUgYXQgYSBnaXZlbiBwYXRoIG9mIGBvYmplY3RgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gICAgICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheSA9IFswLCAxLCAyXSxcbiAgICAgKiAgICAgb2JqZWN0ID0geyAnYSc6IGFycmF5LCAnYic6IGFycmF5LCAnYyc6IGFycmF5IH07XG4gICAgICpcbiAgICAgKiBfLm1hcChbJ2FbMl0nLCAnY1swXSddLCBfLnByb3BlcnR5T2Yob2JqZWN0KSk7XG4gICAgICogLy8gPT4gWzIsIDBdXG4gICAgICpcbiAgICAgKiBfLm1hcChbWydhJywgJzInXSwgWydjJywgJzAnXV0sIF8ucHJvcGVydHlPZihvYmplY3QpKTtcbiAgICAgKiAvLyA9PiBbMiwgMF1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBwcm9wZXJ0eU9mKG9iamVjdCkge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogYmFzZUdldChvYmplY3QsIHBhdGgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICAgICAqIGBzdGFydGAgdXAgdG8sIGJ1dCBub3QgaW5jbHVkaW5nLCBgZW5kYC4gQSBzdGVwIG9mIGAtMWAgaXMgdXNlZCBpZiBhIG5lZ2F0aXZlXG4gICAgICogYHN0YXJ0YCBpcyBzcGVjaWZpZWQgd2l0aG91dCBhbiBgZW5kYCBvciBgc3RlcGAuIElmIGBlbmRgIGlzIG5vdCBzcGVjaWZpZWQsXG4gICAgICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICAgICAqXG4gICAgICogKipOb3RlOioqIEphdmFTY3JpcHQgZm9sbG93cyB0aGUgSUVFRS03NTQgc3RhbmRhcmQgZm9yIHJlc29sdmluZ1xuICAgICAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZW5kIFRoZSBlbmQgb2YgdGhlIHJhbmdlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbc3RlcD0xXSBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gICAgICogQHNlZSBfLmluUmFuZ2UsIF8ucmFuZ2VSaWdodFxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDQpO1xuICAgICAqIC8vID0+IFswLCAxLCAyLCAzXVxuICAgICAqXG4gICAgICogXy5yYW5nZSgtNCk7XG4gICAgICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDEsIDUpO1xuICAgICAqIC8vID0+IFsxLCAyLCAzLCA0XVxuICAgICAqXG4gICAgICogXy5yYW5nZSgwLCAyMCwgNSk7XG4gICAgICogLy8gPT4gWzAsIDUsIDEwLCAxNV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbMCwgLTEsIC0yLCAtM11cbiAgICAgKlxuICAgICAqIF8ucmFuZ2UoMSwgNCwgMCk7XG4gICAgICogLy8gPT4gWzEsIDEsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlKDApO1xuICAgICAqIC8vID0+IFtdXG4gICAgICovXG4gICAgdmFyIHJhbmdlID0gY3JlYXRlUmFuZ2UoKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ucmFuZ2VgIGV4Y2VwdCB0aGF0IGl0IHBvcHVsYXRlcyB2YWx1ZXMgaW5cbiAgICAgKiBkZXNjZW5kaW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBvZiB0aGUgcmFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGVuZCBUaGUgZW5kIG9mIHRoZSByYW5nZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICAgICAqIEBzZWUgXy5pblJhbmdlLCBfLnJhbmdlXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCg0KTtcbiAgICAgKiAvLyA9PiBbMywgMiwgMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgtNCk7XG4gICAgICogLy8gPT4gWy0zLCAtMiwgLTEsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMSwgNSk7XG4gICAgICogLy8gPT4gWzQsIDMsIDIsIDFdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgMjAsIDUpO1xuICAgICAqIC8vID0+IFsxNSwgMTAsIDUsIDBdXG4gICAgICpcbiAgICAgKiBfLnJhbmdlUmlnaHQoMCwgLTQsIC0xKTtcbiAgICAgKiAvLyA9PiBbLTMsIC0yLCAtMSwgMF1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgxLCA0LCAwKTtcbiAgICAgKiAvLyA9PiBbMSwgMSwgMV1cbiAgICAgKlxuICAgICAqIF8ucmFuZ2VSaWdodCgwKTtcbiAgICAgKiAvLyA9PiBbXVxuICAgICAqL1xuICAgIHZhciByYW5nZVJpZ2h0ID0gY3JlYXRlUmFuZ2UodHJ1ZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMTMuMFxuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZW1wdHkgYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBhcnJheXMgPSBfLnRpbWVzKDIsIF8uc3R1YkFycmF5KTtcbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gICAgICogLy8gPT4gW1tdLCBbXV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAgICAgKiAvLyA9PiBmYWxzZVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4xMy4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAgICAgKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGVtcHR5IG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBvYmplY3QuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLnN0dWJPYmplY3QpO1xuICAgICAqXG4gICAgICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gICAgICogLy8gPT4gW3t9LCB7fV1cbiAgICAgKlxuICAgICAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICAgICAqIC8vID0+IGZhbHNlXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1Yk9iamVjdCgpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJTdHJpbmcpO1xuICAgICAqIC8vID0+IFsnJywgJyddXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3R1YlN0cmluZygpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB0cnVlYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjEzLjBcbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy50aW1lcygyLCBfLnN0dWJUcnVlKTtcbiAgICAgKiAvLyA9PiBbdHJ1ZSwgdHJ1ZV1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdHViVHJ1ZSgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEludm9rZXMgdGhlIGl0ZXJhdGVlIGBuYCB0aW1lcywgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHRoZSByZXN1bHRzIG9mXG4gICAgICogZWFjaCBpbnZvY2F0aW9uLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDsgKGluZGV4KS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBVdGlsXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udGltZXMoMywgU3RyaW5nKTtcbiAgICAgKiAvLyA9PiBbJzAnLCAnMScsICcyJ11cbiAgICAgKlxuICAgICAqICBfLnRpbWVzKDQsIF8uY29uc3RhbnQoMCkpO1xuICAgICAqIC8vID0+IFswLCAwLCAwLCAwXVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRpbWVzKG4sIGl0ZXJhdGVlKSB7XG4gICAgICBuID0gdG9JbnRlZ2VyKG4pO1xuICAgICAgaWYgKG4gPCAxIHx8IG4gPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHZhciBpbmRleCA9IE1BWF9BUlJBWV9MRU5HVEgsXG4gICAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWluKG4sIE1BWF9BUlJBWV9MRU5HVEgpO1xuXG4gICAgICBpdGVyYXRlZSA9IGdldEl0ZXJhdGVlKGl0ZXJhdGVlKTtcbiAgICAgIG4gLT0gTUFYX0FSUkFZX0xFTkdUSDtcblxuICAgICAgdmFyIHJlc3VsdCA9IGJhc2VUaW1lcyhsZW5ndGgsIGl0ZXJhdGVlKTtcbiAgICAgIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgICAgICBpdGVyYXRlZShpbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IFV0aWxcbiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICAgICAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IHByb3BlcnR5IHBhdGggYXJyYXkuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8udG9QYXRoKCdhLmIuYycpO1xuICAgICAqIC8vID0+IFsnYScsICdiJywgJ2MnXVxuICAgICAqXG4gICAgICogXy50b1BhdGgoJ2FbMF0uYi5jJyk7XG4gICAgICogLy8gPT4gWydhJywgJzAnLCAnYicsICdjJ11cbiAgICAgKi9cbiAgICBmdW5jdGlvbiB0b1BhdGgodmFsdWUpIHtcbiAgICAgIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gYXJyYXlNYXAodmFsdWUsIHRvS2V5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpc1N5bWJvbCh2YWx1ZSkgPyBbdmFsdWVdIDogY29weUFycmF5KHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIElmIGBwcmVmaXhgIGlzIGdpdmVuLCB0aGUgSUQgaXMgYXBwZW5kZWQgdG8gaXQuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQHNpbmNlIDAuMS4wXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAY2F0ZWdvcnkgVXRpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcHJlZml4PScnXSBUaGUgdmFsdWUgdG8gcHJlZml4IHRoZSBJRCB3aXRoLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAgICAgKiAvLyA9PiAnY29udGFjdF8xMDQnXG4gICAgICpcbiAgICAgKiBfLnVuaXF1ZUlkKCk7XG4gICAgICogLy8gPT4gJzEwNSdcbiAgICAgKi9cbiAgICBmdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgICAgIHZhciBpZCA9ICsraWRDb3VudGVyO1xuICAgICAgcmV0dXJuIHRvU3RyaW5nKHByZWZpeCkgKyBpZDtcbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIHR3byBudW1iZXJzLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDMuNC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYXVnZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYW4gYWRkaXRpb24uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhbiBhZGRpdGlvbi5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0b3RhbC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5hZGQoNiwgNCk7XG4gICAgICogLy8gPT4gMTBcbiAgICAgKi9cbiAgICB2YXIgYWRkID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihhdWdlbmQsIGFkZGVuZCkge1xuICAgICAgcmV0dXJuIGF1Z2VuZCArIGFkZGVuZDtcbiAgICB9LCAwKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdXAgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQgdXAuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB1cCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIHVwIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5jZWlsKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA1XG4gICAgICpcbiAgICAgKiBfLmNlaWwoNi4wMDQsIDIpO1xuICAgICAqIC8vID0+IDYuMDFcbiAgICAgKlxuICAgICAqIF8uY2VpbCg2MDQwLCAtMik7XG4gICAgICogLy8gPT4gNjEwMFxuICAgICAqL1xuICAgIHZhciBjZWlsID0gY3JlYXRlUm91bmQoJ2NlaWwnKTtcblxuICAgIC8qKlxuICAgICAqIERpdmlkZSB0d28gbnVtYmVycy5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRpdmlkZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBkaXZpc2lvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGl2aXNvciBUaGUgc2Vjb25kIG51bWJlciBpbiBhIGRpdmlzaW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHF1b3RpZW50LlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmRpdmlkZSg2LCA0KTtcbiAgICAgKiAvLyA9PiAxLjVcbiAgICAgKi9cbiAgICB2YXIgZGl2aWRlID0gY3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihkaXZpZGVuZCwgZGl2aXNvcikge1xuICAgICAgcmV0dXJuIGRpdmlkZW5kIC8gZGl2aXNvcjtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgZG93biB0byBgcHJlY2lzaW9uYC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSAzLjEwLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBudW1iZXIgVGhlIG51bWJlciB0byByb3VuZCBkb3duLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIFRoZSBwcmVjaXNpb24gdG8gcm91bmQgZG93biB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIGRvd24gbnVtYmVyLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQuMDA2KTtcbiAgICAgKiAvLyA9PiA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDAuMDQ2LCAyKTtcbiAgICAgKiAvLyA9PiAwLjA0XG4gICAgICpcbiAgICAgKiBfLmZsb29yKDQwNjAsIC0yKTtcbiAgICAgKiAvLyA9PiA0MDAwXG4gICAgICovXG4gICAgdmFyIGZsb29yID0gY3JlYXRlUm91bmQoJ2Zsb29yJyk7XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tYXgoWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiA4XG4gICAgICpcbiAgICAgKiBfLm1heChbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWF4KGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlR3QpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWF4YCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWF4Qnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMiB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1heEJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDIgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1heEJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VHdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIG1lYW4gb2YgdGhlIHZhbHVlcyBpbiBgYXJyYXlgLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG1lYW4uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8ubWVhbihbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBtZWFuKGFycmF5KSB7XG4gICAgICByZXR1cm4gYmFzZU1lYW4oYXJyYXksIGlkZW50aXR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1lYW5gIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYGl0ZXJhdGVlYCB3aGljaCBpc1xuICAgICAqIGludm9rZWQgZm9yIGVhY2ggZWxlbWVudCBpbiBgYXJyYXlgIHRvIGdlbmVyYXRlIHRoZSB2YWx1ZSB0byBiZSBhdmVyYWdlZC5cbiAgICAgKiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBzaW5jZSA0LjcuMFxuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbWVhbi5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogdmFyIG9iamVjdHMgPSBbeyAnbic6IDQgfSwgeyAnbic6IDIgfSwgeyAnbic6IDggfSwgeyAnbic6IDYgfV07XG4gICAgICpcbiAgICAgKiBfLm1lYW5CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDVcbiAgICAgKlxuICAgICAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICAgICAqIF8ubWVhbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gNVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1lYW5CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBiYXNlTWVhbihhcnJheSwgZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgbWluaW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAgICAgKiBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAc2luY2UgMC4xLjBcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEBjYXRlZ29yeSBNYXRoXG4gICAgICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAgICAgKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAgICAgKiAvLyA9PiAyXG4gICAgICpcbiAgICAgKiBfLm1pbihbXSk7XG4gICAgICogLy8gPT4gdW5kZWZpbmVkXG4gICAgICovXG4gICAgZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlRXh0cmVtdW0oYXJyYXksIGlkZW50aXR5LCBiYXNlTHQpXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8ubWluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gICAgICogdGhlIHZhbHVlIGlzIHJhbmtlZC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICAgICAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAgICAgKlxuICAgICAqIF8ubWluQnkob2JqZWN0cywgZnVuY3Rpb24obykgeyByZXR1cm4gby5uOyB9KTtcbiAgICAgKiAvLyA9PiB7ICduJzogMSB9XG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4geyAnbic6IDEgfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICAgICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpXG4gICAgICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBnZXRJdGVyYXRlZShpdGVyYXRlZSwgMiksIGJhc2VMdClcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTXVsdGlwbHkgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC43LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtdWx0aXBsaWVyIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBtdWx0aXBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbXVsdGlwbGljYW5kIFRoZSBzZWNvbmQgbnVtYmVyIGluIGEgbXVsdGlwbGljYXRpb24uXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgcHJvZHVjdC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5tdWx0aXBseSg2LCA0KTtcbiAgICAgKiAvLyA9PiAyNFxuICAgICAqL1xuICAgIHZhciBtdWx0aXBseSA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obXVsdGlwbGllciwgbXVsdGlwbGljYW5kKSB7XG4gICAgICByZXR1cm4gbXVsdGlwbGllciAqIG11bHRpcGxpY2FuZDtcbiAgICB9LCAxKTtcblxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGBudW1iZXJgIHJvdW5kZWQgdG8gYHByZWNpc2lvbmAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy4xMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbnVtYmVyIFRoZSBudW1iZXIgdG8gcm91bmQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MF0gVGhlIHByZWNpc2lvbiB0byByb3VuZCB0by5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSByb3VuZGVkIG51bWJlci5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNik7XG4gICAgICogLy8gPT4gNFxuICAgICAqXG4gICAgICogXy5yb3VuZCg0LjAwNiwgMik7XG4gICAgICogLy8gPT4gNC4wMVxuICAgICAqXG4gICAgICogXy5yb3VuZCg0MDYwLCAtMik7XG4gICAgICogLy8gPT4gNDEwMFxuICAgICAqL1xuICAgIHZhciByb3VuZCA9IGNyZWF0ZVJvdW5kKCdyb3VuZCcpO1xuXG4gICAgLyoqXG4gICAgICogU3VidHJhY3QgdHdvIG51bWJlcnMuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgNC4wLjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtaW51ZW5kIFRoZSBmaXJzdCBudW1iZXIgaW4gYSBzdWJ0cmFjdGlvbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc3VidHJhaGVuZCBUaGUgc2Vjb25kIG51bWJlciBpbiBhIHN1YnRyYWN0aW9uLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGRpZmZlcmVuY2UuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIF8uc3VidHJhY3QoNiwgNCk7XG4gICAgICogLy8gPT4gMlxuICAgICAqL1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24obWludWVuZCwgc3VidHJhaGVuZCkge1xuICAgICAgcmV0dXJuIG1pbnVlbmQgLSBzdWJ0cmFoZW5kO1xuICAgIH0sIDApO1xuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgdGhlIHN1bSBvZiB0aGUgdmFsdWVzIGluIGBhcnJheWAuXG4gICAgICpcbiAgICAgKiBAc3RhdGljXG4gICAgICogQG1lbWJlck9mIF9cbiAgICAgKiBAc2luY2UgMy40LjBcbiAgICAgKiBAY2F0ZWdvcnkgTWF0aFxuICAgICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gICAgICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3VtLlxuICAgICAqIEBleGFtcGxlXG4gICAgICpcbiAgICAgKiBfLnN1bShbNCwgMiwgOCwgNl0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICovXG4gICAgZnVuY3Rpb24gc3VtKGFycmF5KSB7XG4gICAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICAgICAgPyBiYXNlU3VtKGFycmF5LCBpZGVudGl0eSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uc3VtYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBpdGVyYXRlZWAgd2hpY2ggaXNcbiAgICAgKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgdmFsdWUgdG8gYmUgc3VtbWVkLlxuICAgICAqIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggb25lIGFyZ3VtZW50OiAodmFsdWUpLlxuICAgICAqXG4gICAgICogQHN0YXRpY1xuICAgICAqIEBtZW1iZXJPZiBfXG4gICAgICogQHNpbmNlIDQuMC4wXG4gICAgICogQGNhdGVnb3J5IE1hdGhcbiAgICAgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdW0uXG4gICAgICogQGV4YW1wbGVcbiAgICAgKlxuICAgICAqIHZhciBvYmplY3RzID0gW3sgJ24nOiA0IH0sIHsgJ24nOiAyIH0sIHsgJ24nOiA4IH0sIHsgJ24nOiA2IH1dO1xuICAgICAqXG4gICAgICogXy5zdW1CeShvYmplY3RzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLm47IH0pO1xuICAgICAqIC8vID0+IDIwXG4gICAgICpcbiAgICAgKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAgICAgKiBfLnN1bUJ5KG9iamVjdHMsICduJyk7XG4gICAgICogLy8gPT4gMjBcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdW1CeShhcnJheSwgaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgICAgICA/IGJhc2VTdW0oYXJyYXksIGdldEl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSlcbiAgICAgICAgOiAwO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8vIEFkZCBtZXRob2RzIHRoYXQgcmV0dXJuIHdyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWZ0ZXIgPSBhZnRlcjtcbiAgICBsb2Rhc2guYXJ5ID0gYXJ5O1xuICAgIGxvZGFzaC5hc3NpZ24gPSBhc3NpZ247XG4gICAgbG9kYXNoLmFzc2lnbkluID0gYXNzaWduSW47XG4gICAgbG9kYXNoLmFzc2lnbkluV2l0aCA9IGFzc2lnbkluV2l0aDtcbiAgICBsb2Rhc2guYXNzaWduV2l0aCA9IGFzc2lnbldpdGg7XG4gICAgbG9kYXNoLmF0ID0gYXQ7XG4gICAgbG9kYXNoLmJlZm9yZSA9IGJlZm9yZTtcbiAgICBsb2Rhc2guYmluZCA9IGJpbmQ7XG4gICAgbG9kYXNoLmJpbmRBbGwgPSBiaW5kQWxsO1xuICAgIGxvZGFzaC5iaW5kS2V5ID0gYmluZEtleTtcbiAgICBsb2Rhc2guY2FzdEFycmF5ID0gY2FzdEFycmF5O1xuICAgIGxvZGFzaC5jaGFpbiA9IGNoYWluO1xuICAgIGxvZGFzaC5jaHVuayA9IGNodW5rO1xuICAgIGxvZGFzaC5jb21wYWN0ID0gY29tcGFjdDtcbiAgICBsb2Rhc2guY29uY2F0ID0gY29uY2F0O1xuICAgIGxvZGFzaC5jb25kID0gY29uZDtcbiAgICBsb2Rhc2guY29uZm9ybXMgPSBjb25mb3JtcztcbiAgICBsb2Rhc2guY29uc3RhbnQgPSBjb25zdGFudDtcbiAgICBsb2Rhc2guY291bnRCeSA9IGNvdW50Qnk7XG4gICAgbG9kYXNoLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICBsb2Rhc2guY3VycnkgPSBjdXJyeTtcbiAgICBsb2Rhc2guY3VycnlSaWdodCA9IGN1cnJ5UmlnaHQ7XG4gICAgbG9kYXNoLmRlYm91bmNlID0gZGVib3VuY2U7XG4gICAgbG9kYXNoLmRlZmF1bHRzID0gZGVmYXVsdHM7XG4gICAgbG9kYXNoLmRlZmF1bHRzRGVlcCA9IGRlZmF1bHRzRGVlcDtcbiAgICBsb2Rhc2guZGVmZXIgPSBkZWZlcjtcbiAgICBsb2Rhc2guZGVsYXkgPSBkZWxheTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZSA9IGRpZmZlcmVuY2U7XG4gICAgbG9kYXNoLmRpZmZlcmVuY2VCeSA9IGRpZmZlcmVuY2VCeTtcbiAgICBsb2Rhc2guZGlmZmVyZW5jZVdpdGggPSBkaWZmZXJlbmNlV2l0aDtcbiAgICBsb2Rhc2guZHJvcCA9IGRyb3A7XG4gICAgbG9kYXNoLmRyb3BSaWdodCA9IGRyb3BSaWdodDtcbiAgICBsb2Rhc2guZHJvcFJpZ2h0V2hpbGUgPSBkcm9wUmlnaHRXaGlsZTtcbiAgICBsb2Rhc2guZHJvcFdoaWxlID0gZHJvcFdoaWxlO1xuICAgIGxvZGFzaC5maWxsID0gZmlsbDtcbiAgICBsb2Rhc2guZmlsdGVyID0gZmlsdGVyO1xuICAgIGxvZGFzaC5mbGF0TWFwID0gZmxhdE1hcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlZXAgPSBmbGF0TWFwRGVlcDtcbiAgICBsb2Rhc2guZmxhdE1hcERlcHRoID0gZmxhdE1hcERlcHRoO1xuICAgIGxvZGFzaC5mbGF0dGVuID0gZmxhdHRlbjtcbiAgICBsb2Rhc2guZmxhdHRlbkRlZXAgPSBmbGF0dGVuRGVlcDtcbiAgICBsb2Rhc2guZmxhdHRlbkRlcHRoID0gZmxhdHRlbkRlcHRoO1xuICAgIGxvZGFzaC5mbGlwID0gZmxpcDtcbiAgICBsb2Rhc2guZmxvdyA9IGZsb3c7XG4gICAgbG9kYXNoLmZsb3dSaWdodCA9IGZsb3dSaWdodDtcbiAgICBsb2Rhc2guZnJvbVBhaXJzID0gZnJvbVBhaXJzO1xuICAgIGxvZGFzaC5mdW5jdGlvbnMgPSBmdW5jdGlvbnM7XG4gICAgbG9kYXNoLmZ1bmN0aW9uc0luID0gZnVuY3Rpb25zSW47XG4gICAgbG9kYXNoLmdyb3VwQnkgPSBncm91cEJ5O1xuICAgIGxvZGFzaC5pbml0aWFsID0gaW5pdGlhbDtcbiAgICBsb2Rhc2guaW50ZXJzZWN0aW9uID0gaW50ZXJzZWN0aW9uO1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25CeSA9IGludGVyc2VjdGlvbkJ5O1xuICAgIGxvZGFzaC5pbnRlcnNlY3Rpb25XaXRoID0gaW50ZXJzZWN0aW9uV2l0aDtcbiAgICBsb2Rhc2guaW52ZXJ0ID0gaW52ZXJ0O1xuICAgIGxvZGFzaC5pbnZlcnRCeSA9IGludmVydEJ5O1xuICAgIGxvZGFzaC5pbnZva2VNYXAgPSBpbnZva2VNYXA7XG4gICAgbG9kYXNoLml0ZXJhdGVlID0gaXRlcmF0ZWU7XG4gICAgbG9kYXNoLmtleUJ5ID0ga2V5Qnk7XG4gICAgbG9kYXNoLmtleXMgPSBrZXlzO1xuICAgIGxvZGFzaC5rZXlzSW4gPSBrZXlzSW47XG4gICAgbG9kYXNoLm1hcCA9IG1hcDtcbiAgICBsb2Rhc2gubWFwS2V5cyA9IG1hcEtleXM7XG4gICAgbG9kYXNoLm1hcFZhbHVlcyA9IG1hcFZhbHVlcztcbiAgICBsb2Rhc2gubWF0Y2hlcyA9IG1hdGNoZXM7XG4gICAgbG9kYXNoLm1hdGNoZXNQcm9wZXJ0eSA9IG1hdGNoZXNQcm9wZXJ0eTtcbiAgICBsb2Rhc2gubWVtb2l6ZSA9IG1lbW9pemU7XG4gICAgbG9kYXNoLm1lcmdlID0gbWVyZ2U7XG4gICAgbG9kYXNoLm1lcmdlV2l0aCA9IG1lcmdlV2l0aDtcbiAgICBsb2Rhc2gubWV0aG9kID0gbWV0aG9kO1xuICAgIGxvZGFzaC5tZXRob2RPZiA9IG1ldGhvZE9mO1xuICAgIGxvZGFzaC5taXhpbiA9IG1peGluO1xuICAgIGxvZGFzaC5uZWdhdGUgPSBuZWdhdGU7XG4gICAgbG9kYXNoLm50aEFyZyA9IG50aEFyZztcbiAgICBsb2Rhc2gub21pdCA9IG9taXQ7XG4gICAgbG9kYXNoLm9taXRCeSA9IG9taXRCeTtcbiAgICBsb2Rhc2gub25jZSA9IG9uY2U7XG4gICAgbG9kYXNoLm9yZGVyQnkgPSBvcmRlckJ5O1xuICAgIGxvZGFzaC5vdmVyID0gb3ZlcjtcbiAgICBsb2Rhc2gub3ZlckFyZ3MgPSBvdmVyQXJncztcbiAgICBsb2Rhc2gub3ZlckV2ZXJ5ID0gb3ZlckV2ZXJ5O1xuICAgIGxvZGFzaC5vdmVyU29tZSA9IG92ZXJTb21lO1xuICAgIGxvZGFzaC5wYXJ0aWFsID0gcGFydGlhbDtcbiAgICBsb2Rhc2gucGFydGlhbFJpZ2h0ID0gcGFydGlhbFJpZ2h0O1xuICAgIGxvZGFzaC5wYXJ0aXRpb24gPSBwYXJ0aXRpb247XG4gICAgbG9kYXNoLnBpY2sgPSBwaWNrO1xuICAgIGxvZGFzaC5waWNrQnkgPSBwaWNrQnk7XG4gICAgbG9kYXNoLnByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgbG9kYXNoLnByb3BlcnR5T2YgPSBwcm9wZXJ0eU9mO1xuICAgIGxvZGFzaC5wdWxsID0gcHVsbDtcbiAgICBsb2Rhc2gucHVsbEFsbCA9IHB1bGxBbGw7XG4gICAgbG9kYXNoLnB1bGxBbGxCeSA9IHB1bGxBbGxCeTtcbiAgICBsb2Rhc2gucHVsbEFsbFdpdGggPSBwdWxsQWxsV2l0aDtcbiAgICBsb2Rhc2gucHVsbEF0ID0gcHVsbEF0O1xuICAgIGxvZGFzaC5yYW5nZSA9IHJhbmdlO1xuICAgIGxvZGFzaC5yYW5nZVJpZ2h0ID0gcmFuZ2VSaWdodDtcbiAgICBsb2Rhc2gucmVhcmcgPSByZWFyZztcbiAgICBsb2Rhc2gucmVqZWN0ID0gcmVqZWN0O1xuICAgIGxvZGFzaC5yZW1vdmUgPSByZW1vdmU7XG4gICAgbG9kYXNoLnJlc3QgPSByZXN0O1xuICAgIGxvZGFzaC5yZXZlcnNlID0gcmV2ZXJzZTtcbiAgICBsb2Rhc2guc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgbG9kYXNoLnNldCA9IHNldDtcbiAgICBsb2Rhc2guc2V0V2l0aCA9IHNldFdpdGg7XG4gICAgbG9kYXNoLnNodWZmbGUgPSBzaHVmZmxlO1xuICAgIGxvZGFzaC5zbGljZSA9IHNsaWNlO1xuICAgIGxvZGFzaC5zb3J0QnkgPSBzb3J0Qnk7XG4gICAgbG9kYXNoLnNvcnRlZFVuaXEgPSBzb3J0ZWRVbmlxO1xuICAgIGxvZGFzaC5zb3J0ZWRVbmlxQnkgPSBzb3J0ZWRVbmlxQnk7XG4gICAgbG9kYXNoLnNwbGl0ID0gc3BsaXQ7XG4gICAgbG9kYXNoLnNwcmVhZCA9IHNwcmVhZDtcbiAgICBsb2Rhc2gudGFpbCA9IHRhaWw7XG4gICAgbG9kYXNoLnRha2UgPSB0YWtlO1xuICAgIGxvZGFzaC50YWtlUmlnaHQgPSB0YWtlUmlnaHQ7XG4gICAgbG9kYXNoLnRha2VSaWdodFdoaWxlID0gdGFrZVJpZ2h0V2hpbGU7XG4gICAgbG9kYXNoLnRha2VXaGlsZSA9IHRha2VXaGlsZTtcbiAgICBsb2Rhc2gudGFwID0gdGFwO1xuICAgIGxvZGFzaC50aHJvdHRsZSA9IHRocm90dGxlO1xuICAgIGxvZGFzaC50aHJ1ID0gdGhydTtcbiAgICBsb2Rhc2gudG9BcnJheSA9IHRvQXJyYXk7XG4gICAgbG9kYXNoLnRvUGFpcnMgPSB0b1BhaXJzO1xuICAgIGxvZGFzaC50b1BhaXJzSW4gPSB0b1BhaXJzSW47XG4gICAgbG9kYXNoLnRvUGF0aCA9IHRvUGF0aDtcbiAgICBsb2Rhc2gudG9QbGFpbk9iamVjdCA9IHRvUGxhaW5PYmplY3Q7XG4gICAgbG9kYXNoLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbiAgICBsb2Rhc2gudW5hcnkgPSB1bmFyeTtcbiAgICBsb2Rhc2gudW5pb24gPSB1bmlvbjtcbiAgICBsb2Rhc2gudW5pb25CeSA9IHVuaW9uQnk7XG4gICAgbG9kYXNoLnVuaW9uV2l0aCA9IHVuaW9uV2l0aDtcbiAgICBsb2Rhc2gudW5pcSA9IHVuaXE7XG4gICAgbG9kYXNoLnVuaXFCeSA9IHVuaXFCeTtcbiAgICBsb2Rhc2gudW5pcVdpdGggPSB1bmlxV2l0aDtcbiAgICBsb2Rhc2gudW5zZXQgPSB1bnNldDtcbiAgICBsb2Rhc2gudW56aXAgPSB1bnppcDtcbiAgICBsb2Rhc2gudW56aXBXaXRoID0gdW56aXBXaXRoO1xuICAgIGxvZGFzaC51cGRhdGUgPSB1cGRhdGU7XG4gICAgbG9kYXNoLnVwZGF0ZVdpdGggPSB1cGRhdGVXaXRoO1xuICAgIGxvZGFzaC52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgbG9kYXNoLnZhbHVlc0luID0gdmFsdWVzSW47XG4gICAgbG9kYXNoLndpdGhvdXQgPSB3aXRob3V0O1xuICAgIGxvZGFzaC53b3JkcyA9IHdvcmRzO1xuICAgIGxvZGFzaC53cmFwID0gd3JhcDtcbiAgICBsb2Rhc2gueG9yID0geG9yO1xuICAgIGxvZGFzaC54b3JCeSA9IHhvckJ5O1xuICAgIGxvZGFzaC54b3JXaXRoID0geG9yV2l0aDtcbiAgICBsb2Rhc2guemlwID0gemlwO1xuICAgIGxvZGFzaC56aXBPYmplY3QgPSB6aXBPYmplY3Q7XG4gICAgbG9kYXNoLnppcE9iamVjdERlZXAgPSB6aXBPYmplY3REZWVwO1xuICAgIGxvZGFzaC56aXBXaXRoID0gemlwV2l0aDtcblxuICAgIC8vIEFkZCBhbGlhc2VzLlxuICAgIGxvZGFzaC5lbnRyaWVzID0gdG9QYWlycztcbiAgICBsb2Rhc2guZW50cmllc0luID0gdG9QYWlyc0luO1xuICAgIGxvZGFzaC5leHRlbmQgPSBhc3NpZ25JbjtcbiAgICBsb2Rhc2guZXh0ZW5kV2l0aCA9IGFzc2lnbkluV2l0aDtcblxuICAgIC8vIEFkZCBtZXRob2RzIHRvIGBsb2Rhc2gucHJvdG90eXBlYC5cbiAgICBtaXhpbihsb2Rhc2gsIGxvZGFzaCk7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbiAgICAvLyBBZGQgbWV0aG9kcyB0aGF0IHJldHVybiB1bndyYXBwZWQgdmFsdWVzIGluIGNoYWluIHNlcXVlbmNlcy5cbiAgICBsb2Rhc2guYWRkID0gYWRkO1xuICAgIGxvZGFzaC5hdHRlbXB0ID0gYXR0ZW1wdDtcbiAgICBsb2Rhc2guY2FtZWxDYXNlID0gY2FtZWxDYXNlO1xuICAgIGxvZGFzaC5jYXBpdGFsaXplID0gY2FwaXRhbGl6ZTtcbiAgICBsb2Rhc2guY2VpbCA9IGNlaWw7XG4gICAgbG9kYXNoLmNsYW1wID0gY2xhbXA7XG4gICAgbG9kYXNoLmNsb25lID0gY2xvbmU7XG4gICAgbG9kYXNoLmNsb25lRGVlcCA9IGNsb25lRGVlcDtcbiAgICBsb2Rhc2guY2xvbmVEZWVwV2l0aCA9IGNsb25lRGVlcFdpdGg7XG4gICAgbG9kYXNoLmNsb25lV2l0aCA9IGNsb25lV2l0aDtcbiAgICBsb2Rhc2guY29uZm9ybXNUbyA9IGNvbmZvcm1zVG87XG4gICAgbG9kYXNoLmRlYnVyciA9IGRlYnVycjtcbiAgICBsb2Rhc2guZGVmYXVsdFRvID0gZGVmYXVsdFRvO1xuICAgIGxvZGFzaC5kaXZpZGUgPSBkaXZpZGU7XG4gICAgbG9kYXNoLmVuZHNXaXRoID0gZW5kc1dpdGg7XG4gICAgbG9kYXNoLmVxID0gZXE7XG4gICAgbG9kYXNoLmVzY2FwZSA9IGVzY2FwZTtcbiAgICBsb2Rhc2guZXNjYXBlUmVnRXhwID0gZXNjYXBlUmVnRXhwO1xuICAgIGxvZGFzaC5ldmVyeSA9IGV2ZXJ5O1xuICAgIGxvZGFzaC5maW5kID0gZmluZDtcbiAgICBsb2Rhc2guZmluZEluZGV4ID0gZmluZEluZGV4O1xuICAgIGxvZGFzaC5maW5kS2V5ID0gZmluZEtleTtcbiAgICBsb2Rhc2guZmluZExhc3QgPSBmaW5kTGFzdDtcbiAgICBsb2Rhc2guZmluZExhc3RJbmRleCA9IGZpbmRMYXN0SW5kZXg7XG4gICAgbG9kYXNoLmZpbmRMYXN0S2V5ID0gZmluZExhc3RLZXk7XG4gICAgbG9kYXNoLmZsb29yID0gZmxvb3I7XG4gICAgbG9kYXNoLmZvckVhY2ggPSBmb3JFYWNoO1xuICAgIGxvZGFzaC5mb3JFYWNoUmlnaHQgPSBmb3JFYWNoUmlnaHQ7XG4gICAgbG9kYXNoLmZvckluID0gZm9ySW47XG4gICAgbG9kYXNoLmZvckluUmlnaHQgPSBmb3JJblJpZ2h0O1xuICAgIGxvZGFzaC5mb3JPd24gPSBmb3JPd247XG4gICAgbG9kYXNoLmZvck93blJpZ2h0ID0gZm9yT3duUmlnaHQ7XG4gICAgbG9kYXNoLmdldCA9IGdldDtcbiAgICBsb2Rhc2guZ3QgPSBndDtcbiAgICBsb2Rhc2guZ3RlID0gZ3RlO1xuICAgIGxvZGFzaC5oYXMgPSBoYXM7XG4gICAgbG9kYXNoLmhhc0luID0gaGFzSW47XG4gICAgbG9kYXNoLmhlYWQgPSBoZWFkO1xuICAgIGxvZGFzaC5pZGVudGl0eSA9IGlkZW50aXR5O1xuICAgIGxvZGFzaC5pbmNsdWRlcyA9IGluY2x1ZGVzO1xuICAgIGxvZGFzaC5pbmRleE9mID0gaW5kZXhPZjtcbiAgICBsb2Rhc2guaW5SYW5nZSA9IGluUmFuZ2U7XG4gICAgbG9kYXNoLmludm9rZSA9IGludm9rZTtcbiAgICBsb2Rhc2guaXNBcmd1bWVudHMgPSBpc0FyZ3VtZW50cztcbiAgICBsb2Rhc2guaXNBcnJheSA9IGlzQXJyYXk7XG4gICAgbG9kYXNoLmlzQXJyYXlCdWZmZXIgPSBpc0FycmF5QnVmZmVyO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZSA9IGlzQXJyYXlMaWtlO1xuICAgIGxvZGFzaC5pc0FycmF5TGlrZU9iamVjdCA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuICAgIGxvZGFzaC5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG4gICAgbG9kYXNoLmlzQnVmZmVyID0gaXNCdWZmZXI7XG4gICAgbG9kYXNoLmlzRGF0ZSA9IGlzRGF0ZTtcbiAgICBsb2Rhc2guaXNFbGVtZW50ID0gaXNFbGVtZW50O1xuICAgIGxvZGFzaC5pc0VtcHR5ID0gaXNFbXB0eTtcbiAgICBsb2Rhc2guaXNFcXVhbCA9IGlzRXF1YWw7XG4gICAgbG9kYXNoLmlzRXF1YWxXaXRoID0gaXNFcXVhbFdpdGg7XG4gICAgbG9kYXNoLmlzRXJyb3IgPSBpc0Vycm9yO1xuICAgIGxvZGFzaC5pc0Zpbml0ZSA9IGlzRmluaXRlO1xuICAgIGxvZGFzaC5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcbiAgICBsb2Rhc2guaXNJbnRlZ2VyID0gaXNJbnRlZ2VyO1xuICAgIGxvZGFzaC5pc0xlbmd0aCA9IGlzTGVuZ3RoO1xuICAgIGxvZGFzaC5pc01hcCA9IGlzTWFwO1xuICAgIGxvZGFzaC5pc01hdGNoID0gaXNNYXRjaDtcbiAgICBsb2Rhc2guaXNNYXRjaFdpdGggPSBpc01hdGNoV2l0aDtcbiAgICBsb2Rhc2guaXNOYU4gPSBpc05hTjtcbiAgICBsb2Rhc2guaXNOYXRpdmUgPSBpc05hdGl2ZTtcbiAgICBsb2Rhc2guaXNOaWwgPSBpc05pbDtcbiAgICBsb2Rhc2guaXNOdWxsID0gaXNOdWxsO1xuICAgIGxvZGFzaC5pc051bWJlciA9IGlzTnVtYmVyO1xuICAgIGxvZGFzaC5pc09iamVjdCA9IGlzT2JqZWN0O1xuICAgIGxvZGFzaC5pc09iamVjdExpa2UgPSBpc09iamVjdExpa2U7XG4gICAgbG9kYXNoLmlzUGxhaW5PYmplY3QgPSBpc1BsYWluT2JqZWN0O1xuICAgIGxvZGFzaC5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuICAgIGxvZGFzaC5pc1NhZmVJbnRlZ2VyID0gaXNTYWZlSW50ZWdlcjtcbiAgICBsb2Rhc2guaXNTZXQgPSBpc1NldDtcbiAgICBsb2Rhc2guaXNTdHJpbmcgPSBpc1N0cmluZztcbiAgICBsb2Rhc2guaXNTeW1ib2wgPSBpc1N5bWJvbDtcbiAgICBsb2Rhc2guaXNUeXBlZEFycmF5ID0gaXNUeXBlZEFycmF5O1xuICAgIGxvZGFzaC5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuICAgIGxvZGFzaC5pc1dlYWtNYXAgPSBpc1dlYWtNYXA7XG4gICAgbG9kYXNoLmlzV2Vha1NldCA9IGlzV2Vha1NldDtcbiAgICBsb2Rhc2guam9pbiA9IGpvaW47XG4gICAgbG9kYXNoLmtlYmFiQ2FzZSA9IGtlYmFiQ2FzZTtcbiAgICBsb2Rhc2gubGFzdCA9IGxhc3Q7XG4gICAgbG9kYXNoLmxhc3RJbmRleE9mID0gbGFzdEluZGV4T2Y7XG4gICAgbG9kYXNoLmxvd2VyQ2FzZSA9IGxvd2VyQ2FzZTtcbiAgICBsb2Rhc2gubG93ZXJGaXJzdCA9IGxvd2VyRmlyc3Q7XG4gICAgbG9kYXNoLmx0ID0gbHQ7XG4gICAgbG9kYXNoLmx0ZSA9IGx0ZTtcbiAgICBsb2Rhc2gubWF4ID0gbWF4O1xuICAgIGxvZGFzaC5tYXhCeSA9IG1heEJ5O1xuICAgIGxvZGFzaC5tZWFuID0gbWVhbjtcbiAgICBsb2Rhc2gubWVhbkJ5ID0gbWVhbkJ5O1xuICAgIGxvZGFzaC5taW4gPSBtaW47XG4gICAgbG9kYXNoLm1pbkJ5ID0gbWluQnk7XG4gICAgbG9kYXNoLnN0dWJBcnJheSA9IHN0dWJBcnJheTtcbiAgICBsb2Rhc2guc3R1YkZhbHNlID0gc3R1YkZhbHNlO1xuICAgIGxvZGFzaC5zdHViT2JqZWN0ID0gc3R1Yk9iamVjdDtcbiAgICBsb2Rhc2guc3R1YlN0cmluZyA9IHN0dWJTdHJpbmc7XG4gICAgbG9kYXNoLnN0dWJUcnVlID0gc3R1YlRydWU7XG4gICAgbG9kYXNoLm11bHRpcGx5ID0gbXVsdGlwbHk7XG4gICAgbG9kYXNoLm50aCA9IG50aDtcbiAgICBsb2Rhc2gubm9Db25mbGljdCA9IG5vQ29uZmxpY3Q7XG4gICAgbG9kYXNoLm5vb3AgPSBub29wO1xuICAgIGxvZGFzaC5ub3cgPSBub3c7XG4gICAgbG9kYXNoLnBhZCA9IHBhZDtcbiAgICBsb2Rhc2gucGFkRW5kID0gcGFkRW5kO1xuICAgIGxvZGFzaC5wYWRTdGFydCA9IHBhZFN0YXJ0O1xuICAgIGxvZGFzaC5wYXJzZUludCA9IHBhcnNlSW50O1xuICAgIGxvZGFzaC5yYW5kb20gPSByYW5kb207XG4gICAgbG9kYXNoLnJlZHVjZSA9IHJlZHVjZTtcbiAgICBsb2Rhc2gucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbiAgICBsb2Rhc2gucmVwZWF0ID0gcmVwZWF0O1xuICAgIGxvZGFzaC5yZXBsYWNlID0gcmVwbGFjZTtcbiAgICBsb2Rhc2gucmVzdWx0ID0gcmVzdWx0O1xuICAgIGxvZGFzaC5yb3VuZCA9IHJvdW5kO1xuICAgIGxvZGFzaC5ydW5JbkNvbnRleHQgPSBydW5JbkNvbnRleHQ7XG4gICAgbG9kYXNoLnNhbXBsZSA9IHNhbXBsZTtcbiAgICBsb2Rhc2guc2l6ZSA9IHNpemU7XG4gICAgbG9kYXNoLnNuYWtlQ2FzZSA9IHNuYWtlQ2FzZTtcbiAgICBsb2Rhc2guc29tZSA9IHNvbWU7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXg7XG4gICAgbG9kYXNoLnNvcnRlZEluZGV4QnkgPSBzb3J0ZWRJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRJbmRleE9mID0gc29ydGVkSW5kZXhPZjtcbiAgICBsb2Rhc2guc29ydGVkTGFzdEluZGV4ID0gc29ydGVkTGFzdEluZGV4O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhCeSA9IHNvcnRlZExhc3RJbmRleEJ5O1xuICAgIGxvZGFzaC5zb3J0ZWRMYXN0SW5kZXhPZiA9IHNvcnRlZExhc3RJbmRleE9mO1xuICAgIGxvZGFzaC5zdGFydENhc2UgPSBzdGFydENhc2U7XG4gICAgbG9kYXNoLnN0YXJ0c1dpdGggPSBzdGFydHNXaXRoO1xuICAgIGxvZGFzaC5zdWJ0cmFjdCA9IHN1YnRyYWN0O1xuICAgIGxvZGFzaC5zdW0gPSBzdW07XG4gICAgbG9kYXNoLnN1bUJ5ID0gc3VtQnk7XG4gICAgbG9kYXNoLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgbG9kYXNoLnRpbWVzID0gdGltZXM7XG4gICAgbG9kYXNoLnRvRmluaXRlID0gdG9GaW5pdGU7XG4gICAgbG9kYXNoLnRvSW50ZWdlciA9IHRvSW50ZWdlcjtcbiAgICBsb2Rhc2gudG9MZW5ndGggPSB0b0xlbmd0aDtcbiAgICBsb2Rhc2gudG9Mb3dlciA9IHRvTG93ZXI7XG4gICAgbG9kYXNoLnRvTnVtYmVyID0gdG9OdW1iZXI7XG4gICAgbG9kYXNoLnRvU2FmZUludGVnZXIgPSB0b1NhZmVJbnRlZ2VyO1xuICAgIGxvZGFzaC50b1N0cmluZyA9IHRvU3RyaW5nO1xuICAgIGxvZGFzaC50b1VwcGVyID0gdG9VcHBlcjtcbiAgICBsb2Rhc2gudHJpbSA9IHRyaW07XG4gICAgbG9kYXNoLnRyaW1FbmQgPSB0cmltRW5kO1xuICAgIGxvZGFzaC50cmltU3RhcnQgPSB0cmltU3RhcnQ7XG4gICAgbG9kYXNoLnRydW5jYXRlID0gdHJ1bmNhdGU7XG4gICAgbG9kYXNoLnVuZXNjYXBlID0gdW5lc2NhcGU7XG4gICAgbG9kYXNoLnVuaXF1ZUlkID0gdW5pcXVlSWQ7XG4gICAgbG9kYXNoLnVwcGVyQ2FzZSA9IHVwcGVyQ2FzZTtcbiAgICBsb2Rhc2gudXBwZXJGaXJzdCA9IHVwcGVyRmlyc3Q7XG5cbiAgICAvLyBBZGQgYWxpYXNlcy5cbiAgICBsb2Rhc2guZWFjaCA9IGZvckVhY2g7XG4gICAgbG9kYXNoLmVhY2hSaWdodCA9IGZvckVhY2hSaWdodDtcbiAgICBsb2Rhc2guZmlyc3QgPSBoZWFkO1xuXG4gICAgbWl4aW4obG9kYXNoLCAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgc291cmNlID0ge307XG4gICAgICBiYXNlRm9yT3duKGxvZGFzaCwgZnVuY3Rpb24oZnVuYywgbWV0aG9kTmFtZSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSwgbWV0aG9kTmFtZSkpIHtcbiAgICAgICAgICBzb3VyY2VbbWV0aG9kTmFtZV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfSgpKSwgeyAnY2hhaW4nOiBmYWxzZSB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAgIC8qKlxuICAgICAqIFRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlci5cbiAgICAgKlxuICAgICAqIEBzdGF0aWNcbiAgICAgKiBAbWVtYmVyT2YgX1xuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgbG9kYXNoLlZFUlNJT04gPSBWRVJTSU9OO1xuXG4gICAgLy8gQXNzaWduIGRlZmF1bHQgcGxhY2Vob2xkZXJzLlxuICAgIGFycmF5RWFjaChbJ2JpbmQnLCAnYmluZEtleScsICdjdXJyeScsICdjdXJyeVJpZ2h0JywgJ3BhcnRpYWwnLCAncGFydGlhbFJpZ2h0J10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUpIHtcbiAgICAgIGxvZGFzaFttZXRob2ROYW1lXS5wbGFjZWhvbGRlciA9IGxvZGFzaDtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmRyb3BgIGFuZCBgXy50YWtlYCB2YXJpYW50cy5cbiAgICBhcnJheUVhY2goWydkcm9wJywgJ3Rha2UnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgbiA9IG4gPT09IHVuZGVmaW5lZCA/IDEgOiBuYXRpdmVNYXgodG9JbnRlZ2VyKG4pLCAwKTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gKHRoaXMuX19maWx0ZXJlZF9fICYmICFpbmRleClcbiAgICAgICAgICA/IG5ldyBMYXp5V3JhcHBlcih0aGlzKVxuICAgICAgICAgIDogdGhpcy5jbG9uZSgpO1xuXG4gICAgICAgIGlmIChyZXN1bHQuX19maWx0ZXJlZF9fKSB7XG4gICAgICAgICAgcmVzdWx0Ll9fdGFrZUNvdW50X18gPSBuYXRpdmVNaW4obiwgcmVzdWx0Ll9fdGFrZUNvdW50X18pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7XG4gICAgICAgICAgICAnc2l6ZSc6IG5hdGl2ZU1pbihuLCBNQVhfQVJSQVlfTEVOR1RIKSxcbiAgICAgICAgICAgICd0eXBlJzogbWV0aG9kTmFtZSArIChyZXN1bHQuX19kaXJfXyA8IDAgPyAnUmlnaHQnIDogJycpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH07XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lICsgJ1JpZ2h0J10gPSBmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyB0aGF0IGFjY2VwdCBhbiBgaXRlcmF0ZWVgIHZhbHVlLlxuICAgIGFycmF5RWFjaChbJ2ZpbHRlcicsICdtYXAnLCAndGFrZVdoaWxlJ10sIGZ1bmN0aW9uKG1ldGhvZE5hbWUsIGluZGV4KSB7XG4gICAgICB2YXIgdHlwZSA9IGluZGV4ICsgMSxcbiAgICAgICAgICBpc0ZpbHRlciA9IHR5cGUgPT0gTEFaWV9GSUxURVJfRkxBRyB8fCB0eXBlID09IExBWllfV0hJTEVfRkxBRztcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgcmVzdWx0Ll9faXRlcmF0ZWVzX18ucHVzaCh7XG4gICAgICAgICAgJ2l0ZXJhdGVlJzogZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsIDMpLFxuICAgICAgICAgICd0eXBlJzogdHlwZVxuICAgICAgICB9KTtcbiAgICAgICAgcmVzdWx0Ll9fZmlsdGVyZWRfXyA9IHJlc3VsdC5fX2ZpbHRlcmVkX18gfHwgaXNGaWx0ZXI7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBMYXp5V3JhcHBlcmAgbWV0aG9kcyBmb3IgYF8uaGVhZGAgYW5kIGBfLmxhc3RgLlxuICAgIGFycmF5RWFjaChbJ2hlYWQnLCAnbGFzdCddLCBmdW5jdGlvbihtZXRob2ROYW1lLCBpbmRleCkge1xuICAgICAgdmFyIHRha2VOYW1lID0gJ3Rha2UnICsgKGluZGV4ID8gJ1JpZ2h0JyA6ICcnKTtcblxuICAgICAgTGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdO1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgZm9yIGBfLmluaXRpYWxgIGFuZCBgXy50YWlsYC5cbiAgICBhcnJheUVhY2goWydpbml0aWFsJywgJ3RhaWwnXSwgZnVuY3Rpb24obWV0aG9kTmFtZSwgaW5kZXgpIHtcbiAgICAgIHZhciBkcm9wTmFtZSA9ICdkcm9wJyArIChpbmRleCA/ICcnIDogJ1JpZ2h0Jyk7XG5cbiAgICAgIExhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fX2ZpbHRlcmVkX18gPyBuZXcgTGF6eVdyYXBwZXIodGhpcykgOiB0aGlzW2Ryb3BOYW1lXSgxKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyKGlkZW50aXR5KTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmQgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXZlcnNlKCkuZmluZChwcmVkaWNhdGUpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuaW52b2tlTWFwID0gYmFzZVJlc3QoZnVuY3Rpb24ocGF0aCwgYXJncykge1xuICAgICAgaWYgKHR5cGVvZiBwYXRoID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYmFzZUludm9rZSh2YWx1ZSwgcGF0aCwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS5yZWplY3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlcihuZWdhdGUoZ2V0SXRlcmF0ZWUocHJlZGljYXRlKSkpO1xuICAgIH07XG5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7XG4gICAgICBzdGFydCA9IHRvSW50ZWdlcihzdGFydCk7XG5cbiAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xuICAgICAgaWYgKHJlc3VsdC5fX2ZpbHRlcmVkX18gJiYgKHN0YXJ0ID4gMCB8fCBlbmQgPCAwKSkge1xuICAgICAgICByZXR1cm4gbmV3IExhenlXcmFwcGVyKHJlc3VsdCk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC50YWtlUmlnaHQoLXN0YXJ0KTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhcnQpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRyb3Aoc3RhcnQpO1xuICAgICAgfVxuICAgICAgaWYgKGVuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGVuZCA9IHRvSW50ZWdlcihlbmQpO1xuICAgICAgICByZXN1bHQgPSBlbmQgPCAwID8gcmVzdWx0LmRyb3BSaWdodCgtZW5kKSA6IHJlc3VsdC50YWtlKGVuZCAtIHN0YXJ0KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIExhenlXcmFwcGVyLnByb3RvdHlwZS50YWtlUmlnaHRXaGlsZSA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKTtcbiAgICB9O1xuXG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRha2UoTUFYX0FSUkFZX0xFTkdUSCk7XG4gICAgfTtcblxuICAgIC8vIEFkZCBgTGF6eVdyYXBwZXJgIG1ldGhvZHMgdG8gYGxvZGFzaC5wcm90b3R5cGVgLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgY2hlY2tJdGVyYXRlZSA9IC9eKD86ZmlsdGVyfGZpbmR8bWFwfHJlamVjdCl8V2hpbGUkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGlzVGFrZXIgPSAvXig/OmhlYWR8bGFzdCkkLy50ZXN0KG1ldGhvZE5hbWUpLFxuICAgICAgICAgIGxvZGFzaEZ1bmMgPSBsb2Rhc2hbaXNUYWtlciA/ICgndGFrZScgKyAobWV0aG9kTmFtZSA9PSAnbGFzdCcgPyAnUmlnaHQnIDogJycpKSA6IG1ldGhvZE5hbWVdLFxuICAgICAgICAgIHJldFVud3JhcHBlZCA9IGlzVGFrZXIgfHwgL15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO1xuXG4gICAgICBpZiAoIWxvZGFzaEZ1bmMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLl9fd3JhcHBlZF9fLFxuICAgICAgICAgICAgYXJncyA9IGlzVGFrZXIgPyBbMV0gOiBhcmd1bWVudHMsXG4gICAgICAgICAgICBpc0xhenkgPSB2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyLFxuICAgICAgICAgICAgaXRlcmF0ZWUgPSBhcmdzWzBdLFxuICAgICAgICAgICAgdXNlTGF6eSA9IGlzTGF6eSB8fCBpc0FycmF5KHZhbHVlKTtcblxuICAgICAgICB2YXIgaW50ZXJjZXB0b3IgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHZhciByZXN1bHQgPSBsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCwgYXJyYXlQdXNoKFt2YWx1ZV0sIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gKGlzVGFrZXIgJiYgY2hhaW5BbGwpID8gcmVzdWx0WzBdIDogcmVzdWx0O1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh1c2VMYXp5ICYmIGNoZWNrSXRlcmF0ZWUgJiYgdHlwZW9mIGl0ZXJhdGVlID09ICdmdW5jdGlvbicgJiYgaXRlcmF0ZWUubGVuZ3RoICE9IDEpIHtcbiAgICAgICAgICAvLyBBdm9pZCBsYXp5IHVzZSBpZiB0aGUgaXRlcmF0ZWUgaGFzIGEgXCJsZW5ndGhcIiB2YWx1ZSBvdGhlciB0aGFuIGAxYC5cbiAgICAgICAgICBpc0xhenkgPSB1c2VMYXp5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNoYWluQWxsID0gdGhpcy5fX2NoYWluX18sXG4gICAgICAgICAgICBpc0h5YnJpZCA9ICEhdGhpcy5fX2FjdGlvbnNfXy5sZW5ndGgsXG4gICAgICAgICAgICBpc1Vud3JhcHBlZCA9IHJldFVud3JhcHBlZCAmJiAhY2hhaW5BbGwsXG4gICAgICAgICAgICBvbmx5TGF6eSA9IGlzTGF6eSAmJiAhaXNIeWJyaWQ7XG5cbiAgICAgICAgaWYgKCFyZXRVbndyYXBwZWQgJiYgdXNlTGF6eSkge1xuICAgICAgICAgIHZhbHVlID0gb25seUxhenkgPyB2YWx1ZSA6IG5ldyBMYXp5V3JhcHBlcih0aGlzKTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gZnVuYy5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgcmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyAnZnVuYyc6IHRocnUsICdhcmdzJzogW2ludGVyY2VwdG9yXSwgJ3RoaXNBcmcnOiB1bmRlZmluZWQgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHJlc3VsdCwgY2hhaW5BbGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1Vud3JhcHBlZCAmJiBvbmx5TGF6eSkge1xuICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IHRoaXMudGhydShpbnRlcmNlcHRvcik7XG4gICAgICAgIHJldHVybiBpc1Vud3JhcHBlZCA/IChpc1Rha2VyID8gcmVzdWx0LnZhbHVlKClbMF0gOiByZXN1bHQudmFsdWUoKSkgOiByZXN1bHQ7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gQWRkIGBBcnJheWAgbWV0aG9kcyB0byBgbG9kYXNoLnByb3RvdHlwZWAuXG4gICAgYXJyYXlFYWNoKFsncG9wJywgJ3B1c2gnLCAnc2hpZnQnLCAnc29ydCcsICdzcGxpY2UnLCAndW5zaGlmdCddLCBmdW5jdGlvbihtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgZnVuYyA9IGFycmF5UHJvdG9bbWV0aG9kTmFtZV0sXG4gICAgICAgICAgY2hhaW5OYW1lID0gL14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpID8gJ3RhcCcgOiAndGhydScsXG4gICAgICAgICAgcmV0VW53cmFwcGVkID0gL14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtcblxuICAgICAgbG9kYXNoLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgaWYgKHJldFVud3JhcHBlZCAmJiAhdGhpcy5fX2NoYWluX18pIHtcbiAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlKCk7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkoaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFtdLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgLy8gTWFwIG1pbmlmaWVkIG1ldGhvZCBuYW1lcyB0byB0aGVpciByZWFsIG5hbWVzLlxuICAgIGJhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLCBmdW5jdGlvbihmdW5jLCBtZXRob2ROYW1lKSB7XG4gICAgICB2YXIgbG9kYXNoRnVuYyA9IGxvZGFzaFttZXRob2ROYW1lXTtcbiAgICAgIGlmIChsb2Rhc2hGdW5jKSB7XG4gICAgICAgIHZhciBrZXkgPSBsb2Rhc2hGdW5jLm5hbWUgKyAnJztcbiAgICAgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlYWxOYW1lcywga2V5KSkge1xuICAgICAgICAgIHJlYWxOYW1lc1trZXldID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmVhbE5hbWVzW2tleV0ucHVzaCh7ICduYW1lJzogbWV0aG9kTmFtZSwgJ2Z1bmMnOiBsb2Rhc2hGdW5jIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsIFdSQVBfQklORF9LRVlfRkxBRykubmFtZV0gPSBbe1xuICAgICAgJ25hbWUnOiAnd3JhcHBlcicsXG4gICAgICAnZnVuYyc6IHVuZGVmaW5lZFxuICAgIH1dO1xuXG4gICAgLy8gQWRkIG1ldGhvZHMgdG8gYExhenlXcmFwcGVyYC5cbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUuY2xvbmUgPSBsYXp5Q2xvbmU7XG4gICAgTGF6eVdyYXBwZXIucHJvdG90eXBlLnJldmVyc2UgPSBsYXp5UmV2ZXJzZTtcbiAgICBMYXp5V3JhcHBlci5wcm90b3R5cGUudmFsdWUgPSBsYXp5VmFsdWU7XG5cbiAgICAvLyBBZGQgY2hhaW4gc2VxdWVuY2UgbWV0aG9kcyB0byB0aGUgYGxvZGFzaGAgd3JhcHBlci5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmF0ID0gd3JhcHBlckF0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUuY2hhaW4gPSB3cmFwcGVyQ2hhaW47XG4gICAgbG9kYXNoLnByb3RvdHlwZS5jb21taXQgPSB3cmFwcGVyQ29tbWl0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUubmV4dCA9IHdyYXBwZXJOZXh0O1xuICAgIGxvZGFzaC5wcm90b3R5cGUucGxhbnQgPSB3cmFwcGVyUGxhbnQ7XG4gICAgbG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlID0gd3JhcHBlclJldmVyc2U7XG4gICAgbG9kYXNoLnByb3RvdHlwZS50b0pTT04gPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlT2YgPSBsb2Rhc2gucHJvdG90eXBlLnZhbHVlID0gd3JhcHBlclZhbHVlO1xuXG4gICAgLy8gQWRkIGxhenkgYWxpYXNlcy5cbiAgICBsb2Rhc2gucHJvdG90eXBlLmZpcnN0ID0gbG9kYXNoLnByb3RvdHlwZS5oZWFkO1xuXG4gICAgaWYgKHN5bUl0ZXJhdG9yKSB7XG4gICAgICBsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXSA9IHdyYXBwZXJUb0l0ZXJhdG9yO1xuICAgIH1cbiAgICByZXR1cm4gbG9kYXNoO1xuICB9KTtcblxuICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuICAvLyBFeHBvcnQgbG9kYXNoLlxuICB2YXIgXyA9IHJ1bkluQ29udGV4dCgpO1xuXG4gIC8vIFNvbWUgQU1EIGJ1aWxkIG9wdGltaXplcnMsIGxpa2Ugci5qcywgY2hlY2sgZm9yIGNvbmRpdGlvbiBwYXR0ZXJucyBsaWtlOlxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcbiAgICAvLyBFeHBvc2UgTG9kYXNoIG9uIHRoZSBnbG9iYWwgb2JqZWN0IHRvIHByZXZlbnQgZXJyb3JzIHdoZW4gTG9kYXNoIGlzXG4gICAgLy8gbG9hZGVkIGJ5IGEgc2NyaXB0IHRhZyBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gQU1EIGxvYWRlci5cbiAgICAvLyBTZWUgaHR0cDovL3JlcXVpcmVqcy5vcmcvZG9jcy9lcnJvcnMuaHRtbCNtaXNtYXRjaCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIC8vIFVzZSBgXy5ub0NvbmZsaWN0YCB0byByZW1vdmUgTG9kYXNoIGZyb20gdGhlIGdsb2JhbCBvYmplY3QuXG4gICAgcm9vdC5fID0gXztcblxuICAgIC8vIERlZmluZSBhcyBhbiBhbm9ueW1vdXMgbW9kdWxlIHNvLCB0aHJvdWdoIHBhdGggbWFwcGluZywgaXQgY2FuIGJlXG4gICAgLy8gcmVmZXJlbmNlZCBhcyB0aGUgXCJ1bmRlcnNjb3JlXCIgbW9kdWxlLlxuICAgIGRlZmluZShmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBfO1xuICAgIH0pO1xuICB9XG4gIC8vIENoZWNrIGZvciBgZXhwb3J0c2AgYWZ0ZXIgYGRlZmluZWAgaW4gY2FzZSBhIGJ1aWxkIG9wdGltaXplciBhZGRzIGl0LlxuICBlbHNlIGlmIChmcmVlTW9kdWxlKSB7XG4gICAgLy8gRXhwb3J0IGZvciBOb2RlLmpzLlxuICAgIChmcmVlTW9kdWxlLmV4cG9ydHMgPSBfKS5fID0gXztcbiAgICAvLyBFeHBvcnQgZm9yIENvbW1vbkpTIHN1cHBvcnQuXG4gICAgZnJlZUV4cG9ydHMuXyA9IF87XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gRXhwb3J0IHRvIHRoZSBnbG9iYWwgb2JqZWN0LlxuICAgIHJvb3QuXyA9IF87XG4gIH1cbn0uY2FsbCh0aGlzKSk7XG4iXSwibmFtZXMiOlsidW5kZWZpbmVkIiwiRlVOQ19FUlJPUl9URVhUIiwiSEFTSF9VTkRFRklORUQiLCJQTEFDRUhPTERFUiIsIldSQVBfUEFSVElBTF9GTEFHIiwiV1JBUF9BUllfRkxBRyIsIklORklOSVRZIiwiTUFYX1NBRkVfSU5URUdFUiIsIk5BTiIsIk1BWF9BUlJBWV9MRU5HVEgiLCJ3cmFwRmxhZ3MiLCJhcmdzVGFnIiwiYXJyYXlUYWciLCJib29sVGFnIiwiZGF0ZVRhZyIsImVycm9yVGFnIiwiZnVuY1RhZyIsImdlblRhZyIsIm1hcFRhZyIsIm51bWJlclRhZyIsIm9iamVjdFRhZyIsInByb21pc2VUYWciLCJyZWdleHBUYWciLCJzZXRUYWciLCJzdHJpbmdUYWciLCJzeW1ib2xUYWciLCJ3ZWFrTWFwVGFnIiwiYXJyYXlCdWZmZXJUYWciLCJkYXRhVmlld1RhZyIsImZsb2F0MzJUYWciLCJmbG9hdDY0VGFnIiwiaW50OFRhZyIsImludDE2VGFnIiwiaW50MzJUYWciLCJ1aW50OFRhZyIsInVpbnQ4Q2xhbXBlZFRhZyIsInVpbnQxNlRhZyIsInVpbnQzMlRhZyIsInJlRW1wdHlTdHJpbmdMZWFkaW5nIiwicmVFbXB0eVN0cmluZ01pZGRsZSIsInJlRW1wdHlTdHJpbmdUcmFpbGluZyIsInJlRXNjYXBlZEh0bWwiLCJyZVVuZXNjYXBlZEh0bWwiLCJyZUhhc0VzY2FwZWRIdG1sIiwiUmVnRXhwIiwic291cmNlIiwicmVIYXNVbmVzY2FwZWRIdG1sIiwicmVFc2NhcGUiLCJyZUV2YWx1YXRlIiwicmVJbnRlcnBvbGF0ZSIsInJlSXNEZWVwUHJvcCIsInJlSXNQbGFpblByb3AiLCJyZVByb3BOYW1lIiwicmVSZWdFeHBDaGFyIiwicmVIYXNSZWdFeHBDaGFyIiwicmVUcmltU3RhcnQiLCJyZVdoaXRlc3BhY2UiLCJyZVdyYXBDb21tZW50IiwicmVXcmFwRGV0YWlscyIsInJlU3BsaXREZXRhaWxzIiwicmVBc2NpaVdvcmQiLCJyZUZvcmJpZGRlbklkZW50aWZpZXJDaGFycyIsInJlRXNjYXBlQ2hhciIsInJlRXNUZW1wbGF0ZSIsInJlRmxhZ3MiLCJyZUlzQmFkSGV4IiwicmVJc0JpbmFyeSIsInJlSXNIb3N0Q3RvciIsInJlSXNPY3RhbCIsInJlSXNVaW50IiwicmVMYXRpbiIsInJlTm9NYXRjaCIsInJlVW5lc2NhcGVkU3RyaW5nIiwicnNBc3RyYWxSYW5nZSIsInJzQ29tYm9SYW5nZSIsInJzQ29tYm9NYXJrc1JhbmdlIiwicnNEaW5nYmF0UmFuZ2UiLCJyc0xvd2VyUmFuZ2UiLCJyc1VwcGVyUmFuZ2UiLCJyc1ZhclJhbmdlIiwicnNCcmVha1JhbmdlIiwicnNNYXRoT3BSYW5nZSIsInJzQXN0cmFsIiwicnNCcmVhayIsInJzQ29tYm8iLCJyc0RpZ2l0cyIsInJzRGluZ2JhdCIsInJzTG93ZXIiLCJyc01pc2MiLCJyc0ZpdHoiLCJyc05vbkFzdHJhbCIsInJzUmVnaW9uYWwiLCJyc1N1cnJQYWlyIiwicnNVcHBlciIsInJzWldKIiwicnNNaXNjTG93ZXIiLCJyc01pc2NVcHBlciIsInJzT3B0Q29udHJMb3dlciIsInJzT3B0Q29udHJVcHBlciIsInJlT3B0TW9kIiwicnNNb2RpZmllciIsInJzT3B0VmFyIiwicnNTZXEiLCJqb2luIiwicnNFbW9qaSIsInJzU3ltYm9sIiwicmVBcG9zIiwicmVDb21ib01hcmsiLCJyZVVuaWNvZGUiLCJyZVVuaWNvZGVXb3JkIiwicmVIYXNVbmljb2RlIiwicmVIYXNVbmljb2RlV29yZCIsImNvbnRleHRQcm9wcyIsInRlbXBsYXRlQ291bnRlciIsInR5cGVkQXJyYXlUYWdzIiwiY2xvbmVhYmxlVGFncyIsInN0cmluZ0VzY2FwZXMiLCJmcmVlUGFyc2VGbG9hdCIsInBhcnNlRmxvYXQiLCJmcmVlUGFyc2VJbnQiLCJwYXJzZUludCIsImZyZWVHbG9iYWwiLCJnIiwiT2JqZWN0IiwiZnJlZVNlbGYiLCJzZWxmIiwicm9vdCIsIkZ1bmN0aW9uIiwiZnJlZUV4cG9ydHMiLCJleHBvcnRzIiwibm9kZVR5cGUiLCJmcmVlTW9kdWxlIiwibW9kdWxlIiwibW9kdWxlRXhwb3J0cyIsImZyZWVQcm9jZXNzIiwicHJvY2VzcyIsIm5vZGVVdGlsIiwicmVxdWlyZSIsInR5cGVzIiwiYmluZGluZyIsImUiLCJub2RlSXNBcnJheUJ1ZmZlciIsImlzQXJyYXlCdWZmZXIiLCJub2RlSXNEYXRlIiwiaXNEYXRlIiwibm9kZUlzTWFwIiwiaXNNYXAiLCJub2RlSXNSZWdFeHAiLCJpc1JlZ0V4cCIsIm5vZGVJc1NldCIsImlzU2V0Iiwibm9kZUlzVHlwZWRBcnJheSIsImlzVHlwZWRBcnJheSIsImFwcGx5IiwiZnVuYyIsInRoaXNBcmciLCJhcmdzIiwibGVuZ3RoIiwiY2FsbCIsImFycmF5QWdncmVnYXRvciIsImFycmF5Iiwic2V0dGVyIiwiaXRlcmF0ZWUiLCJhY2N1bXVsYXRvciIsImluZGV4IiwidmFsdWUiLCJhcnJheUVhY2giLCJhcnJheUVhY2hSaWdodCIsImFycmF5RXZlcnkiLCJwcmVkaWNhdGUiLCJhcnJheUZpbHRlciIsInJlc0luZGV4IiwicmVzdWx0IiwiYXJyYXlJbmNsdWRlcyIsImJhc2VJbmRleE9mIiwiYXJyYXlJbmNsdWRlc1dpdGgiLCJjb21wYXJhdG9yIiwiYXJyYXlNYXAiLCJBcnJheSIsImFycmF5UHVzaCIsInZhbHVlcyIsIm9mZnNldCIsImFycmF5UmVkdWNlIiwiaW5pdEFjY3VtIiwiYXJyYXlSZWR1Y2VSaWdodCIsImFycmF5U29tZSIsImFzY2lpU2l6ZSIsImJhc2VQcm9wZXJ0eSIsImJhc2VGaW5kS2V5IiwiY29sbGVjdGlvbiIsImVhY2hGdW5jIiwia2V5IiwiYmFzZUZpbmRJbmRleCIsImZyb21JbmRleCIsImZyb21SaWdodCIsInN0cmljdEluZGV4T2YiLCJiYXNlSXNOYU4iLCJiYXNlSW5kZXhPZldpdGgiLCJiYXNlTWVhbiIsImJhc2VTdW0iLCJvYmplY3QiLCJiYXNlUHJvcGVydHlPZiIsImJhc2VSZWR1Y2UiLCJjdXJyZW50IiwiYmFzZVRpbWVzIiwibiIsImJhc2VUcmltIiwic3RyaW5nIiwic2xpY2UiLCJ0cmltbWVkRW5kSW5kZXgiLCJyZXBsYWNlIiwiYmFzZVVuYXJ5IiwiYmFzZVZhbHVlcyIsInByb3BzIiwiY2FjaGVIYXMiLCJjYWNoZSIsImhhcyIsImNoYXJzU3RhcnRJbmRleCIsInN0clN5bWJvbHMiLCJjaHJTeW1ib2xzIiwiY2hhcnNFbmRJbmRleCIsImRlYnVyckxldHRlciIsImVzY2FwZUh0bWxDaGFyIiwiZXNjYXBlU3RyaW5nQ2hhciIsImNociIsImhhc1VuaWNvZGUiLCJ0ZXN0IiwibWFwVG9BcnJheSIsIm1hcCIsInNpemUiLCJmb3JFYWNoIiwib3ZlckFyZyIsInRyYW5zZm9ybSIsImFyZyIsInJlcGxhY2VIb2xkZXJzIiwicGxhY2Vob2xkZXIiLCJzZXRUb0FycmF5Iiwic2V0Iiwic2V0VG9QYWlycyIsInN0cmluZ1NpemUiLCJsYXN0SW5kZXgiLCJ1bmljb2RlU2l6ZSIsInN0cmluZ1RvQXJyYXkiLCJtYXRjaCIsInVuaWNvZGVUb0FycmF5Iiwic3BsaXQiLCJhc2NpaVRvQXJyYXkiLCJjaGFyQXQiLCJ1bmVzY2FwZUh0bWxDaGFyIiwiXyIsInJ1bkluQ29udGV4dCIsImNvbnRleHQiLCJ1aWQiLCJkZWZhdWx0cyIsInBpY2siLCJEYXRlIiwiRXJyb3IiLCJNYXRoIiwiU3RyaW5nIiwiVHlwZUVycm9yIiwiYXJyYXlQcm90byIsInByb3RvdHlwZSIsImZ1bmNQcm90byIsIm9iamVjdFByb3RvIiwiY29yZUpzRGF0YSIsImZ1bmNUb1N0cmluZyIsInRvU3RyaW5nIiwiaGFzT3duUHJvcGVydHkiLCJpZENvdW50ZXIiLCJtYXNrU3JjS2V5IiwiZXhlYyIsImtleXMiLCJJRV9QUk9UTyIsIm5hdGl2ZU9iamVjdFRvU3RyaW5nIiwib2JqZWN0Q3RvclN0cmluZyIsIm9sZERhc2giLCJyZUlzTmF0aXZlIiwiQnVmZmVyIiwiU3ltYm9sIiwiVWludDhBcnJheSIsImFsbG9jVW5zYWZlIiwiZ2V0UHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJvYmplY3RDcmVhdGUiLCJjcmVhdGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNwbGljZSIsInNwcmVhZGFibGVTeW1ib2wiLCJpc0NvbmNhdFNwcmVhZGFibGUiLCJzeW1JdGVyYXRvciIsIml0ZXJhdG9yIiwic3ltVG9TdHJpbmdUYWciLCJ0b1N0cmluZ1RhZyIsImRlZmluZVByb3BlcnR5IiwiZ2V0TmF0aXZlIiwiY3R4Q2xlYXJUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiY3R4Tm93Iiwibm93IiwiY3R4U2V0VGltZW91dCIsInNldFRpbWVvdXQiLCJuYXRpdmVDZWlsIiwiY2VpbCIsIm5hdGl2ZUZsb29yIiwiZmxvb3IiLCJuYXRpdmVHZXRTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibmF0aXZlSXNCdWZmZXIiLCJpc0J1ZmZlciIsIm5hdGl2ZUlzRmluaXRlIiwiaXNGaW5pdGUiLCJuYXRpdmVKb2luIiwibmF0aXZlS2V5cyIsIm5hdGl2ZU1heCIsIm1heCIsIm5hdGl2ZU1pbiIsIm1pbiIsIm5hdGl2ZU5vdyIsIm5hdGl2ZVBhcnNlSW50IiwibmF0aXZlUmFuZG9tIiwicmFuZG9tIiwibmF0aXZlUmV2ZXJzZSIsInJldmVyc2UiLCJEYXRhVmlldyIsIk1hcCIsIlByb21pc2UiLCJTZXQiLCJXZWFrTWFwIiwibmF0aXZlQ3JlYXRlIiwibWV0YU1hcCIsInJlYWxOYW1lcyIsImRhdGFWaWV3Q3RvclN0cmluZyIsInRvU291cmNlIiwibWFwQ3RvclN0cmluZyIsInByb21pc2VDdG9yU3RyaW5nIiwic2V0Q3RvclN0cmluZyIsIndlYWtNYXBDdG9yU3RyaW5nIiwic3ltYm9sUHJvdG8iLCJzeW1ib2xWYWx1ZU9mIiwidmFsdWVPZiIsInN5bWJvbFRvU3RyaW5nIiwibG9kYXNoIiwiaXNPYmplY3RMaWtlIiwiaXNBcnJheSIsIkxhenlXcmFwcGVyIiwiTG9kYXNoV3JhcHBlciIsIndyYXBwZXJDbG9uZSIsImJhc2VDcmVhdGUiLCJwcm90byIsImlzT2JqZWN0IiwiYmFzZUxvZGFzaCIsImNoYWluQWxsIiwidGhpcyIsIl9fd3JhcHBlZF9fIiwiX19hY3Rpb25zX18iLCJfX2NoYWluX18iLCJfX2luZGV4X18iLCJfX3ZhbHVlc19fIiwiX19kaXJfXyIsIl9fZmlsdGVyZWRfXyIsIl9faXRlcmF0ZWVzX18iLCJfX3Rha2VDb3VudF9fIiwiX192aWV3c19fIiwiSGFzaCIsImVudHJpZXMiLCJjbGVhciIsImVudHJ5IiwiTGlzdENhY2hlIiwiTWFwQ2FjaGUiLCJTZXRDYWNoZSIsIl9fZGF0YV9fIiwiYWRkIiwiU3RhY2siLCJkYXRhIiwiYXJyYXlMaWtlS2V5cyIsImluaGVyaXRlZCIsImlzQXJyIiwiaXNBcmciLCJpc0FyZ3VtZW50cyIsImlzQnVmZiIsImlzVHlwZSIsInNraXBJbmRleGVzIiwiaXNJbmRleCIsInB1c2giLCJhcnJheVNhbXBsZSIsImJhc2VSYW5kb20iLCJhcnJheVNhbXBsZVNpemUiLCJzaHVmZmxlU2VsZiIsImNvcHlBcnJheSIsImJhc2VDbGFtcCIsImFycmF5U2h1ZmZsZSIsImFzc2lnbk1lcmdlVmFsdWUiLCJlcSIsImJhc2VBc3NpZ25WYWx1ZSIsImFzc2lnblZhbHVlIiwib2JqVmFsdWUiLCJhc3NvY0luZGV4T2YiLCJiYXNlQWdncmVnYXRvciIsImJhc2VFYWNoIiwiYmFzZUFzc2lnbiIsImNvcHlPYmplY3QiLCJiYXNlQXQiLCJwYXRocyIsInNraXAiLCJnZXQiLCJudW1iZXIiLCJsb3dlciIsInVwcGVyIiwiYmFzZUNsb25lIiwiYml0bWFzayIsImN1c3RvbWl6ZXIiLCJzdGFjayIsImlzRGVlcCIsImlzRmxhdCIsImlzRnVsbCIsImNvbnN0cnVjdG9yIiwiaW5wdXQiLCJpbml0Q2xvbmVBcnJheSIsInRhZyIsImdldFRhZyIsImlzRnVuYyIsImNsb25lQnVmZmVyIiwiaW5pdENsb25lT2JqZWN0IiwiZ2V0U3ltYm9sc0luIiwiY29weVN5bWJvbHNJbiIsImtleXNJbiIsImJhc2VBc3NpZ25JbiIsImdldFN5bWJvbHMiLCJjb3B5U3ltYm9scyIsInN5bWJvbCIsIkN0b3IiLCJjbG9uZUFycmF5QnVmZmVyIiwiZGF0YVZpZXciLCJidWZmZXIiLCJieXRlT2Zmc2V0IiwiYnl0ZUxlbmd0aCIsImNsb25lRGF0YVZpZXciLCJjbG9uZVR5cGVkQXJyYXkiLCJyZWdleHAiLCJjbG9uZVJlZ0V4cCIsImluaXRDbG9uZUJ5VGFnIiwic3RhY2tlZCIsInN1YlZhbHVlIiwiZ2V0QWxsS2V5c0luIiwiZ2V0QWxsS2V5cyIsImJhc2VDb25mb3Jtc1RvIiwiYmFzZURlbGF5Iiwid2FpdCIsImJhc2VEaWZmZXJlbmNlIiwiaW5jbHVkZXMiLCJpc0NvbW1vbiIsInZhbHVlc0xlbmd0aCIsIm91dGVyIiwiY29tcHV0ZWQiLCJ2YWx1ZXNJbmRleCIsInRlbXBsYXRlU2V0dGluZ3MiLCJwb3AiLCJnZXRNYXBEYXRhIiwicGFpcnMiLCJMQVJHRV9BUlJBWV9TSVpFIiwiY3JlYXRlQmFzZUVhY2giLCJiYXNlRm9yT3duIiwiYmFzZUVhY2hSaWdodCIsImJhc2VGb3JPd25SaWdodCIsImJhc2VFdmVyeSIsImJhc2VFeHRyZW11bSIsImlzU3ltYm9sIiwiYmFzZUZpbHRlciIsImJhc2VGbGF0dGVuIiwiZGVwdGgiLCJpc1N0cmljdCIsImlzRmxhdHRlbmFibGUiLCJiYXNlRm9yIiwiY3JlYXRlQmFzZUZvciIsImJhc2VGb3JSaWdodCIsImJhc2VGdW5jdGlvbnMiLCJpc0Z1bmN0aW9uIiwiYmFzZUdldCIsInBhdGgiLCJjYXN0UGF0aCIsInRvS2V5IiwiYmFzZUdldEFsbEtleXMiLCJrZXlzRnVuYyIsInN5bWJvbHNGdW5jIiwiYmFzZUdldFRhZyIsImlzT3duIiwidW5tYXNrZWQiLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsImJhc2VHdCIsIm90aGVyIiwiYmFzZUhhcyIsImJhc2VIYXNJbiIsImJhc2VJbnRlcnNlY3Rpb24iLCJhcnJheXMiLCJvdGhMZW5ndGgiLCJvdGhJbmRleCIsImNhY2hlcyIsIm1heExlbmd0aCIsIkluZmluaXR5Iiwic2VlbiIsImJhc2VJbnZva2UiLCJwYXJlbnQiLCJsYXN0IiwiYmFzZUlzQXJndW1lbnRzIiwiYmFzZUlzRXF1YWwiLCJlcXVhbEZ1bmMiLCJvYmpJc0FyciIsIm90aElzQXJyIiwib2JqVGFnIiwib3RoVGFnIiwib2JqSXNPYmoiLCJvdGhJc09iaiIsImlzU2FtZVRhZyIsImVxdWFsQXJyYXlzIiwibmFtZSIsIm1lc3NhZ2UiLCJjb252ZXJ0IiwiaXNQYXJ0aWFsIiwiZXF1YWxCeVRhZyIsIm9iaklzV3JhcHBlZCIsIm90aElzV3JhcHBlZCIsIm9ialVud3JhcHBlZCIsIm90aFVud3JhcHBlZCIsIm9ialByb3BzIiwib2JqTGVuZ3RoIiwib2JqU3RhY2tlZCIsIm90aFN0YWNrZWQiLCJza2lwQ3RvciIsIm90aFZhbHVlIiwiY29tcGFyZWQiLCJvYmpDdG9yIiwib3RoQ3RvciIsImVxdWFsT2JqZWN0cyIsImJhc2VJc0VxdWFsRGVlcCIsImJhc2VJc01hdGNoIiwibWF0Y2hEYXRhIiwibm9DdXN0b21pemVyIiwic3JjVmFsdWUiLCJDT01QQVJFX1BBUlRJQUxfRkxBRyIsImJhc2VJc05hdGl2ZSIsImJhc2VJdGVyYXRlZSIsImlkZW50aXR5IiwiYmFzZU1hdGNoZXNQcm9wZXJ0eSIsImJhc2VNYXRjaGVzIiwicHJvcGVydHkiLCJiYXNlS2V5cyIsImlzUHJvdG90eXBlIiwiYmFzZUx0IiwiYmFzZU1hcCIsImlzQXJyYXlMaWtlIiwiZ2V0TWF0Y2hEYXRhIiwibWF0Y2hlc1N0cmljdENvbXBhcmFibGUiLCJpc0tleSIsImlzU3RyaWN0Q29tcGFyYWJsZSIsImhhc0luIiwiYmFzZU1lcmdlIiwic3JjSW5kZXgiLCJtZXJnZUZ1bmMiLCJzYWZlR2V0IiwibmV3VmFsdWUiLCJpc1R5cGVkIiwiaXNBcnJheUxpa2VPYmplY3QiLCJpc1BsYWluT2JqZWN0IiwidG9QbGFpbk9iamVjdCIsImJhc2VNZXJnZURlZXAiLCJiYXNlTnRoIiwiYmFzZU9yZGVyQnkiLCJpdGVyYXRlZXMiLCJvcmRlcnMiLCJnZXRJdGVyYXRlZSIsImNyaXRlcmlhIiwic29ydCIsIm9iakNyaXRlcmlhIiwib3RoQ3JpdGVyaWEiLCJvcmRlcnNMZW5ndGgiLCJjb21wYXJlQXNjZW5kaW5nIiwiY29tcGFyZU11bHRpcGxlIiwiYmFzZVNvcnRCeSIsImJhc2VQaWNrQnkiLCJiYXNlU2V0IiwiYmFzZVB1bGxBbGwiLCJpbmRleE9mIiwiYmFzZVB1bGxBdCIsImluZGV4ZXMiLCJwcmV2aW91cyIsImJhc2VVbnNldCIsImJhc2VSZXBlYXQiLCJiYXNlUmVzdCIsInN0YXJ0Iiwic2V0VG9TdHJpbmciLCJvdmVyUmVzdCIsImJhc2VTYW1wbGUiLCJiYXNlU2FtcGxlU2l6ZSIsIm5lc3RlZCIsImJhc2VTZXREYXRhIiwiYmFzZVNldFRvU3RyaW5nIiwiY29uc3RhbnQiLCJiYXNlU2h1ZmZsZSIsImJhc2VTbGljZSIsImVuZCIsImJhc2VTb21lIiwiYmFzZVNvcnRlZEluZGV4IiwicmV0SGlnaGVzdCIsImxvdyIsImhpZ2giLCJtaWQiLCJiYXNlU29ydGVkSW5kZXhCeSIsInZhbElzTmFOIiwidmFsSXNOdWxsIiwidmFsSXNTeW1ib2wiLCJ2YWxJc1VuZGVmaW5lZCIsIm90aElzRGVmaW5lZCIsIm90aElzTnVsbCIsIm90aElzUmVmbGV4aXZlIiwib3RoSXNTeW1ib2wiLCJzZXRMb3ciLCJiYXNlU29ydGVkVW5pcSIsImJhc2VUb051bWJlciIsImJhc2VUb1N0cmluZyIsImJhc2VVbmlxIiwiY3JlYXRlU2V0Iiwic2VlbkluZGV4IiwiYmFzZVVwZGF0ZSIsInVwZGF0ZXIiLCJiYXNlV2hpbGUiLCJpc0Ryb3AiLCJiYXNlV3JhcHBlclZhbHVlIiwiYWN0aW9ucyIsImFjdGlvbiIsImJhc2VYb3IiLCJiYXNlWmlwT2JqZWN0IiwiYXNzaWduRnVuYyIsInZhbHNMZW5ndGgiLCJjYXN0QXJyYXlMaWtlT2JqZWN0IiwiY2FzdEZ1bmN0aW9uIiwic3RyaW5nVG9QYXRoIiwiY2FzdFJlc3QiLCJjYXN0U2xpY2UiLCJpZCIsImNvcHkiLCJhcnJheUJ1ZmZlciIsInR5cGVkQXJyYXkiLCJ2YWxJc0RlZmluZWQiLCJ2YWxJc1JlZmxleGl2ZSIsImNvbXBvc2VBcmdzIiwicGFydGlhbHMiLCJob2xkZXJzIiwiaXNDdXJyaWVkIiwiYXJnc0luZGV4IiwiYXJnc0xlbmd0aCIsImhvbGRlcnNMZW5ndGgiLCJsZWZ0SW5kZXgiLCJsZWZ0TGVuZ3RoIiwicmFuZ2VMZW5ndGgiLCJpc1VuY3VycmllZCIsImNvbXBvc2VBcmdzUmlnaHQiLCJob2xkZXJzSW5kZXgiLCJyaWdodEluZGV4IiwicmlnaHRMZW5ndGgiLCJpc05ldyIsImNyZWF0ZUFnZ3JlZ2F0b3IiLCJpbml0aWFsaXplciIsImNyZWF0ZUFzc2lnbmVyIiwiYXNzaWduZXIiLCJzb3VyY2VzIiwiZ3VhcmQiLCJpc0l0ZXJhdGVlQ2FsbCIsIml0ZXJhYmxlIiwiY3JlYXRlQ2FzZUZpcnN0IiwibWV0aG9kTmFtZSIsInRyYWlsaW5nIiwiY3JlYXRlQ29tcG91bmRlciIsImNhbGxiYWNrIiwid29yZHMiLCJkZWJ1cnIiLCJjcmVhdGVDdG9yIiwiYXJndW1lbnRzIiwidGhpc0JpbmRpbmciLCJjcmVhdGVGaW5kIiwiZmluZEluZGV4RnVuYyIsImNyZWF0ZUZsb3ciLCJmbGF0UmVzdCIsImZ1bmNzIiwicHJlcmVxIiwidGhydSIsIndyYXBwZXIiLCJnZXRGdW5jTmFtZSIsImZ1bmNOYW1lIiwiZ2V0RGF0YSIsImlzTGF6aWFibGUiLCJwbGFudCIsImNyZWF0ZUh5YnJpZCIsInBhcnRpYWxzUmlnaHQiLCJob2xkZXJzUmlnaHQiLCJhcmdQb3MiLCJhcnkiLCJhcml0eSIsImlzQXJ5IiwiaXNCaW5kIiwiaXNCaW5kS2V5IiwiaXNGbGlwIiwiZ2V0SG9sZGVyIiwiaG9sZGVyc0NvdW50IiwiY291bnRIb2xkZXJzIiwibmV3SG9sZGVycyIsImNyZWF0ZVJlY3VycnkiLCJmbiIsImFyckxlbmd0aCIsIm9sZEFycmF5IiwicmVvcmRlciIsImNyZWF0ZUludmVydGVyIiwidG9JdGVyYXRlZSIsImJhc2VJbnZlcnRlciIsImNyZWF0ZU1hdGhPcGVyYXRpb24iLCJvcGVyYXRvciIsImRlZmF1bHRWYWx1ZSIsImNyZWF0ZU92ZXIiLCJhcnJheUZ1bmMiLCJjcmVhdGVQYWRkaW5nIiwiY2hhcnMiLCJjaGFyc0xlbmd0aCIsImNyZWF0ZVJhbmdlIiwic3RlcCIsInRvRmluaXRlIiwiYmFzZVJhbmdlIiwiY3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbiIsInRvTnVtYmVyIiwid3JhcEZ1bmMiLCJpc0N1cnJ5IiwibmV3RGF0YSIsInNldERhdGEiLCJzZXRXcmFwVG9TdHJpbmciLCJjcmVhdGVSb3VuZCIsInByZWNpc2lvbiIsInRvSW50ZWdlciIsInBhaXIiLCJub29wIiwiY3JlYXRlVG9QYWlycyIsImJhc2VUb1BhaXJzIiwiY3JlYXRlV3JhcCIsInNyY0JpdG1hc2siLCJuZXdCaXRtYXNrIiwiaXNDb21ibyIsIm1lcmdlRGF0YSIsImNyZWF0ZUN1cnJ5IiwiY3JlYXRlUGFydGlhbCIsImNyZWF0ZUJpbmQiLCJjdXN0b21EZWZhdWx0c0Fzc2lnbkluIiwiY3VzdG9tRGVmYXVsdHNNZXJnZSIsImN1c3RvbU9taXRDbG9uZSIsImFyclN0YWNrZWQiLCJhcnJWYWx1ZSIsImZsYXR0ZW4iLCJvdGhlckZ1bmMiLCJ0eXBlIiwiZ2V0VmFsdWUiLCJzdHViQXJyYXkiLCJoYXNQYXRoIiwiaGFzRnVuYyIsImlzTGVuZ3RoIiwiQXJyYXlCdWZmZXIiLCJyZXNvbHZlIiwiY3RvclN0cmluZyIsImlzTWFza2FibGUiLCJzdHViRmFsc2UiLCJvdGhlckFyZ3MiLCJzaG9ydE91dCIsInJlZmVyZW5jZSIsImRldGFpbHMiLCJpbnNlcnRXcmFwRGV0YWlscyIsInVwZGF0ZVdyYXBEZXRhaWxzIiwiZ2V0V3JhcERldGFpbHMiLCJjb3VudCIsImxhc3RDYWxsZWQiLCJzdGFtcCIsInJlbWFpbmluZyIsInJhbmQiLCJtZW1vaXplIiwiY2hhckNvZGVBdCIsInF1b3RlIiwic3ViU3RyaW5nIiwiY2xvbmUiLCJkaWZmZXJlbmNlIiwiZGlmZmVyZW5jZUJ5IiwiZGlmZmVyZW5jZVdpdGgiLCJmaW5kSW5kZXgiLCJmaW5kTGFzdEluZGV4IiwiaGVhZCIsImludGVyc2VjdGlvbiIsIm1hcHBlZCIsImludGVyc2VjdGlvbkJ5IiwiaW50ZXJzZWN0aW9uV2l0aCIsInB1bGwiLCJwdWxsQWxsIiwicHVsbEF0IiwidW5pb24iLCJ1bmlvbkJ5IiwidW5pb25XaXRoIiwidW56aXAiLCJncm91cCIsInVuemlwV2l0aCIsIndpdGhvdXQiLCJ4b3IiLCJ4b3JCeSIsInhvcldpdGgiLCJ6aXAiLCJ6aXBXaXRoIiwiY2hhaW4iLCJpbnRlcmNlcHRvciIsIndyYXBwZXJBdCIsImNvdW50QnkiLCJmaW5kIiwiZmluZExhc3QiLCJmb3JFYWNoUmlnaHQiLCJncm91cEJ5IiwiaW52b2tlTWFwIiwia2V5QnkiLCJwYXJ0aXRpb24iLCJzb3J0QnkiLCJiZWZvcmUiLCJiaW5kIiwiYmluZEtleSIsIldSQVBfQklORF9GTEFHIiwiZGVib3VuY2UiLCJvcHRpb25zIiwibGFzdEFyZ3MiLCJsYXN0VGhpcyIsIm1heFdhaXQiLCJ0aW1lcklkIiwibGFzdENhbGxUaW1lIiwibGFzdEludm9rZVRpbWUiLCJsZWFkaW5nIiwibWF4aW5nIiwiaW52b2tlRnVuYyIsInRpbWUiLCJzaG91bGRJbnZva2UiLCJ0aW1lU2luY2VMYXN0Q2FsbCIsInRpbWVyRXhwaXJlZCIsInRyYWlsaW5nRWRnZSIsInRpbWVXYWl0aW5nIiwicmVtYWluaW5nV2FpdCIsImRlYm91bmNlZCIsImlzSW52b2tpbmciLCJsZWFkaW5nRWRnZSIsImNhbmNlbCIsImZsdXNoIiwiZGVmZXIiLCJkZWxheSIsInJlc29sdmVyIiwibWVtb2l6ZWQiLCJDYWNoZSIsIm5lZ2F0ZSIsIm92ZXJBcmdzIiwidHJhbnNmb3JtcyIsImZ1bmNzTGVuZ3RoIiwicGFydGlhbCIsInBhcnRpYWxSaWdodCIsInJlYXJnIiwiZ3QiLCJndGUiLCJpc0Vycm9yIiwiaXNJbnRlZ2VyIiwiaXNOdW1iZXIiLCJpc1N0cmluZyIsImx0IiwibHRlIiwidG9BcnJheSIsIm5leHQiLCJkb25lIiwiaXRlcmF0b3JUb0FycmF5IiwicmVtYWluZGVyIiwidG9MZW5ndGgiLCJpc0JpbmFyeSIsImFzc2lnbiIsImFzc2lnbkluIiwiYXNzaWduSW5XaXRoIiwiYXNzaWduV2l0aCIsImF0IiwicHJvcHNJbmRleCIsInByb3BzTGVuZ3RoIiwiZGVmYXVsdHNEZWVwIiwibWVyZ2VXaXRoIiwiaW52ZXJ0IiwiaW52ZXJ0QnkiLCJpbnZva2UiLCJuYXRpdmVLZXlzSW4iLCJpc1Byb3RvIiwiYmFzZUtleXNJbiIsIm1lcmdlIiwib21pdCIsIkNMT05FX0RFRVBfRkxBRyIsImJhc2VQaWNrIiwicGlja0J5IiwicHJvcCIsInRvUGFpcnMiLCJ0b1BhaXJzSW4iLCJjYW1lbENhc2UiLCJ3b3JkIiwidG9Mb3dlckNhc2UiLCJjYXBpdGFsaXplIiwidXBwZXJGaXJzdCIsImtlYmFiQ2FzZSIsImxvd2VyQ2FzZSIsImxvd2VyRmlyc3QiLCJzbmFrZUNhc2UiLCJzdGFydENhc2UiLCJ1cHBlckNhc2UiLCJ0b1VwcGVyQ2FzZSIsInBhdHRlcm4iLCJoYXNVbmljb2RlV29yZCIsInVuaWNvZGVXb3JkcyIsImFzY2lpV29yZHMiLCJhdHRlbXB0IiwiYmluZEFsbCIsIm1ldGhvZE5hbWVzIiwiZmxvdyIsImZsb3dSaWdodCIsIm1ldGhvZCIsIm1ldGhvZE9mIiwibWl4aW4iLCJvdmVyIiwib3ZlckV2ZXJ5Iiwib3ZlclNvbWUiLCJiYXNlUHJvcGVydHlEZWVwIiwicmFuZ2UiLCJyYW5nZVJpZ2h0IiwiYXVnZW5kIiwiYWRkZW5kIiwiZGl2aWRlIiwiZGl2aWRlbmQiLCJkaXZpc29yIiwibXVsdGlwbHkiLCJtdWx0aXBsaWVyIiwibXVsdGlwbGljYW5kIiwicm91bmQiLCJzdWJ0cmFjdCIsIm1pbnVlbmQiLCJzdWJ0cmFoZW5kIiwiYWZ0ZXIiLCJjYXN0QXJyYXkiLCJjaHVuayIsImNvbXBhY3QiLCJjb25jYXQiLCJjb25kIiwiY29uZm9ybXMiLCJiYXNlQ29uZm9ybXMiLCJwcm9wZXJ0aWVzIiwiY3VycnkiLCJjdXJyeVJpZ2h0IiwiZHJvcCIsImRyb3BSaWdodCIsImRyb3BSaWdodFdoaWxlIiwiZHJvcFdoaWxlIiwiZmlsbCIsImJhc2VGaWxsIiwiZmlsdGVyIiwiZmxhdE1hcCIsImZsYXRNYXBEZWVwIiwiZmxhdE1hcERlcHRoIiwiZmxhdHRlbkRlZXAiLCJmbGF0dGVuRGVwdGgiLCJmbGlwIiwiZnJvbVBhaXJzIiwiZnVuY3Rpb25zIiwiZnVuY3Rpb25zSW4iLCJpbml0aWFsIiwibWFwS2V5cyIsIm1hcFZhbHVlcyIsIm1hdGNoZXMiLCJtYXRjaGVzUHJvcGVydHkiLCJudGhBcmciLCJvbWl0QnkiLCJvbmNlIiwib3JkZXJCeSIsInByb3BlcnR5T2YiLCJwdWxsQWxsQnkiLCJwdWxsQWxsV2l0aCIsInJlamVjdCIsInJlbW92ZSIsInJlc3QiLCJzYW1wbGVTaXplIiwic2V0V2l0aCIsInNodWZmbGUiLCJzb3J0ZWRVbmlxIiwic29ydGVkVW5pcUJ5Iiwic2VwYXJhdG9yIiwibGltaXQiLCJzcHJlYWQiLCJ0YWlsIiwidGFrZSIsInRha2VSaWdodCIsInRha2VSaWdodFdoaWxlIiwidGFrZVdoaWxlIiwidGFwIiwidGhyb3R0bGUiLCJ0b1BhdGgiLCJpc0Fyckxpa2UiLCJ1bmFyeSIsInVuaXEiLCJ1bmlxQnkiLCJ1bmlxV2l0aCIsInVuc2V0IiwidXBkYXRlIiwidXBkYXRlV2l0aCIsInZhbHVlc0luIiwid3JhcCIsInppcE9iamVjdCIsInppcE9iamVjdERlZXAiLCJlbnRyaWVzSW4iLCJleHRlbmQiLCJleHRlbmRXaXRoIiwiY2xhbXAiLCJjbG9uZURlZXAiLCJjbG9uZURlZXBXaXRoIiwiY2xvbmVXaXRoIiwiY29uZm9ybXNUbyIsImRlZmF1bHRUbyIsImVuZHNXaXRoIiwidGFyZ2V0IiwicG9zaXRpb24iLCJlc2NhcGUiLCJlc2NhcGVSZWdFeHAiLCJldmVyeSIsImZpbmRLZXkiLCJmaW5kTGFzdEtleSIsImZvckluIiwiZm9ySW5SaWdodCIsImZvck93biIsImZvck93blJpZ2h0IiwiaW5SYW5nZSIsImJhc2VJblJhbmdlIiwiaXNCb29sZWFuIiwiaXNFbGVtZW50IiwiaXNFbXB0eSIsImlzRXF1YWwiLCJpc0VxdWFsV2l0aCIsImlzTWF0Y2giLCJpc01hdGNoV2l0aCIsImlzTmFOIiwiaXNOYXRpdmUiLCJpc05pbCIsImlzTnVsbCIsImlzU2FmZUludGVnZXIiLCJpc1VuZGVmaW5lZCIsImlzV2Vha01hcCIsImlzV2Vha1NldCIsImxhc3RJbmRleE9mIiwic3RyaWN0TGFzdEluZGV4T2YiLCJtYXhCeSIsIm1lYW4iLCJtZWFuQnkiLCJtaW5CeSIsInN0dWJPYmplY3QiLCJzdHViU3RyaW5nIiwic3R1YlRydWUiLCJudGgiLCJub0NvbmZsaWN0IiwicGFkIiwic3RyTGVuZ3RoIiwicGFkRW5kIiwicGFkU3RhcnQiLCJyYWRpeCIsImZsb2F0aW5nIiwidGVtcCIsInJlZHVjZSIsInJlZHVjZVJpZ2h0IiwicmVwZWF0Iiwic2FtcGxlIiwic29tZSIsInNvcnRlZEluZGV4Iiwic29ydGVkSW5kZXhCeSIsInNvcnRlZEluZGV4T2YiLCJzb3J0ZWRMYXN0SW5kZXgiLCJzb3J0ZWRMYXN0SW5kZXhCeSIsInNvcnRlZExhc3RJbmRleE9mIiwic3RhcnRzV2l0aCIsInN1bSIsInN1bUJ5IiwidGVtcGxhdGUiLCJzZXR0aW5ncyIsImlzRXNjYXBpbmciLCJpc0V2YWx1YXRpbmciLCJpbXBvcnRzIiwiaW1wb3J0c0tleXMiLCJpbXBvcnRzVmFsdWVzIiwiaW50ZXJwb2xhdGUiLCJyZURlbGltaXRlcnMiLCJldmFsdWF0ZSIsInNvdXJjZVVSTCIsImVzY2FwZVZhbHVlIiwiaW50ZXJwb2xhdGVWYWx1ZSIsImVzVGVtcGxhdGVWYWx1ZSIsImV2YWx1YXRlVmFsdWUiLCJ2YXJpYWJsZSIsInRpbWVzIiwidG9Mb3dlciIsInRvU2FmZUludGVnZXIiLCJ0b1VwcGVyIiwidHJpbSIsInRyaW1FbmQiLCJ0cmltU3RhcnQiLCJ0cnVuY2F0ZSIsIm9taXNzaW9uIiwic2VhcmNoIiwic3Vic3RyaW5nIiwiZ2xvYmFsIiwibmV3RW5kIiwidW5lc2NhcGUiLCJ1bmlxdWVJZCIsInByZWZpeCIsImVhY2giLCJlYWNoUmlnaHQiLCJmaXJzdCIsIlZFUlNJT04iLCJpc0ZpbHRlciIsInRha2VOYW1lIiwiZHJvcE5hbWUiLCJjaGVja0l0ZXJhdGVlIiwiaXNUYWtlciIsImxvZGFzaEZ1bmMiLCJyZXRVbndyYXBwZWQiLCJpc0xhenkiLCJ1c2VMYXp5IiwiaXNIeWJyaWQiLCJpc1Vud3JhcHBlZCIsIm9ubHlMYXp5IiwiY2hhaW5OYW1lIiwiZGlyIiwiaXNSaWdodCIsInZpZXciLCJnZXRWaWV3IiwiaXRlckxlbmd0aCIsInRha2VDb3VudCIsIml0ZXJJbmRleCIsImNvbW1pdCIsIndyYXBwZWQiLCJ0b0pTT04iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2543.8e5565ae.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2543.8e5565ae.js.LICENSE.txt new file mode 100644 index 000000000..b1121f519 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2543.8e5565ae.js.LICENSE.txt @@ -0,0 +1,8 @@ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ diff --git a/react_frontend/static/react_frontend/js/2578.f529be22.js b/react_frontend/static/react_frontend/js/2578.f529be22.js new file mode 100644 index 000000000..3ed82a553 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2578.f529be22.js @@ -0,0 +1,3 @@ +/*! For license information please see 2578.f529be22.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2578],{4300:(e,t,r)=>{r.d(t,{A:()=>ne});var n=function(){function e(e){var t=this;this._insertTag=function(e){var r;r=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,r),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var r=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?l(A,--b):0,h--,10===v&&(h=1,m--),v}function C(){return v=b2||_(v)>3?"":" "}function T(e,t){for(;--t&&C()&&!(v<48||v>102||v>57&&v<65||v>70&&v<97););return S(e,O()+(t<6&&32==$()&&32==C()))}function j(e){for(;C();)switch(v){case e:return b;case 34:case 39:34!==e&&39!==e&&j(v);break;case 40:41===e&&j(e);break;case 92:C()}return b}function K(e,t){for(;C()&&e+v!==57&&(e+v!==84||47!==$()););return"/*"+S(t,b-1)+"*"+a(47===e?e:C())}function E(e){for(;!_($());)C();return S(e,b)}var M="-ms-",B="-moz-",G="-webkit-",N="comm",W="rule",z="decl",Y="@keyframes";function X(e,t){for(var r="",n=d(e),o=0;o0&&f(B)-g&&y(v>32?J(B+";",n,r,g-1):J(c(B," ","")+";",n,r,g-2),d);break;case 59:B+=";";default:if(y(M=D(B,t,r,m,h,o,p,R,L=[],j=[],g),s),123===_)if(0===h)U(B,t,M,M,L,s,g,p,j);else switch(99===b&&110===l(B,3)?100:b){case 100:case 108:case 109:case 115:U(e,M,M,n&&y(D(e,M,M,0,0,o,p,R,o,L=[],g),j),o,j,g,p,n?L:j);break;default:U(B,M,M,M,[""],j,0,p,j)}}m=h=v=0,x=S=1,R=B="",g=i;break;case 58:g=1+f(B),v=A;default:if(x<1)if(123==_)--x;else if(125==_&&0==x++&&125==w())continue;switch(B+=a(_),_*x){case 38:S=h>0?1:(B+="\f",-1);break;case 44:p[m++]=(f(B)-1)*S,S=1;break;case 64:45===$()&&(B+=I(C())),b=$(),h=g=f(R=B+=E(O())),_++;break;case 45:45===A&&2==f(B)&&(x=0)}}return s}function D(e,t,r,n,a,s,u,l,f,y,m){for(var h=a-1,g=0===a?s:[""],b=d(g),v=0,A=0,k=0;v0?g[w]+" "+C:c(C,/&\f/g,g[w])))&&(f[k++]=$);return x(e,t,r,0===a?W:l,f,y,m)}function q(e,t,r){return x(e,t,r,N,a(v),p(e,2,-2),0)}function J(e,t,r,n){return x(e,t,r,z,p(e,0,n),p(e,n+1,-1),n)}var Q=function(e,t,r){for(var n=0,o=0;n=o,o=$(),38===n&&12===o&&(t[r]=1),!_(o);)C();return S(e,b)},Z=new WeakMap,V=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,r=e.parent,n=e.column===r.column&&e.line===r.line;"rule"!==r.type;)if(!(r=r.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Z.get(r))&&!n){Z.set(e,!0);for(var o=[],s=function(e,t){return L(function(e,t){var r=-1,n=44;do{switch(_(n)){case 0:38===n&&12===$()&&(t[r]=1),e[r]+=Q(b-1,t,r);break;case 2:e[r]+=I(n);break;case 4:if(44===n){e[++r]=58===$()?"&\f":"",t[r]=e[r].length;break}default:e[r]+=a(n)}}while(n=C());return e}(R(e),t))}(t,o),i=r.props,c=0,u=0;c6)switch(l(e,t+1)){case 109:if(45!==l(e,t+4))break;case 102:return c(e,/(.+:)(.+)-([^]+)/,"$1"+G+"$2-$3$1"+B+(108==l(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?te(c(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==l(e,t+1))break;case 6444:switch(l(e,f(e)-3-(~u(e,"!important")&&10))){case 107:return c(e,":",":"+G)+e;case 101:return c(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+G+(45===l(e,14)?"inline-":"")+"box$3$1"+G+"$2$3$1"+M+"$2box$3")+e}break;case 5936:switch(l(e,t+11)){case 114:return G+e+M+c(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return G+e+M+c(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return G+e+M+c(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return G+e+M+e+e}return e}var re=[function(e,t,r,n){if(e.length>-1&&!e.return)switch(e.type){case z:e.return=te(e.value,e.length);break;case Y:return X([k(e,{value:c(e.value,"@","@"+G)})],n);case W:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return X([k(e,{props:[c(t,/:(read-\w+)/,":-moz-$1")]})],n);case"::placeholder":return X([k(e,{props:[c(t,/:(plac\w+)/,":"+G+"input-$1")]}),k(e,{props:[c(t,/:(plac\w+)/,":-moz-$1")]}),k(e,{props:[c(t,/:(plac\w+)/,M+"input-$1")]})],n)}return""}))}}],ne=function(e){var t=e.key;if("css"===t){var r=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(r,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var o,a,s=e.stylisPlugins||re,i={},c=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),r=1;r{function n(e){var t=Object.create(null);return function(r){return void 0===t[r]&&(t[r]=e(r)),t[r]}}r.d(t,{A:()=>n})},5684:(e,t,r)=>{r.d(t,{T:()=>c,i:()=>a,w:()=>i});var n=r(6540),o=r(4300),a=(r(6899),r(1287),!0),s=n.createContext("undefined"!=typeof HTMLElement?(0,o.A)({key:"css"}):null);s.Provider;var i=function(e){return(0,n.forwardRef)((function(t,r){var o=(0,n.useContext)(s);return e(t,o,r)}))};a||(i=function(e){return function(t){var r=(0,n.useContext)(s);return null===r?(r=(0,o.A)({key:"css"}),n.createElement(s.Provider,{value:r},e(t,r))):e(t,r)}});var c=n.createContext({})},6899:(e,t,r)=>{r.d(t,{J:()=>y});var n={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1},o=r(6289),a=/[A-Z]|^ms/g,s=/_EMO_([^_]+?)_([^]*?)_EMO_/g,i=function(e){return 45===e.charCodeAt(1)},c=function(e){return null!=e&&"boolean"!=typeof e},u=(0,o.A)((function(e){return i(e)?e:e.replace(a,"-$&").toLowerCase()})),l=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(s,(function(e,t,r){return f={name:t,styles:r,next:f},t}))}return 1===n[e]||i(e)||"number"!=typeof t||0===t?t:t+"px"};function p(e,t,r){if(null==r)return"";if(void 0!==r.__emotion_styles)return r;switch(typeof r){case"boolean":return"";case"object":if(1===r.anim)return f={name:r.name,styles:r.styles,next:f},r.name;if(void 0!==r.styles){var n=r.next;if(void 0!==n)for(;void 0!==n;)f={name:n.name,styles:n.styles,next:f},n=n.next;return r.styles+";"}return function(e,t,r){var n="";if(Array.isArray(r))for(var o=0;o=4;++n,o-=4)t=1540483477*(65535&(t=255&e.charCodeAt(n)|(255&e.charCodeAt(++n))<<8|(255&e.charCodeAt(++n))<<16|(255&e.charCodeAt(++n))<<24))+(59797*(t>>>16)<<16),r=1540483477*(65535&(t^=t>>>24))+(59797*(t>>>16)<<16)^1540483477*(65535&r)+(59797*(r>>>16)<<16);switch(o){case 3:r^=(255&e.charCodeAt(n+2))<<16;case 2:r^=(255&e.charCodeAt(n+1))<<8;case 1:r=1540483477*(65535&(r^=255&e.charCodeAt(n)))+(59797*(r>>>16)<<16)}return(((r=1540483477*(65535&(r^=r>>>13))+(59797*(r>>>16)<<16))^r>>>15)>>>0).toString(36)}(o)+c;return{name:u,styles:o,next:f}}},1287:(e,t,r)=>{var n;r.d(t,{i:()=>i,s:()=>s});var o=r(6540),a=!!(n||(n=r.t(o,2))).useInsertionEffect&&(n||(n=r.t(o,2))).useInsertionEffect,s=a||function(e){return e()},i=a||o.useLayoutEffect},9452:(e,t,r)=>{r.d(t,{EU:()=>s,NI:()=>a,vf:()=>i,zu:()=>n});const n={xs:0,sm:600,md:900,lg:1200,xl:1536},o={keys:["xs","sm","md","lg","xl"],up:e=>`@media (min-width:${n[e]}px)`};function a(e,t,r){const a=e.theme||{};if(Array.isArray(t)){const e=a.breakpoints||o;return t.reduce(((n,o,a)=>(n[e.up(e.keys[a])]=r(t[a]),n)),{})}if("object"==typeof t){const e=a.breakpoints||o;return Object.keys(t).reduce(((o,a)=>{if(-1!==Object.keys(e.values||n).indexOf(a))o[e.up(a)]=r(t[a],a);else{const e=a;o[e]=t[e]}return o}),{})}return r(t)}function s(e={}){var t;return(null==(t=e.keys)?void 0:t.reduce(((t,r)=>(t[e.up(r)]={},t)),{}))||{}}function i(e,t){return e.reduce(((e,t)=>{const r=e[t];return(!r||0===Object.keys(r).length)&&delete e[t],e}),t)}},3221:(e,t,r)=>{r.d(t,{A:()=>f});var n=r(8168),o=r(8587),a=r(3272);const s=["values","unit","step"],i={borderRadius:4};var c=r(8248),u=r(3571),l=r(4188);const p=["breakpoints","palette","spacing","shape"],f=function(e={},...t){const{breakpoints:r={},palette:f={},spacing:d,shape:y={}}=e,m=(0,o.A)(e,p),h=function(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:r="px",step:a=5}=e,i=(0,o.A)(e,s),c=(e=>{const t=Object.keys(e).map((t=>({key:t,val:e[t]})))||[];return t.sort(((e,t)=>e.val-t.val)),t.reduce(((e,t)=>(0,n.A)({},e,{[t.key]:t.val})),{})})(t),u=Object.keys(c);function l(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${r})`}function p(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-a/100}${r})`}function f(e,n){const o=u.indexOf(n);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${r}) and (max-width:${(-1!==o&&"number"==typeof t[u[o]]?t[u[o]]:n)-a/100}${r})`}return(0,n.A)({keys:u,values:c,up:l,down:p,between:f,only:function(e){return u.indexOf(e)+1(0===e.length?[1]:e).map((e=>{const r=t(e);return"number"==typeof r?`${r}px`:r})).join(" ");return r.mui=!0,r}(d);let b=(0,a.A)({breakpoints:h,direction:"ltr",components:{},palette:(0,n.A)({mode:"light"},f),spacing:g,shape:(0,n.A)({},i,y)},m);return b=t.reduce(((e,t)=>(0,a.A)(e,t)),b),b.unstable_sxConfig=(0,n.A)({},l.A,null==m?void 0:m.unstable_sxConfig),b.unstable_sx=function(e){return(0,u.A)({sx:e,theme:this})},b}},4620:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(3272);const o=function(e,t){return t?(0,n.A)(e,t,{clone:!1}):e}},8248:(e,t,r)=>{r.d(t,{LX:()=>y,MA:()=>d,_W:()=>m,Lc:()=>g,Ms:()=>b});var n=r(9452),o=r(6481),a=r(4620);const s={m:"margin",p:"padding"},i={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},c={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},u=function(){const e={};return t=>(void 0===e[t]&&(e[t]=(e=>{if(e.length>2){if(!c[e])return[e];e=c[e]}const[t,r]=e.split(""),n=s[t],o=i[r]||"";return Array.isArray(o)?o.map((e=>n+e)):[n+o]})(t)),e[t])}(),l=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],p=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],f=[...l,...p];function d(e,t,r,n){var a;const s=null!=(a=(0,o.Yn)(e,t,!1))?a:r;return"number"==typeof s?e=>"string"==typeof e?e:s*e:Array.isArray(s)?e=>"string"==typeof e?e:s[e]:"function"==typeof s?s:()=>{}}function y(e){return d(e,"spacing",8)}function m(e,t){if("string"==typeof t||null==t)return t;const r=e(Math.abs(t));return t>=0?r:"number"==typeof r?-r:`-${r}`}function h(e,t){const r=y(e.theme);return Object.keys(e).map((o=>function(e,t,r,o){if(-1===t.indexOf(r))return null;const a=function(e,t){return r=>e.reduce(((e,n)=>(e[n]=m(t,r),e)),{})}(u(r),o),s=e[r];return(0,n.NI)(e,s,a)}(e,t,o,r))).reduce(a.A,{})}function g(e){return h(e,l)}function b(e){return h(e,p)}function v(e){return h(e,f)}g.propTypes={},g.filterProps=l,b.propTypes={},b.filterProps=p,v.propTypes={},v.filterProps=f},6481:(e,t,r)=>{r.d(t,{Ay:()=>i,BO:()=>s,Yn:()=>a});var n=r(3967),o=r(9452);function a(e,t,r=!0){if(!t||"string"!=typeof t)return null;if(e&&e.vars&&r){const r=`vars.${t}`.split(".").reduce(((e,t)=>e&&e[t]?e[t]:null),e);if(null!=r)return r}return t.split(".").reduce(((e,t)=>e&&null!=e[t]?e[t]:null),e)}function s(e,t,r,n=r){let o;return o="function"==typeof e?e(r):Array.isArray(e)?e[r]||n:a(e,r)||n,t&&(o=t(o,n,e)),o}const i=function(e){const{prop:t,cssProperty:r=e.prop,themeKey:i,transform:c}=e,u=e=>{if(null==e[t])return null;const u=e[t],l=a(e.theme,i)||{};return(0,o.NI)(e,u,(e=>{let o=s(l,c,e);return e===o&&"string"==typeof e&&(o=s(l,c,`${t}${"default"===e?"":(0,n.A)(e)}`,e)),!1===r?o:{[r]:o}}))};return u.propTypes={},u.filterProps=[t],u}},4188:(e,t,r)=>{r.d(t,{A:()=>I});var n=r(8248),o=r(6481),a=r(4620);const s=function(...e){const t=e.reduce(((e,t)=>(t.filterProps.forEach((r=>{e[r]=t})),e)),{}),r=e=>Object.keys(e).reduce(((r,n)=>t[n]?(0,a.A)(r,t[n](e)):r),{});return r.propTypes={},r.filterProps=e.reduce(((e,t)=>e.concat(t.filterProps)),[]),r};var i=r(9452);function c(e){return"number"!=typeof e?e:`${e}px solid`}const u=(0,o.Ay)({prop:"border",themeKey:"borders",transform:c}),l=(0,o.Ay)({prop:"borderTop",themeKey:"borders",transform:c}),p=(0,o.Ay)({prop:"borderRight",themeKey:"borders",transform:c}),f=(0,o.Ay)({prop:"borderBottom",themeKey:"borders",transform:c}),d=(0,o.Ay)({prop:"borderLeft",themeKey:"borders",transform:c}),y=(0,o.Ay)({prop:"borderColor",themeKey:"palette"}),m=(0,o.Ay)({prop:"borderTopColor",themeKey:"palette"}),h=(0,o.Ay)({prop:"borderRightColor",themeKey:"palette"}),g=(0,o.Ay)({prop:"borderBottomColor",themeKey:"palette"}),b=(0,o.Ay)({prop:"borderLeftColor",themeKey:"palette"}),v=e=>{if(void 0!==e.borderRadius&&null!==e.borderRadius){const t=(0,n.MA)(e.theme,"shape.borderRadius",4,"borderRadius"),r=e=>({borderRadius:(0,n._W)(t,e)});return(0,i.NI)(e,e.borderRadius,r)}return null};v.propTypes={},v.filterProps=["borderRadius"],s(u,l,p,f,d,y,m,h,g,b,v);const A=e=>{if(void 0!==e.gap&&null!==e.gap){const t=(0,n.MA)(e.theme,"spacing",8,"gap"),r=e=>({gap:(0,n._W)(t,e)});return(0,i.NI)(e,e.gap,r)}return null};A.propTypes={},A.filterProps=["gap"];const x=e=>{if(void 0!==e.columnGap&&null!==e.columnGap){const t=(0,n.MA)(e.theme,"spacing",8,"columnGap"),r=e=>({columnGap:(0,n._W)(t,e)});return(0,i.NI)(e,e.columnGap,r)}return null};x.propTypes={},x.filterProps=["columnGap"];const k=e=>{if(void 0!==e.rowGap&&null!==e.rowGap){const t=(0,n.MA)(e.theme,"spacing",8,"rowGap"),r=e=>({rowGap:(0,n._W)(t,e)});return(0,i.NI)(e,e.rowGap,r)}return null};function w(e,t){return"grey"===t?t:e}function C(e){return e<=1&&0!==e?100*e+"%":e}k.propTypes={},k.filterProps=["rowGap"],s(A,x,k,(0,o.Ay)({prop:"gridColumn"}),(0,o.Ay)({prop:"gridRow"}),(0,o.Ay)({prop:"gridAutoFlow"}),(0,o.Ay)({prop:"gridAutoColumns"}),(0,o.Ay)({prop:"gridAutoRows"}),(0,o.Ay)({prop:"gridTemplateColumns"}),(0,o.Ay)({prop:"gridTemplateRows"}),(0,o.Ay)({prop:"gridTemplateAreas"}),(0,o.Ay)({prop:"gridArea"})),s((0,o.Ay)({prop:"color",themeKey:"palette",transform:w}),(0,o.Ay)({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:w}),(0,o.Ay)({prop:"backgroundColor",themeKey:"palette",transform:w}));const $=(0,o.Ay)({prop:"width",transform:C}),O=e=>{if(void 0!==e.maxWidth&&null!==e.maxWidth){const t=t=>{var r;return{maxWidth:(null==(r=e.theme)||null==(r=r.breakpoints)||null==(r=r.values)?void 0:r[t])||i.zu[t]||C(t)}};return(0,i.NI)(e,e.maxWidth,t)}return null};O.filterProps=["maxWidth"];const S=(0,o.Ay)({prop:"minWidth",transform:C}),_=(0,o.Ay)({prop:"height",transform:C}),R=(0,o.Ay)({prop:"maxHeight",transform:C}),L=(0,o.Ay)({prop:"minHeight",transform:C}),I=((0,o.Ay)({prop:"size",cssProperty:"width",transform:C}),(0,o.Ay)({prop:"size",cssProperty:"height",transform:C}),s($,O,S,_,R,L,(0,o.Ay)({prop:"boxSizing"})),{border:{themeKey:"borders",transform:c},borderTop:{themeKey:"borders",transform:c},borderRight:{themeKey:"borders",transform:c},borderBottom:{themeKey:"borders",transform:c},borderLeft:{themeKey:"borders",transform:c},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:v},color:{themeKey:"palette",transform:w},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:w},backgroundColor:{themeKey:"palette",transform:w},p:{style:n.Ms},pt:{style:n.Ms},pr:{style:n.Ms},pb:{style:n.Ms},pl:{style:n.Ms},px:{style:n.Ms},py:{style:n.Ms},padding:{style:n.Ms},paddingTop:{style:n.Ms},paddingRight:{style:n.Ms},paddingBottom:{style:n.Ms},paddingLeft:{style:n.Ms},paddingX:{style:n.Ms},paddingY:{style:n.Ms},paddingInline:{style:n.Ms},paddingInlineStart:{style:n.Ms},paddingInlineEnd:{style:n.Ms},paddingBlock:{style:n.Ms},paddingBlockStart:{style:n.Ms},paddingBlockEnd:{style:n.Ms},m:{style:n.Lc},mt:{style:n.Lc},mr:{style:n.Lc},mb:{style:n.Lc},ml:{style:n.Lc},mx:{style:n.Lc},my:{style:n.Lc},margin:{style:n.Lc},marginTop:{style:n.Lc},marginRight:{style:n.Lc},marginBottom:{style:n.Lc},marginLeft:{style:n.Lc},marginX:{style:n.Lc},marginY:{style:n.Lc},marginInline:{style:n.Lc},marginInlineStart:{style:n.Lc},marginInlineEnd:{style:n.Lc},marginBlock:{style:n.Lc},marginBlockStart:{style:n.Lc},marginBlockEnd:{style:n.Lc},displayPrint:{cssProperty:!1,transform:e=>({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:A},rowGap:{style:k},columnGap:{style:x},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:C},maxWidth:{style:O},minWidth:{transform:C},height:{transform:C},maxHeight:{transform:C},minHeight:{transform:C},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}})},3571:(e,t,r)=>{r.d(t,{A:()=>u});var n=r(3967),o=r(4620),a=r(6481),s=r(9452),i=r(4188);const c=function(){function e(e,t,r,o){const i={[e]:t,theme:r},c=o[e];if(!c)return{[e]:t};const{cssProperty:u=e,themeKey:l,transform:p,style:f}=c;if(null==t)return null;if("typography"===l&&"inherit"===t)return{[e]:t};const d=(0,a.Yn)(r,l)||{};return f?f(i):(0,s.NI)(i,t,(t=>{let r=(0,a.BO)(d,p,t);return t===r&&"string"==typeof t&&(r=(0,a.BO)(d,p,`${e}${"default"===t?"":(0,n.A)(t)}`,t)),!1===u?r:{[u]:r}}))}return function t(r){var n;const{sx:a,theme:c={}}=r||{};if(!a)return null;const u=null!=(n=c.unstable_sxConfig)?n:i.A;function l(r){let n=r;if("function"==typeof r)n=r(c);else if("object"!=typeof r)return r;if(!n)return null;const a=(0,s.EU)(c.breakpoints),i=Object.keys(a);let l=a;return Object.keys(n).forEach((r=>{const a="function"==typeof(i=n[r])?i(c):i;var i;if(null!=a)if("object"==typeof a)if(u[r])l=(0,o.A)(l,e(r,a,c,u));else{const e=(0,s.NI)({theme:c},a,(e=>({[r]:e})));!function(...e){const t=e.reduce(((e,t)=>e.concat(Object.keys(t))),[]),r=new Set(t);return e.every((e=>r.size===Object.keys(e).length))}(e,a)?l=(0,o.A)(l,e):l[r]=t({sx:a,theme:c})}else l=(0,o.A)(l,e(r,a,c,u))})),(0,s.vf)(i,l)}return Array.isArray(a)?a.map(l):l(a)}}();c.filterProps=["sx"];const u=c},3951:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(6540),o=r(5684);const a=function(e=null){const t=n.useContext(o.T);return t&&(r=t,0!==Object.keys(r).length)?t:e;var r}},3967:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(2599);function o(e){if("string"!=typeof e)throw new Error((0,n.A)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},3272:(e,t,r)=>{r.d(t,{A:()=>s,Q:()=>o});var n=r(8168);function o(e){return null!==e&&"object"==typeof e&&e.constructor===Object}function a(e){if(!o(e))return e;const t={};return Object.keys(e).forEach((r=>{t[r]=a(e[r])})),t}function s(e,t,r={clone:!0}){const i=r.clone?(0,n.A)({},e):e;return o(e)&&o(t)&&Object.keys(t).forEach((n=>{"__proto__"!==n&&(o(t[n])&&n in e&&o(e[n])?i[n]=s(e[n],t[n],r):r.clone?i[n]=o(t[n])?a(t[n]):t[n]:i[n]=t[n])})),i}},2599:(e,t,r)=>{function n(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;en})},1020:(e,t,r)=>{var n=r(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,a={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)s.call(t,n)&&!c.hasOwnProperty(n)&&(a[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===a[n]&&(a[n]=t[n]);return{$$typeof:o,type:e,key:u,ref:l,props:a,_owner:i.current}}t.Fragment=a,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{e.exports=r(1020)},8168:(e,t,r)=>{function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;tn})},8587:(e,t,r)=>{function n(e,t){if(null==e)return{};var r={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(-1!==t.indexOf(n))continue;r[n]=e[n]}return r}r.d(t,{A:()=>n})}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFFVCxJQUFJLE1BQU0sQ0FBQzBMLFNBQVN6WixFQUFFN0MsS0FBS2tjLEVBQUV2ZixJQUFJcUIsRUFBRXFJLElBQUlzRixFQUFFMUwsTUFBTW1jLEVBQUVHLE9BQU9YLEVBQUVZLFFBQVEsQ0FBQ0MsRUFBUUMsU0FBUzdMLEVBQUU0TCxFQUFRRSxJQUFJVixFQUFFUSxFQUFRRyxLQUFLWCxrQkNQeFdZLEVBQU9KLFFBQVUsRUFBakIsc0JDSEYsU0FBU0ssSUFDUCxPQUFPQSxFQUFXdGUsT0FBT0MsT0FBU0QsT0FBT0MsT0FBT3NlLE9BQVMsU0FBVW5CLEdBQ2pFLElBQUssSUFBSTVkLEVBQUksRUFBR0EsRUFBSXNkLFVBQVV4ZixPQUFRa0MsSUFBSyxDQUN6QyxJQUFJMFMsRUFBSTRLLFVBQVV0ZCxHQUNsQixJQUFLLElBQUkyUyxLQUFLRCxHQUFHLENBQUcsR0FBRWlMLGVBQWV0WCxLQUFLcU0sRUFBR0MsS0FBT2lMLEVBQUVqTCxHQUFLRCxFQUFFQyxHQUMvRCxDQUNBLE9BQU9pTCxDQUNULEVBQUdrQixFQUFTRSxNQUFNLEtBQU0xQixVQUMxQixrQ0NSQSxTQUFTMkIsRUFBOEJ0TSxFQUFHM1MsR0FDeEMsR0FBSSxNQUFRMlMsRUFBRyxNQUFPLENBQUMsRUFDdkIsSUFBSUQsRUFBSSxDQUFDLEVBQ1QsSUFBSyxJQUFJa0wsS0FBS2pMLEVBQUcsR0FBSSxDQUFDLEVBQUVnTCxlQUFldFgsS0FBS3NNLEVBQUdpTCxHQUFJLENBQ2pELElBQUssSUFBTTVkLEVBQUVpQixRQUFRMmMsR0FBSSxTQUN6QmxMLEVBQUVrTCxHQUFLakwsRUFBRWlMLEVBQ1gsQ0FDQSxPQUFPbEwsQ0FDVCIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3NoZWV0L2Rpc3QvZW1vdGlvbi1zaGVldC5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1V0aWxpdHkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9Ub2tlbml6ZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9FbnVtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1BhcnNlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9jYWNoZS9kaXN0L2Vtb3Rpb24tY2FjaGUuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9NaWRkbGV3YXJlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL21lbW9pemUvZGlzdC9lbW90aW9uLW1lbW9pemUuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3NlcmlhbGl6ZS9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC9lbW90aW9uLXVuaXRsZXNzLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zZXJpYWxpemUvZGlzdC9lbW90aW9uLXNlcmlhbGl6ZS5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9oYXNoL2Rpc3QvZW1vdGlvbi1oYXNoLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcy9kaXN0L2Vtb3Rpb24tdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2JyZWFrcG9pbnRzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9jcmVhdGVUaGVtZS9jcmVhdGVCcmVha3BvaW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3JlYXRlVGhlbWUvc2hhcGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZVRoZW1lL2NyZWF0ZVRoZW1lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9jcmVhdGVUaGVtZS9jcmVhdGVTcGFjaW5nLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9tZXJnZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3BhY2luZy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vbWVtb2l6ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NvbXBvc2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2JvcmRlcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2Nzc0dyaWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3BhbGV0dGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3NpemluZy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L2RlZmF1bHRTeENvbmZpZy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L3N0eWxlRnVuY3Rpb25TeC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vdXNlVGhlbWVXaXRob3V0RGVmYXVsdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9jYXBpdGFsaXplL2NhcGl0YWxpemUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZGVlcG1lcmdlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2Zvcm1hdE11aUVycm9yTWVzc2FnZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5cbkJhc2VkIG9mZiBnbGFtb3IncyBTdHlsZVNoZWV0LCB0aGFua3MgU3VuaWwg4p2k77iPXG5cbmhpZ2ggcGVyZm9ybWFuY2UgU3R5bGVTaGVldCBmb3IgY3NzLWluLWpzIHN5c3RlbXNcblxuLSB1c2VzIG11bHRpcGxlIHN0eWxlIHRhZ3MgYmVoaW5kIHRoZSBzY2VuZXMgZm9yIG1pbGxpb25zIG9mIHJ1bGVzXG4tIHVzZXMgYGluc2VydFJ1bGVgIGZvciBhcHBlbmRpbmcgaW4gcHJvZHVjdGlvbiBmb3IgKm11Y2gqIGZhc3RlciBwZXJmb3JtYW5jZVxuXG4vLyB1c2FnZVxuXG5pbXBvcnQgeyBTdHlsZVNoZWV0IH0gZnJvbSAnQGVtb3Rpb24vc2hlZXQnXG5cbmxldCBzdHlsZVNoZWV0ID0gbmV3IFN0eWxlU2hlZXQoeyBrZXk6ICcnLCBjb250YWluZXI6IGRvY3VtZW50LmhlYWQgfSlcblxuc3R5bGVTaGVldC5pbnNlcnQoJyNib3ggeyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IH0nKVxuLSBhcHBlbmRzIGEgY3NzIHJ1bGUgaW50byB0aGUgc3R5bGVzaGVldFxuXG5zdHlsZVNoZWV0LmZsdXNoKClcbi0gZW1wdGllcyB0aGUgc3R5bGVzaGVldCBvZiBhbGwgaXRzIGNvbnRlbnRzXG5cbiovXG4vLyAkRmxvd0ZpeE1lXG5mdW5jdGlvbiBzaGVldEZvclRhZyh0YWcpIHtcbiAgaWYgKHRhZy5zaGVldCkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICByZXR1cm4gdGFnLnNoZWV0O1xuICB9IC8vIHRoaXMgd2VpcmRuZXNzIGJyb3VnaHQgdG8geW91IGJ5IGZpcmVmb3hcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkb2N1bWVudC5zdHlsZVNoZWV0c1tpXS5vd25lck5vZGUgPT09IHRhZykge1xuICAgICAgLy8gJEZsb3dGaXhNZVxuICAgICAgcmV0dXJuIGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywgb3B0aW9ucy5rZXkpO1xuXG4gIGlmIChvcHRpb25zLm5vbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICB0YWcuc2V0QXR0cmlidXRlKCdub25jZScsIG9wdGlvbnMubm9uY2UpO1xuICB9XG5cbiAgdGFnLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7XG4gIHRhZy5zZXRBdHRyaWJ1dGUoJ2RhdGEtcycsICcnKTtcbiAgcmV0dXJuIHRhZztcbn1cblxudmFyIFN0eWxlU2hlZXQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvLyBVc2luZyBOb2RlIGluc3RlYWQgb2YgSFRNTEVsZW1lbnQgc2luY2UgY29udGFpbmVyIG1heSBiZSBhIFNoYWRvd1Jvb3RcbiAgZnVuY3Rpb24gU3R5bGVTaGVldChvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuX2luc2VydFRhZyA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHZhciBiZWZvcmU7XG5cbiAgICAgIGlmIChfdGhpcy50YWdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAoX3RoaXMuaW5zZXJ0aW9uUG9pbnQpIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5pbnNlcnRpb25Qb2ludC5uZXh0U2libGluZztcbiAgICAgICAgfSBlbHNlIGlmIChfdGhpcy5wcmVwZW5kKSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmVmb3JlID0gX3RoaXMuYmVmb3JlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiZWZvcmUgPSBfdGhpcy50YWdzW190aGlzLnRhZ3MubGVuZ3RoIC0gMV0ubmV4dFNpYmxpbmc7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFnLCBiZWZvcmUpO1xuXG4gICAgICBfdGhpcy50YWdzLnB1c2godGFnKTtcbiAgICB9O1xuXG4gICAgdGhpcy5pc1NwZWVkeSA9IG9wdGlvbnMuc3BlZWR5ID09PSB1bmRlZmluZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nIDogb3B0aW9ucy5zcGVlZHk7XG4gICAgdGhpcy50YWdzID0gW107XG4gICAgdGhpcy5jdHIgPSAwO1xuICAgIHRoaXMubm9uY2UgPSBvcHRpb25zLm5vbmNlOyAvLyBrZXkgaXMgdGhlIHZhbHVlIG9mIHRoZSBkYXRhLWVtb3Rpb24gYXR0cmlidXRlLCBpdCdzIHVzZWQgdG8gaWRlbnRpZnkgZGlmZmVyZW50IHNoZWV0c1xuXG4gICAgdGhpcy5rZXkgPSBvcHRpb25zLmtleTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyO1xuICAgIHRoaXMucHJlcGVuZCA9IG9wdGlvbnMucHJlcGVuZDtcbiAgICB0aGlzLmluc2VydGlvblBvaW50ID0gb3B0aW9ucy5pbnNlcnRpb25Qb2ludDtcbiAgICB0aGlzLmJlZm9yZSA9IG51bGw7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gU3R5bGVTaGVldC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmh5ZHJhdGUgPSBmdW5jdGlvbiBoeWRyYXRlKG5vZGVzKSB7XG4gICAgbm9kZXMuZm9yRWFjaCh0aGlzLl9pbnNlcnRUYWcpO1xuICB9O1xuXG4gIF9wcm90by5pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnQocnVsZSkge1xuICAgIC8vIHRoZSBtYXggbGVuZ3RoIGlzIGhvdyBtYW55IHJ1bGVzIHdlIGhhdmUgcGVyIHN0eWxlIHRhZywgaXQncyA2NTAwMCBpbiBzcGVlZHkgbW9kZVxuICAgIC8vIGl0J3MgMSBpbiBkZXYgYmVjYXVzZSB3ZSBpbnNlcnQgc291cmNlIG1hcHMgdGhhdCBtYXAgYSBzaW5nbGUgcnVsZSB0byBhIGxvY2F0aW9uXG4gICAgLy8gYW5kIHlvdSBjYW4gb25seSBoYXZlIG9uZSBzb3VyY2UgbWFwIHBlciBzdHlsZSB0YWdcbiAgICBpZiAodGhpcy5jdHIgJSAodGhpcy5pc1NwZWVkeSA/IDY1MDAwIDogMSkgPT09IDApIHtcbiAgICAgIHRoaXMuX2luc2VydFRhZyhjcmVhdGVTdHlsZUVsZW1lbnQodGhpcykpO1xuICAgIH1cblxuICAgIHZhciB0YWcgPSB0aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aCAtIDFdO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBpc0ltcG9ydFJ1bGUgPSBydWxlLmNoYXJDb2RlQXQoMCkgPT09IDY0ICYmIHJ1bGUuY2hhckNvZGVBdCgxKSA9PT0gMTA1O1xuXG4gICAgICBpZiAoaXNJbXBvcnRSdWxlICYmIHRoaXMuX2FscmVhZHlJbnNlcnRlZE9yZGVySW5zZW5zaXRpdmVSdWxlKSB7XG4gICAgICAgIC8vIHRoaXMgd291bGQgb25seSBjYXVzZSBwcm9ibGVtIGluIHNwZWVkeSBtb2RlXG4gICAgICAgIC8vIGJ1dCB3ZSBkb24ndCB3YW50IGVuYWJsaW5nIHNwZWVkeSB0byBhZmZlY3QgdGhlIG9ic2VydmFibGUgYmVoYXZpb3JcbiAgICAgICAgLy8gc28gd2UgcmVwb3J0IHRoaXMgZXJyb3IgYXQgYWxsIHRpbWVzXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJZb3UncmUgYXR0ZW1wdGluZyB0byBpbnNlcnQgdGhlIGZvbGxvd2luZyBydWxlOlxcblwiICsgcnVsZSArICdcXG5cXG5gQGltcG9ydGAgcnVsZXMgbXVzdCBiZSBiZWZvcmUgYWxsIG90aGVyIHR5cGVzIG9mIHJ1bGVzIGluIGEgc3R5bGVzaGVldCBidXQgb3RoZXIgcnVsZXMgaGF2ZSBhbHJlYWR5IGJlZW4gaW5zZXJ0ZWQuIFBsZWFzZSBlbnN1cmUgdGhhdCBgQGltcG9ydGAgcnVsZXMgYXJlIGJlZm9yZSBhbGwgb3RoZXIgcnVsZXMuJyk7XG4gICAgICB9XG4gICAgICB0aGlzLl9hbHJlYWR5SW5zZXJ0ZWRPcmRlckluc2Vuc2l0aXZlUnVsZSA9IHRoaXMuX2FscmVhZHlJbnNlcnRlZE9yZGVySW5zZW5zaXRpdmVSdWxlIHx8ICFpc0ltcG9ydFJ1bGU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNTcGVlZHkpIHtcbiAgICAgIHZhciBzaGVldCA9IHNoZWV0Rm9yVGFnKHRhZyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHVsdHJhZmFzdCB2ZXJzaW9uLCB3b3JrcyBhY3Jvc3MgYnJvd3NlcnNcbiAgICAgICAgLy8gdGhlIGJpZyBkcmF3YmFjayBpcyB0aGF0IHRoZSBjc3Mgd29uJ3QgYmUgZWRpdGFibGUgaW4gZGV2dG9vbHNcbiAgICAgICAgc2hlZXQuaW5zZXJ0UnVsZShydWxlLCBzaGVldC5jc3NSdWxlcy5sZW5ndGgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhLzooLW1vei1wbGFjZWhvbGRlcnwtbW96LWZvY3VzLWlubmVyfC1tb3otZm9jdXNyaW5nfC1tcy1pbnB1dC1wbGFjZWhvbGRlcnwtbW96LXJlYWQtd3JpdGV8LW1vei1yZWFkLW9ubHl8LW1zLWNsZWFyfC1tcy1leHBhbmR8LW1zLXJldmVhbCl7Ly50ZXN0KHJ1bGUpKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZXJlIHdhcyBhIHByb2JsZW0gaW5zZXJ0aW5nIHRoZSBmb2xsb3dpbmcgcnVsZTogXFxcIlwiICsgcnVsZSArIFwiXFxcIlwiLCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0YWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocnVsZSkpO1xuICAgIH1cblxuICAgIHRoaXMuY3RyKys7XG4gIH07XG5cbiAgX3Byb3RvLmZsdXNoID0gZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHRoaXMudGFncy5mb3JFYWNoKGZ1bmN0aW9uICh0YWcpIHtcbiAgICAgIHJldHVybiB0YWcucGFyZW50Tm9kZSAmJiB0YWcucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0YWcpO1xuICAgIH0pO1xuICAgIHRoaXMudGFncyA9IFtdO1xuICAgIHRoaXMuY3RyID0gMDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aGlzLl9hbHJlYWR5SW5zZXJ0ZWRPcmRlckluc2Vuc2l0aXZlUnVsZSA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3R5bGVTaGVldDtcbn0oKTtcblxuZXhwb3J0IHsgU3R5bGVTaGVldCB9O1xuIiwiLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IHZhciBhYnMgPSBNYXRoLmFic1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgdmFyIGZyb20gPSBTdHJpbmcuZnJvbUNoYXJDb2RlXG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCB2YXIgYXNzaWduID0gT2JqZWN0LmFzc2lnblxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzaCAodmFsdWUsIGxlbmd0aCkge1xuXHRyZXR1cm4gY2hhcmF0KHZhbHVlLCAwKSBeIDQ1ID8gKCgoKCgoKGxlbmd0aCA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMCkpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAxKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDIpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMykgOiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcGF0dGVyblxuICogQHJldHVybiB7c3RyaW5nP31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoICh2YWx1ZSwgcGF0dGVybikge1xuXHRyZXR1cm4gKHZhbHVlID0gcGF0dGVybi5leGVjKHZhbHVlKSkgPyB2YWx1ZVswXSA6IHZhbHVlXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0geyhzdHJpbmd8UmVnRXhwKX0gcGF0dGVyblxuICogQHBhcmFtIHtzdHJpbmd9IHJlcGxhY2VtZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlICh2YWx1ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcblx0cmV0dXJuIHZhbHVlLnJlcGxhY2UocGF0dGVybiwgcmVwbGFjZW1lbnQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRleG9mICh2YWx1ZSwgc2VhcmNoKSB7XG5cdHJldHVybiB2YWx1ZS5pbmRleE9mKHNlYXJjaClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhcmF0ICh2YWx1ZSwgaW5kZXgpIHtcblx0cmV0dXJuIHZhbHVlLmNoYXJDb2RlQXQoaW5kZXgpIHwgMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGJlZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gZW5kXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdHIgKHZhbHVlLCBiZWdpbiwgZW5kKSB7XG5cdHJldHVybiB2YWx1ZS5zbGljZShiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RybGVuICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnlbXX0gdmFsdWVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpemVvZiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLmxlbmd0aFxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHBhcmFtIHthbnlbXX0gYXJyYXlcbiAqIEByZXR1cm4ge2FueX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZCAodmFsdWUsIGFycmF5KSB7XG5cdHJldHVybiBhcnJheS5wdXNoKHZhbHVlKSwgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBhcnJheVxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmUgKGFycmF5LCBjYWxsYmFjaykge1xuXHRyZXR1cm4gYXJyYXkubWFwKGNhbGxiYWNrKS5qb2luKCcnKVxufVxuIiwiaW1wb3J0IHtmcm9tLCB0cmltLCBjaGFyYXQsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIGFzc2lnbn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG5leHBvcnQgdmFyIGxpbmUgPSAxXG5leHBvcnQgdmFyIGNvbHVtbiA9IDFcbmV4cG9ydCB2YXIgbGVuZ3RoID0gMFxuZXhwb3J0IHZhciBwb3NpdGlvbiA9IDBcbmV4cG9ydCB2YXIgY2hhcmFjdGVyID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXJzID0gJydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0IHwgbnVsbH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSBwcm9wc1xuICogQHBhcmFtIHtvYmplY3RbXSB8IHN0cmluZ30gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vZGUgKHZhbHVlLCByb290LCBwYXJlbnQsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKSB7XG5cdHJldHVybiB7dmFsdWU6IHZhbHVlLCByb290OiByb290LCBwYXJlbnQ6IHBhcmVudCwgdHlwZTogdHlwZSwgcHJvcHM6IHByb3BzLCBjaGlsZHJlbjogY2hpbGRyZW4sIGxpbmU6IGxpbmUsIGNvbHVtbjogY29sdW1uLCBsZW5ndGg6IGxlbmd0aCwgcmV0dXJuOiAnJ31cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3B5IChyb290LCBwcm9wcykge1xuXHRyZXR1cm4gYXNzaWduKG5vZGUoJycsIG51bGwsIG51bGwsICcnLCBudWxsLCBudWxsLCAwKSwgcm9vdCwge2xlbmd0aDogLXJvb3QubGVuZ3RofSwgcHJvcHMpXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhciAoKSB7XG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmV2ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPiAwID8gY2hhcmF0KGNoYXJhY3RlcnMsIC0tcG9zaXRpb24pIDogMFxuXG5cdGlmIChjb2x1bW4tLSwgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lLS1cblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV4dCAoKSB7XG5cdGNoYXJhY3RlciA9IHBvc2l0aW9uIDwgbGVuZ3RoID8gY2hhcmF0KGNoYXJhY3RlcnMsIHBvc2l0aW9uKyspIDogMFxuXG5cdGlmIChjb2x1bW4rKywgY2hhcmFjdGVyID09PSAxMClcblx0XHRjb2x1bW4gPSAxLCBsaW5lKytcblxuXHRyZXR1cm4gY2hhcmFjdGVyXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVlayAoKSB7XG5cdHJldHVybiBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24pXG59XG5cbi8qKlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FyZXQgKCkge1xuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlIChiZWdpbiwgZW5kKSB7XG5cdHJldHVybiBzdWJzdHIoY2hhcmFjdGVycywgYmVnaW4sIGVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW4gKHR5cGUpIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Ly8gXFwwIFxcdCBcXG4gXFxyIFxccyB3aGl0ZXNwYWNlIHRva2VuXG5cdFx0Y2FzZSAwOiBjYXNlIDk6IGNhc2UgMTA6IGNhc2UgMTM6IGNhc2UgMzI6XG5cdFx0XHRyZXR1cm4gNVxuXHRcdC8vICEgKyAsIC8gPiBAIH4gaXNvbGF0ZSB0b2tlblxuXHRcdGNhc2UgMzM6IGNhc2UgNDM6IGNhc2UgNDQ6IGNhc2UgNDc6IGNhc2UgNjI6IGNhc2UgNjQ6IGNhc2UgMTI2OlxuXHRcdC8vIDsgeyB9IGJyZWFrcG9pbnQgdG9rZW5cblx0XHRjYXNlIDU5OiBjYXNlIDEyMzogY2FzZSAxMjU6XG5cdFx0XHRyZXR1cm4gNFxuXHRcdC8vIDogYWNjb21wYW5pZWQgdG9rZW5cblx0XHRjYXNlIDU4OlxuXHRcdFx0cmV0dXJuIDNcblx0XHQvLyBcIiAnICggWyBvcGVuaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDM0OiBjYXNlIDM5OiBjYXNlIDQwOiBjYXNlIDkxOlxuXHRcdFx0cmV0dXJuIDJcblx0XHQvLyApIF0gY2xvc2luZyBkZWxpbWl0IHRva2VuXG5cdFx0Y2FzZSA0MTogY2FzZSA5Mzpcblx0XHRcdHJldHVybiAxXG5cdH1cblxuXHRyZXR1cm4gMFxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7YW55W119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGxpbmUgPSBjb2x1bW4gPSAxLCBsZW5ndGggPSBzdHJsZW4oY2hhcmFjdGVycyA9IHZhbHVlKSwgcG9zaXRpb24gPSAwLCBbXVxufVxuXG4vKipcbiAqIEBwYXJhbSB7YW55fSB2YWx1ZVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVhbGxvYyAodmFsdWUpIHtcblx0cmV0dXJuIGNoYXJhY3RlcnMgPSAnJywgdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdCAodHlwZSkge1xuXHRyZXR1cm4gdHJpbShzbGljZShwb3NpdGlvbiAtIDEsIGRlbGltaXRlcih0eXBlID09PSA5MSA/IHR5cGUgKyAyIDogdHlwZSA9PT0gNDAgPyB0eXBlICsgMSA6IHR5cGUpKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9rZW5pemUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHRva2VuaXplcihhbGxvYyh2YWx1ZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aGl0ZXNwYWNlICh0eXBlKSB7XG5cdHdoaWxlIChjaGFyYWN0ZXIgPSBwZWVrKCkpXG5cdFx0aWYgKGNoYXJhY3RlciA8IDMzKVxuXHRcdFx0bmV4dCgpXG5cdFx0ZWxzZVxuXHRcdFx0YnJlYWtcblxuXHRyZXR1cm4gdG9rZW4odHlwZSkgPiAyIHx8IHRva2VuKGNoYXJhY3RlcikgPiAzID8gJycgOiAnICdcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBjaGlsZHJlblxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZXIgKGNoaWxkcmVuKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjYXNlIDA6IGFwcGVuZChpZGVudGlmaWVyKHBvc2l0aW9uIC0gMSksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Y2FzZSAyOiBhcHBlbmQoZGVsaW1pdChjaGFyYWN0ZXIpLCBjaGlsZHJlbilcblx0XHRcdFx0YnJlYWtcblx0XHRcdGRlZmF1bHQ6IGFwcGVuZChmcm9tKGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdH1cblxuXHRyZXR1cm4gY2hpbGRyZW5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBpbmcgKGluZGV4LCBjb3VudCkge1xuXHR3aGlsZSAoLS1jb3VudCAmJiBuZXh0KCkpXG5cdFx0Ly8gbm90IDAtOSBBLUYgYS1mXG5cdFx0aWYgKGNoYXJhY3RlciA8IDQ4IHx8IGNoYXJhY3RlciA+IDEwMiB8fCAoY2hhcmFjdGVyID4gNTcgJiYgY2hhcmFjdGVyIDwgNjUpIHx8IChjaGFyYWN0ZXIgPiA3MCAmJiBjaGFyYWN0ZXIgPCA5NykpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiBzbGljZShpbmRleCwgY2FyZXQoKSArIChjb3VudCA8IDYgJiYgcGVlaygpID09IDMyICYmIG5leHQoKSA9PSAzMikpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGltaXRlciAodHlwZSkge1xuXHR3aGlsZSAobmV4dCgpKVxuXHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHQvLyBdICkgXCIgJ1xuXHRcdFx0Y2FzZSB0eXBlOlxuXHRcdFx0XHRyZXR1cm4gcG9zaXRpb25cblx0XHRcdC8vIFwiICdcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6XG5cdFx0XHRcdGlmICh0eXBlICE9PSAzNCAmJiB0eXBlICE9PSAzOSlcblx0XHRcdFx0XHRkZWxpbWl0ZXIoY2hhcmFjdGVyKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHR5cGUgPT09IDQxKVxuXHRcdFx0XHRcdGRlbGltaXRlcih0eXBlKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdG5leHQoKVxuXHRcdFx0XHRicmVha1xuXHRcdH1cblxuXHRyZXR1cm4gcG9zaXRpb25cbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ZXIgKHR5cGUsIGluZGV4KSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0Ly8gLy9cblx0XHRpZiAodHlwZSArIGNoYXJhY3RlciA9PT0gNDcgKyAxMClcblx0XHRcdGJyZWFrXG5cdFx0Ly8gLypcblx0XHRlbHNlIGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0MiArIDQyICYmIHBlZWsoKSA9PT0gNDcpXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiAnLyonICsgc2xpY2UoaW5kZXgsIHBvc2l0aW9uIC0gMSkgKyAnKicgKyBmcm9tKHR5cGUgPT09IDQ3ID8gdHlwZSA6IG5leHQoKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlkZW50aWZpZXIgKGluZGV4KSB7XG5cdHdoaWxlICghdG9rZW4ocGVlaygpKSlcblx0XHRuZXh0KClcblxuXHRyZXR1cm4gc2xpY2UoaW5kZXgsIHBvc2l0aW9uKVxufVxuIiwiZXhwb3J0IHZhciBNUyA9ICctbXMtJ1xuZXhwb3J0IHZhciBNT1ogPSAnLW1vei0nXG5leHBvcnQgdmFyIFdFQktJVCA9ICctd2Via2l0LSdcblxuZXhwb3J0IHZhciBDT01NRU5UID0gJ2NvbW0nXG5leHBvcnQgdmFyIFJVTEVTRVQgPSAncnVsZSdcbmV4cG9ydCB2YXIgREVDTEFSQVRJT04gPSAnZGVjbCdcblxuZXhwb3J0IHZhciBQQUdFID0gJ0BwYWdlJ1xuZXhwb3J0IHZhciBNRURJQSA9ICdAbWVkaWEnXG5leHBvcnQgdmFyIElNUE9SVCA9ICdAaW1wb3J0J1xuZXhwb3J0IHZhciBDSEFSU0VUID0gJ0BjaGFyc2V0J1xuZXhwb3J0IHZhciBWSUVXUE9SVCA9ICdAdmlld3BvcnQnXG5leHBvcnQgdmFyIFNVUFBPUlRTID0gJ0BzdXBwb3J0cydcbmV4cG9ydCB2YXIgRE9DVU1FTlQgPSAnQGRvY3VtZW50J1xuZXhwb3J0IHZhciBOQU1FU1BBQ0UgPSAnQG5hbWVzcGFjZSdcbmV4cG9ydCB2YXIgS0VZRlJBTUVTID0gJ0BrZXlmcmFtZXMnXG5leHBvcnQgdmFyIEZPTlRfRkFDRSA9ICdAZm9udC1mYWNlJ1xuZXhwb3J0IHZhciBDT1VOVEVSX1NUWUxFID0gJ0Bjb3VudGVyLXN0eWxlJ1xuZXhwb3J0IHZhciBGT05UX0ZFQVRVUkVfVkFMVUVTID0gJ0Bmb250LWZlYXR1cmUtdmFsdWVzJ1xuZXhwb3J0IHZhciBMQVlFUiA9ICdAbGF5ZXInXG4iLCJpbXBvcnQge0lNUE9SVCwgTEFZRVIsIENPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OLCBLRVlGUkFNRVN9IGZyb20gJy4vRW51bS5qcydcbmltcG9ydCB7c3RybGVuLCBzaXplb2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZSAoY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHZhciBvdXRwdXQgPSAnJ1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNoaWxkcmVuKVxuXG5cdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0b3V0cHV0ICs9IGNhbGxiYWNrKGNoaWxkcmVuW2ldLCBpLCBjaGlsZHJlbiwgY2FsbGJhY2spIHx8ICcnXG5cblx0cmV0dXJuIG91dHB1dFxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5IChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBMQVlFUjogaWYgKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoKSBicmVha1xuXHRcdGNhc2UgSU1QT1JUOiBjYXNlIERFQ0xBUkFUSU9OOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnJldHVybiB8fCBlbGVtZW50LnZhbHVlXG5cdFx0Y2FzZSBDT01NRU5UOiByZXR1cm4gJydcblx0XHRjYXNlIEtFWUZSQU1FUzogcmV0dXJuIGVsZW1lbnQucmV0dXJuID0gZWxlbWVudC52YWx1ZSArICd7JyArIHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykgKyAnfSdcblx0XHRjYXNlIFJVTEVTRVQ6IGVsZW1lbnQudmFsdWUgPSBlbGVtZW50LnByb3BzLmpvaW4oJywnKVxuXHR9XG5cblx0cmV0dXJuIHN0cmxlbihjaGlsZHJlbiA9IHNlcmlhbGl6ZShlbGVtZW50LmNoaWxkcmVuLCBjYWxsYmFjaykpID8gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgY2hpbGRyZW4gKyAnfScgOiAnJ1xufVxuIiwiaW1wb3J0IHtDT01NRU5ULCBSVUxFU0VULCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHthYnMsIGNoYXJhdCwgdHJpbSwgZnJvbSwgc2l6ZW9mLCBzdHJsZW4sIHN1YnN0ciwgYXBwZW5kLCByZXBsYWNlLCBpbmRleG9mfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge25vZGUsIGNoYXIsIHByZXYsIG5leHQsIHBlZWssIGNhcmV0LCBhbGxvYywgZGVhbGxvYywgZGVsaW1pdCwgd2hpdGVzcGFjZSwgZXNjYXBpbmcsIGlkZW50aWZpZXIsIGNvbW1lbnRlcn0gZnJvbSAnLi9Ub2tlbml6ZXIuanMnXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtvYmplY3RbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUgKHZhbHVlKSB7XG5cdHJldHVybiBkZWFsbG9jKHBhcnNlKCcnLCBudWxsLCBudWxsLCBudWxsLCBbJyddLCB2YWx1ZSA9IGFsbG9jKHZhbHVlKSwgMCwgWzBdLCB2YWx1ZSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc2V0c1xuICogQHBhcmFtIHtudW1iZXJbXX0gcHNldWRvXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGRlY2xhcmF0aW9uc1xuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UgKHZhbHVlLCByb290LCBwYXJlbnQsIHJ1bGUsIHJ1bGVzLCBydWxlc2V0cywgcHNldWRvLCBwb2ludHMsIGRlY2xhcmF0aW9ucykge1xuXHR2YXIgaW5kZXggPSAwXG5cdHZhciBvZmZzZXQgPSAwXG5cdHZhciBsZW5ndGggPSBwc2V1ZG9cblx0dmFyIGF0cnVsZSA9IDBcblx0dmFyIHByb3BlcnR5ID0gMFxuXHR2YXIgcHJldmlvdXMgPSAwXG5cdHZhciB2YXJpYWJsZSA9IDFcblx0dmFyIHNjYW5uaW5nID0gMVxuXHR2YXIgYW1wZXJzYW5kID0gMVxuXHR2YXIgY2hhcmFjdGVyID0gMFxuXHR2YXIgdHlwZSA9ICcnXG5cdHZhciBwcm9wcyA9IHJ1bGVzXG5cdHZhciBjaGlsZHJlbiA9IHJ1bGVzZXRzXG5cdHZhciByZWZlcmVuY2UgPSBydWxlXG5cdHZhciBjaGFyYWN0ZXJzID0gdHlwZVxuXG5cdHdoaWxlIChzY2FubmluZylcblx0XHRzd2l0Y2ggKHByZXZpb3VzID0gY2hhcmFjdGVyLCBjaGFyYWN0ZXIgPSBuZXh0KCkpIHtcblx0XHRcdC8vIChcblx0XHRcdGNhc2UgNDA6XG5cdFx0XHRcdGlmIChwcmV2aW91cyAhPSAxMDggJiYgY2hhcmF0KGNoYXJhY3RlcnMsIGxlbmd0aCAtIDEpID09IDU4KSB7XG5cdFx0XHRcdFx0aWYgKGluZGV4b2YoY2hhcmFjdGVycyArPSByZXBsYWNlKGRlbGltaXQoY2hhcmFjdGVyKSwgJyYnLCAnJlxcZicpLCAnJlxcZicpICE9IC0xKVxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gLTFcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHR9XG5cdFx0XHQvLyBcIiAnIFtcblx0XHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgOTE6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXHQgXFxuIFxcciBcXHNcblx0XHRcdGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSB3aGl0ZXNwYWNlKHByZXZpb3VzKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gXFxcblx0XHRcdGNhc2UgOTI6XG5cdFx0XHRcdGNoYXJhY3RlcnMgKz0gZXNjYXBpbmcoY2FyZXQoKSAtIDEsIDcpXG5cdFx0XHRcdGNvbnRpbnVlXG5cdFx0XHQvLyAvXG5cdFx0XHRjYXNlIDQ3OlxuXHRcdFx0XHRzd2l0Y2ggKHBlZWsoKSkge1xuXHRcdFx0XHRcdGNhc2UgNDI6IGNhc2UgNDc6XG5cdFx0XHRcdFx0XHRhcHBlbmQoY29tbWVudChjb21tZW50ZXIobmV4dCgpLCBjYXJldCgpKSwgcm9vdCwgcGFyZW50KSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0Y2hhcmFjdGVycyArPSAnLydcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8ge1xuXHRcdFx0Y2FzZSAxMjMgKiB2YXJpYWJsZTpcblx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gc3RybGVuKGNoYXJhY3RlcnMpICogYW1wZXJzYW5kXG5cdFx0XHQvLyB9IDsgXFwwXG5cdFx0XHRjYXNlIDEyNSAqIHZhcmlhYmxlOiBjYXNlIDU5OiBjYXNlIDA6XG5cdFx0XHRcdHN3aXRjaCAoY2hhcmFjdGVyKSB7XG5cdFx0XHRcdFx0Ly8gXFwwIH1cblx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgMTI1OiBzY2FubmluZyA9IDBcblx0XHRcdFx0XHQvLyA7XG5cdFx0XHRcdFx0Y2FzZSA1OSArIG9mZnNldDogaWYgKGFtcGVyc2FuZCA9PSAtMSkgY2hhcmFjdGVycyA9IHJlcGxhY2UoY2hhcmFjdGVycywgL1xcZi9nLCAnJylcblx0XHRcdFx0XHRcdGlmIChwcm9wZXJ0eSA+IDAgJiYgKHN0cmxlbihjaGFyYWN0ZXJzKSAtIGxlbmd0aCkpXG5cdFx0XHRcdFx0XHRcdGFwcGVuZChwcm9wZXJ0eSA+IDMyID8gZGVjbGFyYXRpb24oY2hhcmFjdGVycyArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAxKSA6IGRlY2xhcmF0aW9uKHJlcGxhY2UoY2hhcmFjdGVycywgJyAnLCAnJykgKyAnOycsIHJ1bGUsIHBhcmVudCwgbGVuZ3RoIC0gMiksIGRlY2xhcmF0aW9ucylcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gQCA7XG5cdFx0XHRcdFx0Y2FzZSA1OTogY2hhcmFjdGVycyArPSAnOydcblx0XHRcdFx0XHQvLyB7IHJ1bGUvYXQtcnVsZVxuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRhcHBlbmQocmVmZXJlbmNlID0gcnVsZXNldChjaGFyYWN0ZXJzLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzID0gW10sIGNoaWxkcmVuID0gW10sIGxlbmd0aCksIHJ1bGVzZXRzKVxuXG5cdFx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09PSAxMjMpXG5cdFx0XHRcdFx0XHRcdGlmIChvZmZzZXQgPT09IDApXG5cdFx0XHRcdFx0XHRcdFx0cGFyc2UoY2hhcmFjdGVycywgcm9vdCwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHByb3BzLCBydWxlc2V0cywgbGVuZ3RoLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChhdHJ1bGUgPT09IDk5ICYmIGNoYXJhdChjaGFyYWN0ZXJzLCAzKSA9PT0gMTEwID8gMTAwIDogYXRydWxlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBkIGwgbSBzXG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlIDEwMDogY2FzZSAxMDg6IGNhc2UgMTA5OiBjYXNlIDExNTpcblx0XHRcdFx0XHRcdFx0XHRcdFx0cGFyc2UodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBydWxlICYmIGFwcGVuZChydWxlc2V0KHZhbHVlLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgMCwgMCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcnVsZXMsIHByb3BzID0gW10sIGxlbmd0aCksIGNoaWxkcmVuKSwgcnVsZXMsIGNoaWxkcmVuLCBsZW5ndGgsIHBvaW50cywgcnVsZSA/IHByb3BzIDogY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCBbJyddLCBjaGlsZHJlbiwgMCwgcG9pbnRzLCBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpbmRleCA9IG9mZnNldCA9IHByb3BlcnR5ID0gMCwgdmFyaWFibGUgPSBhbXBlcnNhbmQgPSAxLCB0eXBlID0gY2hhcmFjdGVycyA9ICcnLCBsZW5ndGggPSBwc2V1ZG9cblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIDpcblx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdGxlbmd0aCA9IDEgKyBzdHJsZW4oY2hhcmFjdGVycyksIHByb3BlcnR5ID0gcHJldmlvdXNcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmICh2YXJpYWJsZSA8IDEpXG5cdFx0XHRcdFx0aWYgKGNoYXJhY3RlciA9PSAxMjMpXG5cdFx0XHRcdFx0XHQtLXZhcmlhYmxlXG5cdFx0XHRcdFx0ZWxzZSBpZiAoY2hhcmFjdGVyID09IDEyNSAmJiB2YXJpYWJsZSsrID09IDAgJiYgcHJldigpID09IDEyNSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlXG5cblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXJzICs9IGZyb20oY2hhcmFjdGVyKSwgY2hhcmFjdGVyICogdmFyaWFibGUpIHtcblx0XHRcdFx0XHQvLyAmXG5cdFx0XHRcdFx0Y2FzZSAzODpcblx0XHRcdFx0XHRcdGFtcGVyc2FuZCA9IG9mZnNldCA+IDAgPyAxIDogKGNoYXJhY3RlcnMgKz0gJ1xcZicsIC0xKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAsXG5cdFx0XHRcdFx0Y2FzZSA0NDpcblx0XHRcdFx0XHRcdHBvaW50c1tpbmRleCsrXSA9IChzdHJsZW4oY2hhcmFjdGVycykgLSAxKSAqIGFtcGVyc2FuZCwgYW1wZXJzYW5kID0gMVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAXG5cdFx0XHRcdFx0Y2FzZSA2NDpcblx0XHRcdFx0XHRcdC8vIC1cblx0XHRcdFx0XHRcdGlmIChwZWVrKCkgPT09IDQ1KVxuXHRcdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9IGRlbGltaXQobmV4dCgpKVxuXG5cdFx0XHRcdFx0XHRhdHJ1bGUgPSBwZWVrKCksIG9mZnNldCA9IGxlbmd0aCA9IHN0cmxlbih0eXBlID0gY2hhcmFjdGVycyArPSBpZGVudGlmaWVyKGNhcmV0KCkpKSwgY2hhcmFjdGVyKytcblx0XHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdGNhc2UgNDU6XG5cdFx0XHRcdFx0XHRpZiAocHJldmlvdXMgPT09IDQ1ICYmIHN0cmxlbihjaGFyYWN0ZXJzKSA9PSAyKVxuXHRcdFx0XHRcdFx0XHR2YXJpYWJsZSA9IDBcblx0XHRcdFx0fVxuXHRcdH1cblxuXHRyZXR1cm4gcnVsZXNldHNcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBydWxlc1xuICogQHBhcmFtIHtudW1iZXJbXX0gcG9pbnRzXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcHJvcHNcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydWxlc2V0ICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBpbmRleCwgb2Zmc2V0LCBydWxlcywgcG9pbnRzLCB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aCkge1xuXHR2YXIgcG9zdCA9IG9mZnNldCAtIDFcblx0dmFyIHJ1bGUgPSBvZmZzZXQgPT09IDAgPyBydWxlcyA6IFsnJ11cblx0dmFyIHNpemUgPSBzaXplb2YocnVsZSlcblxuXHRmb3IgKHZhciBpID0gMCwgaiA9IDAsIGsgPSAwOyBpIDwgaW5kZXg7ICsraSlcblx0XHRmb3IgKHZhciB4ID0gMCwgeSA9IHN1YnN0cih2YWx1ZSwgcG9zdCArIDEsIHBvc3QgPSBhYnMoaiA9IHBvaW50c1tpXSkpLCB6ID0gdmFsdWU7IHggPCBzaXplOyArK3gpXG5cdFx0XHRpZiAoeiA9IHRyaW0oaiA+IDAgPyBydWxlW3hdICsgJyAnICsgeSA6IHJlcGxhY2UoeSwgLyZcXGYvZywgcnVsZVt4XSkpKVxuXHRcdFx0XHRwcm9wc1trKytdID0gelxuXG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIG9mZnNldCA9PT0gMCA/IFJVTEVTRVQgOiB0eXBlLCBwcm9wcywgY2hpbGRyZW4sIGxlbmd0aClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHJldHVybiB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tbWVudCAodmFsdWUsIHJvb3QsIHBhcmVudCkge1xuXHRyZXR1cm4gbm9kZSh2YWx1ZSwgcm9vdCwgcGFyZW50LCBDT01NRU5ULCBmcm9tKGNoYXIoKSksIHN1YnN0cih2YWx1ZSwgMiwgLTIpLCAwKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAodmFsdWUsIHJvb3QsIHBhcmVudCwgbGVuZ3RoKSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIERFQ0xBUkFUSU9OLCBzdWJzdHIodmFsdWUsIDAsIGxlbmd0aCksIHN1YnN0cih2YWx1ZSwgbGVuZ3RoICsgMSwgLTEpLCBsZW5ndGgpXG59XG4iLCJpbXBvcnQgeyBTdHlsZVNoZWV0IH0gZnJvbSAnQGVtb3Rpb24vc2hlZXQnO1xuaW1wb3J0IHsgZGVhbGxvYywgYWxsb2MsIG5leHQsIHRva2VuLCBmcm9tLCBwZWVrLCBkZWxpbWl0LCBzbGljZSwgcG9zaXRpb24sIFJVTEVTRVQsIGNvbWJpbmUsIG1hdGNoLCBzZXJpYWxpemUsIGNvcHksIHJlcGxhY2UsIFdFQktJVCwgTU9aLCBNUywgS0VZRlJBTUVTLCBERUNMQVJBVElPTiwgaGFzaCwgY2hhcmF0LCBzdHJsZW4sIGluZGV4b2YsIHN0cmluZ2lmeSwgQ09NTUVOVCwgcnVsZXNoZWV0LCBtaWRkbGV3YXJlLCBjb21waWxlIH0gZnJvbSAnc3R5bGlzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnQGVtb3Rpb24vbWVtb2l6ZSc7XG5cbnZhciBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcgPSBmdW5jdGlvbiBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcoYmVnaW4sIHBvaW50cywgaW5kZXgpIHtcbiAgdmFyIHByZXZpb3VzID0gMDtcbiAgdmFyIGNoYXJhY3RlciA9IDA7XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBwcmV2aW91cyA9IGNoYXJhY3RlcjtcbiAgICBjaGFyYWN0ZXIgPSBwZWVrKCk7IC8vICZcXGZcblxuICAgIGlmIChwcmV2aW91cyA9PT0gMzggJiYgY2hhcmFjdGVyID09PSAxMikge1xuICAgICAgcG9pbnRzW2luZGV4XSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHRva2VuKGNoYXJhY3RlcikpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIG5leHQoKTtcbiAgfVxuXG4gIHJldHVybiBzbGljZShiZWdpbiwgcG9zaXRpb24pO1xufTtcblxudmFyIHRvUnVsZXMgPSBmdW5jdGlvbiB0b1J1bGVzKHBhcnNlZCwgcG9pbnRzKSB7XG4gIC8vIHByZXRlbmQgd2UndmUgc3RhcnRlZCB3aXRoIGEgY29tbWFcbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBjaGFyYWN0ZXIgPSA0NDtcblxuICBkbyB7XG4gICAgc3dpdGNoICh0b2tlbihjaGFyYWN0ZXIpKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIC8vICZcXGZcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gMzggJiYgcGVlaygpID09PSAxMikge1xuICAgICAgICAgIC8vIHRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgd2UgZG9uJ3QgYWNjb3VudCBmb3IgbGl0ZXJhbCBzZXF1ZW5jZXMgaGVyZSAtIGxpa2UgZm9yIGV4YW1wbGUgcXVvdGVkIHN0cmluZ3NcbiAgICAgICAgICAvLyBzdHlsaXMgaW5zZXJ0cyBcXGYgYWZ0ZXIgJiB0byBrbm93IHdoZW4gJiB3aGVyZSBpdCBzaG91bGQgcmVwbGFjZSB0aGlzIHNlcXVlbmNlIHdpdGggdGhlIGNvbnRleHQgc2VsZWN0b3JcbiAgICAgICAgICAvLyBhbmQgd2hlbiBpdCBzaG91bGQganVzdCBjb25jYXRlbmF0ZSB0aGUgb3V0ZXIgYW5kIGlubmVyIHNlbGVjdG9yc1xuICAgICAgICAgIC8vIGl0J3MgdmVyeSB1bmxpa2VseSBmb3IgdGhpcyBzZXF1ZW5jZSB0byBhY3R1YWxseSBhcHBlYXIgaW4gYSBkaWZmZXJlbnQgY29udGV4dCwgc28gd2UganVzdCBsZXZlcmFnZSB0aGlzIGZhY3QgaGVyZVxuICAgICAgICAgIHBvaW50c1tpbmRleF0gPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmcocG9zaXRpb24gLSAxLCBwb2ludHMsIGluZGV4KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBkZWxpbWl0KGNoYXJhY3Rlcik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIDQ6XG4gICAgICAgIC8vIGNvbW1hXG4gICAgICAgIGlmIChjaGFyYWN0ZXIgPT09IDQ0KSB7XG4gICAgICAgICAgLy8gY29sb25cbiAgICAgICAgICBwYXJzZWRbKytpbmRleF0gPSBwZWVrKCkgPT09IDU4ID8gJyZcXGYnIDogJyc7XG4gICAgICAgICAgcG9pbnRzW2luZGV4XSA9IHBhcnNlZFtpbmRleF0ubGVuZ3RoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIC8vIGZhbGx0aHJvdWdoXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHBhcnNlZFtpbmRleF0gKz0gZnJvbShjaGFyYWN0ZXIpO1xuICAgIH1cbiAgfSB3aGlsZSAoY2hhcmFjdGVyID0gbmV4dCgpKTtcblxuICByZXR1cm4gcGFyc2VkO1xufTtcblxudmFyIGdldFJ1bGVzID0gZnVuY3Rpb24gZ2V0UnVsZXModmFsdWUsIHBvaW50cykge1xuICByZXR1cm4gZGVhbGxvYyh0b1J1bGVzKGFsbG9jKHZhbHVlKSwgcG9pbnRzKSk7XG59OyAvLyBXZWFrU2V0IHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGUsIGJ1dCBvbmx5IFdlYWtNYXAgaXMgc3VwcG9ydGVkIGluIElFMTFcblxuXG52YXIgZml4ZWRFbGVtZW50cyA9IC8qICNfX1BVUkVfXyAqL25ldyBXZWFrTWFwKCk7XG52YXIgY29tcGF0ID0gZnVuY3Rpb24gY29tcGF0KGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudHlwZSAhPT0gJ3J1bGUnIHx8ICFlbGVtZW50LnBhcmVudCB8fCAvLyBwb3NpdGl2ZSAubGVuZ3RoIGluZGljYXRlcyB0aGF0IHRoaXMgcnVsZSBjb250YWlucyBwc2V1ZG9cbiAgLy8gbmVnYXRpdmUgLmxlbmd0aCBpbmRpY2F0ZXMgdGhhdCB0aGlzIHJ1bGUgaGFzIGJlZW4gYWxyZWFkeSBwcmVmaXhlZFxuICBlbGVtZW50Lmxlbmd0aCA8IDEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgdmFsdWUgPSBlbGVtZW50LnZhbHVlLFxuICAgICAgcGFyZW50ID0gZWxlbWVudC5wYXJlbnQ7XG4gIHZhciBpc0ltcGxpY2l0UnVsZSA9IGVsZW1lbnQuY29sdW1uID09PSBwYXJlbnQuY29sdW1uICYmIGVsZW1lbnQubGluZSA9PT0gcGFyZW50LmxpbmU7XG5cbiAgd2hpbGUgKHBhcmVudC50eXBlICE9PSAncnVsZScpIHtcbiAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIGlmICghcGFyZW50KSByZXR1cm47XG4gIH0gLy8gc2hvcnQtY2lyY3VpdCBmb3IgdGhlIHNpbXBsZXN0IGNhc2VcblxuXG4gIGlmIChlbGVtZW50LnByb3BzLmxlbmd0aCA9PT0gMSAmJiB2YWx1ZS5jaGFyQ29kZUF0KDApICE9PSA1OFxuICAvKiBjb2xvbiAqL1xuICAmJiAhZml4ZWRFbGVtZW50cy5nZXQocGFyZW50KSkge1xuICAgIHJldHVybjtcbiAgfSAvLyBpZiB0aGlzIGlzIGFuIGltcGxpY2l0bHkgaW5zZXJ0ZWQgcnVsZSAodGhlIG9uZSBlYWdlcmx5IGluc2VydGVkIGF0IHRoZSBlYWNoIG5ldyBuZXN0ZWQgbGV2ZWwpXG4gIC8vIHRoZW4gdGhlIHByb3BzIGhhcyBhbHJlYWR5IGJlZW4gbWFuaXB1bGF0ZWQgYmVmb3JlaGFuZCBhcyB0aGV5IHRoYXQgYXJyYXkgaXMgc2hhcmVkIGJldHdlZW4gaXQgYW5kIGl0cyBcInJ1bGUgcGFyZW50XCJcblxuXG4gIGlmIChpc0ltcGxpY2l0UnVsZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZpeGVkRWxlbWVudHMuc2V0KGVsZW1lbnQsIHRydWUpO1xuICB2YXIgcG9pbnRzID0gW107XG4gIHZhciBydWxlcyA9IGdldFJ1bGVzKHZhbHVlLCBwb2ludHMpO1xuICB2YXIgcGFyZW50UnVsZXMgPSBwYXJlbnQucHJvcHM7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGsgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBhcmVudFJ1bGVzLmxlbmd0aDsgaisrLCBrKyspIHtcbiAgICAgIGVsZW1lbnQucHJvcHNba10gPSBwb2ludHNbaV0gPyBydWxlc1tpXS5yZXBsYWNlKC8mXFxmL2csIHBhcmVudFJ1bGVzW2pdKSA6IHBhcmVudFJ1bGVzW2pdICsgXCIgXCIgKyBydWxlc1tpXTtcbiAgICB9XG4gIH1cbn07XG52YXIgcmVtb3ZlTGFiZWwgPSBmdW5jdGlvbiByZW1vdmVMYWJlbChlbGVtZW50KSB7XG4gIGlmIChlbGVtZW50LnR5cGUgPT09ICdkZWNsJykge1xuICAgIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWU7XG5cbiAgICBpZiAoIC8vIGNoYXJjb2RlIGZvciBsXG4gICAgdmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gMTA4ICYmIC8vIGNoYXJjb2RlIGZvciBiXG4gICAgdmFsdWUuY2hhckNvZGVBdCgyKSA9PT0gOTgpIHtcbiAgICAgIC8vIHRoaXMgaWdub3JlcyBsYWJlbFxuICAgICAgZWxlbWVudFtcInJldHVyblwiXSA9ICcnO1xuICAgICAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cbiAgfVxufTtcbnZhciBpZ25vcmVGbGFnID0gJ2Vtb3Rpb24tZGlzYWJsZS1zZXJ2ZXItcmVuZGVyaW5nLXVuc2FmZS1zZWxlY3Rvci13YXJuaW5nLXBsZWFzZS1kby1ub3QtdXNlLXRoaXMtdGhlLXdhcm5pbmctZXhpc3RzLWZvci1hLXJlYXNvbic7XG5cbnZhciBpc0lnbm9yaW5nQ29tbWVudCA9IGZ1bmN0aW9uIGlzSWdub3JpbmdDb21tZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gJ2NvbW0nICYmIGVsZW1lbnQuY2hpbGRyZW4uaW5kZXhPZihpZ25vcmVGbGFnKSA+IC0xO1xufTtcblxudmFyIGNyZWF0ZVVuc2FmZVNlbGVjdG9yc0FsYXJtID0gZnVuY3Rpb24gY3JlYXRlVW5zYWZlU2VsZWN0b3JzQWxhcm0oY2FjaGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4pIHtcbiAgICBpZiAoZWxlbWVudC50eXBlICE9PSAncnVsZScgfHwgY2FjaGUuY29tcGF0KSByZXR1cm47XG4gICAgdmFyIHVuc2FmZVBzZXVkb0NsYXNzZXMgPSBlbGVtZW50LnZhbHVlLm1hdGNoKC8oOmZpcnN0fDpudGh8Om50aC1sYXN0KS1jaGlsZC9nKTtcblxuICAgIGlmICh1bnNhZmVQc2V1ZG9DbGFzc2VzKSB7XG4gICAgICB2YXIgaXNOZXN0ZWQgPSAhIWVsZW1lbnQucGFyZW50OyAvLyBpbiBuZXN0ZWQgcnVsZXMgY29tbWVudHMgYmVjb21lIGNoaWxkcmVuIG9mIHRoZSBcImF1dG8taW5zZXJ0ZWRcIiBydWxlIGFuZCB0aGF0J3MgYWx3YXlzIHRoZSBgZWxlbWVudC5wYXJlbnRgXG4gICAgICAvL1xuICAgICAgLy8gY29uc2lkZXJpbmcgdGhpcyBpbnB1dDpcbiAgICAgIC8vIC5hIHtcbiAgICAgIC8vICAgLmIgLyogY29tbSAqLyB7fVxuICAgICAgLy8gICBjb2xvcjogaG90cGluaztcbiAgICAgIC8vIH1cbiAgICAgIC8vIHdlIGdldCBvdXRwdXQgY29ycmVzcG9uZGluZyB0byB0aGlzOlxuICAgICAgLy8gLmEge1xuICAgICAgLy8gICAmIHtcbiAgICAgIC8vICAgICAvKiBjb21tICovXG4gICAgICAvLyAgICAgY29sb3I6IGhvdHBpbms7XG4gICAgICAvLyAgIH1cbiAgICAgIC8vICAgLmIge31cbiAgICAgIC8vIH1cblxuICAgICAgdmFyIGNvbW1lbnRDb250YWluZXIgPSBpc05lc3RlZCA/IGVsZW1lbnQucGFyZW50LmNoaWxkcmVuIDogLy8gZ2xvYmFsIHJ1bGUgYXQgdGhlIHJvb3QgbGV2ZWxcbiAgICAgIGNoaWxkcmVuO1xuXG4gICAgICBmb3IgKHZhciBpID0gY29tbWVudENvbnRhaW5lci5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB2YXIgbm9kZSA9IGNvbW1lbnRDb250YWluZXJbaV07XG5cbiAgICAgICAgaWYgKG5vZGUubGluZSA8IGVsZW1lbnQubGluZSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IC8vIGl0IGlzIHF1aXRlIHdlaXJkIGJ1dCBjb21tZW50cyBhcmUgKnVzdWFsbHkqIHB1dCBhdCBgY29sdW1uOiBlbGVtZW50LmNvbHVtbiAtIDFgXG4gICAgICAgIC8vIHNvIHdlIHNlZWsgKmZyb20gdGhlIGVuZCogZm9yIHRoZSBub2RlIHRoYXQgaXMgZWFybGllciB0aGFuIHRoZSBydWxlJ3MgYGVsZW1lbnRgIGFuZCBjaGVjayB0aGF0XG4gICAgICAgIC8vIHRoaXMgd2lsbCBhbHNvIG1hdGNoIGlucHV0cyBsaWtlIHRoaXM6XG4gICAgICAgIC8vIC5hIHtcbiAgICAgICAgLy8gICAvKiBjb21tICovXG4gICAgICAgIC8vICAgLmIge31cbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICAvLyBidXQgdGhhdCBpcyBmaW5lXG4gICAgICAgIC8vXG4gICAgICAgIC8vIGl0IHdvdWxkIGJlIHRoZSBlYXNpZXN0IHRvIGNoYW5nZSB0aGUgcGxhY2VtZW50IG9mIHRoZSBjb21tZW50IHRvIGJlIHRoZSBmaXJzdCBjaGlsZCBvZiB0aGUgcnVsZTpcbiAgICAgICAgLy8gLmEge1xuICAgICAgICAvLyAgIC5iIHsgLyogY29tbSAqLyB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy8gd2l0aCBzdWNoIGlucHV0cyB3ZSB3b3VsZG4ndCBoYXZlIHRvIHNlYXJjaCBmb3IgdGhlIGNvbW1lbnQgYXQgYWxsXG4gICAgICAgIC8vIFRPRE86IGNvbnNpZGVyIGNoYW5naW5nIHRoaXMgY29tbWVudCBwbGFjZW1lbnQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvblxuXG5cbiAgICAgICAgaWYgKG5vZGUuY29sdW1uIDwgZWxlbWVudC5jb2x1bW4pIHtcbiAgICAgICAgICBpZiAoaXNJZ25vcmluZ0NvbW1lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB1bnNhZmVQc2V1ZG9DbGFzc2VzLmZvckVhY2goZnVuY3Rpb24gKHVuc2FmZVBzZXVkb0NsYXNzKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgcHNldWRvIGNsYXNzIFxcXCJcIiArIHVuc2FmZVBzZXVkb0NsYXNzICsgXCJcXFwiIGlzIHBvdGVudGlhbGx5IHVuc2FmZSB3aGVuIGRvaW5nIHNlcnZlci1zaWRlIHJlbmRlcmluZy4gVHJ5IGNoYW5naW5nIGl0IHRvIFxcXCJcIiArIHVuc2FmZVBzZXVkb0NsYXNzLnNwbGl0KCctY2hpbGQnKVswXSArIFwiLW9mLXR5cGVcXFwiLlwiKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBpc0ltcG9ydFJ1bGUgPSBmdW5jdGlvbiBpc0ltcG9ydFJ1bGUoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC50eXBlLmNoYXJDb2RlQXQoMSkgPT09IDEwNSAmJiBlbGVtZW50LnR5cGUuY2hhckNvZGVBdCgwKSA9PT0gNjQ7XG59O1xuXG52YXIgaXNQcmVwZW5kZWRXaXRoUmVndWxhclJ1bGVzID0gZnVuY3Rpb24gaXNQcmVwZW5kZWRXaXRoUmVndWxhclJ1bGVzKGluZGV4LCBjaGlsZHJlbikge1xuICBmb3IgKHZhciBpID0gaW5kZXggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICghaXNJbXBvcnRSdWxlKGNoaWxkcmVuW2ldKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTsgLy8gdXNlIHRoaXMgdG8gcmVtb3ZlIGluY29ycmVjdCBlbGVtZW50cyBmcm9tIGZ1cnRoZXIgcHJvY2Vzc2luZ1xuLy8gc28gdGhleSBkb24ndCBnZXQgaGFuZGVkIHRvIHRoZSBgc2hlZXRgIChvciBhbnl0aGluZyBlbHNlKVxuLy8gYXMgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBsZWFkIHRvIGFkZGl0aW9uYWwgbG9ncyB3aGljaCBpbiB0dXJuIGNvdWxkIGJlIG92ZXJoZWxtaW5nIHRvIHRoZSB1c2VyXG5cblxudmFyIG51bGxpZnlFbGVtZW50ID0gZnVuY3Rpb24gbnVsbGlmeUVsZW1lbnQoZWxlbWVudCkge1xuICBlbGVtZW50LnR5cGUgPSAnJztcbiAgZWxlbWVudC52YWx1ZSA9ICcnO1xuICBlbGVtZW50W1wicmV0dXJuXCJdID0gJyc7XG4gIGVsZW1lbnQuY2hpbGRyZW4gPSAnJztcbiAgZWxlbWVudC5wcm9wcyA9ICcnO1xufTtcblxudmFyIGluY29ycmVjdEltcG9ydEFsYXJtID0gZnVuY3Rpb24gaW5jb3JyZWN0SW1wb3J0QWxhcm0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuKSB7XG4gIGlmICghaXNJbXBvcnRSdWxlKGVsZW1lbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQucGFyZW50KSB7XG4gICAgY29uc29sZS5lcnJvcihcImBAaW1wb3J0YCBydWxlcyBjYW4ndCBiZSBuZXN0ZWQgaW5zaWRlIG90aGVyIHJ1bGVzLiBQbGVhc2UgbW92ZSBpdCB0byB0aGUgdG9wIGxldmVsIGFuZCBwdXQgaXQgYmVmb3JlIHJlZ3VsYXIgcnVsZXMuIEtlZXAgaW4gbWluZCB0aGF0IHRoZXkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoaW4gZ2xvYmFsIHN0eWxlcy5cIik7XG4gICAgbnVsbGlmeUVsZW1lbnQoZWxlbWVudCk7XG4gIH0gZWxzZSBpZiAoaXNQcmVwZW5kZWRXaXRoUmVndWxhclJ1bGVzKGluZGV4LCBjaGlsZHJlbikpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiYEBpbXBvcnRgIHJ1bGVzIGNhbid0IGJlIGFmdGVyIG90aGVyIHJ1bGVzLiBQbGVhc2UgcHV0IHlvdXIgYEBpbXBvcnRgIHJ1bGVzIGJlZm9yZSB5b3VyIG90aGVyIHJ1bGVzLlwiKTtcbiAgICBudWxsaWZ5RWxlbWVudChlbGVtZW50KTtcbiAgfVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbm8tZmFsbHRocm91Z2ggKi9cblxuZnVuY3Rpb24gcHJlZml4KHZhbHVlLCBsZW5ndGgpIHtcbiAgc3dpdGNoIChoYXNoKHZhbHVlLCBsZW5ndGgpKSB7XG4gICAgLy8gY29sb3ItYWRqdXN0XG4gICAgY2FzZSA1MTAzOlxuICAgICAgcmV0dXJuIFdFQktJVCArICdwcmludC0nICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhbmltYXRpb24sIGFuaW1hdGlvbi0oZGVsYXl8ZGlyZWN0aW9ufGR1cmF0aW9ufGZpbGwtbW9kZXxpdGVyYXRpb24tY291bnR8bmFtZXxwbGF5LXN0YXRlfHRpbWluZy1mdW5jdGlvbilcblxuICAgIGNhc2UgNTczNzpcbiAgICBjYXNlIDQyMDE6XG4gICAgY2FzZSAzMTc3OlxuICAgIGNhc2UgMzQzMzpcbiAgICBjYXNlIDE2NDE6XG4gICAgY2FzZSA0NDU3OlxuICAgIGNhc2UgMjkyMTogLy8gdGV4dC1kZWNvcmF0aW9uLCBmaWx0ZXIsIGNsaXAtcGF0aCwgYmFja2ZhY2UtdmlzaWJpbGl0eSwgY29sdW1uLCBib3gtZGVjb3JhdGlvbi1icmVha1xuXG4gICAgY2FzZSA1NTcyOlxuICAgIGNhc2UgNjM1NjpcbiAgICBjYXNlIDU4NDQ6XG4gICAgY2FzZSAzMTkxOlxuICAgIGNhc2UgNjY0NTpcbiAgICBjYXNlIDMwMDU6IC8vIG1hc2ssIG1hc2staW1hZ2UsIG1hc2stKG1vZGV8Y2xpcHxzaXplKSwgbWFzay0ocmVwZWF0fG9yaWdpbiksIG1hc2stcG9zaXRpb24sIG1hc2stY29tcG9zaXRlLFxuXG4gICAgY2FzZSA2MzkxOlxuICAgIGNhc2UgNTg3OTpcbiAgICBjYXNlIDU2MjM6XG4gICAgY2FzZSA2MTM1OlxuICAgIGNhc2UgNDU5OTpcbiAgICBjYXNlIDQ4NTU6IC8vIGJhY2tncm91bmQtY2xpcCwgY29sdW1ucywgY29sdW1uLShjb3VudHxmaWxsfGdhcHxydWxlfHJ1bGUtY29sb3J8cnVsZS1zdHlsZXxydWxlLXdpZHRofHNwYW58d2lkdGgpXG5cbiAgICBjYXNlIDQyMTU6XG4gICAgY2FzZSA2Mzg5OlxuICAgIGNhc2UgNTEwOTpcbiAgICBjYXNlIDUzNjU6XG4gICAgY2FzZSA1NjIxOlxuICAgIGNhc2UgMzgyOTpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFwcGVhcmFuY2UsIHVzZXItc2VsZWN0LCB0cmFuc2Zvcm0sIGh5cGhlbnMsIHRleHQtc2l6ZS1hZGp1c3RcblxuICAgIGNhc2UgNTM0OTpcbiAgICBjYXNlIDQyNDY6XG4gICAgY2FzZSA0ODEwOlxuICAgIGNhc2UgNjk2ODpcbiAgICBjYXNlIDI3NTY6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNT1ogKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LCBmbGV4LWRpcmVjdGlvblxuXG4gICAgY2FzZSA2ODI4OlxuICAgIGNhc2UgNDI2ODpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBvcmRlclxuXG4gICAgY2FzZSA2MTY1OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC0nICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1pdGVtc1xuXG4gICAgY2FzZSA1MTg3OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgcmVwbGFjZSh2YWx1ZSwgLyhcXHcrKS4rKDpbXl0rKS8sIFdFQktJVCArICdib3gtJDEkMicgKyBNUyArICdmbGV4LSQxJDInKSArIHZhbHVlO1xuICAgIC8vIGFsaWduLXNlbGZcblxuICAgIGNhc2UgNTQ0MzpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgJ2ZsZXgtaXRlbS0nICsgcmVwbGFjZSh2YWx1ZSwgL2ZsZXgtfC1zZWxmLywgJycpICsgdmFsdWU7XG4gICAgLy8gYWxpZ24tY29udGVudFxuXG4gICAgY2FzZSA0Njc1OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1saW5lLXBhY2snICsgcmVwbGFjZSh2YWx1ZSwgL2FsaWduLWNvbnRlbnR8ZmxleC18LXNlbGYvLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LXNocmlua1xuXG4gICAgY2FzZSA1NTQ4OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAnc2hyaW5rJywgJ25lZ2F0aXZlJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LWJhc2lzXG5cbiAgICBjYXNlIDUyOTI6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgdmFsdWU7XG4gICAgLy8gZmxleC1ncm93XG5cbiAgICBjYXNlIDYwNjA6XG4gICAgICByZXR1cm4gV0VCS0lUICsgJ2JveC0nICsgcmVwbGFjZSh2YWx1ZSwgJy1ncm93JywgJycpICsgV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdncm93JywgJ3Bvc2l0aXZlJykgKyB2YWx1ZTtcbiAgICAvLyB0cmFuc2l0aW9uXG5cbiAgICBjYXNlIDQ1NTQ6XG4gICAgICByZXR1cm4gV0VCS0lUICsgcmVwbGFjZSh2YWx1ZSwgLyhbXi1dKSh0cmFuc2Zvcm0pL2csICckMScgKyBXRUJLSVQgKyAnJDInKSArIHZhbHVlO1xuICAgIC8vIGN1cnNvclxuXG4gICAgY2FzZSA2MTg3OlxuICAgICAgcmV0dXJuIHJlcGxhY2UocmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKHpvb20tfGdyYWIpLywgV0VCS0lUICsgJyQxJyksIC8oaW1hZ2Utc2V0KS8sIFdFQktJVCArICckMScpLCB2YWx1ZSwgJycpICsgdmFsdWU7XG4gICAgLy8gYmFja2dyb3VuZCwgYmFja2dyb3VuZC1pbWFnZVxuXG4gICAgY2FzZSA1NDk1OlxuICAgIGNhc2UgMzk1OTpcbiAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKGltYWdlLXNldFxcKFteXSopLywgV0VCS0lUICsgJyQxJyArICckYCQxJyk7XG4gICAgLy8ganVzdGlmeS1jb250ZW50XG5cbiAgICBjYXNlIDQ5Njg6XG4gICAgICByZXR1cm4gcmVwbGFjZShyZXBsYWNlKHZhbHVlLCAvKC4rOikoZmxleC0pPyguKikvLCBXRUJLSVQgKyAnYm94LXBhY2s6JDMnICsgTVMgKyAnZmxleC1wYWNrOiQzJyksIC9zListYlteO10rLywgJ2p1c3RpZnknKSArIFdFQktJVCArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gKG1hcmdpbnxwYWRkaW5nKS1pbmxpbmUtKHN0YXJ0fGVuZClcblxuICAgIGNhc2UgNDA5NTpcbiAgICBjYXNlIDM1ODM6XG4gICAgY2FzZSA0MDY4OlxuICAgIGNhc2UgMjUzMjpcbiAgICAgIHJldHVybiByZXBsYWNlKHZhbHVlLCAvKC4rKS1pbmxpbmUoLispLywgV0VCS0lUICsgJyQxJDInKSArIHZhbHVlO1xuICAgIC8vIChtaW58bWF4KT8od2lkdGh8aGVpZ2h0fGlubGluZS1zaXplfGJsb2NrLXNpemUpXG5cbiAgICBjYXNlIDgxMTY6XG4gICAgY2FzZSA3MDU5OlxuICAgIGNhc2UgNTc1MzpcbiAgICBjYXNlIDU1MzU6XG4gICAgY2FzZSA1NDQ1OlxuICAgIGNhc2UgNTcwMTpcbiAgICBjYXNlIDQ5MzM6XG4gICAgY2FzZSA0Njc3OlxuICAgIGNhc2UgNTUzMzpcbiAgICBjYXNlIDU3ODk6XG4gICAgY2FzZSA1MDIxOlxuICAgIGNhc2UgNDc2NTpcbiAgICAgIC8vIHN0cmV0Y2gsIG1heC1jb250ZW50LCBtaW4tY29udGVudCwgZmlsbC1hdmFpbGFibGVcbiAgICAgIGlmIChzdHJsZW4odmFsdWUpIC0gMSAtIGxlbmd0aCA+IDYpIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxKSkge1xuICAgICAgICAvLyAobSlheC1jb250ZW50LCAobSlpbi1jb250ZW50XG4gICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgIC8vIC1cbiAgICAgICAgICBpZiAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyA0KSAhPT0gNDUpIGJyZWFrO1xuICAgICAgICAvLyAoZilpbGwtYXZhaWxhYmxlLCAoZilpdC1jb250ZW50XG5cbiAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KSguKyktKFteXSspLywgJyQxJyArIFdFQktJVCArICckMi0kMycgKyAnJDEnICsgTU9aICsgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMykgPT0gMTA4ID8gJyQzJyA6ICckMi0kMycpKSArIHZhbHVlO1xuICAgICAgICAvLyAocyl0cmV0Y2hcblxuICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICByZXR1cm4gfmluZGV4b2YodmFsdWUsICdzdHJldGNoJykgPyBwcmVmaXgocmVwbGFjZSh2YWx1ZSwgJ3N0cmV0Y2gnLCAnZmlsbC1hdmFpbGFibGUnKSwgbGVuZ3RoKSArIHZhbHVlIDogdmFsdWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICAvLyBwb3NpdGlvbjogc3RpY2t5XG5cbiAgICBjYXNlIDQ5NDk6XG4gICAgICAvLyAocyl0aWNreT9cbiAgICAgIGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpICE9PSAxMTUpIGJyZWFrO1xuICAgIC8vIGRpc3BsYXk6IChmbGV4fGlubGluZS1mbGV4KVxuXG4gICAgY2FzZSA2NDQ0OlxuICAgICAgc3dpdGNoIChjaGFyYXQodmFsdWUsIHN0cmxlbih2YWx1ZSkgLSAzIC0gKH5pbmRleG9mKHZhbHVlLCAnIWltcG9ydGFudCcpICYmIDEwKSkpIHtcbiAgICAgICAgLy8gc3RpYyhrKXlcbiAgICAgICAgY2FzZSAxMDc6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsICc6JywgJzonICsgV0VCS0lUKSArIHZhbHVlO1xuICAgICAgICAvLyAoaW5saW5lLSk/ZmwoZSl4XG5cbiAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLis6KShbXjshXSspKDt8IS4rKT8vLCAnJDEnICsgV0VCS0lUICsgKGNoYXJhdCh2YWx1ZSwgMTQpID09PSA0NSA/ICdpbmxpbmUtJyA6ICcnKSArICdib3gkMycgKyAnJDEnICsgV0VCS0lUICsgJyQyJDMnICsgJyQxJyArIE1TICsgJyQyYm94JDMnKSArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICAvLyB3cml0aW5nLW1vZGVcblxuICAgIGNhc2UgNTkzNjpcbiAgICAgIHN3aXRjaCAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAxMSkpIHtcbiAgICAgICAgLy8gdmVydGljYWwtbChyKVxuICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsIC9bc3ZoXVxcdystW3RibHJdezJ9LywgJ3RiJykgKyB2YWx1ZTtcbiAgICAgICAgLy8gdmVydGljYWwtcihsKVxuXG4gICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGItcmwnKSArIHZhbHVlO1xuICAgICAgICAvLyBob3Jpem9udGFsKC0pdGJcblxuICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAnbHInKSArIHZhbHVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHZhbHVlICsgdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbnZhciBwcmVmaXhlciA9IGZ1bmN0aW9uIHByZWZpeGVyKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcbiAgaWYgKGVsZW1lbnQubGVuZ3RoID4gLTEpIGlmICghZWxlbWVudFtcInJldHVyblwiXSkgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIERFQ0xBUkFUSU9OOlxuICAgICAgZWxlbWVudFtcInJldHVyblwiXSA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCk7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgS0VZRlJBTUVTOlxuICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgIHZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKVxuICAgICAgfSldLCBjYWxsYmFjayk7XG5cbiAgICBjYXNlIFJVTEVTRVQ6XG4gICAgICBpZiAoZWxlbWVudC5sZW5ndGgpIHJldHVybiBjb21iaW5lKGVsZW1lbnQucHJvcHMsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKG1hdGNoKHZhbHVlLCAvKDo6cGxhY1xcdyt8OnJlYWQtXFx3KykvKSkge1xuICAgICAgICAgIC8vIDpyZWFkLShvbmx5fHdyaXRlKVxuICAgICAgICAgIGNhc2UgJzpyZWFkLW9ubHknOlxuICAgICAgICAgIGNhc2UgJzpyZWFkLXdyaXRlJzpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHJlYWQtXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV1cbiAgICAgICAgICAgIH0pXSwgY2FsbGJhY2spO1xuICAgICAgICAgIC8vIDpwbGFjZWhvbGRlclxuXG4gICAgICAgICAgY2FzZSAnOjpwbGFjZWhvbGRlcic6XG4gICAgICAgICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV1cbiAgICAgICAgICAgIH0pLCBjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV1cbiAgICAgICAgICAgIH0pLCBjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgcHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXVxuICAgICAgICAgICAgfSldLCBjYWxsYmFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9KTtcbiAgfVxufTtcblxudmFyIGRlZmF1bHRTdHlsaXNQbHVnaW5zID0gW3ByZWZpeGVyXTtcblxudmFyIGNyZWF0ZUNhY2hlID0gZnVuY3Rpb24gY3JlYXRlQ2FjaGUob3B0aW9ucykge1xuICB2YXIga2V5ID0gb3B0aW9ucy5rZXk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBoYXZlIHRvIGNvbmZpZ3VyZSBga2V5YCBmb3IgeW91ciBjYWNoZS4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHVuaXF1ZSAoYW5kIG5vdCBlcXVhbCB0byAnY3NzJykgYXMgaXQncyB1c2VkIGZvciBsaW5raW5nIHN0eWxlcyB0byB5b3VyIGNhY2hlLlxcblwiICsgXCJJZiBtdWx0aXBsZSBjYWNoZXMgc2hhcmUgdGhlIHNhbWUga2V5IHRoZXkgbWlnaHQgXFxcImZpZ2h0XFxcIiBmb3IgZWFjaCBvdGhlcidzIHN0eWxlIGVsZW1lbnRzLlwiKTtcbiAgfVxuXG4gIGlmIChrZXkgPT09ICdjc3MnKSB7XG4gICAgdmFyIHNzclN0eWxlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtkYXRhLWVtb3Rpb25dOm5vdChbZGF0YS1zXSlcIik7IC8vIGdldCBTU1JlZCBzdHlsZXMgb3V0IG9mIHRoZSB3YXkgb2YgUmVhY3QncyBoeWRyYXRpb25cbiAgICAvLyBkb2N1bWVudC5oZWFkIGlzIGEgc2FmZSBwbGFjZSB0byBtb3ZlIHRoZW0gdG8odGhvdWdoIG5vdGUgZG9jdW1lbnQuaGVhZCBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIGxhc3QgcGxhY2UgdGhleSB3aWxsIGJlKVxuICAgIC8vIG5vdGUgdGhpcyB2ZXJ5IHZlcnkgaW50ZW50aW9uYWxseSB0YXJnZXRzIGFsbCBzdHlsZSBlbGVtZW50cyByZWdhcmRsZXNzIG9mIHRoZSBrZXkgdG8gZW5zdXJlXG4gICAgLy8gdGhhdCBjcmVhdGluZyBhIGNhY2hlIHdvcmtzIGluc2lkZSBvZiByZW5kZXIgb2YgYSBSZWFjdCBjb21wb25lbnRcblxuICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoc3NyU3R5bGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgLy8gd2Ugd2FudCB0byBvbmx5IG1vdmUgZWxlbWVudHMgd2hpY2ggaGF2ZSBhIHNwYWNlIGluIHRoZSBkYXRhLWVtb3Rpb24gYXR0cmlidXRlIHZhbHVlXG4gICAgICAvLyBiZWNhdXNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgaXQgaXMgYW4gRW1vdGlvbiAxMSBzZXJ2ZXItc2lkZSByZW5kZXJlZCBzdHlsZSBlbGVtZW50c1xuICAgICAgLy8gd2hpbGUgd2Ugd2lsbCBhbHJlYWR5IGlnbm9yZSBFbW90aW9uIDExIGNsaWVudC1zaWRlIGluc2VydGVkIHN0eWxlcyBiZWNhdXNlIG9mIHRoZSA6bm90KFtkYXRhLXNdKSBwYXJ0IGluIHRoZSBzZWxlY3RvclxuICAgICAgLy8gRW1vdGlvbiAxMCBjbGllbnQtc2lkZSBpbnNlcnRlZCBzdHlsZXMgZGlkIG5vdCBoYXZlIGRhdGEtcyAoYnV0IGltcG9ydGFudGx5IGRpZCBub3QgaGF2ZSBhIHNwYWNlIGluIHRoZWlyIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGVzKVxuICAgICAgLy8gc28gY2hlY2tpbmcgZm9yIHRoZSBzcGFjZSBlbnN1cmVzIHRoYXQgbG9hZGluZyBFbW90aW9uIDExIGFmdGVyIEVtb3Rpb24gMTAgaGFzIGluc2VydGVkIHNvbWUgc3R5bGVzXG4gICAgICAvLyB3aWxsIG5vdCByZXN1bHQgaW4gdGhlIEVtb3Rpb24gMTAgc3R5bGVzIGJlaW5nIGRlc3Ryb3llZFxuICAgICAgdmFyIGRhdGFFbW90aW9uQXR0cmlidXRlID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicpO1xuXG4gICAgICBpZiAoZGF0YUVtb3Rpb25BdHRyaWJ1dGUuaW5kZXhPZignICcpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcycsICcnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBzdHlsaXNQbHVnaW5zID0gb3B0aW9ucy5zdHlsaXNQbHVnaW5zIHx8IGRlZmF1bHRTdHlsaXNQbHVnaW5zO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIGlmICgvW15hLXotXS8udGVzdChrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbW90aW9uIGtleSBtdXN0IG9ubHkgY29udGFpbiBsb3dlciBjYXNlIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIGFuZCAtIGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHBhc3NlZFwiKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaW5zZXJ0ZWQgPSB7fTtcbiAgdmFyIGNvbnRhaW5lcjtcbiAgdmFyIG5vZGVzVG9IeWRyYXRlID0gW107XG5cbiAge1xuICAgIGNvbnRhaW5lciA9IG9wdGlvbnMuY29udGFpbmVyIHx8IGRvY3VtZW50LmhlYWQ7XG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCggLy8gdGhpcyBtZWFucyB3ZSB3aWxsIGlnbm9yZSBlbGVtZW50cyB3aGljaCBkb24ndCBoYXZlIGEgc3BhY2UgaW4gdGhlbSB3aGljaFxuICAgIC8vIG1lYW5zIHRoYXQgdGhlIHN0eWxlIGVsZW1lbnRzIHdlJ3JlIGxvb2tpbmcgYXQgYXJlIG9ubHkgRW1vdGlvbiAxMSBzZXJ2ZXItcmVuZGVyZWQgc3R5bGUgZWxlbWVudHNcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic3R5bGVbZGF0YS1lbW90aW9uXj1cXFwiXCIgKyBrZXkgKyBcIiBcXFwiXVwiKSwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHZhciBhdHRyaWIgPSBub2RlLmdldEF0dHJpYnV0ZShcImRhdGEtZW1vdGlvblwiKS5zcGxpdCgnICcpOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXR0cmliLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGluc2VydGVkW2F0dHJpYltpXV0gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBub2Rlc1RvSHlkcmF0ZS5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIF9pbnNlcnQ7XG5cbiAgdmFyIG9tbmlwcmVzZW50UGx1Z2lucyA9IFtjb21wYXQsIHJlbW92ZUxhYmVsXTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIG9tbmlwcmVzZW50UGx1Z2lucy5wdXNoKGNyZWF0ZVVuc2FmZVNlbGVjdG9yc0FsYXJtKHtcbiAgICAgIGdldCBjb21wYXQoKSB7XG4gICAgICAgIHJldHVybiBjYWNoZS5jb21wYXQ7XG4gICAgICB9XG5cbiAgICB9KSwgaW5jb3JyZWN0SW1wb3J0QWxhcm0pO1xuICB9XG5cbiAge1xuICAgIHZhciBjdXJyZW50U2hlZXQ7XG4gICAgdmFyIGZpbmFsaXppbmdQbHVnaW5zID0gW3N0cmluZ2lmeSwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgICBpZiAoIWVsZW1lbnQucm9vdCkge1xuICAgICAgICBpZiAoZWxlbWVudFtcInJldHVyblwiXSkge1xuICAgICAgICAgIGN1cnJlbnRTaGVldC5pbnNlcnQoZWxlbWVudFtcInJldHVyblwiXSk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC52YWx1ZSAmJiBlbGVtZW50LnR5cGUgIT09IENPTU1FTlQpIHtcbiAgICAgICAgICAvLyBpbnNlcnQgZW1wdHkgcnVsZSBpbiBub24tcHJvZHVjdGlvbiBlbnZpcm9ubWVudHNcbiAgICAgICAgICAvLyBzbyBAZW1vdGlvbi9qZXN0IGNhbiBncmFiIGBrZXlgIGZyb20gdGhlIChKUylET00gZm9yIGNhY2hlcyB3aXRob3V0IGFueSBydWxlcyBpbnNlcnRlZCB5ZXRcbiAgICAgICAgICBjdXJyZW50U2hlZXQuaW5zZXJ0KGVsZW1lbnQudmFsdWUgKyBcInt9XCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSA6IHJ1bGVzaGVldChmdW5jdGlvbiAocnVsZSkge1xuICAgICAgY3VycmVudFNoZWV0Lmluc2VydChydWxlKTtcbiAgICB9KV07XG4gICAgdmFyIHNlcmlhbGl6ZXIgPSBtaWRkbGV3YXJlKG9tbmlwcmVzZW50UGx1Z2lucy5jb25jYXQoc3R5bGlzUGx1Z2lucywgZmluYWxpemluZ1BsdWdpbnMpKTtcblxuICAgIHZhciBzdHlsaXMgPSBmdW5jdGlvbiBzdHlsaXMoc3R5bGVzKSB7XG4gICAgICByZXR1cm4gc2VyaWFsaXplKGNvbXBpbGUoc3R5bGVzKSwgc2VyaWFsaXplcik7XG4gICAgfTtcblxuICAgIF9pbnNlcnQgPSBmdW5jdGlvbiBpbnNlcnQoc2VsZWN0b3IsIHNlcmlhbGl6ZWQsIHNoZWV0LCBzaG91bGRDYWNoZSkge1xuICAgICAgY3VycmVudFNoZWV0ID0gc2hlZXQ7XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHNlcmlhbGl6ZWQubWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY3VycmVudFNoZWV0ID0ge1xuICAgICAgICAgIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0KHJ1bGUpIHtcbiAgICAgICAgICAgIHNoZWV0Lmluc2VydChydWxlICsgc2VyaWFsaXplZC5tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgc3R5bGlzKHNlbGVjdG9yID8gc2VsZWN0b3IgKyBcIntcIiArIHNlcmlhbGl6ZWQuc3R5bGVzICsgXCJ9XCIgOiBzZXJpYWxpemVkLnN0eWxlcyk7XG5cbiAgICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgICBjYWNoZS5pbnNlcnRlZFtzZXJpYWxpemVkLm5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgdmFyIGNhY2hlID0ge1xuICAgIGtleToga2V5LFxuICAgIHNoZWV0OiBuZXcgU3R5bGVTaGVldCh7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgbm9uY2U6IG9wdGlvbnMubm9uY2UsXG4gICAgICBzcGVlZHk6IG9wdGlvbnMuc3BlZWR5LFxuICAgICAgcHJlcGVuZDogb3B0aW9ucy5wcmVwZW5kLFxuICAgICAgaW5zZXJ0aW9uUG9pbnQ6IG9wdGlvbnMuaW5zZXJ0aW9uUG9pbnRcbiAgICB9KSxcbiAgICBub25jZTogb3B0aW9ucy5ub25jZSxcbiAgICBpbnNlcnRlZDogaW5zZXJ0ZWQsXG4gICAgcmVnaXN0ZXJlZDoge30sXG4gICAgaW5zZXJ0OiBfaW5zZXJ0XG4gIH07XG4gIGNhY2hlLnNoZWV0Lmh5ZHJhdGUobm9kZXNUb0h5ZHJhdGUpO1xuICByZXR1cm4gY2FjaGU7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVDYWNoZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQge01TLCBNT1osIFdFQktJVCwgUlVMRVNFVCwgS0VZRlJBTUVTLCBERUNMQVJBVElPTn0gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHttYXRjaCwgY2hhcmF0LCBzdWJzdHIsIHN0cmxlbiwgc2l6ZW9mLCByZXBsYWNlLCBjb21iaW5lfSBmcm9tICcuL1V0aWxpdHkuanMnXG5pbXBvcnQge2NvcHksIHRva2VuaXplfSBmcm9tICcuL1Rva2VuaXplci5qcydcbmltcG9ydCB7c2VyaWFsaXplfSBmcm9tICcuL1NlcmlhbGl6ZXIuanMnXG5pbXBvcnQge3ByZWZpeH0gZnJvbSAnLi9QcmVmaXhlci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uW119IGNvbGxlY3Rpb25cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlkZGxld2FyZSAoY29sbGVjdGlvbikge1xuXHR2YXIgbGVuZ3RoID0gc2l6ZW9mKGNvbGxlY3Rpb24pXG5cblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdFx0dmFyIG91dHB1dCA9ICcnXG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuXHRcdFx0b3V0cHV0ICs9IGNvbGxlY3Rpb25baV0oZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRcdHJldHVybiBvdXRwdXRcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtmdW5jdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzaGVldCAoY2FsbGJhY2spIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdFx0aWYgKCFlbGVtZW50LnJvb3QpXG5cdFx0XHRpZiAoZWxlbWVudCA9IGVsZW1lbnQucmV0dXJuKVxuXHRcdFx0XHRjYWxsYmFjayhlbGVtZW50KVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhlciAoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuXHRpZiAoZWxlbWVudC5sZW5ndGggPiAtMSlcblx0XHRpZiAoIWVsZW1lbnQucmV0dXJuKVxuXHRcdFx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRcdFx0Y2FzZSBERUNMQVJBVElPTjogZWxlbWVudC5yZXR1cm4gPSBwcmVmaXgoZWxlbWVudC52YWx1ZSwgZWxlbWVudC5sZW5ndGgsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdHJldHVyblxuXHRcdFx0XHRjYXNlIEtFWUZSQU1FUzpcblx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHt2YWx1ZTogcmVwbGFjZShlbGVtZW50LnZhbHVlLCAnQCcsICdAJyArIFdFQktJVCl9KV0sIGNhbGxiYWNrKVxuXHRcdFx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRcdFx0aWYgKGVsZW1lbnQubGVuZ3RoKVxuXHRcdFx0XHRcdFx0cmV0dXJuIGNvbWJpbmUoZWxlbWVudC5wcm9wcywgZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAobWF0Y2godmFsdWUsIC8oOjpwbGFjXFx3K3w6cmVhZC1cXHcrKS8pKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gOnJlYWQtKG9ubHl8d3JpdGUpXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnOnJlYWQtb25seSc6IGNhc2UgJzpyZWFkLXdyaXRlJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge3Byb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pXSwgY2FsbGJhY2spXG5cdFx0XHRcdFx0XHRcdFx0Ly8gOnBsYWNlaG9sZGVyXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAnOjpwbGFjZWhvbGRlcic6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2VyaWFsaXplKFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBXRUJLSVQgKyAnaW5wdXQtJDEnKV19KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCAnOicgKyBNT1ogKyAnJDEnKV19KSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihwbGFjXFx3KykvLCBNUyArICdpbnB1dC0kMScpXX0pXG5cdFx0XHRcdFx0XHRcdFx0XHRdLCBjYWxsYmFjaylcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICovXG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlIChlbGVtZW50KSB7XG5cdHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG5cdFx0Y2FzZSBSVUxFU0VUOlxuXHRcdFx0ZWxlbWVudC5wcm9wcyA9IGVsZW1lbnQucHJvcHMubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tYmluZSh0b2tlbml6ZSh2YWx1ZSksIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNoaWxkcmVuKSB7XG5cdFx0XHRcdFx0c3dpdGNoIChjaGFyYXQodmFsdWUsIDApKSB7XG5cdFx0XHRcdFx0XHQvLyBcXGZcblx0XHRcdFx0XHRcdGNhc2UgMTI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzdWJzdHIodmFsdWUsIDEsIHN0cmxlbih2YWx1ZSkpXG5cdFx0XHRcdFx0XHQvLyBcXDAgKCArID4gflxuXHRcdFx0XHRcdFx0Y2FzZSAwOiBjYXNlIDQwOiBjYXNlIDQzOiBjYXNlIDYyOiBjYXNlIDEyNjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHQvLyA6XG5cdFx0XHRcdFx0XHRjYXNlIDU4OlxuXHRcdFx0XHRcdFx0XHRpZiAoY2hpbGRyZW5bKytpbmRleF0gPT09ICdnbG9iYWwnKVxuXHRcdFx0XHRcdFx0XHRcdGNoaWxkcmVuW2luZGV4XSA9ICcnLCBjaGlsZHJlblsrK2luZGV4XSA9ICdcXGYnICsgc3Vic3RyKGNoaWxkcmVuW2luZGV4XSwgaW5kZXggPSAxLCAtMSlcblx0XHRcdFx0XHRcdC8vIFxcc1xuXHRcdFx0XHRcdFx0Y2FzZSAzMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGluZGV4ID09PSAxID8gJycgOiB2YWx1ZVxuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChpbmRleCkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgMDogZWxlbWVudCA9IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc2l6ZW9mKGNoaWxkcmVuKSA+IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBpbmRleCA9IHNpemVvZihjaGlsZHJlbikgLSAxOiBjYXNlIDI6XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDIgPyB2YWx1ZSArIGVsZW1lbnQgKyBlbGVtZW50IDogdmFsdWUgKyBlbGVtZW50XG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0fVxufVxuIiwiZnVuY3Rpb24gbWVtb2l6ZShmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIGlmIChjYWNoZVthcmddID09PSB1bmRlZmluZWQpIGNhY2hlW2FyZ10gPSBmbihhcmcpO1xuICAgIHJldHVybiBjYWNoZVthcmddO1xuICB9O1xufVxuXG5leHBvcnQgeyBtZW1vaXplIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUNvbnRleHQsIGZvcndhcmRSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlQ2FjaGUgZnJvbSAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMnO1xuaW1wb3J0IHdlYWtNZW1vaXplIGZyb20gJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgaG9pc3ROb25SZWFjdFN0YXRpY3MgZnJvbSAnLi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBpbnNlcnRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcblxudmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnO1xudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbnZhciBFbW90aW9uQ2FjaGVDb250ZXh0ID0gLyogI19fUFVSRV9fICovUmVhY3QuY3JlYXRlQ29udGV4dCggLy8gd2UncmUgZG9pbmcgdGhpcyB0byBhdm9pZCBwcmVjb25zdHJ1Y3QncyBkZWFkIGNvZGUgZWxpbWluYXRpb24gaW4gdGhpcyBvbmUgY2FzZVxuLy8gYmVjYXVzZSB0aGlzIG1vZHVsZSBpcyBwcmltYXJpbHkgaW50ZW5kZWQgZm9yIHRoZSBicm93c2VyIGFuZCBub2RlXG4vLyBidXQgaXQncyBhbHNvIHJlcXVpcmVkIGluIHJlYWN0IG5hdGl2ZSBhbmQgc2ltaWxhciBlbnZpcm9ubWVudHMgc29tZXRpbWVzXG4vLyBhbmQgd2UgY291bGQgaGF2ZSBhIHNwZWNpYWwgYnVpbGQganVzdCBmb3IgdGhhdFxuLy8gYnV0IHRoaXMgaXMgbXVjaCBlYXNpZXIgYW5kIHRoZSBuYXRpdmUgcGFja2FnZXNcbi8vIG1pZ2h0IHVzZSBhIGRpZmZlcmVudCB0aGVtZSBjb250ZXh0IGluIHRoZSBmdXR1cmUgYW55d2F5XG50eXBlb2YgSFRNTEVsZW1lbnQgIT09ICd1bmRlZmluZWQnID8gLyogI19fUFVSRV9fICovY3JlYXRlQ2FjaGUoe1xuICBrZXk6ICdjc3MnXG59KSA6IG51bGwpO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBFbW90aW9uQ2FjaGVDb250ZXh0LmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DYWNoZUNvbnRleHQnO1xufVxuXG52YXIgQ2FjaGVQcm92aWRlciA9IEVtb3Rpb25DYWNoZUNvbnRleHQuUHJvdmlkZXI7XG52YXIgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlID0gZnVuY3Rpb24gdXNlRW1vdGlvbkNhY2hlKCkge1xuICByZXR1cm4gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcbn07XG5cbnZhciB3aXRoRW1vdGlvbkNhY2hlID0gZnVuY3Rpb24gd2l0aEVtb3Rpb25DYWNoZShmdW5jKSB7XG4gIC8vICRGbG93Rml4TWVcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9mb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gICAgLy8gdGhlIGNhY2hlIHdpbGwgbmV2ZXIgYmUgbnVsbCBpbiB0aGUgYnJvd3NlclxuICAgIHZhciBjYWNoZSA9IHVzZUNvbnRleHQoRW1vdGlvbkNhY2hlQ29udGV4dCk7XG4gICAgcmV0dXJuIGZ1bmMocHJvcHMsIGNhY2hlLCByZWYpO1xuICB9KTtcbn07XG5cbmlmICghaXNCcm93c2VyKSB7XG4gIHdpdGhFbW90aW9uQ2FjaGUgPSBmdW5jdGlvbiB3aXRoRW1vdGlvbkNhY2hlKGZ1bmMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICB2YXIgY2FjaGUgPSB1c2VDb250ZXh0KEVtb3Rpb25DYWNoZUNvbnRleHQpO1xuXG4gICAgICBpZiAoY2FjaGUgPT09IG51bGwpIHtcbiAgICAgICAgLy8geWVzLCB3ZSdyZSBwb3RlbnRpYWxseSBjcmVhdGluZyB0aGlzIG9uIGV2ZXJ5IHJlbmRlclxuICAgICAgICAvLyBpdCBkb2Vzbid0IGFjdHVhbGx5IG1hdHRlciB0aG91Z2ggc2luY2UgaXQncyBvbmx5IG9uIHRoZSBzZXJ2ZXJcbiAgICAgICAgLy8gc28gdGhlcmUgd2lsbCBvbmx5IGV2ZXJ5IGJlIGEgc2luZ2xlIHJlbmRlclxuICAgICAgICAvLyB0aGF0IGNvdWxkIGNoYW5nZSBpbiB0aGUgZnV0dXJlIGJlY2F1c2Ugb2Ygc3VzcGVuc2UgYW5kIGV0Yy4gYnV0IGZvciBub3csXG4gICAgICAgIC8vIHRoaXMgd29ya3MgYW5kIGkgZG9uJ3Qgd2FudCB0byBvcHRpbWlzZSBmb3IgYSBmdXR1cmUgdGhpbmcgdGhhdCB3ZSBhcmVuJ3Qgc3VyZSBhYm91dFxuICAgICAgICBjYWNoZSA9IGNyZWF0ZUNhY2hlKHtcbiAgICAgICAgICBrZXk6ICdjc3MnXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoRW1vdGlvbkNhY2hlQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgIHZhbHVlOiBjYWNoZVxuICAgICAgICB9LCBmdW5jKHByb3BzLCBjYWNoZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZ1bmMocHJvcHMsIGNhY2hlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufVxuXG52YXIgVGhlbWVDb250ZXh0ID0gLyogI19fUFVSRV9fICovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRoZW1lQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdFbW90aW9uVGhlbWVDb250ZXh0Jztcbn1cblxudmFyIHVzZVRoZW1lID0gZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG59O1xuXG52YXIgZ2V0VGhlbWUgPSBmdW5jdGlvbiBnZXRUaGVtZShvdXRlclRoZW1lLCB0aGVtZSkge1xuICBpZiAodHlwZW9mIHRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIG1lcmdlZFRoZW1lID0gdGhlbWUob3V0ZXJUaGVtZSk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAobWVyZ2VkVGhlbWUgPT0gbnVsbCB8fCB0eXBlb2YgbWVyZ2VkVGhlbWUgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkobWVyZ2VkVGhlbWUpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbVGhlbWVQcm92aWRlcl0gUGxlYXNlIHJldHVybiBhbiBvYmplY3QgZnJvbSB5b3VyIHRoZW1lIGZ1bmN0aW9uLCBpLmUuIHRoZW1lPXsoKSA9PiAoe30pfSEnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2VkVGhlbWU7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAodGhlbWUgPT0gbnVsbCB8fCB0eXBlb2YgdGhlbWUgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkodGhlbWUpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignW1RoZW1lUHJvdmlkZXJdIFBsZWFzZSBtYWtlIHlvdXIgdGhlbWUgcHJvcCBhIHBsYWluIG9iamVjdCcpO1xuICB9XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRlclRoZW1lLCB0aGVtZSk7XG59O1xuXG52YXIgY3JlYXRlQ2FjaGVXaXRoVGhlbWUgPSAvKiAjX19QVVJFX18gKi93ZWFrTWVtb2l6ZShmdW5jdGlvbiAob3V0ZXJUaGVtZSkge1xuICByZXR1cm4gd2Vha01lbW9pemUoZnVuY3Rpb24gKHRoZW1lKSB7XG4gICAgcmV0dXJuIGdldFRoZW1lKG91dGVyVGhlbWUsIHRoZW1lKTtcbiAgfSk7XG59KTtcbnZhciBUaGVtZVByb3ZpZGVyID0gZnVuY3Rpb24gVGhlbWVQcm92aWRlcihwcm9wcykge1xuICB2YXIgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG5cbiAgaWYgKHByb3BzLnRoZW1lICE9PSB0aGVtZSkge1xuICAgIHRoZW1lID0gY3JlYXRlQ2FjaGVXaXRoVGhlbWUodGhlbWUpKHByb3BzLnRoZW1lKTtcbiAgfVxuXG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdGhlbWVcbiAgfSwgcHJvcHMuY2hpbGRyZW4pO1xufTtcbmZ1bmN0aW9uIHdpdGhUaGVtZShDb21wb25lbnQpIHtcbiAgdmFyIGNvbXBvbmVudE5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cbiAgdmFyIHJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihwcm9wcywgcmVmKSB7XG4gICAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgcHJvcHMpKTtcbiAgfTsgLy8gJEZsb3dGaXhNZVxuXG5cbiAgdmFyIFdpdGhUaGVtZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKHJlbmRlcik7XG4gIFdpdGhUaGVtZS5kaXNwbGF5TmFtZSA9IFwiV2l0aFRoZW1lKFwiICsgY29tcG9uZW50TmFtZSArIFwiKVwiO1xuICByZXR1cm4gaG9pc3ROb25SZWFjdFN0YXRpY3MoV2l0aFRoZW1lLCBDb21wb25lbnQpO1xufVxuXG52YXIgZ2V0TGFzdFBhcnQgPSBmdW5jdGlvbiBnZXRMYXN0UGFydChmdW5jdGlvbk5hbWUpIHtcbiAgLy8gVGhlIG1hdGNoIG1heSBiZSBzb21ldGhpbmcgbGlrZSAnT2JqZWN0LmNyZWF0ZUVtb3Rpb25Qcm9wcycgb3JcbiAgLy8gJ0xvYWRlci5wcm90b3R5cGUucmVuZGVyJ1xuICB2YXIgcGFydHMgPSBmdW5jdGlvbk5hbWUuc3BsaXQoJy4nKTtcbiAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xufTtcblxudmFyIGdldEZ1bmN0aW9uTmFtZUZyb21TdGFja1RyYWNlTGluZSA9IGZ1bmN0aW9uIGdldEZ1bmN0aW9uTmFtZUZyb21TdGFja1RyYWNlTGluZShsaW5lKSB7XG4gIC8vIFY4XG4gIHZhciBtYXRjaCA9IC9eXFxzK2F0XFxzKyhbQS1aYS16MC05JC5dKylcXHMvLmV4ZWMobGluZSk7XG4gIGlmIChtYXRjaCkgcmV0dXJuIGdldExhc3RQYXJ0KG1hdGNoWzFdKTsgLy8gU2FmYXJpIC8gRmlyZWZveFxuXG4gIG1hdGNoID0gL14oW0EtWmEtejAtOSQuXSspQC8uZXhlYyhsaW5lKTtcbiAgaWYgKG1hdGNoKSByZXR1cm4gZ2V0TGFzdFBhcnQobWF0Y2hbMV0pO1xuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxudmFyIGludGVybmFsUmVhY3RGdW5jdGlvbk5hbWVzID0gLyogI19fUFVSRV9fICovbmV3IFNldChbJ3JlbmRlcldpdGhIb29rcycsICdwcm9jZXNzQ2hpbGQnLCAnZmluaXNoQ2xhc3NDb21wb25lbnQnLCAncmVuZGVyVG9TdHJpbmcnXSk7IC8vIFRoZXNlIGlkZW50aWZpZXJzIGNvbWUgZnJvbSBlcnJvciBzdGFja3MsIHNvIHRoZXkgaGF2ZSB0byBiZSB2YWxpZCBKU1xuLy8gaWRlbnRpZmllcnMsIHRodXMgd2Ugb25seSBuZWVkIHRvIHJlcGxhY2Ugd2hhdCBpcyBhIHZhbGlkIGNoYXJhY3RlciBmb3IgSlMsXG4vLyBidXQgbm90IGZvciBDU1MuXG5cbnZhciBzYW5pdGl6ZUlkZW50aWZpZXIgPSBmdW5jdGlvbiBzYW5pdGl6ZUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICByZXR1cm4gaWRlbnRpZmllci5yZXBsYWNlKC9cXCQvZywgJy0nKTtcbn07XG5cbnZhciBnZXRMYWJlbEZyb21TdGFja1RyYWNlID0gZnVuY3Rpb24gZ2V0TGFiZWxGcm9tU3RhY2tUcmFjZShzdGFja1RyYWNlKSB7XG4gIGlmICghc3RhY2tUcmFjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdmFyIGxpbmVzID0gc3RhY2tUcmFjZS5zcGxpdCgnXFxuJyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBmdW5jdGlvbk5hbWUgPSBnZXRGdW5jdGlvbk5hbWVGcm9tU3RhY2tUcmFjZUxpbmUobGluZXNbaV0pOyAvLyBUaGUgZmlyc3QgbGluZSBvZiBWOCBzdGFjayB0cmFjZXMgaXMganVzdCBcIkVycm9yXCJcblxuICAgIGlmICghZnVuY3Rpb25OYW1lKSBjb250aW51ZTsgLy8gSWYgd2UgcmVhY2ggb25lIG9mIHRoZXNlLCB3ZSBoYXZlIGdvbmUgdG9vIGZhciBhbmQgc2hvdWxkIHF1aXRcblxuICAgIGlmIChpbnRlcm5hbFJlYWN0RnVuY3Rpb25OYW1lcy5oYXMoZnVuY3Rpb25OYW1lKSkgYnJlYWs7IC8vIFRoZSBjb21wb25lbnQgbmFtZSBpcyB0aGUgZmlyc3QgZnVuY3Rpb24gaW4gdGhlIHN0YWNrIHRoYXQgc3RhcnRzIHdpdGggYW5cbiAgICAvLyB1cHBlcmNhc2UgbGV0dGVyXG5cbiAgICBpZiAoL15bQS1aXS8udGVzdChmdW5jdGlvbk5hbWUpKSByZXR1cm4gc2FuaXRpemVJZGVudGlmaWVyKGZ1bmN0aW9uTmFtZSk7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxudmFyIHR5cGVQcm9wTmFtZSA9ICdfX0VNT1RJT05fVFlQRV9QTEVBU0VfRE9fTk9UX1VTRV9fJztcbnZhciBsYWJlbFByb3BOYW1lID0gJ19fRU1PVElPTl9MQUJFTF9QTEVBU0VfRE9fTk9UX1VTRV9fJztcbnZhciBjcmVhdGVFbW90aW9uUHJvcHMgPSBmdW5jdGlvbiBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIHByb3BzLmNzcyA9PT0gJ3N0cmluZycgJiYgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYSBjc3MgZGVjbGFyYXRpb25cbiAgcHJvcHMuY3NzLmluZGV4T2YoJzonKSAhPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTdHJpbmdzIGFyZSBub3QgYWxsb3dlZCBhcyBjc3MgcHJvcCB2YWx1ZXMsIHBsZWFzZSB3cmFwIGl0IGluIGEgY3NzIHRlbXBsYXRlIGxpdGVyYWwgZnJvbSAnQGVtb3Rpb24vcmVhY3QnIGxpa2UgdGhpczogY3NzYFwiICsgcHJvcHMuY3NzICsgXCJgXCIpO1xuICB9XG5cbiAgdmFyIG5ld1Byb3BzID0ge307XG5cbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIGtleSkpIHtcbiAgICAgIG5ld1Byb3BzW2tleV0gPSBwcm9wc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIG5ld1Byb3BzW3R5cGVQcm9wTmFtZV0gPSB0eXBlOyAvLyBGb3IgcGVyZm9ybWFuY2UsIG9ubHkgY2FsbCBnZXRMYWJlbEZyb21TdGFja1RyYWNlIGluIGRldmVsb3BtZW50IGFuZCB3aGVuXG4gIC8vIHRoZSBsYWJlbCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGNvbXB1dGVkXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgISFwcm9wcy5jc3MgJiYgKHR5cGVvZiBwcm9wcy5jc3MgIT09ICdvYmplY3QnIHx8IHR5cGVvZiBwcm9wcy5jc3MubmFtZSAhPT0gJ3N0cmluZycgfHwgcHJvcHMuY3NzLm5hbWUuaW5kZXhPZignLScpID09PSAtMSkpIHtcbiAgICB2YXIgbGFiZWwgPSBnZXRMYWJlbEZyb21TdGFja1RyYWNlKG5ldyBFcnJvcigpLnN0YWNrKTtcbiAgICBpZiAobGFiZWwpIG5ld1Byb3BzW2xhYmVsUHJvcE5hbWVdID0gbGFiZWw7XG4gIH1cblxuICByZXR1cm4gbmV3UHJvcHM7XG59O1xuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWQgPSBfcmVmLnNlcmlhbGl6ZWQsXG4gICAgICBpc1N0cmluZ1RhZyA9IF9yZWYuaXNTdHJpbmdUYWc7XG4gIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgRW1vdGlvbiA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSwgcmVmKSB7XG4gIHZhciBjc3NQcm9wID0gcHJvcHMuY3NzOyAvLyBzbyB0aGF0IHVzaW5nIGBjc3NgIGZyb20gYGVtb3Rpb25gIGFuZCBwYXNzaW5nIHRoZSByZXN1bHQgdG8gdGhlIGNzcyBwcm9wIHdvcmtzXG4gIC8vIG5vdCBwYXNzaW5nIHRoZSByZWdpc3RlcmVkIGNhY2hlIHRvIHNlcmlhbGl6ZVN0eWxlcyBiZWNhdXNlIGl0IHdvdWxkXG4gIC8vIG1ha2UgY2VydGFpbiBiYWJlbCBvcHRpbWlzYXRpb25zIG5vdCBwb3NzaWJsZVxuXG4gIGlmICh0eXBlb2YgY3NzUHJvcCA9PT0gJ3N0cmluZycgJiYgY2FjaGUucmVnaXN0ZXJlZFtjc3NQcm9wXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY3NzUHJvcCA9IGNhY2hlLnJlZ2lzdGVyZWRbY3NzUHJvcF07XG4gIH1cblxuICB2YXIgV3JhcHBlZENvbXBvbmVudCA9IHByb3BzW3R5cGVQcm9wTmFtZV07XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW2Nzc1Byb3BdO1xuICB2YXIgY2xhc3NOYW1lID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBwcm9wcy5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgY2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhjYWNoZS5yZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBwcm9wcy5jbGFzc05hbWUpO1xuICB9IGVsc2UgaWYgKHByb3BzLmNsYXNzTmFtZSAhPSBudWxsKSB7XG4gICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lICsgXCIgXCI7XG4gIH1cblxuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhyZWdpc3RlcmVkU3R5bGVzLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc2VyaWFsaXplZC5uYW1lLmluZGV4T2YoJy0nKSA9PT0gLTEpIHtcbiAgICB2YXIgbGFiZWxGcm9tU3RhY2sgPSBwcm9wc1tsYWJlbFByb3BOYW1lXTtcblxuICAgIGlmIChsYWJlbEZyb21TdGFjaykge1xuICAgICAgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhbc2VyaWFsaXplZCwgJ2xhYmVsOicgKyBsYWJlbEZyb21TdGFjayArICc7J10pO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzTmFtZSArPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgdmFyIG5ld1Byb3BzID0ge307XG5cbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwocHJvcHMsIGtleSkgJiYga2V5ICE9PSAnY3NzJyAmJiBrZXkgIT09IHR5cGVQcm9wTmFtZSAmJiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJyB8fCBrZXkgIT09IGxhYmVsUHJvcE5hbWUpKSB7XG4gICAgICBuZXdQcm9wc1trZXldID0gcHJvcHNba2V5XTtcbiAgICB9XG4gIH1cblxuICBuZXdQcm9wcy5yZWYgPSByZWY7XG4gIG5ld1Byb3BzLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZDogc2VyaWFsaXplZCxcbiAgICBpc1N0cmluZ1RhZzogdHlwZW9mIFdyYXBwZWRDb21wb25lbnQgPT09ICdzdHJpbmcnXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVkQ29tcG9uZW50LCBuZXdQcm9wcykpO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEVtb3Rpb24uZGlzcGxheU5hbWUgPSAnRW1vdGlvbkNzc1Byb3BJbnRlcm5hbCc7XG59XG5cbnZhciBFbW90aW9uJDEgPSBFbW90aW9uO1xuXG5leHBvcnQgeyBDYWNoZVByb3ZpZGVyIGFzIEMsIEVtb3Rpb24kMSBhcyBFLCBUaGVtZUNvbnRleHQgYXMgVCwgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlIGFzIF8sIFRoZW1lUHJvdmlkZXIgYXMgYSwgd2l0aFRoZW1lIGFzIGIsIGNyZWF0ZUVtb3Rpb25Qcm9wcyBhcyBjLCBoYXNPd25Qcm9wZXJ0eSBhcyBoLCBpc0Jyb3dzZXIgYXMgaSwgdXNlVGhlbWUgYXMgdSwgd2l0aEVtb3Rpb25DYWNoZSBhcyB3IH07XG4iLCJ2YXIgdW5pdGxlc3NLZXlzID0ge1xuICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSxcbiAgYXNwZWN0UmF0aW86IDEsXG4gIGJvcmRlckltYWdlT3V0c2V0OiAxLFxuICBib3JkZXJJbWFnZVNsaWNlOiAxLFxuICBib3JkZXJJbWFnZVdpZHRoOiAxLFxuICBib3hGbGV4OiAxLFxuICBib3hGbGV4R3JvdXA6IDEsXG4gIGJveE9yZGluYWxHcm91cDogMSxcbiAgY29sdW1uQ291bnQ6IDEsXG4gIGNvbHVtbnM6IDEsXG4gIGZsZXg6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4UG9zaXRpdmU6IDEsXG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhOZWdhdGl2ZTogMSxcbiAgZmxleE9yZGVyOiAxLFxuICBncmlkUm93OiAxLFxuICBncmlkUm93RW5kOiAxLFxuICBncmlkUm93U3BhbjogMSxcbiAgZ3JpZFJvd1N0YXJ0OiAxLFxuICBncmlkQ29sdW1uOiAxLFxuICBncmlkQ29sdW1uRW5kOiAxLFxuICBncmlkQ29sdW1uU3BhbjogMSxcbiAgZ3JpZENvbHVtblN0YXJ0OiAxLFxuICBtc0dyaWRSb3c6IDEsXG4gIG1zR3JpZFJvd1NwYW46IDEsXG4gIG1zR3JpZENvbHVtbjogMSxcbiAgbXNHcmlkQ29sdW1uU3BhbjogMSxcbiAgZm9udFdlaWdodDogMSxcbiAgbGluZUhlaWdodDogMSxcbiAgb3BhY2l0eTogMSxcbiAgb3JkZXI6IDEsXG4gIG9ycGhhbnM6IDEsXG4gIHRhYlNpemU6IDEsXG4gIHdpZG93czogMSxcbiAgekluZGV4OiAxLFxuICB6b29tOiAxLFxuICBXZWJraXRMaW5lQ2xhbXA6IDEsXG4gIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIGZsb29kT3BhY2l0eTogMSxcbiAgc3RvcE9wYWNpdHk6IDEsXG4gIHN0cm9rZURhc2hhcnJheTogMSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMSxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDogMSxcbiAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgc3Ryb2tlV2lkdGg6IDFcbn07XG5cbmV4cG9ydCB7IHVuaXRsZXNzS2V5cyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgaGFzaFN0cmluZyBmcm9tICdAZW1vdGlvbi9oYXNoJztcbmltcG9ydCB1bml0bGVzcyBmcm9tICdAZW1vdGlvbi91bml0bGVzcyc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIElMTEVHQUxfRVNDQVBFX1NFUVVFTkNFX0VSUk9SID0gXCJZb3UgaGF2ZSBpbGxlZ2FsIGVzY2FwZSBzZXF1ZW5jZSBpbiB5b3VyIHRlbXBsYXRlIGxpdGVyYWwsIG1vc3QgbGlrZWx5IGluc2lkZSBjb250ZW50J3MgcHJvcGVydHkgdmFsdWUuXFxuQmVjYXVzZSB5b3Ugd3JpdGUgeW91ciBDU1MgaW5zaWRlIGEgSmF2YVNjcmlwdCBzdHJpbmcgeW91IGFjdHVhbGx5IGhhdmUgdG8gZG8gZG91YmxlIGVzY2FwaW5nLCBzbyBmb3IgZXhhbXBsZSBcXFwiY29udGVudDogJ1xcXFwwMGQ3JztcXFwiIHNob3VsZCBiZWNvbWUgXFxcImNvbnRlbnQ6ICdcXFxcXFxcXDAwZDcnO1xcXCIuXFxuWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBoZXJlOlxcbmh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL1RlbXBsYXRlX2xpdGVyYWxzI0VTMjAxOF9yZXZpc2lvbl9vZl9pbGxlZ2FsX2VzY2FwZV9zZXF1ZW5jZXNcIjtcbnZhciBVTkRFRklORURfQVNfT0JKRUNUX0tFWV9FUlJPUiA9IFwiWW91IGhhdmUgcGFzc2VkIGluIGZhbHN5IHZhbHVlIGFzIHN0eWxlIG9iamVjdCdzIGtleSAoY2FuIGhhcHBlbiB3aGVuIGluIGV4YW1wbGUgeW91IHBhc3MgdW5leHBvcnRlZCBjb21wb25lbnQgYXMgY29tcHV0ZWQga2V5KS5cIjtcbnZhciBoeXBoZW5hdGVSZWdleCA9IC9bQS1aXXxebXMvZztcbnZhciBhbmltYXRpb25SZWdleCA9IC9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nO1xuXG52YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IGZ1bmN0aW9uIGlzQ3VzdG9tUHJvcGVydHkocHJvcGVydHkpIHtcbiAgcmV0dXJuIHByb3BlcnR5LmNoYXJDb2RlQXQoMSkgPT09IDQ1O1xufTtcblxudmFyIGlzUHJvY2Vzc2FibGVWYWx1ZSA9IGZ1bmN0aW9uIGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJztcbn07XG5cbnZhciBwcm9jZXNzU3R5bGVOYW1lID0gLyogI19fUFVSRV9fICovbWVtb2l6ZShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVybiBpc0N1c3RvbVByb3BlcnR5KHN0eWxlTmFtZSkgPyBzdHlsZU5hbWUgOiBzdHlsZU5hbWUucmVwbGFjZShoeXBoZW5hdGVSZWdleCwgJy0kJicpLnRvTG93ZXJDYXNlKCk7XG59KTtcblxudmFyIHByb2Nlc3NTdHlsZVZhbHVlID0gZnVuY3Rpb24gcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZSkge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoYW5pbWF0aW9uUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCwgcDEsIHAyKSB7XG4gICAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHAxLFxuICAgICAgICAgICAgICBzdHlsZXM6IHAyLFxuICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGlmICh1bml0bGVzc1trZXldICE9PSAxICYmICFpc0N1c3RvbVByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgY29udGVudFZhbHVlUGF0dGVybiA9IC8odmFyfGF0dHJ8Y291bnRlcnM/fHVybHxlbGVtZW50fCgoKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsKSl8Y29uaWMpLWdyYWRpZW50KVxcKHwobm8tKT8ob3BlbnxjbG9zZSktcXVvdGUvO1xuICB2YXIgY29udGVudFZhbHVlcyA9IFsnbm9ybWFsJywgJ25vbmUnLCAnaW5pdGlhbCcsICdpbmhlcml0JywgJ3Vuc2V0J107XG4gIHZhciBvbGRQcm9jZXNzU3R5bGVWYWx1ZSA9IHByb2Nlc3NTdHlsZVZhbHVlO1xuICB2YXIgbXNQYXR0ZXJuID0gL14tbXMtLztcbiAgdmFyIGh5cGhlblBhdHRlcm4gPSAvLSguKS9nO1xuICB2YXIgaHlwaGVuYXRlZENhY2hlID0ge307XG5cbiAgcHJvY2Vzc1N0eWxlVmFsdWUgPSBmdW5jdGlvbiBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCBjb250ZW50VmFsdWVzLmluZGV4T2YodmFsdWUpID09PSAtMSAmJiAhY29udGVudFZhbHVlUGF0dGVybi50ZXN0KHZhbHVlKSAmJiAodmFsdWUuY2hhckF0KDApICE9PSB2YWx1ZS5jaGFyQXQodmFsdWUubGVuZ3RoIC0gMSkgfHwgdmFsdWUuY2hhckF0KDApICE9PSAnXCInICYmIHZhbHVlLmNoYXJBdCgwKSAhPT0gXCInXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBzZWVtIHRvIGJlIHVzaW5nIGEgdmFsdWUgZm9yICdjb250ZW50JyB3aXRob3V0IHF1b3RlcywgdHJ5IHJlcGxhY2luZyBpdCB3aXRoIGBjb250ZW50OiAnXFxcIlwiICsgdmFsdWUgKyBcIlxcXCInYFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJvY2Vzc2VkID0gb2xkUHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZSk7XG5cbiAgICBpZiAocHJvY2Vzc2VkICE9PSAnJyAmJiAhaXNDdXN0b21Qcm9wZXJ0eShrZXkpICYmIGtleS5pbmRleE9mKCctJykgIT09IC0xICYmIGh5cGhlbmF0ZWRDYWNoZVtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGh5cGhlbmF0ZWRDYWNoZVtrZXldID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJVc2luZyBrZWJhYi1jYXNlIGZvciBjc3MgcHJvcGVydGllcyBpbiBvYmplY3RzIGlzIG5vdCBzdXBwb3J0ZWQuIERpZCB5b3UgbWVhbiBcIiArIGtleS5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpLnJlcGxhY2UoaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKHN0ciwgX2NoYXIpIHtcbiAgICAgICAgcmV0dXJuIF9jaGFyLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KSArIFwiP1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9O1xufVxuXG52YXIgbm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UgPSAnQ29tcG9uZW50IHNlbGVjdG9ycyBjYW4gb25seSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggJyArICdAZW1vdGlvbi9iYWJlbC1wbHVnaW4sIHRoZSBzd2MgRW1vdGlvbiBwbHVnaW4sIG9yIGFub3RoZXIgRW1vdGlvbi1hd2FyZSAnICsgJ2NvbXBpbGVyIHRyYW5zZm9ybS4nO1xuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBpbnRlcnBvbGF0aW9uKSB7XG4gIGlmIChpbnRlcnBvbGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAoaW50ZXJwb2xhdGlvbi5fX2Vtb3Rpb25fc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpbnRlcnBvbGF0aW9uLnRvU3RyaW5nKCkgPT09ICdOT19DT01QT05FTlRfU0VMRUNUT1InKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnRlcnBvbGF0aW9uO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgaW50ZXJwb2xhdGlvbikge1xuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAge1xuICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbi5hbmltID09PSAxKSB7XG4gICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgbmFtZTogaW50ZXJwb2xhdGlvbi5uYW1lLFxuICAgICAgICAgICAgc3R5bGVzOiBpbnRlcnBvbGF0aW9uLnN0eWxlcyxcbiAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGludGVycG9sYXRpb24ubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnRlcnBvbGF0aW9uLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBpbnRlcnBvbGF0aW9uLm5leHQ7XG5cbiAgICAgICAgICBpZiAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBub3QgdGhlIG1vc3QgZWZmaWNpZW50IHRoaW5nIGV2ZXIgYnV0IHRoaXMgaXMgYSBwcmV0dHkgcmFyZSBjYXNlXG4gICAgICAgICAgICAvLyBhbmQgdGhlcmUgd2lsbCBiZSB2ZXJ5IGZldyBpdGVyYXRpb25zIG9mIHRoaXMgZ2VuZXJhbGx5XG4gICAgICAgICAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuZXh0Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBuZXh0LnN0eWxlcyxcbiAgICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc3R5bGVzID0gaW50ZXJwb2xhdGlvbi5zdHlsZXMgKyBcIjtcIjtcblxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGludGVycG9sYXRpb24ubWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0eWxlcyArPSBpbnRlcnBvbGF0aW9uLm1hcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gc3R5bGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0cmluZ0Zyb21PYmplY3QobWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGludGVycG9sYXRpb24pO1xuICAgICAgfVxuXG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAge1xuICAgICAgICBpZiAobWVyZ2VkUHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBwcmV2aW91c0N1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gaW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcyk7XG4gICAgICAgICAgY3Vyc29yID0gcHJldmlvdXNDdXJzb3I7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Z1bmN0aW9ucyB0aGF0IGFyZSBpbnRlcnBvbGF0ZWQgaW4gY3NzIGNhbGxzIHdpbGwgYmUgc3RyaW5naWZpZWQuXFxuJyArICdJZiB5b3Ugd2FudCB0byBoYXZlIGEgY3NzIGNhbGwgYmFzZWQgb24gcHJvcHMsIGNyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGNzcyBjYWxsIGxpa2UgdGhpc1xcbicgKyAnbGV0IGR5bmFtaWNTdHlsZSA9IChwcm9wcykgPT4gY3NzYGNvbG9yOiAke3Byb3BzLmNvbG9yfWBcXG4nICsgJ0l0IGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgd2l0aCBwcm9wcyBvciBpbnRlcnBvbGF0ZWQgaW4gYSBzdHlsZWQgY2FsbCBsaWtlIHRoaXNcXG4nICsgXCJsZXQgU29tZUNvbXBvbmVudCA9IHN0eWxlZCgnZGl2JylgJHtkeW5hbWljU3R5bGV9YFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gW107XG4gICAgICAgIHZhciByZXBsYWNlZCA9IGludGVycG9sYXRpb24ucmVwbGFjZShhbmltYXRpb25SZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBwMSwgcDIpIHtcbiAgICAgICAgICB2YXIgZmFrZVZhck5hbWUgPSBcImFuaW1hdGlvblwiICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgICAgbWF0Y2hlZC5wdXNoKFwiY29uc3QgXCIgKyBmYWtlVmFyTmFtZSArIFwiID0ga2V5ZnJhbWVzYFwiICsgcDIucmVwbGFjZSgvXkBrZXlmcmFtZXMgYW5pbWF0aW9uLVxcdysvLCAnJykgKyBcImBcIik7XG4gICAgICAgICAgcmV0dXJuIFwiJHtcIiArIGZha2VWYXJOYW1lICsgXCJ9XCI7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChtYXRjaGVkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2BrZXlmcmFtZXNgIG91dHB1dCBnb3QgaW50ZXJwb2xhdGVkIGludG8gcGxhaW4gc3RyaW5nLCBwbGVhc2Ugd3JhcCBpdCB3aXRoIGBjc3NgLlxcblxcbicgKyAnSW5zdGVhZCBvZiBkb2luZyB0aGlzOlxcblxcbicgKyBbXS5jb25jYXQobWF0Y2hlZCwgW1wiYFwiICsgcmVwbGFjZWQgKyBcImBcIl0pLmpvaW4oJ1xcbicpICsgJ1xcblxcbllvdSBzaG91bGQgd3JhcCBpdCB3aXRoIGBjc3NgIGxpa2UgdGhpczpcXG5cXG4nICsgKFwiY3NzYFwiICsgcmVwbGFjZWQgKyBcImBcIikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICB9IC8vIGZpbmFsaXplIHN0cmluZyB2YWx1ZXMgKHJlZ3VsYXIgc3RyaW5ncyBhbmQgZnVuY3Rpb25zIGludGVycG9sYXRlZCBpbnRvIGNzcyBjYWxscylcblxuXG4gIGlmIChyZWdpc3RlcmVkID09IG51bGwpIHtcbiAgICByZXR1cm4gaW50ZXJwb2xhdGlvbjtcbiAgfVxuXG4gIHZhciBjYWNoZWQgPSByZWdpc3RlcmVkW2ludGVycG9sYXRpb25dO1xuICByZXR1cm4gY2FjaGVkICE9PSB1bmRlZmluZWQgPyBjYWNoZWQgOiBpbnRlcnBvbGF0aW9uO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdGcm9tT2JqZWN0KG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBvYmopIHtcbiAgdmFyIHN0cmluZyA9ICcnO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgc3RyaW5nICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIG9ialtpXSkgKyBcIjtcIjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgX2tleSBpbiBvYmopIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtfa2V5XTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQgIT0gbnVsbCAmJiByZWdpc3RlcmVkW3ZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3RyaW5nICs9IF9rZXkgKyBcIntcIiArIHJlZ2lzdGVyZWRbdmFsdWVdICsgXCJ9XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlKSkge1xuICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKF9rZXkpICsgXCI6XCIgKyBwcm9jZXNzU3R5bGVWYWx1ZShfa2V5LCB2YWx1ZSkgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKF9rZXkgPT09ICdOT19DT01QT05FTlRfU0VMRUNUT1InICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHR5cGVvZiB2YWx1ZVswXSA9PT0gJ3N0cmluZycgJiYgKHJlZ2lzdGVyZWQgPT0gbnVsbCB8fCByZWdpc3RlcmVkW3ZhbHVlWzBdXSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB2YWx1ZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGlmIChpc1Byb2Nlc3NhYmxlVmFsdWUodmFsdWVbX2ldKSkge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShfa2V5KSArIFwiOlwiICsgcHJvY2Vzc1N0eWxlVmFsdWUoX2tleSwgdmFsdWVbX2ldKSArIFwiO1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaW50ZXJwb2xhdGVkID0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgdmFsdWUpO1xuXG4gICAgICAgICAgc3dpdGNoIChfa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdhbmltYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShfa2V5KSArIFwiOlwiICsgaW50ZXJwb2xhdGVkICsgXCI7XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIF9rZXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFVOREVGSU5FRF9BU19PQkpFQ1RfS0VZX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gX2tleSArIFwie1wiICsgaW50ZXJwb2xhdGVkICsgXCJ9XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG52YXIgbGFiZWxQYXR0ZXJuID0gL2xhYmVsOlxccyooW15cXHM7XFxue10rKVxccyooO3wkKS9nO1xudmFyIHNvdXJjZU1hcFBhdHRlcm47XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHNvdXJjZU1hcFBhdHRlcm4gPSAvXFwvXFwqI1xcc3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvblxcL2pzb247XFxTK1xccytcXCpcXC8vZztcbn0gLy8gdGhpcyBpcyB0aGUgY3Vyc29yIGZvciBrZXlmcmFtZXNcbi8vIGtleWZyYW1lcyBhcmUgc3RvcmVkIG9uIHRoZSBTZXJpYWxpemVkU3R5bGVzIG9iamVjdCBhcyBhIGxpbmtlZCBsaXN0XG5cblxudmFyIGN1cnNvcjtcbnZhciBzZXJpYWxpemVTdHlsZXMgPSBmdW5jdGlvbiBzZXJpYWxpemVTdHlsZXMoYXJncywgcmVnaXN0ZXJlZCwgbWVyZ2VkUHJvcHMpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyAmJiBhcmdzWzBdICE9PSBudWxsICYmIGFyZ3NbMF0uc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYXJnc1swXTtcbiAgfVxuXG4gIHZhciBzdHJpbmdNb2RlID0gdHJ1ZTtcbiAgdmFyIHN0eWxlcyA9ICcnO1xuICBjdXJzb3IgPSB1bmRlZmluZWQ7XG4gIHZhciBzdHJpbmdzID0gYXJnc1swXTtcblxuICBpZiAoc3RyaW5ncyA9PSBudWxsIHx8IHN0cmluZ3MucmF3ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdHJpbmdNb2RlID0gZmFsc2U7XG4gICAgc3R5bGVzICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHN0cmluZ3MpO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0cmluZ3NbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihJTExFR0FMX0VTQ0FQRV9TRVFVRU5DRV9FUlJPUik7XG4gICAgfVxuXG4gICAgc3R5bGVzICs9IHN0cmluZ3NbMF07XG4gIH0gLy8gd2Ugc3RhcnQgYXQgMSBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIGZpcnN0IGFyZ1xuXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgc3R5bGVzICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGFyZ3NbaV0pO1xuXG4gICAgaWYgKHN0cmluZ01vZGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0cmluZ3NbaV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKElMTEVHQUxfRVNDQVBFX1NFUVVFTkNFX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgc3R5bGVzICs9IHN0cmluZ3NbaV07XG4gICAgfVxuICB9XG5cbiAgdmFyIHNvdXJjZU1hcDtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKHNvdXJjZU1hcFBhdHRlcm4sIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgc291cmNlTWFwID0gbWF0Y2g7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSk7XG4gIH0gLy8gdXNpbmcgYSBnbG9iYWwgcmVnZXggd2l0aCAuZXhlYyBpcyBzdGF0ZWZ1bCBzbyBsYXN0SW5kZXggaGFzIHRvIGJlIHJlc2V0IGVhY2ggdGltZVxuXG5cbiAgbGFiZWxQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gIHZhciBpZGVudGlmaWVyTmFtZSA9ICcnO1xuICB2YXIgbWF0Y2g7IC8vIGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNWI4MDljMmNmMjk0OTgwMGEwZjYxZmI1XG5cbiAgd2hpbGUgKChtYXRjaCA9IGxhYmVsUGF0dGVybi5leGVjKHN0eWxlcykpICE9PSBudWxsKSB7XG4gICAgaWRlbnRpZmllck5hbWUgKz0gJy0nICsgLy8gJEZsb3dGaXhNZSB3ZSBrbm93IGl0J3Mgbm90IG51bGxcbiAgICBtYXRjaFsxXTtcbiAgfVxuXG4gIHZhciBuYW1lID0gaGFzaFN0cmluZyhzdHlsZXMpICsgaWRlbnRpZmllck5hbWU7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyAkRmxvd0ZpeE1lIFNlcmlhbGl6ZWRTdHlsZXMgdHlwZSBkb2Vzbid0IGhhdmUgdG9TdHJpbmcgcHJvcGVydHkgKGFuZCB3ZSBkb24ndCB3YW50IHRvIGFkZCBpdClcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgbWFwOiBzb3VyY2VNYXAsXG4gICAgICBuZXh0OiBjdXJzb3IsXG4gICAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogc3R5bGVzLFxuICAgIG5leHQ6IGN1cnNvclxuICB9O1xufTtcblxuZXhwb3J0IHsgc2VyaWFsaXplU3R5bGVzIH07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2dhcnljb3VydC9tdXJtdXJoYXNoLWpzXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWFwcGxlYnkvc21oYXNoZXIvYmxvYi82MWEwNTMwZjI4Mjc3ZjJlODUwYmZjMzk2MDBjZTYxZDAyYjUxOGRlL3NyYy9NdXJtdXJIYXNoMi5jcHAjTDM3LUw4NlxuZnVuY3Rpb24gbXVybXVyMihzdHIpIHtcbiAgLy8gJ20nIGFuZCAncicgYXJlIG1peGluZyBjb25zdGFudHMgZ2VuZXJhdGVkIG9mZmxpbmUuXG4gIC8vIFRoZXkncmUgbm90IHJlYWxseSAnbWFnaWMnLCB0aGV5IGp1c3QgaGFwcGVuIHRvIHdvcmsgd2VsbC5cbiAgLy8gY29uc3QgbSA9IDB4NWJkMWU5OTU7XG4gIC8vIGNvbnN0IHIgPSAyNDtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGFzaFxuICB2YXIgaCA9IDA7IC8vIE1peCA0IGJ5dGVzIGF0IGEgdGltZSBpbnRvIHRoZSBoYXNoXG5cbiAgdmFyIGssXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgZm9yICg7IGxlbiA+PSA0OyArK2ksIGxlbiAtPSA0KSB7XG4gICAgayA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZiB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgOCB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgMTYgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDI0O1xuICAgIGsgPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICAgIGsgXj1cbiAgICAvKiBrID4+PiByOiAqL1xuICAgIGsgPj4+IDI0O1xuICAgIGggPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpIF5cbiAgICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBIYW5kbGUgdGhlIGxhc3QgZmV3IGJ5dGVzIG9mIHRoZSBpbnB1dCBhcnJheVxuXG5cbiAgc3dpdGNoIChsZW4pIHtcbiAgICBjYXNlIDM6XG4gICAgICBoIF49IChzdHIuY2hhckNvZGVBdChpICsgMikgJiAweGZmKSA8PCAxNjtcblxuICAgIGNhc2UgMjpcbiAgICAgIGggXj0gKHN0ci5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4ZmYpIDw8IDg7XG5cbiAgICBjYXNlIDE6XG4gICAgICBoIF49IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZjtcbiAgICAgIGggPVxuICAgICAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAgICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBEbyBhIGZldyBmaW5hbCBtaXhlcyBvZiB0aGUgaGFzaCB0byBlbnN1cmUgdGhlIGxhc3QgZmV3XG4gIC8vIGJ5dGVzIGFyZSB3ZWxsLWluY29ycG9yYXRlZC5cblxuXG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPVxuICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIHJldHVybiAoKGggXiBoID4+PiAxNSkgPj4+IDApLnRvU3RyaW5nKDM2KTtcbn1cblxuZXhwb3J0IHsgbXVybXVyMiBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbnZhciBzeW5jRmFsbGJhY2sgPSBmdW5jdGlvbiBzeW5jRmFsbGJhY2soY3JlYXRlKSB7XG4gIHJldHVybiBjcmVhdGUoKTtcbn07XG5cbnZhciB1c2VJbnNlcnRpb25FZmZlY3QgPSBSZWFjdFsndXNlSW5zZXJ0aW9uJyArICdFZmZlY3QnXSA/IFJlYWN0Wyd1c2VJbnNlcnRpb24nICsgJ0VmZmVjdCddIDogZmFsc2U7XG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCBzeW5jRmFsbGJhY2s7XG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrID0gdXNlSW5zZXJ0aW9uRWZmZWN0IHx8IFJlYWN0LnVzZUxheW91dEVmZmVjdDtcblxuZXhwb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrIH07XG4iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBtZXJnZSBmcm9tICcuL21lcmdlJztcblxuLy8gVGhlIGJyZWFrcG9pbnQgKipzdGFydCoqIGF0IHRoaXMgdmFsdWUuXG4vLyBGb3IgaW5zdGFuY2Ugd2l0aCB0aGUgZmlyc3QgYnJlYWtwb2ludCB4czogW3hzLCBzbVsuXG5leHBvcnQgY29uc3QgdmFsdWVzID0ge1xuICB4czogMCxcbiAgLy8gcGhvbmVcbiAgc206IDYwMCxcbiAgLy8gdGFibGV0XG4gIG1kOiA5MDAsXG4gIC8vIHNtYWxsIGxhcHRvcFxuICBsZzogMTIwMCxcbiAgLy8gZGVza3RvcFxuICB4bDogMTUzNiAvLyBsYXJnZSBzY3JlZW5cbn07XG5cbmNvbnN0IGRlZmF1bHRCcmVha3BvaW50cyA9IHtcbiAgLy8gU29ydGVkIEFTQyBieSBzaXplLiBUaGF0J3MgaW1wb3J0YW50LlxuICAvLyBJdCBjYW4ndCBiZSBjb25maWd1cmVkIGFzIGl0J3MgdXNlZCBzdGF0aWNhbGx5IGZvciBwcm9wVHlwZXMuXG4gIGtleXM6IFsneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnXSxcbiAgdXA6IGtleSA9PiBgQG1lZGlhIChtaW4td2lkdGg6JHt2YWx1ZXNba2V5XX1weClgXG59O1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCBwcm9wVmFsdWUsIHN0eWxlRnJvbVByb3BWYWx1ZSkge1xuICBjb25zdCB0aGVtZSA9IHByb3BzLnRoZW1lIHx8IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgY29uc3QgdGhlbWVCcmVha3BvaW50cyA9IHRoZW1lLmJyZWFrcG9pbnRzIHx8IGRlZmF1bHRCcmVha3BvaW50cztcbiAgICByZXR1cm4gcHJvcFZhbHVlLnJlZHVjZSgoYWNjLCBpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgYWNjW3RoZW1lQnJlYWtwb2ludHMudXAodGhlbWVCcmVha3BvaW50cy5rZXlzW2luZGV4XSldID0gc3R5bGVGcm9tUHJvcFZhbHVlKHByb3BWYWx1ZVtpbmRleF0pO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgY29uc3QgdGhlbWVCcmVha3BvaW50cyA9IHRoZW1lLmJyZWFrcG9pbnRzIHx8IGRlZmF1bHRCcmVha3BvaW50cztcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocHJvcFZhbHVlKS5yZWR1Y2UoKGFjYywgYnJlYWtwb2ludCkgPT4ge1xuICAgICAgLy8ga2V5IGlzIGJyZWFrcG9pbnRcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGVtZUJyZWFrcG9pbnRzLnZhbHVlcyB8fCB2YWx1ZXMpLmluZGV4T2YoYnJlYWtwb2ludCkgIT09IC0xKSB7XG4gICAgICAgIGNvbnN0IG1lZGlhS2V5ID0gdGhlbWVCcmVha3BvaW50cy51cChicmVha3BvaW50KTtcbiAgICAgICAgYWNjW21lZGlhS2V5XSA9IHN0eWxlRnJvbVByb3BWYWx1ZShwcm9wVmFsdWVbYnJlYWtwb2ludF0sIGJyZWFrcG9pbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY3NzS2V5ID0gYnJlYWtwb2ludDtcbiAgICAgICAgYWNjW2Nzc0tleV0gPSBwcm9wVmFsdWVbY3NzS2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHN0eWxlRnJvbVByb3BWYWx1ZShwcm9wVmFsdWUpO1xuICByZXR1cm4gb3V0cHV0O1xufVxuZnVuY3Rpb24gYnJlYWtwb2ludHMoc3R5bGVGdW5jdGlvbikge1xuICAvLyBmYWxzZSBwb3NpdGl2ZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb25cbiAgY29uc3QgbmV3U3R5bGVGdW5jdGlvbiA9IHByb3BzID0+IHtcbiAgICBjb25zdCB0aGVtZSA9IHByb3BzLnRoZW1lIHx8IHt9O1xuICAgIGNvbnN0IGJhc2UgPSBzdHlsZUZ1bmN0aW9uKHByb3BzKTtcbiAgICBjb25zdCB0aGVtZUJyZWFrcG9pbnRzID0gdGhlbWUuYnJlYWtwb2ludHMgfHwgZGVmYXVsdEJyZWFrcG9pbnRzO1xuICAgIGNvbnN0IGV4dGVuZGVkID0gdGhlbWVCcmVha3BvaW50cy5rZXlzLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGlmIChwcm9wc1trZXldKSB7XG4gICAgICAgIGFjYyA9IGFjYyB8fCB7fTtcbiAgICAgICAgYWNjW3RoZW1lQnJlYWtwb2ludHMudXAoa2V5KV0gPSBzdHlsZUZ1bmN0aW9uKF9leHRlbmRzKHtcbiAgICAgICAgICB0aGVtZVxuICAgICAgICB9LCBwcm9wc1trZXldKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIG51bGwpO1xuICAgIHJldHVybiBtZXJnZShiYXNlLCBleHRlbmRlZCk7XG4gIH07XG4gIG5ld1N0eWxlRnVuY3Rpb24ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IF9leHRlbmRzKHt9LCBzdHlsZUZ1bmN0aW9uLnByb3BUeXBlcywge1xuICAgIHhzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNtOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG1kOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHhsOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pIDoge307XG4gIG5ld1N0eWxlRnVuY3Rpb24uZmlsdGVyUHJvcHMgPSBbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJywgLi4uc3R5bGVGdW5jdGlvbi5maWx0ZXJQcm9wc107XG4gIHJldHVybiBuZXdTdHlsZUZ1bmN0aW9uO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVtcHR5QnJlYWtwb2ludE9iamVjdChicmVha3BvaW50c0lucHV0ID0ge30pIHtcbiAgdmFyIF9icmVha3BvaW50c0lucHV0JGtleTtcbiAgY29uc3QgYnJlYWtwb2ludHNJbk9yZGVyID0gKF9icmVha3BvaW50c0lucHV0JGtleSA9IGJyZWFrcG9pbnRzSW5wdXQua2V5cykgPT0gbnVsbCA/IHZvaWQgMCA6IF9icmVha3BvaW50c0lucHV0JGtleS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgY29uc3QgYnJlYWtwb2ludFN0eWxlS2V5ID0gYnJlYWtwb2ludHNJbnB1dC51cChrZXkpO1xuICAgIGFjY1ticmVha3BvaW50U3R5bGVLZXldID0ge307XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gYnJlYWtwb2ludHNJbk9yZGVyIHx8IHt9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVVudXNlZEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRLZXlzLCBzdHlsZSkge1xuICByZXR1cm4gYnJlYWtwb2ludEtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgIGNvbnN0IGJyZWFrcG9pbnRPdXRwdXQgPSBhY2Nba2V5XTtcbiAgICBjb25zdCBpc0JyZWFrcG9pbnRVbnVzZWQgPSAhYnJlYWtwb2ludE91dHB1dCB8fCBPYmplY3Qua2V5cyhicmVha3BvaW50T3V0cHV0KS5sZW5ndGggPT09IDA7XG4gICAgaWYgKGlzQnJlYWtwb2ludFVudXNlZCkge1xuICAgICAgZGVsZXRlIGFjY1trZXldO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCBzdHlsZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VCcmVha3BvaW50c0luT3JkZXIoYnJlYWtwb2ludHNJbnB1dCwgLi4uc3R5bGVzKSB7XG4gIGNvbnN0IGVtcHR5QnJlYWtwb2ludHMgPSBjcmVhdGVFbXB0eUJyZWFrcG9pbnRPYmplY3QoYnJlYWtwb2ludHNJbnB1dCk7XG4gIGNvbnN0IG1lcmdlZE91dHB1dCA9IFtlbXB0eUJyZWFrcG9pbnRzLCAuLi5zdHlsZXNdLnJlZHVjZSgocHJldiwgbmV4dCkgPT4gZGVlcG1lcmdlKHByZXYsIG5leHQpLCB7fSk7XG4gIHJldHVybiByZW1vdmVVbnVzZWRCcmVha3BvaW50cyhPYmplY3Qua2V5cyhlbXB0eUJyZWFrcG9pbnRzKSwgbWVyZ2VkT3V0cHV0KTtcbn1cblxuLy8gY29tcHV0ZSBiYXNlIGZvciByZXNwb25zaXZlIHZhbHVlczsgZS5nLixcbi8vIFsxLDIsM10gPT4ge3hzOiB0cnVlLCBzbTogdHJ1ZSwgbWQ6IHRydWV9XG4vLyB7eHM6IDEsIHNtOiAyLCBtZDogM30gPT4ge3hzOiB0cnVlLCBzbTogdHJ1ZSwgbWQ6IHRydWV9XG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUJyZWFrcG9pbnRzQmFzZShicmVha3BvaW50VmFsdWVzLCB0aGVtZUJyZWFrcG9pbnRzKSB7XG4gIC8vIGZpeGVkIHZhbHVlXG4gIGlmICh0eXBlb2YgYnJlYWtwb2ludFZhbHVlcyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgYmFzZSA9IHt9O1xuICBjb25zdCBicmVha3BvaW50c0tleXMgPSBPYmplY3Qua2V5cyh0aGVtZUJyZWFrcG9pbnRzKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYnJlYWtwb2ludFZhbHVlcykpIHtcbiAgICBicmVha3BvaW50c0tleXMuZm9yRWFjaCgoYnJlYWtwb2ludCwgaSkgPT4ge1xuICAgICAgaWYgKGkgPCBicmVha3BvaW50VmFsdWVzLmxlbmd0aCkge1xuICAgICAgICBiYXNlW2JyZWFrcG9pbnRdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBicmVha3BvaW50c0tleXMuZm9yRWFjaChicmVha3BvaW50ID0+IHtcbiAgICAgIGlmIChicmVha3BvaW50VmFsdWVzW2JyZWFrcG9pbnRdICE9IG51bGwpIHtcbiAgICAgICAgYmFzZVticmVha3BvaW50XSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGJhc2U7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUJyZWFrcG9pbnRWYWx1ZXMoe1xuICB2YWx1ZXM6IGJyZWFrcG9pbnRWYWx1ZXMsXG4gIGJyZWFrcG9pbnRzOiB0aGVtZUJyZWFrcG9pbnRzLFxuICBiYXNlOiBjdXN0b21CYXNlXG59KSB7XG4gIGNvbnN0IGJhc2UgPSBjdXN0b21CYXNlIHx8IGNvbXB1dGVCcmVha3BvaW50c0Jhc2UoYnJlYWtwb2ludFZhbHVlcywgdGhlbWVCcmVha3BvaW50cyk7XG4gIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhiYXNlKTtcbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGJyZWFrcG9pbnRWYWx1ZXM7XG4gIH1cbiAgbGV0IHByZXZpb3VzO1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoKGFjYywgYnJlYWtwb2ludCwgaSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGJyZWFrcG9pbnRWYWx1ZXMpKSB7XG4gICAgICBhY2NbYnJlYWtwb2ludF0gPSBicmVha3BvaW50VmFsdWVzW2ldICE9IG51bGwgPyBicmVha3BvaW50VmFsdWVzW2ldIDogYnJlYWtwb2ludFZhbHVlc1twcmV2aW91c107XG4gICAgICBwcmV2aW91cyA9IGk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYnJlYWtwb2ludFZhbHVlcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGFjY1ticmVha3BvaW50XSA9IGJyZWFrcG9pbnRWYWx1ZXNbYnJlYWtwb2ludF0gIT0gbnVsbCA/IGJyZWFrcG9pbnRWYWx1ZXNbYnJlYWtwb2ludF0gOiBicmVha3BvaW50VmFsdWVzW3ByZXZpb3VzXTtcbiAgICAgIHByZXZpb3VzID0gYnJlYWtwb2ludDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW2JyZWFrcG9pbnRdID0gYnJlYWtwb2ludFZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuZXhwb3J0IGRlZmF1bHQgYnJlYWtwb2ludHM7IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInZhbHVlc1wiLCBcInVuaXRcIiwgXCJzdGVwXCJdO1xuLy8gU29ydGVkIEFTQyBieSBzaXplLiBUaGF0J3MgaW1wb3J0YW50LlxuLy8gSXQgY2FuJ3QgYmUgY29uZmlndXJlZCBhcyBpdCdzIHVzZWQgc3RhdGljYWxseSBmb3IgcHJvcFR5cGVzLlxuZXhwb3J0IGNvbnN0IGJyZWFrcG9pbnRLZXlzID0gWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCddO1xuY29uc3Qgc29ydEJyZWFrcG9pbnRzVmFsdWVzID0gdmFsdWVzID0+IHtcbiAgY29uc3QgYnJlYWtwb2ludHNBc0FycmF5ID0gT2JqZWN0LmtleXModmFsdWVzKS5tYXAoa2V5ID0+ICh7XG4gICAga2V5LFxuICAgIHZhbDogdmFsdWVzW2tleV1cbiAgfSkpIHx8IFtdO1xuICAvLyBTb3J0IGluIGFzY2VuZGluZyBvcmRlclxuICBicmVha3BvaW50c0FzQXJyYXkuc29ydCgoYnJlYWtwb2ludDEsIGJyZWFrcG9pbnQyKSA9PiBicmVha3BvaW50MS52YWwgLSBicmVha3BvaW50Mi52YWwpO1xuICByZXR1cm4gYnJlYWtwb2ludHNBc0FycmF5LnJlZHVjZSgoYWNjLCBvYmopID0+IHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIGFjYywge1xuICAgICAgW29iai5rZXldOiBvYmoudmFsXG4gICAgfSk7XG4gIH0sIHt9KTtcbn07XG5cbi8vIEtlZXAgaW4gbWluZCB0aGF0IEBtZWRpYSBpcyBpbmNsdXNpdmUgYnkgdGhlIENTUyBzcGVjaWZpY2F0aW9uLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpIHtcbiAgY29uc3Qge1xuICAgICAgLy8gVGhlIGJyZWFrcG9pbnQgKipzdGFydCoqIGF0IHRoaXMgdmFsdWUuXG4gICAgICAvLyBGb3IgaW5zdGFuY2Ugd2l0aCB0aGUgZmlyc3QgYnJlYWtwb2ludCB4czogW3hzLCBzbSkuXG4gICAgICB2YWx1ZXMgPSB7XG4gICAgICAgIHhzOiAwLFxuICAgICAgICAvLyBwaG9uZVxuICAgICAgICBzbTogNjAwLFxuICAgICAgICAvLyB0YWJsZXRcbiAgICAgICAgbWQ6IDkwMCxcbiAgICAgICAgLy8gc21hbGwgbGFwdG9wXG4gICAgICAgIGxnOiAxMjAwLFxuICAgICAgICAvLyBkZXNrdG9wXG4gICAgICAgIHhsOiAxNTM2IC8vIGxhcmdlIHNjcmVlblxuICAgICAgfSxcblxuICAgICAgdW5pdCA9ICdweCcsXG4gICAgICBzdGVwID0gNVxuICAgIH0gPSBicmVha3BvaW50cyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGJyZWFrcG9pbnRzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBzb3J0ZWRWYWx1ZXMgPSBzb3J0QnJlYWtwb2ludHNWYWx1ZXModmFsdWVzKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHNvcnRlZFZhbHVlcyk7XG4gIGZ1bmN0aW9uIHVwKGtleSkge1xuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHZhbHVlc1trZXldID09PSAnbnVtYmVyJyA/IHZhbHVlc1trZXldIDoga2V5O1xuICAgIHJldHVybiBgQG1lZGlhIChtaW4td2lkdGg6JHt2YWx1ZX0ke3VuaXR9KWA7XG4gIH1cbiAgZnVuY3Rpb24gZG93bihrZXkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiB2YWx1ZXNba2V5XSA9PT0gJ251bWJlcicgPyB2YWx1ZXNba2V5XSA6IGtleTtcbiAgICByZXR1cm4gYEBtZWRpYSAobWF4LXdpZHRoOiR7dmFsdWUgLSBzdGVwIC8gMTAwfSR7dW5pdH0pYDtcbiAgfVxuICBmdW5jdGlvbiBiZXR3ZWVuKHN0YXJ0LCBlbmQpIHtcbiAgICBjb25zdCBlbmRJbmRleCA9IGtleXMuaW5kZXhPZihlbmQpO1xuICAgIHJldHVybiBgQG1lZGlhIChtaW4td2lkdGg6JHt0eXBlb2YgdmFsdWVzW3N0YXJ0XSA9PT0gJ251bWJlcicgPyB2YWx1ZXNbc3RhcnRdIDogc3RhcnR9JHt1bml0fSkgYW5kIGAgKyBgKG1heC13aWR0aDokeyhlbmRJbmRleCAhPT0gLTEgJiYgdHlwZW9mIHZhbHVlc1trZXlzW2VuZEluZGV4XV0gPT09ICdudW1iZXInID8gdmFsdWVzW2tleXNbZW5kSW5kZXhdXSA6IGVuZCkgLSBzdGVwIC8gMTAwfSR7dW5pdH0pYDtcbiAgfVxuICBmdW5jdGlvbiBvbmx5KGtleSkge1xuICAgIGlmIChrZXlzLmluZGV4T2Yoa2V5KSArIDEgPCBrZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGJldHdlZW4oa2V5LCBrZXlzW2tleXMuaW5kZXhPZihrZXkpICsgMV0pO1xuICAgIH1cbiAgICByZXR1cm4gdXAoa2V5KTtcbiAgfVxuICBmdW5jdGlvbiBub3Qoa2V5KSB7XG4gICAgLy8gaGFuZGxlIGZpcnN0IGFuZCBsYXN0IGtleSBzZXBhcmF0ZWx5LCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5XG4gICAgY29uc3Qga2V5SW5kZXggPSBrZXlzLmluZGV4T2Yoa2V5KTtcbiAgICBpZiAoa2V5SW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiB1cChrZXlzWzFdKTtcbiAgICB9XG4gICAgaWYgKGtleUluZGV4ID09PSBrZXlzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHJldHVybiBkb3duKGtleXNba2V5SW5kZXhdKTtcbiAgICB9XG4gICAgcmV0dXJuIGJldHdlZW4oa2V5LCBrZXlzW2tleXMuaW5kZXhPZihrZXkpICsgMV0pLnJlcGxhY2UoJ0BtZWRpYScsICdAbWVkaWEgbm90IGFsbCBhbmQnKTtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIGtleXMsXG4gICAgdmFsdWVzOiBzb3J0ZWRWYWx1ZXMsXG4gICAgdXAsXG4gICAgZG93bixcbiAgICBiZXR3ZWVuLFxuICAgIG9ubHksXG4gICAgbm90LFxuICAgIHVuaXRcbiAgfSwgb3RoZXIpO1xufSIsImNvbnN0IHNoYXBlID0ge1xuICBib3JkZXJSYWRpdXM6IDRcbn07XG5leHBvcnQgZGVmYXVsdCBzaGFwZTsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYnJlYWtwb2ludHNcIiwgXCJwYWxldHRlXCIsIFwic3BhY2luZ1wiLCBcInNoYXBlXCJdO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgY3JlYXRlQnJlYWtwb2ludHMgZnJvbSAnLi9jcmVhdGVCcmVha3BvaW50cyc7XG5pbXBvcnQgc2hhcGUgZnJvbSAnLi9zaGFwZSc7XG5pbXBvcnQgY3JlYXRlU3BhY2luZyBmcm9tICcuL2NyZWF0ZVNwYWNpbmcnO1xuaW1wb3J0IHN0eWxlRnVuY3Rpb25TeCBmcm9tICcuLi9zdHlsZUZ1bmN0aW9uU3gvc3R5bGVGdW5jdGlvblN4JztcbmltcG9ydCBkZWZhdWx0U3hDb25maWcgZnJvbSAnLi4vc3R5bGVGdW5jdGlvblN4L2RlZmF1bHRTeENvbmZpZyc7XG5mdW5jdGlvbiBjcmVhdGVUaGVtZShvcHRpb25zID0ge30sIC4uLmFyZ3MpIHtcbiAgY29uc3Qge1xuICAgICAgYnJlYWtwb2ludHM6IGJyZWFrcG9pbnRzSW5wdXQgPSB7fSxcbiAgICAgIHBhbGV0dGU6IHBhbGV0dGVJbnB1dCA9IHt9LFxuICAgICAgc3BhY2luZzogc3BhY2luZ0lucHV0LFxuICAgICAgc2hhcGU6IHNoYXBlSW5wdXQgPSB7fVxuICAgIH0gPSBvcHRpb25zLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uob3B0aW9ucywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgYnJlYWtwb2ludHMgPSBjcmVhdGVCcmVha3BvaW50cyhicmVha3BvaW50c0lucHV0KTtcbiAgY29uc3Qgc3BhY2luZyA9IGNyZWF0ZVNwYWNpbmcoc3BhY2luZ0lucHV0KTtcbiAgbGV0IG11aVRoZW1lID0gZGVlcG1lcmdlKHtcbiAgICBicmVha3BvaW50cyxcbiAgICBkaXJlY3Rpb246ICdsdHInLFxuICAgIGNvbXBvbmVudHM6IHt9LFxuICAgIC8vIEluamVjdCBjb21wb25lbnQgZGVmaW5pdGlvbnMuXG4gICAgcGFsZXR0ZTogX2V4dGVuZHMoe1xuICAgICAgbW9kZTogJ2xpZ2h0J1xuICAgIH0sIHBhbGV0dGVJbnB1dCksXG4gICAgc3BhY2luZyxcbiAgICBzaGFwZTogX2V4dGVuZHMoe30sIHNoYXBlLCBzaGFwZUlucHV0KVxuICB9LCBvdGhlcik7XG4gIG11aVRoZW1lID0gYXJncy5yZWR1Y2UoKGFjYywgYXJndW1lbnQpID0+IGRlZXBtZXJnZShhY2MsIGFyZ3VtZW50KSwgbXVpVGhlbWUpO1xuICBtdWlUaGVtZS51bnN0YWJsZV9zeENvbmZpZyA9IF9leHRlbmRzKHt9LCBkZWZhdWx0U3hDb25maWcsIG90aGVyID09IG51bGwgPyB2b2lkIDAgOiBvdGhlci51bnN0YWJsZV9zeENvbmZpZyk7XG4gIG11aVRoZW1lLnVuc3RhYmxlX3N4ID0gZnVuY3Rpb24gc3gocHJvcHMpIHtcbiAgICByZXR1cm4gc3R5bGVGdW5jdGlvblN4KHtcbiAgICAgIHN4OiBwcm9wcyxcbiAgICAgIHRoZW1lOiB0aGlzXG4gICAgfSk7XG4gIH07XG4gIHJldHVybiBtdWlUaGVtZTtcbn1cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVRoZW1lOyIsImltcG9ydCB7IGNyZWF0ZVVuYXJ5U3BhY2luZyB9IGZyb20gJy4uL3NwYWNpbmcnO1xuXG4vLyBUaGUgZGlmZmVyZW50IHNpZ25hdHVyZXMgaW1wbHkgZGlmZmVyZW50IG1lYW5pbmcgZm9yIHRoZWlyIGFyZ3VtZW50cyB0aGF0IGNhbid0IGJlIGV4cHJlc3NlZCBzdHJ1Y3R1cmFsbHkuXG4vLyBXZSBleHByZXNzIHRoZSBkaWZmZXJlbmNlIHdpdGggdmFyaWFibGUgbmFtZXMuXG4vKiB0c2xpbnQ6ZGlzYWJsZTp1bmlmaWVkLXNpZ25hdHVyZXMgKi9cbi8qIHRzbGludDplbmFibGU6dW5pZmllZC1zaWduYXR1cmVzICovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVNwYWNpbmcoc3BhY2luZ0lucHV0ID0gOCkge1xuICAvLyBBbHJlYWR5IHRyYW5zZm9ybWVkLlxuICBpZiAoc3BhY2luZ0lucHV0Lm11aSkge1xuICAgIHJldHVybiBzcGFjaW5nSW5wdXQ7XG4gIH1cblxuICAvLyBNYXRlcmlhbCBEZXNpZ24gbGF5b3V0cyBhcmUgdmlzdWFsbHkgYmFsYW5jZWQuIE1vc3QgbWVhc3VyZW1lbnRzIGFsaWduIHRvIGFuIDhkcCBncmlkLCB3aGljaCBhbGlnbnMgYm90aCBzcGFjaW5nIGFuZCB0aGUgb3ZlcmFsbCBsYXlvdXQuXG4gIC8vIFNtYWxsZXIgY29tcG9uZW50cywgc3VjaCBhcyBpY29ucywgY2FuIGFsaWduIHRvIGEgNGRwIGdyaWQuXG4gIC8vIGh0dHBzOi8vbTIubWF0ZXJpYWwuaW8vZGVzaWduL2xheW91dC91bmRlcnN0YW5kaW5nLWxheW91dC5odG1sXG4gIGNvbnN0IHRyYW5zZm9ybSA9IGNyZWF0ZVVuYXJ5U3BhY2luZyh7XG4gICAgc3BhY2luZzogc3BhY2luZ0lucHV0XG4gIH0pO1xuICBjb25zdCBzcGFjaW5nID0gKC4uLmFyZ3NJbnB1dCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIShhcmdzSW5wdXQubGVuZ3RoIDw9IDQpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYE1VSTogVG9vIG1hbnkgYXJndW1lbnRzIHByb3ZpZGVkLCBleHBlY3RlZCBiZXR3ZWVuIDAgYW5kIDQsIGdvdCAke2FyZ3NJbnB1dC5sZW5ndGh9YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGFyZ3MgPSBhcmdzSW5wdXQubGVuZ3RoID09PSAwID8gWzFdIDogYXJnc0lucHV0O1xuICAgIHJldHVybiBhcmdzLm1hcChhcmd1bWVudCA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSB0cmFuc2Zvcm0oYXJndW1lbnQpO1xuICAgICAgcmV0dXJuIHR5cGVvZiBvdXRwdXQgPT09ICdudW1iZXInID8gYCR7b3V0cHV0fXB4YCA6IG91dHB1dDtcbiAgICB9KS5qb2luKCcgJyk7XG4gIH07XG4gIHNwYWNpbmcubXVpID0gdHJ1ZTtcbiAgcmV0dXJuIHNwYWNpbmc7XG59IiwiaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnQG11aS91dGlscyc7XG5mdW5jdGlvbiBtZXJnZShhY2MsIGl0ZW0pIHtcbiAgaWYgKCFpdGVtKSB7XG4gICAgcmV0dXJuIGFjYztcbiAgfVxuICByZXR1cm4gZGVlcG1lcmdlKGFjYywgaXRlbSwge1xuICAgIGNsb25lOiBmYWxzZSAvLyBObyBuZWVkIHRvIGNsb25lIGRlZXAsIGl0J3Mgd2F5IGZhc3Rlci5cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lcmdlOyIsImltcG9ydCByZXNwb25zaXZlUHJvcFR5cGUgZnJvbSAnLi9yZXNwb25zaXZlUHJvcFR5cGUnO1xuaW1wb3J0IHsgaGFuZGxlQnJlYWtwb2ludHMgfSBmcm9tICcuL2JyZWFrcG9pbnRzJztcbmltcG9ydCB7IGdldFBhdGggfSBmcm9tICcuL3N0eWxlJztcbmltcG9ydCBtZXJnZSBmcm9tICcuL21lcmdlJztcbmltcG9ydCBtZW1vaXplIGZyb20gJy4vbWVtb2l6ZSc7XG5jb25zdCBwcm9wZXJ0aWVzID0ge1xuICBtOiAnbWFyZ2luJyxcbiAgcDogJ3BhZGRpbmcnXG59O1xuY29uc3QgZGlyZWN0aW9ucyA9IHtcbiAgdDogJ1RvcCcsXG4gIHI6ICdSaWdodCcsXG4gIGI6ICdCb3R0b20nLFxuICBsOiAnTGVmdCcsXG4gIHg6IFsnTGVmdCcsICdSaWdodCddLFxuICB5OiBbJ1RvcCcsICdCb3R0b20nXVxufTtcbmNvbnN0IGFsaWFzZXMgPSB7XG4gIG1hcmdpblg6ICdteCcsXG4gIG1hcmdpblk6ICdteScsXG4gIHBhZGRpbmdYOiAncHgnLFxuICBwYWRkaW5nWTogJ3B5J1xufTtcblxuLy8gbWVtb2l6ZSgpIGltcGFjdDpcbi8vIEZyb20gMzAwLDAwMCBvcHMvc2VjXG4vLyBUbyAzNTAsMDAwIG9wcy9zZWNcbmNvbnN0IGdldENzc1Byb3BlcnRpZXMgPSBtZW1vaXplKHByb3AgPT4ge1xuICAvLyBJdCdzIG5vdCBhIHNob3J0aGFuZCBub3RhdGlvbi5cbiAgaWYgKHByb3AubGVuZ3RoID4gMikge1xuICAgIGlmIChhbGlhc2VzW3Byb3BdKSB7XG4gICAgICBwcm9wID0gYWxpYXNlc1twcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFtwcm9wXTtcbiAgICB9XG4gIH1cbiAgY29uc3QgW2EsIGJdID0gcHJvcC5zcGxpdCgnJyk7XG4gIGNvbnN0IHByb3BlcnR5ID0gcHJvcGVydGllc1thXTtcbiAgY29uc3QgZGlyZWN0aW9uID0gZGlyZWN0aW9uc1tiXSB8fCAnJztcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZGlyZWN0aW9uKSA/IGRpcmVjdGlvbi5tYXAoZGlyID0+IHByb3BlcnR5ICsgZGlyKSA6IFtwcm9wZXJ0eSArIGRpcmVjdGlvbl07XG59KTtcbmV4cG9ydCBjb25zdCBtYXJnaW5LZXlzID0gWydtJywgJ210JywgJ21yJywgJ21iJywgJ21sJywgJ214JywgJ215JywgJ21hcmdpbicsICdtYXJnaW5Ub3AnLCAnbWFyZ2luUmlnaHQnLCAnbWFyZ2luQm90dG9tJywgJ21hcmdpbkxlZnQnLCAnbWFyZ2luWCcsICdtYXJnaW5ZJywgJ21hcmdpbklubGluZScsICdtYXJnaW5JbmxpbmVTdGFydCcsICdtYXJnaW5JbmxpbmVFbmQnLCAnbWFyZ2luQmxvY2snLCAnbWFyZ2luQmxvY2tTdGFydCcsICdtYXJnaW5CbG9ja0VuZCddO1xuZXhwb3J0IGNvbnN0IHBhZGRpbmdLZXlzID0gWydwJywgJ3B0JywgJ3ByJywgJ3BiJywgJ3BsJywgJ3B4JywgJ3B5JywgJ3BhZGRpbmcnLCAncGFkZGluZ1RvcCcsICdwYWRkaW5nUmlnaHQnLCAncGFkZGluZ0JvdHRvbScsICdwYWRkaW5nTGVmdCcsICdwYWRkaW5nWCcsICdwYWRkaW5nWScsICdwYWRkaW5nSW5saW5lJywgJ3BhZGRpbmdJbmxpbmVTdGFydCcsICdwYWRkaW5nSW5saW5lRW5kJywgJ3BhZGRpbmdCbG9jaycsICdwYWRkaW5nQmxvY2tTdGFydCcsICdwYWRkaW5nQmxvY2tFbmQnXTtcbmNvbnN0IHNwYWNpbmdLZXlzID0gWy4uLm1hcmdpbktleXMsIC4uLnBhZGRpbmdLZXlzXTtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVbmFyeVVuaXQodGhlbWUsIHRoZW1lS2V5LCBkZWZhdWx0VmFsdWUsIHByb3BOYW1lKSB7XG4gIHZhciBfZ2V0UGF0aDtcbiAgY29uc3QgdGhlbWVTcGFjaW5nID0gKF9nZXRQYXRoID0gZ2V0UGF0aCh0aGVtZSwgdGhlbWVLZXksIGZhbHNlKSkgIT0gbnVsbCA/IF9nZXRQYXRoIDogZGVmYXVsdFZhbHVlO1xuICBpZiAodHlwZW9mIHRoZW1lU3BhY2luZyA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gYWJzID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYWJzID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYWJzO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhYnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTVVJOiBFeHBlY3RlZCAke3Byb3BOYW1lfSBhcmd1bWVudCB0byBiZSBhIG51bWJlciBvciBhIHN0cmluZywgZ290ICR7YWJzfS5gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoZW1lU3BhY2luZyAqIGFicztcbiAgICB9O1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHRoZW1lU3BhY2luZykpIHtcbiAgICByZXR1cm4gYWJzID0+IHtcbiAgICAgIGlmICh0eXBlb2YgYWJzID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYWJzO1xuICAgICAgfVxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGFicykpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBUaGUgXFxgdGhlbWUuJHt0aGVtZUtleX1cXGAgYXJyYXkgdHlwZSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBub24gaW50ZWdlciB2YWx1ZXMuYCArIGBZb3Ugc2hvdWxkIGVpdGhlciB1c2UgYW4gaW50ZWdlciB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGluZGV4LCBvciBkZWZpbmUgdGhlIFxcYHRoZW1lLiR7dGhlbWVLZXl9XFxgIGFzIGEgbnVtYmVyLmBdLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgfSBlbHNlIGlmIChhYnMgPiB0aGVtZVNwYWNpbmcubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSB2YWx1ZSBwcm92aWRlZCAoJHthYnN9KSBvdmVyZmxvd3MuYCwgYFRoZSBzdXBwb3J0ZWQgdmFsdWVzIGFyZTogJHtKU09OLnN0cmluZ2lmeSh0aGVtZVNwYWNpbmcpfS5gLCBgJHthYnN9ID4gJHt0aGVtZVNwYWNpbmcubGVuZ3RoIC0gMX0sIHlvdSBuZWVkIHRvIGFkZCB0aGUgbWlzc2luZyB2YWx1ZXMuYF0uam9pbignXFxuJykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhlbWVTcGFjaW5nW2Fic107XG4gICAgfTtcbiAgfVxuICBpZiAodHlwZW9mIHRoZW1lU3BhY2luZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0aGVtZVNwYWNpbmc7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBUaGUgXFxgdGhlbWUuJHt0aGVtZUtleX1cXGAgdmFsdWUgKCR7dGhlbWVTcGFjaW5nfSkgaXMgaW52YWxpZC5gLCAnSXQgc2hvdWxkIGJlIGEgbnVtYmVyLCBhbiBhcnJheSBvciBhIGZ1bmN0aW9uLiddLmpvaW4oJ1xcbicpKTtcbiAgfVxuICByZXR1cm4gKCkgPT4gdW5kZWZpbmVkO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuYXJ5U3BhY2luZyh0aGVtZSkge1xuICByZXR1cm4gY3JlYXRlVW5hcnlVbml0KHRoZW1lLCAnc3BhY2luZycsIDgsICdzcGFjaW5nJyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0VmFsdWUodHJhbnNmb3JtZXIsIHByb3BWYWx1ZSkge1xuICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ3N0cmluZycgfHwgcHJvcFZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gcHJvcFZhbHVlO1xuICB9XG4gIGNvbnN0IGFicyA9IE1hdGguYWJzKHByb3BWYWx1ZSk7XG4gIGNvbnN0IHRyYW5zZm9ybWVkID0gdHJhbnNmb3JtZXIoYWJzKTtcbiAgaWYgKHByb3BWYWx1ZSA+PSAwKSB7XG4gICAgcmV0dXJuIHRyYW5zZm9ybWVkO1xuICB9XG4gIGlmICh0eXBlb2YgdHJhbnNmb3JtZWQgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIC10cmFuc2Zvcm1lZDtcbiAgfVxuICByZXR1cm4gYC0ke3RyYW5zZm9ybWVkfWA7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVGcm9tUHJvcFZhbHVlKGNzc1Byb3BlcnRpZXMsIHRyYW5zZm9ybWVyKSB7XG4gIHJldHVybiBwcm9wVmFsdWUgPT4gY3NzUHJvcGVydGllcy5yZWR1Y2UoKGFjYywgY3NzUHJvcGVydHkpID0+IHtcbiAgICBhY2NbY3NzUHJvcGVydHldID0gZ2V0VmFsdWUodHJhbnNmb3JtZXIsIHByb3BWYWx1ZSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufVxuZnVuY3Rpb24gcmVzb2x2ZUNzc1Byb3BlcnR5KHByb3BzLCBrZXlzLCBwcm9wLCB0cmFuc2Zvcm1lcikge1xuICAvLyBVc2luZyBhIGhhc2ggY29tcHV0YXRpb24gb3ZlciBhbiBhcnJheSBpdGVyYXRpb24gY291bGQgYmUgZmFzdGVyLCBidXQgd2l0aCBvbmx5IDI4IGl0ZW1zLFxuICAvLyBpdCdzIGRvZXNuJ3Qgd29ydGggdGhlIGJ1bmRsZSBzaXplLlxuICBpZiAoa2V5cy5pbmRleE9mKHByb3ApID09PSAtMSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGNzc1Byb3BlcnRpZXMgPSBnZXRDc3NQcm9wZXJ0aWVzKHByb3ApO1xuICBjb25zdCBzdHlsZUZyb21Qcm9wVmFsdWUgPSBnZXRTdHlsZUZyb21Qcm9wVmFsdWUoY3NzUHJvcGVydGllcywgdHJhbnNmb3JtZXIpO1xuICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1twcm9wXTtcbiAgcmV0dXJuIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCBwcm9wVmFsdWUsIHN0eWxlRnJvbVByb3BWYWx1ZSk7XG59XG5mdW5jdGlvbiBzdHlsZShwcm9wcywga2V5cykge1xuICBjb25zdCB0cmFuc2Zvcm1lciA9IGNyZWF0ZVVuYXJ5U3BhY2luZyhwcm9wcy50aGVtZSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykubWFwKHByb3AgPT4gcmVzb2x2ZUNzc1Byb3BlcnR5KHByb3BzLCBrZXlzLCBwcm9wLCB0cmFuc2Zvcm1lcikpLnJlZHVjZShtZXJnZSwge30pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1hcmdpbihwcm9wcykge1xuICByZXR1cm4gc3R5bGUocHJvcHMsIG1hcmdpbktleXMpO1xufVxubWFyZ2luLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBtYXJnaW5LZXlzLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgb2JqW2tleV0gPSByZXNwb25zaXZlUHJvcFR5cGU7XG4gIHJldHVybiBvYmo7XG59LCB7fSkgOiB7fTtcbm1hcmdpbi5maWx0ZXJQcm9wcyA9IG1hcmdpbktleXM7XG5leHBvcnQgZnVuY3Rpb24gcGFkZGluZyhwcm9wcykge1xuICByZXR1cm4gc3R5bGUocHJvcHMsIHBhZGRpbmdLZXlzKTtcbn1cbnBhZGRpbmcucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHBhZGRpbmdLZXlzLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgb2JqW2tleV0gPSByZXNwb25zaXZlUHJvcFR5cGU7XG4gIHJldHVybiBvYmo7XG59LCB7fSkgOiB7fTtcbnBhZGRpbmcuZmlsdGVyUHJvcHMgPSBwYWRkaW5nS2V5cztcbmZ1bmN0aW9uIHNwYWNpbmcocHJvcHMpIHtcbiAgcmV0dXJuIHN0eWxlKHByb3BzLCBzcGFjaW5nS2V5cyk7XG59XG5zcGFjaW5nLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBzcGFjaW5nS2V5cy5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gIG9ialtrZXldID0gcmVzcG9uc2l2ZVByb3BUeXBlO1xuICByZXR1cm4gb2JqO1xufSwge30pIDoge307XG5zcGFjaW5nLmZpbHRlclByb3BzID0gc3BhY2luZ0tleXM7XG5leHBvcnQgZGVmYXVsdCBzcGFjaW5nOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgY29uc3QgY2FjaGUgPSB7fTtcbiAgcmV0dXJuIGFyZyA9PiB7XG4gICAgaWYgKGNhY2hlW2FyZ10gPT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FjaGVbYXJnXSA9IGZuKGFyZyk7XG4gICAgfVxuICAgIHJldHVybiBjYWNoZVthcmddO1xuICB9O1xufSIsImltcG9ydCB7IHVuc3RhYmxlX2NhcGl0YWxpemUgYXMgY2FwaXRhbGl6ZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHJlc3BvbnNpdmVQcm9wVHlwZSBmcm9tICcuL3Jlc3BvbnNpdmVQcm9wVHlwZSc7XG5pbXBvcnQgeyBoYW5kbGVCcmVha3BvaW50cyB9IGZyb20gJy4vYnJlYWtwb2ludHMnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGgob2JqLCBwYXRoLCBjaGVja1ZhcnMgPSB0cnVlKSB7XG4gIGlmICghcGF0aCB8fCB0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIENTUyB2YXJpYWJsZXMgYXJlIHVzZWRcbiAgaWYgKG9iaiAmJiBvYmoudmFycyAmJiBjaGVja1ZhcnMpIHtcbiAgICBjb25zdCB2YWwgPSBgdmFycy4ke3BhdGh9YC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiBhY2MgJiYgYWNjW2l0ZW1dID8gYWNjW2l0ZW1dIDogbnVsbCwgb2JqKTtcbiAgICBpZiAodmFsICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlKChhY2MsIGl0ZW0pID0+IHtcbiAgICBpZiAoYWNjICYmIGFjY1tpdGVtXSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gYWNjW2l0ZW1dO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSwgb2JqKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZVZhbHVlKHRoZW1lTWFwcGluZywgdHJhbnNmb3JtLCBwcm9wVmFsdWVGaW5hbCwgdXNlclZhbHVlID0gcHJvcFZhbHVlRmluYWwpIHtcbiAgbGV0IHZhbHVlO1xuICBpZiAodHlwZW9mIHRoZW1lTWFwcGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhbHVlID0gdGhlbWVNYXBwaW5nKHByb3BWYWx1ZUZpbmFsKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoZW1lTWFwcGluZykpIHtcbiAgICB2YWx1ZSA9IHRoZW1lTWFwcGluZ1twcm9wVmFsdWVGaW5hbF0gfHwgdXNlclZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gZ2V0UGF0aCh0aGVtZU1hcHBpbmcsIHByb3BWYWx1ZUZpbmFsKSB8fCB1c2VyVmFsdWU7XG4gIH1cbiAgaWYgKHRyYW5zZm9ybSkge1xuICAgIHZhbHVlID0gdHJhbnNmb3JtKHZhbHVlLCB1c2VyVmFsdWUsIHRoZW1lTWFwcGluZyk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZnVuY3Rpb24gc3R5bGUob3B0aW9ucykge1xuICBjb25zdCB7XG4gICAgcHJvcCxcbiAgICBjc3NQcm9wZXJ0eSA9IG9wdGlvbnMucHJvcCxcbiAgICB0aGVtZUtleSxcbiAgICB0cmFuc2Zvcm1cbiAgfSA9IG9wdGlvbnM7XG5cbiAgLy8gZmFsc2UgcG9zaXRpdmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uXG4gIGNvbnN0IGZuID0gcHJvcHMgPT4ge1xuICAgIGlmIChwcm9wc1twcm9wXSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcHJvcFZhbHVlID0gcHJvcHNbcHJvcF07XG4gICAgY29uc3QgdGhlbWUgPSBwcm9wcy50aGVtZTtcbiAgICBjb25zdCB0aGVtZU1hcHBpbmcgPSBnZXRQYXRoKHRoZW1lLCB0aGVtZUtleSkgfHwge307XG4gICAgY29uc3Qgc3R5bGVGcm9tUHJvcFZhbHVlID0gcHJvcFZhbHVlRmluYWwgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZ2V0U3R5bGVWYWx1ZSh0aGVtZU1hcHBpbmcsIHRyYW5zZm9ybSwgcHJvcFZhbHVlRmluYWwpO1xuICAgICAgaWYgKHByb3BWYWx1ZUZpbmFsID09PSB2YWx1ZSAmJiB0eXBlb2YgcHJvcFZhbHVlRmluYWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEhhdmVuJ3QgZm91bmQgdmFsdWVcbiAgICAgICAgdmFsdWUgPSBnZXRTdHlsZVZhbHVlKHRoZW1lTWFwcGluZywgdHJhbnNmb3JtLCBgJHtwcm9wfSR7cHJvcFZhbHVlRmluYWwgPT09ICdkZWZhdWx0JyA/ICcnIDogY2FwaXRhbGl6ZShwcm9wVmFsdWVGaW5hbCl9YCwgcHJvcFZhbHVlRmluYWwpO1xuICAgICAgfVxuICAgICAgaWYgKGNzc1Byb3BlcnR5ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbY3NzUHJvcGVydHldOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBoYW5kbGVCcmVha3BvaW50cyhwcm9wcywgcHJvcFZhbHVlLCBzdHlsZUZyb21Qcm9wVmFsdWUpO1xuICB9O1xuICBmbi5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8ge1xuICAgIFtwcm9wXTogcmVzcG9uc2l2ZVByb3BUeXBlXG4gIH0gOiB7fTtcbiAgZm4uZmlsdGVyUHJvcHMgPSBbcHJvcF07XG4gIHJldHVybiBmbjtcbn1cbmV4cG9ydCBkZWZhdWx0IHN0eWxlOyIsImltcG9ydCBtZXJnZSBmcm9tICcuL21lcmdlJztcbmZ1bmN0aW9uIGNvbXBvc2UoLi4uc3R5bGVzKSB7XG4gIGNvbnN0IGhhbmRsZXJzID0gc3R5bGVzLnJlZHVjZSgoYWNjLCBzdHlsZSkgPT4ge1xuICAgIHN0eWxlLmZpbHRlclByb3BzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICBhY2NbcHJvcF0gPSBzdHlsZTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG5cbiAgLy8gZmFsc2UgcG9zaXRpdmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uXG4gIGNvbnN0IGZuID0gcHJvcHMgPT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKChhY2MsIHByb3ApID0+IHtcbiAgICAgIGlmIChoYW5kbGVyc1twcm9wXSkge1xuICAgICAgICByZXR1cm4gbWVyZ2UoYWNjLCBoYW5kbGVyc1twcm9wXShwcm9wcykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH07XG4gIGZuLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBzdHlsZXMucmVkdWNlKChhY2MsIHN0eWxlKSA9PiBPYmplY3QuYXNzaWduKGFjYywgc3R5bGUucHJvcFR5cGVzKSwge30pIDoge307XG4gIGZuLmZpbHRlclByb3BzID0gc3R5bGVzLnJlZHVjZSgoYWNjLCBzdHlsZSkgPT4gYWNjLmNvbmNhdChzdHlsZS5maWx0ZXJQcm9wcyksIFtdKTtcbiAgcmV0dXJuIGZuO1xufVxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZTsiLCJpbXBvcnQgcmVzcG9uc2l2ZVByb3BUeXBlIGZyb20gJy4vcmVzcG9uc2l2ZVByb3BUeXBlJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL3N0eWxlJztcbmltcG9ydCBjb21wb3NlIGZyb20gJy4vY29tcG9zZSc7XG5pbXBvcnQgeyBjcmVhdGVVbmFyeVVuaXQsIGdldFZhbHVlIH0gZnJvbSAnLi9zcGFjaW5nJztcbmltcG9ydCB7IGhhbmRsZUJyZWFrcG9pbnRzIH0gZnJvbSAnLi9icmVha3BvaW50cyc7XG5leHBvcnQgZnVuY3Rpb24gYm9yZGVyVHJhbnNmb3JtKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBgJHt2YWx1ZX1weCBzb2xpZGA7XG59XG5leHBvcnQgY29uc3QgYm9yZGVyID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyJyxcbiAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlclRvcCA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlclRvcCcsXG4gIHRoZW1lS2V5OiAnYm9yZGVycycsXG4gIHRyYW5zZm9ybTogYm9yZGVyVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBib3JkZXJSaWdodCA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlclJpZ2h0JyxcbiAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlckJvdHRvbSA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlckJvdHRvbScsXG4gIHRoZW1lS2V5OiAnYm9yZGVycycsXG4gIHRyYW5zZm9ybTogYm9yZGVyVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBib3JkZXJMZWZ0ID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyTGVmdCcsXG4gIHRoZW1lS2V5OiAnYm9yZGVycycsXG4gIHRyYW5zZm9ybTogYm9yZGVyVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBib3JkZXJDb2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlckNvbG9yJyxcbiAgdGhlbWVLZXk6ICdwYWxldHRlJ1xufSk7XG5leHBvcnQgY29uc3QgYm9yZGVyVG9wQ29sb3IgPSBzdHlsZSh7XG4gIHByb3A6ICdib3JkZXJUb3BDb2xvcicsXG4gIHRoZW1lS2V5OiAncGFsZXR0ZSdcbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlclJpZ2h0Q29sb3IgPSBzdHlsZSh7XG4gIHByb3A6ICdib3JkZXJSaWdodENvbG9yJyxcbiAgdGhlbWVLZXk6ICdwYWxldHRlJ1xufSk7XG5leHBvcnQgY29uc3QgYm9yZGVyQm90dG9tQ29sb3IgPSBzdHlsZSh7XG4gIHByb3A6ICdib3JkZXJCb3R0b21Db2xvcicsXG4gIHRoZW1lS2V5OiAncGFsZXR0ZSdcbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlckxlZnRDb2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlckxlZnRDb2xvcicsXG4gIHRoZW1lS2V5OiAncGFsZXR0ZSdcbn0pO1xuXG4vLyBmYWxzZSBwb3NpdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uXG5leHBvcnQgY29uc3QgYm9yZGVyUmFkaXVzID0gcHJvcHMgPT4ge1xuICBpZiAocHJvcHMuYm9yZGVyUmFkaXVzICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuYm9yZGVyUmFkaXVzICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBjcmVhdGVVbmFyeVVuaXQocHJvcHMudGhlbWUsICdzaGFwZS5ib3JkZXJSYWRpdXMnLCA0LCAnYm9yZGVyUmFkaXVzJyk7XG4gICAgY29uc3Qgc3R5bGVGcm9tUHJvcFZhbHVlID0gcHJvcFZhbHVlID0+ICh7XG4gICAgICBib3JkZXJSYWRpdXM6IGdldFZhbHVlKHRyYW5zZm9ybWVyLCBwcm9wVmFsdWUpXG4gICAgfSk7XG4gICAgcmV0dXJuIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCBwcm9wcy5ib3JkZXJSYWRpdXMsIHN0eWxlRnJvbVByb3BWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuYm9yZGVyUmFkaXVzLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB7XG4gIGJvcmRlclJhZGl1czogcmVzcG9uc2l2ZVByb3BUeXBlXG59IDoge307XG5ib3JkZXJSYWRpdXMuZmlsdGVyUHJvcHMgPSBbJ2JvcmRlclJhZGl1cyddO1xuY29uc3QgYm9yZGVycyA9IGNvbXBvc2UoYm9yZGVyLCBib3JkZXJUb3AsIGJvcmRlclJpZ2h0LCBib3JkZXJCb3R0b20sIGJvcmRlckxlZnQsIGJvcmRlckNvbG9yLCBib3JkZXJUb3BDb2xvciwgYm9yZGVyUmlnaHRDb2xvciwgYm9yZGVyQm90dG9tQ29sb3IsIGJvcmRlckxlZnRDb2xvciwgYm9yZGVyUmFkaXVzKTtcbmV4cG9ydCBkZWZhdWx0IGJvcmRlcnM7IiwiaW1wb3J0IHN0eWxlIGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IGNvbXBvc2UgZnJvbSAnLi9jb21wb3NlJztcbmltcG9ydCB7IGNyZWF0ZVVuYXJ5VW5pdCwgZ2V0VmFsdWUgfSBmcm9tICcuL3NwYWNpbmcnO1xuaW1wb3J0IHsgaGFuZGxlQnJlYWtwb2ludHMgfSBmcm9tICcuL2JyZWFrcG9pbnRzJztcbmltcG9ydCByZXNwb25zaXZlUHJvcFR5cGUgZnJvbSAnLi9yZXNwb25zaXZlUHJvcFR5cGUnO1xuXG4vLyBmYWxzZSBwb3NpdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uXG5leHBvcnQgY29uc3QgZ2FwID0gcHJvcHMgPT4ge1xuICBpZiAocHJvcHMuZ2FwICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZ2FwICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBjcmVhdGVVbmFyeVVuaXQocHJvcHMudGhlbWUsICdzcGFjaW5nJywgOCwgJ2dhcCcpO1xuICAgIGNvbnN0IHN0eWxlRnJvbVByb3BWYWx1ZSA9IHByb3BWYWx1ZSA9PiAoe1xuICAgICAgZ2FwOiBnZXRWYWx1ZSh0cmFuc2Zvcm1lciwgcHJvcFZhbHVlKVxuICAgIH0pO1xuICAgIHJldHVybiBoYW5kbGVCcmVha3BvaW50cyhwcm9wcywgcHJvcHMuZ2FwLCBzdHlsZUZyb21Qcm9wVmFsdWUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmdhcC5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8ge1xuICBnYXA6IHJlc3BvbnNpdmVQcm9wVHlwZVxufSA6IHt9O1xuZ2FwLmZpbHRlclByb3BzID0gWydnYXAnXTtcblxuLy8gZmFsc2UgcG9zaXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvblxuZXhwb3J0IGNvbnN0IGNvbHVtbkdhcCA9IHByb3BzID0+IHtcbiAgaWYgKHByb3BzLmNvbHVtbkdhcCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmNvbHVtbkdhcCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gY3JlYXRlVW5hcnlVbml0KHByb3BzLnRoZW1lLCAnc3BhY2luZycsIDgsICdjb2x1bW5HYXAnKTtcbiAgICBjb25zdCBzdHlsZUZyb21Qcm9wVmFsdWUgPSBwcm9wVmFsdWUgPT4gKHtcbiAgICAgIGNvbHVtbkdhcDogZ2V0VmFsdWUodHJhbnNmb3JtZXIsIHByb3BWYWx1ZSlcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlQnJlYWtwb2ludHMocHJvcHMsIHByb3BzLmNvbHVtbkdhcCwgc3R5bGVGcm9tUHJvcFZhbHVlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5jb2x1bW5HYXAucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHtcbiAgY29sdW1uR2FwOiByZXNwb25zaXZlUHJvcFR5cGVcbn0gOiB7fTtcbmNvbHVtbkdhcC5maWx0ZXJQcm9wcyA9IFsnY29sdW1uR2FwJ107XG5cbi8vIGZhbHNlIHBvc2l0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb25cbmV4cG9ydCBjb25zdCByb3dHYXAgPSBwcm9wcyA9PiB7XG4gIGlmIChwcm9wcy5yb3dHYXAgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5yb3dHYXAgIT09IG51bGwpIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGNyZWF0ZVVuYXJ5VW5pdChwcm9wcy50aGVtZSwgJ3NwYWNpbmcnLCA4LCAncm93R2FwJyk7XG4gICAgY29uc3Qgc3R5bGVGcm9tUHJvcFZhbHVlID0gcHJvcFZhbHVlID0+ICh7XG4gICAgICByb3dHYXA6IGdldFZhbHVlKHRyYW5zZm9ybWVyLCBwcm9wVmFsdWUpXG4gICAgfSk7XG4gICAgcmV0dXJuIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCBwcm9wcy5yb3dHYXAsIHN0eWxlRnJvbVByb3BWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xucm93R2FwLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB7XG4gIHJvd0dhcDogcmVzcG9uc2l2ZVByb3BUeXBlXG59IDoge307XG5yb3dHYXAuZmlsdGVyUHJvcHMgPSBbJ3Jvd0dhcCddO1xuZXhwb3J0IGNvbnN0IGdyaWRDb2x1bW4gPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkQ29sdW1uJ1xufSk7XG5leHBvcnQgY29uc3QgZ3JpZFJvdyA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRSb3cnXG59KTtcbmV4cG9ydCBjb25zdCBncmlkQXV0b0Zsb3cgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkQXV0b0Zsb3cnXG59KTtcbmV4cG9ydCBjb25zdCBncmlkQXV0b0NvbHVtbnMgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkQXV0b0NvbHVtbnMnXG59KTtcbmV4cG9ydCBjb25zdCBncmlkQXV0b1Jvd3MgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkQXV0b1Jvd3MnXG59KTtcbmV4cG9ydCBjb25zdCBncmlkVGVtcGxhdGVDb2x1bW5zID0gc3R5bGUoe1xuICBwcm9wOiAnZ3JpZFRlbXBsYXRlQ29sdW1ucydcbn0pO1xuZXhwb3J0IGNvbnN0IGdyaWRUZW1wbGF0ZVJvd3MgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkVGVtcGxhdGVSb3dzJ1xufSk7XG5leHBvcnQgY29uc3QgZ3JpZFRlbXBsYXRlQXJlYXMgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkVGVtcGxhdGVBcmVhcydcbn0pO1xuZXhwb3J0IGNvbnN0IGdyaWRBcmVhID0gc3R5bGUoe1xuICBwcm9wOiAnZ3JpZEFyZWEnXG59KTtcbmNvbnN0IGdyaWQgPSBjb21wb3NlKGdhcCwgY29sdW1uR2FwLCByb3dHYXAsIGdyaWRDb2x1bW4sIGdyaWRSb3csIGdyaWRBdXRvRmxvdywgZ3JpZEF1dG9Db2x1bW5zLCBncmlkQXV0b1Jvd3MsIGdyaWRUZW1wbGF0ZUNvbHVtbnMsIGdyaWRUZW1wbGF0ZVJvd3MsIGdyaWRUZW1wbGF0ZUFyZWFzLCBncmlkQXJlYSk7XG5leHBvcnQgZGVmYXVsdCBncmlkOyIsImltcG9ydCBzdHlsZSBmcm9tICcuL3N0eWxlJztcbmltcG9ydCBjb21wb3NlIGZyb20gJy4vY29tcG9zZSc7XG5leHBvcnQgZnVuY3Rpb24gcGFsZXR0ZVRyYW5zZm9ybSh2YWx1ZSwgdXNlclZhbHVlKSB7XG4gIGlmICh1c2VyVmFsdWUgPT09ICdncmV5Jykge1xuICAgIHJldHVybiB1c2VyVmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuZXhwb3J0IGNvbnN0IGNvbG9yID0gc3R5bGUoe1xuICBwcm9wOiAnY29sb3InLFxuICB0aGVtZUtleTogJ3BhbGV0dGUnLFxuICB0cmFuc2Zvcm06IHBhbGV0dGVUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJnY29sb3IgPSBzdHlsZSh7XG4gIHByb3A6ICdiZ2NvbG9yJyxcbiAgY3NzUHJvcGVydHk6ICdiYWNrZ3JvdW5kQ29sb3InLFxuICB0aGVtZUtleTogJ3BhbGV0dGUnLFxuICB0cmFuc2Zvcm06IHBhbGV0dGVUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJhY2tncm91bmRDb2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JhY2tncm91bmRDb2xvcicsXG4gIHRoZW1lS2V5OiAncGFsZXR0ZScsXG4gIHRyYW5zZm9ybTogcGFsZXR0ZVRyYW5zZm9ybVxufSk7XG5jb25zdCBwYWxldHRlID0gY29tcG9zZShjb2xvciwgYmdjb2xvciwgYmFja2dyb3VuZENvbG9yKTtcbmV4cG9ydCBkZWZhdWx0IHBhbGV0dGU7IiwiaW1wb3J0IHN0eWxlIGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IGNvbXBvc2UgZnJvbSAnLi9jb21wb3NlJztcbmltcG9ydCB7IGhhbmRsZUJyZWFrcG9pbnRzLCB2YWx1ZXMgYXMgYnJlYWtwb2ludHNWYWx1ZXMgfSBmcm9tICcuL2JyZWFrcG9pbnRzJztcbmV4cG9ydCBmdW5jdGlvbiBzaXppbmdUcmFuc2Zvcm0odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIDw9IDEgJiYgdmFsdWUgIT09IDAgPyBgJHt2YWx1ZSAqIDEwMH0lYCA6IHZhbHVlO1xufVxuZXhwb3J0IGNvbnN0IHdpZHRoID0gc3R5bGUoe1xuICBwcm9wOiAnd2lkdGgnLFxuICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgbWF4V2lkdGggPSBwcm9wcyA9PiB7XG4gIGlmIChwcm9wcy5tYXhXaWR0aCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLm1heFdpZHRoICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3R5bGVGcm9tUHJvcFZhbHVlID0gcHJvcFZhbHVlID0+IHtcbiAgICAgIHZhciBfcHJvcHMkdGhlbWU7XG4gICAgICBjb25zdCBicmVha3BvaW50ID0gKChfcHJvcHMkdGhlbWUgPSBwcm9wcy50aGVtZSkgPT0gbnVsbCB8fCAoX3Byb3BzJHRoZW1lID0gX3Byb3BzJHRoZW1lLmJyZWFrcG9pbnRzKSA9PSBudWxsIHx8IChfcHJvcHMkdGhlbWUgPSBfcHJvcHMkdGhlbWUudmFsdWVzKSA9PSBudWxsID8gdm9pZCAwIDogX3Byb3BzJHRoZW1lW3Byb3BWYWx1ZV0pIHx8IGJyZWFrcG9pbnRzVmFsdWVzW3Byb3BWYWx1ZV07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXhXaWR0aDogYnJlYWtwb2ludCB8fCBzaXppbmdUcmFuc2Zvcm0ocHJvcFZhbHVlKVxuICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBoYW5kbGVCcmVha3BvaW50cyhwcm9wcywgcHJvcHMubWF4V2lkdGgsIHN0eWxlRnJvbVByb3BWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xubWF4V2lkdGguZmlsdGVyUHJvcHMgPSBbJ21heFdpZHRoJ107XG5leHBvcnQgY29uc3QgbWluV2lkdGggPSBzdHlsZSh7XG4gIHByb3A6ICdtaW5XaWR0aCcsXG4gIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBoZWlnaHQgPSBzdHlsZSh7XG4gIHByb3A6ICdoZWlnaHQnLFxuICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgbWF4SGVpZ2h0ID0gc3R5bGUoe1xuICBwcm9wOiAnbWF4SGVpZ2h0JyxcbiAgdHJhbnNmb3JtOiBzaXppbmdUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IG1pbkhlaWdodCA9IHN0eWxlKHtcbiAgcHJvcDogJ21pbkhlaWdodCcsXG4gIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBzaXplV2lkdGggPSBzdHlsZSh7XG4gIHByb3A6ICdzaXplJyxcbiAgY3NzUHJvcGVydHk6ICd3aWR0aCcsXG4gIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBzaXplSGVpZ2h0ID0gc3R5bGUoe1xuICBwcm9wOiAnc2l6ZScsXG4gIGNzc1Byb3BlcnR5OiAnaGVpZ2h0JyxcbiAgdHJhbnNmb3JtOiBzaXppbmdUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJveFNpemluZyA9IHN0eWxlKHtcbiAgcHJvcDogJ2JveFNpemluZydcbn0pO1xuY29uc3Qgc2l6aW5nID0gY29tcG9zZSh3aWR0aCwgbWF4V2lkdGgsIG1pbldpZHRoLCBoZWlnaHQsIG1heEhlaWdodCwgbWluSGVpZ2h0LCBib3hTaXppbmcpO1xuZXhwb3J0IGRlZmF1bHQgc2l6aW5nOyIsImltcG9ydCB7IHBhZGRpbmcsIG1hcmdpbiB9IGZyb20gJy4uL3NwYWNpbmcnO1xuaW1wb3J0IHsgYm9yZGVyUmFkaXVzLCBib3JkZXJUcmFuc2Zvcm0gfSBmcm9tICcuLi9ib3JkZXJzJztcbmltcG9ydCB7IGdhcCwgcm93R2FwLCBjb2x1bW5HYXAgfSBmcm9tICcuLi9jc3NHcmlkJztcbmltcG9ydCB7IHBhbGV0dGVUcmFuc2Zvcm0gfSBmcm9tICcuLi9wYWxldHRlJztcbmltcG9ydCB7IG1heFdpZHRoLCBzaXppbmdUcmFuc2Zvcm0gfSBmcm9tICcuLi9zaXppbmcnO1xuY29uc3QgZGVmYXVsdFN4Q29uZmlnID0ge1xuICAvLyBib3JkZXJzXG4gIGJvcmRlcjoge1xuICAgIHRoZW1lS2V5OiAnYm9yZGVycycsXG4gICAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbiAgfSxcbiAgYm9yZGVyVG9wOiB7XG4gICAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxuICB9LFxuICBib3JkZXJSaWdodDoge1xuICAgIHRoZW1lS2V5OiAnYm9yZGVycycsXG4gICAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbiAgfSxcbiAgYm9yZGVyQm90dG9tOiB7XG4gICAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxuICB9LFxuICBib3JkZXJMZWZ0OiB7XG4gICAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxuICB9LFxuICBib3JkZXJDb2xvcjoge1xuICAgIHRoZW1lS2V5OiAncGFsZXR0ZSdcbiAgfSxcbiAgYm9yZGVyVG9wQ29sb3I6IHtcbiAgICB0aGVtZUtleTogJ3BhbGV0dGUnXG4gIH0sXG4gIGJvcmRlclJpZ2h0Q29sb3I6IHtcbiAgICB0aGVtZUtleTogJ3BhbGV0dGUnXG4gIH0sXG4gIGJvcmRlckJvdHRvbUNvbG9yOiB7XG4gICAgdGhlbWVLZXk6ICdwYWxldHRlJ1xuICB9LFxuICBib3JkZXJMZWZ0Q29sb3I6IHtcbiAgICB0aGVtZUtleTogJ3BhbGV0dGUnXG4gIH0sXG4gIGJvcmRlclJhZGl1czoge1xuICAgIHRoZW1lS2V5OiAnc2hhcGUuYm9yZGVyUmFkaXVzJyxcbiAgICBzdHlsZTogYm9yZGVyUmFkaXVzXG4gIH0sXG4gIC8vIHBhbGV0dGVcbiAgY29sb3I6IHtcbiAgICB0aGVtZUtleTogJ3BhbGV0dGUnLFxuICAgIHRyYW5zZm9ybTogcGFsZXR0ZVRyYW5zZm9ybVxuICB9LFxuICBiZ2NvbG9yOiB7XG4gICAgdGhlbWVLZXk6ICdwYWxldHRlJyxcbiAgICBjc3NQcm9wZXJ0eTogJ2JhY2tncm91bmRDb2xvcicsXG4gICAgdHJhbnNmb3JtOiBwYWxldHRlVHJhbnNmb3JtXG4gIH0sXG4gIGJhY2tncm91bmRDb2xvcjoge1xuICAgIHRoZW1lS2V5OiAncGFsZXR0ZScsXG4gICAgdHJhbnNmb3JtOiBwYWxldHRlVHJhbnNmb3JtXG4gIH0sXG4gIC8vIHNwYWNpbmdcbiAgcDoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHB0OiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcHI6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYjoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBsOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcHg6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBweToge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmc6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nVG9wOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ1JpZ2h0OiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ0JvdHRvbToge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdMZWZ0OiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ1g6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nWToge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdJbmxpbmU6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nSW5saW5lU3RhcnQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nSW5saW5lRW5kOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ0Jsb2NrOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ0Jsb2NrU3RhcnQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nQmxvY2tFbmQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBtOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtdDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbXI6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1iOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtbDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbXg6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG15OiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW46IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1hcmdpblRvcDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luUmlnaHQ6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1hcmdpbkJvdHRvbToge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luTGVmdDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luWDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luWToge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luSW5saW5lOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5JbmxpbmVTdGFydDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luSW5saW5lRW5kOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5CbG9jazoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luQmxvY2tTdGFydDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luQmxvY2tFbmQ6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIC8vIGRpc3BsYXlcbiAgZGlzcGxheVByaW50OiB7XG4gICAgY3NzUHJvcGVydHk6IGZhbHNlLFxuICAgIHRyYW5zZm9ybTogdmFsdWUgPT4gKHtcbiAgICAgICdAbWVkaWEgcHJpbnQnOiB7XG4gICAgICAgIGRpc3BsYXk6IHZhbHVlXG4gICAgICB9XG4gICAgfSlcbiAgfSxcbiAgZGlzcGxheToge30sXG4gIG92ZXJmbG93OiB7fSxcbiAgdGV4dE92ZXJmbG93OiB7fSxcbiAgdmlzaWJpbGl0eToge30sXG4gIHdoaXRlU3BhY2U6IHt9LFxuICAvLyBmbGV4Ym94XG4gIGZsZXhCYXNpczoge30sXG4gIGZsZXhEaXJlY3Rpb246IHt9LFxuICBmbGV4V3JhcDoge30sXG4gIGp1c3RpZnlDb250ZW50OiB7fSxcbiAgYWxpZ25JdGVtczoge30sXG4gIGFsaWduQ29udGVudDoge30sXG4gIG9yZGVyOiB7fSxcbiAgZmxleDoge30sXG4gIGZsZXhHcm93OiB7fSxcbiAgZmxleFNocmluazoge30sXG4gIGFsaWduU2VsZjoge30sXG4gIGp1c3RpZnlJdGVtczoge30sXG4gIGp1c3RpZnlTZWxmOiB7fSxcbiAgLy8gZ3JpZFxuICBnYXA6IHtcbiAgICBzdHlsZTogZ2FwXG4gIH0sXG4gIHJvd0dhcDoge1xuICAgIHN0eWxlOiByb3dHYXBcbiAgfSxcbiAgY29sdW1uR2FwOiB7XG4gICAgc3R5bGU6IGNvbHVtbkdhcFxuICB9LFxuICBncmlkQ29sdW1uOiB7fSxcbiAgZ3JpZFJvdzoge30sXG4gIGdyaWRBdXRvRmxvdzoge30sXG4gIGdyaWRBdXRvQ29sdW1uczoge30sXG4gIGdyaWRBdXRvUm93czoge30sXG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnM6IHt9LFxuICBncmlkVGVtcGxhdGVSb3dzOiB7fSxcbiAgZ3JpZFRlbXBsYXRlQXJlYXM6IHt9LFxuICBncmlkQXJlYToge30sXG4gIC8vIHBvc2l0aW9uc1xuICBwb3NpdGlvbjoge30sXG4gIHpJbmRleDoge1xuICAgIHRoZW1lS2V5OiAnekluZGV4J1xuICB9LFxuICB0b3A6IHt9LFxuICByaWdodDoge30sXG4gIGJvdHRvbToge30sXG4gIGxlZnQ6IHt9LFxuICAvLyBzaGFkb3dzXG4gIGJveFNoYWRvdzoge1xuICAgIHRoZW1lS2V5OiAnc2hhZG93cydcbiAgfSxcbiAgLy8gc2l6aW5nXG4gIHdpZHRoOiB7XG4gICAgdHJhbnNmb3JtOiBzaXppbmdUcmFuc2Zvcm1cbiAgfSxcbiAgbWF4V2lkdGg6IHtcbiAgICBzdHlsZTogbWF4V2lkdGhcbiAgfSxcbiAgbWluV2lkdGg6IHtcbiAgICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxuICB9LFxuICBoZWlnaHQ6IHtcbiAgICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxuICB9LFxuICBtYXhIZWlnaHQ6IHtcbiAgICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxuICB9LFxuICBtaW5IZWlnaHQ6IHtcbiAgICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxuICB9LFxuICBib3hTaXppbmc6IHt9LFxuICAvLyB0eXBvZ3JhcGh5XG4gIGZvbnRGYW1pbHk6IHtcbiAgICB0aGVtZUtleTogJ3R5cG9ncmFwaHknXG4gIH0sXG4gIGZvbnRTaXplOiB7XG4gICAgdGhlbWVLZXk6ICd0eXBvZ3JhcGh5J1xuICB9LFxuICBmb250U3R5bGU6IHtcbiAgICB0aGVtZUtleTogJ3R5cG9ncmFwaHknXG4gIH0sXG4gIGZvbnRXZWlnaHQ6IHtcbiAgICB0aGVtZUtleTogJ3R5cG9ncmFwaHknXG4gIH0sXG4gIGxldHRlclNwYWNpbmc6IHt9LFxuICB0ZXh0VHJhbnNmb3JtOiB7fSxcbiAgbGluZUhlaWdodDoge30sXG4gIHRleHRBbGlnbjoge30sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBjc3NQcm9wZXJ0eTogZmFsc2UsXG4gICAgdGhlbWVLZXk6ICd0eXBvZ3JhcGh5J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZGVmYXVsdFN4Q29uZmlnOyIsImltcG9ydCB7IHVuc3RhYmxlX2NhcGl0YWxpemUgYXMgY2FwaXRhbGl6ZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJy4uL21lcmdlJztcbmltcG9ydCB7IGdldFBhdGgsIGdldFN0eWxlVmFsdWUgYXMgZ2V0VmFsdWUgfSBmcm9tICcuLi9zdHlsZSc7XG5pbXBvcnQgeyBoYW5kbGVCcmVha3BvaW50cywgY3JlYXRlRW1wdHlCcmVha3BvaW50T2JqZWN0LCByZW1vdmVVbnVzZWRCcmVha3BvaW50cyB9IGZyb20gJy4uL2JyZWFrcG9pbnRzJztcbmltcG9ydCBkZWZhdWx0U3hDb25maWcgZnJvbSAnLi9kZWZhdWx0U3hDb25maWcnO1xuZnVuY3Rpb24gb2JqZWN0c0hhdmVTYW1lS2V5cyguLi5vYmplY3RzKSB7XG4gIGNvbnN0IGFsbEtleXMgPSBvYmplY3RzLnJlZHVjZSgoa2V5cywgb2JqZWN0KSA9PiBrZXlzLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpKSwgW10pO1xuICBjb25zdCB1bmlvbiA9IG5ldyBTZXQoYWxsS2V5cyk7XG4gIHJldHVybiBvYmplY3RzLmV2ZXJ5KG9iamVjdCA9PiB1bmlvbi5zaXplID09PSBPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCk7XG59XG5mdW5jdGlvbiBjYWxsSWZGbihtYXliZUZuLCBhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXliZUZuID09PSAnZnVuY3Rpb24nID8gbWF5YmVGbihhcmcpIDogbWF5YmVGbjtcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGZ1bmN0aW9uIHVuc3RhYmxlX2NyZWF0ZVN0eWxlRnVuY3Rpb25TeCgpIHtcbiAgZnVuY3Rpb24gZ2V0VGhlbWVWYWx1ZShwcm9wLCB2YWwsIHRoZW1lLCBjb25maWcpIHtcbiAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgIFtwcm9wXTogdmFsLFxuICAgICAgdGhlbWVcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb25maWdbcHJvcF07XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbcHJvcF06IHZhbFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgY3NzUHJvcGVydHkgPSBwcm9wLFxuICAgICAgdGhlbWVLZXksXG4gICAgICB0cmFuc2Zvcm0sXG4gICAgICBzdHlsZVxuICAgIH0gPSBvcHRpb25zO1xuICAgIGlmICh2YWwgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0aGVtZUtleSA9PT0gJ3R5cG9ncmFwaHknICYmIHZhbCA9PT0gJ2luaGVyaXQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbcHJvcF06IHZhbFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgdGhlbWVNYXBwaW5nID0gZ2V0UGF0aCh0aGVtZSwgdGhlbWVLZXkpIHx8IHt9O1xuICAgIGlmIChzdHlsZSkge1xuICAgICAgcmV0dXJuIHN0eWxlKHByb3BzKTtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGVGcm9tUHJvcFZhbHVlID0gcHJvcFZhbHVlRmluYWwgPT4ge1xuICAgICAgbGV0IHZhbHVlID0gZ2V0VmFsdWUodGhlbWVNYXBwaW5nLCB0cmFuc2Zvcm0sIHByb3BWYWx1ZUZpbmFsKTtcbiAgICAgIGlmIChwcm9wVmFsdWVGaW5hbCA9PT0gdmFsdWUgJiYgdHlwZW9mIHByb3BWYWx1ZUZpbmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBIYXZlbid0IGZvdW5kIHZhbHVlXG4gICAgICAgIHZhbHVlID0gZ2V0VmFsdWUodGhlbWVNYXBwaW5nLCB0cmFuc2Zvcm0sIGAke3Byb3B9JHtwcm9wVmFsdWVGaW5hbCA9PT0gJ2RlZmF1bHQnID8gJycgOiBjYXBpdGFsaXplKHByb3BWYWx1ZUZpbmFsKX1gLCBwcm9wVmFsdWVGaW5hbCk7XG4gICAgICB9XG4gICAgICBpZiAoY3NzUHJvcGVydHkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtjc3NQcm9wZXJ0eV06IHZhbHVlXG4gICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCB2YWwsIHN0eWxlRnJvbVByb3BWYWx1ZSk7XG4gIH1cbiAgZnVuY3Rpb24gc3R5bGVGdW5jdGlvblN4KHByb3BzKSB7XG4gICAgdmFyIF90aGVtZSR1bnN0YWJsZV9zeENvbjtcbiAgICBjb25zdCB7XG4gICAgICBzeCxcbiAgICAgIHRoZW1lID0ge31cbiAgICB9ID0gcHJvcHMgfHwge307XG4gICAgaWYgKCFzeCkge1xuICAgICAgcmV0dXJuIG51bGw7IC8vIEVtb3Rpb24gJiBzdHlsZWQtY29tcG9uZW50cyB3aWxsIG5lZ2xlY3QgbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IChfdGhlbWUkdW5zdGFibGVfc3hDb24gPSB0aGVtZS51bnN0YWJsZV9zeENvbmZpZykgIT0gbnVsbCA/IF90aGVtZSR1bnN0YWJsZV9zeENvbiA6IGRlZmF1bHRTeENvbmZpZztcblxuICAgIC8qXG4gICAgICogUmVjZWl2ZSBgc3hJbnB1dGAgYXMgb2JqZWN0IG9yIGNhbGxiYWNrXG4gICAgICogYW5kIHRoZW4gcmVjdXJzaXZlbHkgY2hlY2sga2V5cyAmIHZhbHVlcyB0byBjcmVhdGUgbWVkaWEgcXVlcnkgb2JqZWN0IHN0eWxlcy5cbiAgICAgKiAodGhlIHJlc3VsdCB3aWxsIGJlIHVzZWQgaW4gYHN0eWxlZGApXG4gICAgICovXG4gICAgZnVuY3Rpb24gdHJhdmVyc2Uoc3hJbnB1dCkge1xuICAgICAgbGV0IHN4T2JqZWN0ID0gc3hJbnB1dDtcbiAgICAgIGlmICh0eXBlb2Ygc3hJbnB1dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzeE9iamVjdCA9IHN4SW5wdXQodGhlbWUpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3hJbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gdmFsdWVcbiAgICAgICAgcmV0dXJuIHN4SW5wdXQ7XG4gICAgICB9XG4gICAgICBpZiAoIXN4T2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgY29uc3QgZW1wdHlCcmVha3BvaW50cyA9IGNyZWF0ZUVtcHR5QnJlYWtwb2ludE9iamVjdCh0aGVtZS5icmVha3BvaW50cyk7XG4gICAgICBjb25zdCBicmVha3BvaW50c0tleXMgPSBPYmplY3Qua2V5cyhlbXB0eUJyZWFrcG9pbnRzKTtcbiAgICAgIGxldCBjc3MgPSBlbXB0eUJyZWFrcG9pbnRzO1xuICAgICAgT2JqZWN0LmtleXMoc3hPYmplY3QpLmZvckVhY2goc3R5bGVLZXkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGNhbGxJZkZuKHN4T2JqZWN0W3N0eWxlS2V5XSwgdGhlbWUpO1xuICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAoY29uZmlnW3N0eWxlS2V5XSkge1xuICAgICAgICAgICAgICBjc3MgPSBtZXJnZShjc3MsIGdldFRoZW1lVmFsdWUoc3R5bGVLZXksIHZhbHVlLCB0aGVtZSwgY29uZmlnKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBicmVha3BvaW50c1ZhbHVlcyA9IGhhbmRsZUJyZWFrcG9pbnRzKHtcbiAgICAgICAgICAgICAgICB0aGVtZVxuICAgICAgICAgICAgICB9LCB2YWx1ZSwgeCA9PiAoe1xuICAgICAgICAgICAgICAgIFtzdHlsZUtleV06IHhcbiAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICBpZiAob2JqZWN0c0hhdmVTYW1lS2V5cyhicmVha3BvaW50c1ZhbHVlcywgdmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY3NzW3N0eWxlS2V5XSA9IHN0eWxlRnVuY3Rpb25TeCh7XG4gICAgICAgICAgICAgICAgICBzeDogdmFsdWUsXG4gICAgICAgICAgICAgICAgICB0aGVtZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNzcyA9IG1lcmdlKGNzcywgYnJlYWtwb2ludHNWYWx1ZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNzcyA9IG1lcmdlKGNzcywgZ2V0VGhlbWVWYWx1ZShzdHlsZUtleSwgdmFsdWUsIHRoZW1lLCBjb25maWcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlbW92ZVVudXNlZEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzS2V5cywgY3NzKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc3gpID8gc3gubWFwKHRyYXZlcnNlKSA6IHRyYXZlcnNlKHN4KTtcbiAgfVxuICByZXR1cm4gc3R5bGVGdW5jdGlvblN4O1xufVxuY29uc3Qgc3R5bGVGdW5jdGlvblN4ID0gdW5zdGFibGVfY3JlYXRlU3R5bGVGdW5jdGlvblN4KCk7XG5zdHlsZUZ1bmN0aW9uU3guZmlsdGVyUHJvcHMgPSBbJ3N4J107XG5leHBvcnQgZGVmYXVsdCBzdHlsZUZ1bmN0aW9uU3g7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgfSBmcm9tICdAbXVpL3N0eWxlZC1lbmdpbmUnO1xuZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwO1xufVxuZnVuY3Rpb24gdXNlVGhlbWUoZGVmYXVsdFRoZW1lID0gbnVsbCkge1xuICBjb25zdCBjb250ZXh0VGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIHJldHVybiAhY29udGV4dFRoZW1lIHx8IGlzT2JqZWN0RW1wdHkoY29udGV4dFRoZW1lKSA/IGRlZmF1bHRUaGVtZSA6IGNvbnRleHRUaGVtZTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZVRoZW1lOyIsImltcG9ydCBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlIGZyb20gXCIuLi9mb3JtYXRNdWlFcnJvck1lc3NhZ2VcIjtcbi8vIEl0IHNob3VsZCB0byBiZSBub3RlZCB0aGF0IHRoaXMgZnVuY3Rpb24gaXNuJ3QgZXF1aXZhbGVudCB0byBgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemVgLlxuLy9cbi8vIEEgc3RyaWN0IGNhcGl0YWxpemF0aW9uIHNob3VsZCB1cHBlcmNhc2UgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHdvcmQgaW4gdGhlIHNlbnRlbmNlLlxuLy8gV2Ugb25seSBoYW5kbGUgdGhlIGZpcnN0IHdvcmQuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cmluZykge1xuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gYE1VSTogXFxgY2FwaXRhbGl6ZShzdHJpbmcpXFxgIGV4cGVjdHMgYSBzdHJpbmcgYXJndW1lbnQuYCA6IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UoNykpO1xuICB9XG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9PSBudWxsICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG59XG5mdW5jdGlvbiBkZWVwQ2xvbmUoc291cmNlKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSB7fTtcbiAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgb3V0cHV0W2tleV0gPSBkZWVwQ2xvbmUoc291cmNlW2tleV0pO1xuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZXBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucyA9IHtcbiAgY2xvbmU6IHRydWVcbn0pIHtcbiAgY29uc3Qgb3V0cHV0ID0gb3B0aW9ucy5jbG9uZSA/IF9leHRlbmRzKHt9LCB0YXJnZXQpIDogdGFyZ2V0O1xuICBpZiAoaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIGlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgLy8gQXZvaWQgcHJvdG90eXBlIHBvbGx1dGlvblxuICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc291cmNlW2tleV0pICYmIGtleSBpbiB0YXJnZXQgJiYgaXNQbGFpbk9iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgLy8gU2luY2UgYG91dHB1dGAgaXMgYSBjbG9uZSBvZiBgdGFyZ2V0YCBhbmQgd2UgaGF2ZSBuYXJyb3dlZCBgdGFyZ2V0YCBpbiB0aGlzIGJsb2NrIHdlIGNhbiBjYXN0IHRvIHRoZSBzYW1lIHR5cGUuXG4gICAgICAgIG91dHB1dFtrZXldID0gZGVlcG1lcmdlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuY2xvbmUpIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBpc1BsYWluT2JqZWN0KHNvdXJjZVtrZXldKSA/IGRlZXBDbG9uZShzb3VyY2Vba2V5XSkgOiBzb3VyY2Vba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn0iLCIvKipcbiAqIFdBUk5JTkc6IERvbid0IGltcG9ydCB0aGlzIGRpcmVjdGx5LlxuICogVXNlIGBNdWlFcnJvcmAgZnJvbSBgQG11aS91dGlscy9tYWNyb3MvTXVpRXJyb3IubWFjcm9gIGluc3RlYWQuXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRNdWlFcnJvck1lc3NhZ2UoY29kZSkge1xuICAvLyBBcHBseSBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXRlbXBsYXRlLWxpdGVyYWxzIGluIGxvb3NlIG1vZGVcbiAgLy8gbG9vc2UgbW9kZSBpcyBzYWZlIGlmZiB3ZSdyZSBjb25jYXRlbmF0aW5nIHByaW1pdGl2ZXNcbiAgLy8gc2VlIGh0dHBzOi8vYmFiZWxqcy5pby9kb2NzL2VuL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tdGVtcGxhdGUtbGl0ZXJhbHMjbG9vc2VcbiAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLXRlbXBsYXRlICovXG4gIGxldCB1cmwgPSAnaHR0cHM6Ly9tdWkuY29tL3Byb2R1Y3Rpb24tZXJyb3IvP2NvZGU9JyArIGNvZGU7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgLy8gcmVzdCBwYXJhbXMgb3Zlci10cmFuc3BpbGUgZm9yIHRoaXMgY2FzZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICB1cmwgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbaV0pO1xuICB9XG4gIHJldHVybiAnTWluaWZpZWQgTVVJIGVycm9yICMnICsgY29kZSArICc7IHZpc2l0ICcgKyB1cmwgKyAnIGZvciB0aGUgZnVsbCBtZXNzYWdlLic7XG4gIC8qIGVzbGludC1lbmFibGUgcHJlZmVyLXRlbXBsYXRlICovXG59IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIHJldHVybiBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7XG4gICAgZm9yICh2YXIgZSA9IDE7IGUgPCBhcmd1bWVudHMubGVuZ3RoOyBlKyspIHtcbiAgICAgIHZhciB0ID0gYXJndW1lbnRzW2VdO1xuICAgICAgZm9yICh2YXIgciBpbiB0KSAoe30pLmhhc093blByb3BlcnR5LmNhbGwodCwgcikgJiYgKG5bcl0gPSB0W3JdKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH0sIF9leHRlbmRzLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5leHBvcnQgeyBfZXh0ZW5kcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoLTEgIT09IGUuaW5kZXhPZihuKSkgY29udGludWU7XG4gICAgdFtuXSA9IHJbbl07XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5leHBvcnQgeyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbIlN0eWxlU2hlZXQiLCJvcHRpb25zIiwiX3RoaXMiLCJ0aGlzIiwiX2luc2VydFRhZyIsInRhZyIsImJlZm9yZSIsInRhZ3MiLCJsZW5ndGgiLCJpbnNlcnRpb25Qb2ludCIsIm5leHRTaWJsaW5nIiwicHJlcGVuZCIsImNvbnRhaW5lciIsImZpcnN0Q2hpbGQiLCJpbnNlcnRCZWZvcmUiLCJwdXNoIiwiaXNTcGVlZHkiLCJ1bmRlZmluZWQiLCJzcGVlZHkiLCJjdHIiLCJub25jZSIsImtleSIsIl9wcm90byIsInByb3RvdHlwZSIsImh5ZHJhdGUiLCJub2RlcyIsImZvckVhY2giLCJpbnNlcnQiLCJydWxlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVUZXh0Tm9kZSIsImNyZWF0ZVN0eWxlRWxlbWVudCIsInNoZWV0IiwiaSIsInN0eWxlU2hlZXRzIiwib3duZXJOb2RlIiwic2hlZXRGb3JUYWciLCJpbnNlcnRSdWxlIiwiY3NzUnVsZXMiLCJlIiwiZmx1c2giLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJhYnMiLCJNYXRoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiT2JqZWN0IiwiYXNzaWduIiwidHJpbSIsInZhbHVlIiwicGF0dGVybiIsInJlcGxhY2VtZW50IiwicmVwbGFjZSIsImluZGV4b2YiLCJzZWFyY2giLCJpbmRleE9mIiwiaW5kZXgiLCJjaGFyQ29kZUF0IiwiYmVnaW4iLCJlbmQiLCJzbGljZSIsImFycmF5IiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY2hhcmFjdGVyIiwiY2hhcmFjdGVycyIsIm5vZGUiLCJyb290IiwicGFyZW50IiwidHlwZSIsInByb3BzIiwiY2hpbGRyZW4iLCJyZXR1cm4iLCJwcmV2IiwibmV4dCIsInBlZWsiLCJjYXJldCIsInRva2VuIiwiYWxsb2MiLCJkZWFsbG9jIiwiZGVsaW1pdCIsImRlbGltaXRlciIsIndoaXRlc3BhY2UiLCJlc2NhcGluZyIsImNvdW50IiwiY29tbWVudGVyIiwiaWRlbnRpZmllciIsIkNPTU1FTlQiLCJjYWxsYmFjayIsIm91dHB1dCIsInN0cmluZ2lmeSIsImVsZW1lbnQiLCJqb2luIiwiY29tcGlsZSIsInBhcnNlIiwicnVsZXMiLCJydWxlc2V0cyIsInBzZXVkbyIsInBvaW50cyIsImRlY2xhcmF0aW9ucyIsIm9mZnNldCIsImF0cnVsZSIsInByb3BlcnR5IiwicHJldmlvdXMiLCJ2YXJpYWJsZSIsInNjYW5uaW5nIiwiYW1wZXJzYW5kIiwicmVmZXJlbmNlIiwiY29tbWVudCIsImRlY2xhcmF0aW9uIiwicnVsZXNldCIsInBvc3QiLCJzaXplIiwiaiIsImsiLCJ4IiwieSIsInoiLCJpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmciLCJmaXhlZEVsZW1lbnRzIiwiV2Vha01hcCIsImNvbXBhdCIsImlzSW1wbGljaXRSdWxlIiwiZ2V0Iiwic2V0IiwicGFyc2VkIiwidG9SdWxlcyIsImdldFJ1bGVzIiwicGFyZW50UnVsZXMiLCJyZW1vdmVMYWJlbCIsImhhc2giLCJkZWZhdWx0U3R5bGlzUGx1Z2lucyIsIm1hcCIsImV4ZWMiLCJjcmVhdGVDYWNoZSIsInNzclN0eWxlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJBcnJheSIsImNhbGwiLCJnZXRBdHRyaWJ1dGUiLCJoZWFkIiwiX2luc2VydCIsInN0eWxpc1BsdWdpbnMiLCJpbnNlcnRlZCIsIm5vZGVzVG9IeWRyYXRlIiwiYXR0cmliIiwic3BsaXQiLCJjdXJyZW50U2hlZXQiLCJjb2xsZWN0aW9uIiwiZmluYWxpemluZ1BsdWdpbnMiLCJzZXJpYWxpemVyIiwiY29uY2F0Iiwic2VsZWN0b3IiLCJzZXJpYWxpemVkIiwic2hvdWxkQ2FjaGUiLCJzdHlsZXMiLCJjYWNoZSIsIm5hbWUiLCJyZWdpc3RlcmVkIiwibWVtb2l6ZSIsImZuIiwiY3JlYXRlIiwiYXJnIiwiaXNCcm93c2VyIiwiRW1vdGlvbkNhY2hlQ29udGV4dCIsIkhUTUxFbGVtZW50IiwiUHJvdmlkZXIiLCJ3aXRoRW1vdGlvbkNhY2hlIiwiZnVuYyIsImZvcndhcmRSZWYiLCJyZWYiLCJ1c2VDb250ZXh0IiwiVGhlbWVDb250ZXh0IiwidW5pdGxlc3NLZXlzIiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJhc3BlY3RSYXRpbyIsImJvcmRlckltYWdlT3V0c2V0IiwiYm9yZGVySW1hZ2VTbGljZSIsImJvcmRlckltYWdlV2lkdGgiLCJib3hGbGV4IiwiYm94RmxleEdyb3VwIiwiYm94T3JkaW5hbEdyb3VwIiwiY29sdW1uQ291bnQiLCJjb2x1bW5zIiwiZmxleCIsImZsZXhHcm93IiwiZmxleFBvc2l0aXZlIiwiZmxleFNocmluayIsImZsZXhOZWdhdGl2ZSIsImZsZXhPcmRlciIsImdyaWRSb3ciLCJncmlkUm93RW5kIiwiZ3JpZFJvd1NwYW4iLCJncmlkUm93U3RhcnQiLCJncmlkQ29sdW1uIiwiZ3JpZENvbHVtbkVuZCIsImdyaWRDb2x1bW5TcGFuIiwiZ3JpZENvbHVtblN0YXJ0IiwibXNHcmlkUm93IiwibXNHcmlkUm93U3BhbiIsIm1zR3JpZENvbHVtbiIsIm1zR3JpZENvbHVtblNwYW4iLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsIm9wYWNpdHkiLCJvcmRlciIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsIldlYmtpdExpbmVDbGFtcCIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsImh5cGhlbmF0ZVJlZ2V4IiwiYW5pbWF0aW9uUmVnZXgiLCJpc0N1c3RvbVByb3BlcnR5IiwiaXNQcm9jZXNzYWJsZVZhbHVlIiwicHJvY2Vzc1N0eWxlTmFtZSIsInN0eWxlTmFtZSIsInRvTG93ZXJDYXNlIiwicHJvY2Vzc1N0eWxlVmFsdWUiLCJtYXRjaCIsInAxIiwicDIiLCJjdXJzb3IiLCJoYW5kbGVJbnRlcnBvbGF0aW9uIiwibWVyZ2VkUHJvcHMiLCJpbnRlcnBvbGF0aW9uIiwiX19lbW90aW9uX3N0eWxlcyIsImFuaW0iLCJvYmoiLCJzdHJpbmciLCJpc0FycmF5IiwiX2tleSIsImludGVycG9sYXRlZCIsIl9pIiwiY3JlYXRlU3RyaW5nRnJvbU9iamVjdCIsInByZXZpb3VzQ3Vyc29yIiwicmVzdWx0IiwiY2FjaGVkIiwibGFiZWxQYXR0ZXJuIiwic2VyaWFsaXplU3R5bGVzIiwiYXJncyIsInN0cmluZ01vZGUiLCJzdHJpbmdzIiwicmF3IiwibGFzdEluZGV4IiwiaWRlbnRpZmllck5hbWUiLCJzdHIiLCJoIiwibGVuIiwidG9TdHJpbmciLCJ1c2VJbnNlcnRpb25FZmZlY3QiLCJ1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIiwidXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrIiwidmFsdWVzIiwieHMiLCJzbSIsIm1kIiwibGciLCJ4bCIsImRlZmF1bHRCcmVha3BvaW50cyIsImtleXMiLCJ1cCIsImhhbmRsZUJyZWFrcG9pbnRzIiwicHJvcFZhbHVlIiwic3R5bGVGcm9tUHJvcFZhbHVlIiwidGhlbWUiLCJ0aGVtZUJyZWFrcG9pbnRzIiwiYnJlYWtwb2ludHMiLCJyZWR1Y2UiLCJhY2MiLCJpdGVtIiwiYnJlYWtwb2ludCIsImNzc0tleSIsImNyZWF0ZUVtcHR5QnJlYWtwb2ludE9iamVjdCIsImJyZWFrcG9pbnRzSW5wdXQiLCJfYnJlYWtwb2ludHNJbnB1dCRrZXkiLCJyZW1vdmVVbnVzZWRCcmVha3BvaW50cyIsImJyZWFrcG9pbnRLZXlzIiwic3R5bGUiLCJicmVha3BvaW50T3V0cHV0IiwiX2V4Y2x1ZGVkIiwiYm9yZGVyUmFkaXVzIiwicGFsZXR0ZSIsInBhbGV0dGVJbnB1dCIsInNwYWNpbmciLCJzcGFjaW5nSW5wdXQiLCJzaGFwZSIsInNoYXBlSW5wdXQiLCJvdGhlciIsInVuaXQiLCJzdGVwIiwic29ydGVkVmFsdWVzIiwiYnJlYWtwb2ludHNBc0FycmF5IiwidmFsIiwic29ydCIsImJyZWFrcG9pbnQxIiwiYnJlYWtwb2ludDIiLCJzb3J0QnJlYWtwb2ludHNWYWx1ZXMiLCJkb3duIiwiYmV0d2VlbiIsInN0YXJ0IiwiZW5kSW5kZXgiLCJvbmx5Iiwibm90Iiwia2V5SW5kZXgiLCJjcmVhdGVCcmVha3BvaW50cyIsIm11aSIsInRyYW5zZm9ybSIsImFyZ3NJbnB1dCIsImFyZ3VtZW50IiwiY3JlYXRlU3BhY2luZyIsIm11aVRoZW1lIiwiZGVlcG1lcmdlIiwiZGlyZWN0aW9uIiwiY29tcG9uZW50cyIsIm1vZGUiLCJ1bnN0YWJsZV9zeENvbmZpZyIsImRlZmF1bHRTeENvbmZpZyIsInVuc3RhYmxlX3N4Iiwic3R5bGVGdW5jdGlvblN4Iiwic3giLCJjbG9uZSIsInByb3BlcnRpZXMiLCJtIiwicCIsImRpcmVjdGlvbnMiLCJ0IiwiciIsImIiLCJsIiwiYWxpYXNlcyIsIm1hcmdpblgiLCJtYXJnaW5ZIiwicGFkZGluZ1giLCJwYWRkaW5nWSIsImdldENzc1Byb3BlcnRpZXMiLCJwcm9wIiwiYSIsImRpciIsIm1hcmdpbktleXMiLCJwYWRkaW5nS2V5cyIsInNwYWNpbmdLZXlzIiwiY3JlYXRlVW5hcnlVbml0IiwidGhlbWVLZXkiLCJkZWZhdWx0VmFsdWUiLCJwcm9wTmFtZSIsIl9nZXRQYXRoIiwidGhlbWVTcGFjaW5nIiwiY3JlYXRlVW5hcnlTcGFjaW5nIiwiZ2V0VmFsdWUiLCJ0cmFuc2Zvcm1lciIsInRyYW5zZm9ybWVkIiwiY3NzUHJvcGVydGllcyIsImNzc1Byb3BlcnR5IiwiZ2V0U3R5bGVGcm9tUHJvcFZhbHVlIiwicmVzb2x2ZUNzc1Byb3BlcnR5IiwibWVyZ2UiLCJtYXJnaW4iLCJwYWRkaW5nIiwicHJvcFR5cGVzIiwiZmlsdGVyUHJvcHMiLCJnZXRQYXRoIiwicGF0aCIsImNoZWNrVmFycyIsInZhcnMiLCJnZXRTdHlsZVZhbHVlIiwidGhlbWVNYXBwaW5nIiwicHJvcFZhbHVlRmluYWwiLCJ1c2VyVmFsdWUiLCJoYW5kbGVycyIsImJvcmRlclRyYW5zZm9ybSIsImJvcmRlciIsImJvcmRlclRvcCIsImJvcmRlclJpZ2h0IiwiYm9yZGVyQm90dG9tIiwiYm9yZGVyTGVmdCIsImJvcmRlckNvbG9yIiwiYm9yZGVyVG9wQ29sb3IiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiLCJnYXAiLCJjb2x1bW5HYXAiLCJyb3dHYXAiLCJwYWxldHRlVHJhbnNmb3JtIiwic2l6aW5nVHJhbnNmb3JtIiwid2lkdGgiLCJtYXhXaWR0aCIsIl9wcm9wcyR0aGVtZSIsIm1pbldpZHRoIiwiaGVpZ2h0IiwibWF4SGVpZ2h0IiwibWluSGVpZ2h0IiwiY29sb3IiLCJiZ2NvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwicHQiLCJwciIsInBiIiwicGwiLCJweCIsInB5IiwicGFkZGluZ1RvcCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdJbmxpbmUiLCJwYWRkaW5nSW5saW5lU3RhcnQiLCJwYWRkaW5nSW5saW5lRW5kIiwicGFkZGluZ0Jsb2NrIiwicGFkZGluZ0Jsb2NrU3RhcnQiLCJwYWRkaW5nQmxvY2tFbmQiLCJtdCIsIm1yIiwibWIiLCJtbCIsIm14IiwibXkiLCJtYXJnaW5Ub3AiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkJvdHRvbSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5JbmxpbmUiLCJtYXJnaW5JbmxpbmVTdGFydCIsIm1hcmdpbklubGluZUVuZCIsIm1hcmdpbkJsb2NrIiwibWFyZ2luQmxvY2tTdGFydCIsIm1hcmdpbkJsb2NrRW5kIiwiZGlzcGxheVByaW50IiwiZGlzcGxheSIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93IiwidmlzaWJpbGl0eSIsIndoaXRlU3BhY2UiLCJmbGV4QmFzaXMiLCJmbGV4RGlyZWN0aW9uIiwiZmxleFdyYXAiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJhbGlnbkNvbnRlbnQiLCJhbGlnblNlbGYiLCJqdXN0aWZ5SXRlbXMiLCJqdXN0aWZ5U2VsZiIsImdyaWRBdXRvRmxvdyIsImdyaWRBdXRvQ29sdW1ucyIsImdyaWRBdXRvUm93cyIsImdyaWRUZW1wbGF0ZUNvbHVtbnMiLCJncmlkVGVtcGxhdGVSb3dzIiwiZ3JpZFRlbXBsYXRlQXJlYXMiLCJncmlkQXJlYSIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImJveFNoYWRvdyIsImJveFNpemluZyIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRTdHlsZSIsImxldHRlclNwYWNpbmciLCJ0ZXh0VHJhbnNmb3JtIiwidGV4dEFsaWduIiwidHlwb2dyYXBoeSIsImdldFRoZW1lVmFsdWUiLCJjb25maWciLCJfdGhlbWUkdW5zdGFibGVfc3hDb24iLCJ0cmF2ZXJzZSIsInN4SW5wdXQiLCJzeE9iamVjdCIsImVtcHR5QnJlYWtwb2ludHMiLCJicmVha3BvaW50c0tleXMiLCJjc3MiLCJzdHlsZUtleSIsIm1heWJlRm4iLCJicmVha3BvaW50c1ZhbHVlcyIsIm9iamVjdHMiLCJhbGxLZXlzIiwib2JqZWN0IiwidW5pb24iLCJTZXQiLCJldmVyeSIsIm9iamVjdHNIYXZlU2FtZUtleXMiLCJ1bnN0YWJsZV9jcmVhdGVTdHlsZUZ1bmN0aW9uU3giLCJkZWZhdWx0VGhlbWUiLCJjb250ZXh0VGhlbWUiLCJUIiwiY2FwaXRhbGl6ZSIsIkVycm9yIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJpc1BsYWluT2JqZWN0IiwiY29uc3RydWN0b3IiLCJkZWVwQ2xvbmUiLCJzb3VyY2UiLCJ0YXJnZXQiLCJmb3JtYXRNdWlFcnJvck1lc3NhZ2UiLCJjb2RlIiwidXJsIiwiYXJndW1lbnRzIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZiIsIlN5bWJvbCIsImZvciIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiZyIsImQiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIiwiX2V4dGVuZHMiLCJiaW5kIiwiYXBwbHkiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2578.f529be22.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2578.f529be22.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2578.f529be22.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2718.72e8f286.js b/react_frontend/static/react_frontend/js/2718.72e8f286.js new file mode 100644 index 000000000..4f7ab800b --- /dev/null +++ b/react_frontend/static/react_frontend/js/2718.72e8f286.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2718],{7007:e=>{"use strict";var t,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var o=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(n,r){function o(n){e.removeListener(t,i),r(n)}function i(){"function"==typeof e.removeListener&&e.removeListener("error",o),n([].slice.call(arguments))}g(e,t,i,{once:!0}),"error"!==t&&function(e,t){"function"==typeof e.on&&g(e,"error",t,{once:!0})}(e,o)}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var u=10;function c(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function a(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function s(e,t,n,r){var o,i,u,s;if(c(n),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),i=e._events),u=i[t]),void 0===u)u=i[t]=n,++e._eventsCount;else if("function"==typeof u?u=i[t]=r?[n,u]:[u,n]:r?u.unshift(n):u.push(n),(o=a(e))>0&&u.length>o&&!u.warned){u.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+u.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=u.length,s=l,console&&console.warn&&console.warn(s)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function f(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},o=l.bind(r);return o.listener=n,r.wrapFn=o,o}function d(e,t,n){var r=e._events;if(void 0===r)return[];var o=r[t];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(u=t[0]),u instanceof Error)throw u;var c=new Error("Unhandled error."+(u?" ("+u.message+")":""));throw c.context=u,c}var a=i[e];if(void 0===a)return!1;if("function"==typeof a)r(a,this,t);else{var s=a.length,l=h(a,s);for(n=0;n=0;i--)if(n[i]===t||n[i].listener===t){u=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},i.prototype.listeners=function(e){return d(this,e,!0)},i.prototype.rawListeners=function(e){return d(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},i.prototype.listenerCount=p,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,u){if(u!==r){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},8807:(e,t,n)=>{"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?e.apply(this,o):function(){for(var e=arguments.length,r=new Array(e),i=0;iZ,wG:()=>F});var p=l((function(e,t){throw new Error(e[t]||e.default)}))({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),h=function(e,t){return f(t)||p("changeType"),Object.keys(t).some((function(t){return n=e,r=t,!Object.prototype.hasOwnProperty.call(n,r);var n,r}))&&p("changeField"),t},g=function(e){d(e)||p("selectorType")},v=function(e){d(e)||f(e)||p("handlerType"),f(e)&&Object.values(e).some((function(e){return!d(e)}))&&p("handlersType")},y=function(e){var t;e||p("initialIsRequired"),f(e)||p("initialType"),t=e,Object.keys(t).length||p("initialContent")};function m(e,t){return d(t)?t(e.current):t}function b(e,t){return e.current=s(s({},e.current),t),t}function w(e,t,n){return d(t)?t(e.current):Object.keys(n).forEach((function(n){var r;return null===(r=t[n])||void 0===r?void 0:r.call(t,e.current[n])})),n}const O=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};y(e),v(t);var n={current:e},r=l(w)(n,t),o=l(b)(n),i=l(h)(e),u=l(m)(n);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return g(e),e(n.current)},function(e){!function(){for(var e=arguments.length,t=new Array(e),n=0;n=j.length?j.apply(this,r):function(){for(var n=arguments.length,o=new Array(n),i=0;i=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(t,["monaco"]);S((function(e){return{config:_(e.config,r),monaco:n}}))},init:function(){var e=C((function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}}));if(!e.isInitialized){if(S({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),R(V);if(window.monaco&&window.monaco.editor)return D(window.monaco),e.resolve(window.monaco),R(V);!function(){for(var e=arguments.length,t=new Array(e),n=0;n{r.current=!1}:e,t)};function $(){}function J(e,t,n,r){return function(e,t){return e.editor.getModel(Q(e,t))}(e,r)||function(e,t,n,r){return e.editor.createModel(t,n,r?Q(e,r):void 0)}(e,t,n,r)}function Q(e,t){return e.Uri.parse(t)}(0,q.memo)((function({original:e,modified:t,language:n,originalLanguage:r,modifiedLanguage:o,originalModelPath:i,modifiedModelPath:u,keepCurrentOriginalModel:c=!1,keepCurrentModifiedModel:a=!1,theme:s="light",loading:l="Loading...",options:f={},height:d="100%",width:p="100%",className:h,wrapperProps:g={},beforeMount:v=$,onMount:y=$}){let[m,b]=(0,q.useState)(!1),[w,O]=(0,q.useState)(!0),j=(0,q.useRef)(null),E=(0,q.useRef)(null),L=(0,q.useRef)(null),M=(0,q.useRef)(y),_=(0,q.useRef)(v),P=(0,q.useRef)(!1);G((()=>{let e=F.init();return e.then((e=>(E.current=e)&&O(!1))).catch((e=>"cancelation"!==e?.type&&console.error("Monaco initialization: error:",e))),()=>j.current?function(){let e=j.current?.getModel();c||e?.original?.dispose(),a||e?.modified?.dispose(),j.current?.dispose()}():e.cancel()})),H((()=>{if(j.current&&E.current){let t=j.current.getOriginalEditor(),o=J(E.current,e||"",r||n||"text",i||"");o!==t.getModel()&&t.setModel(o)}}),[i],m),H((()=>{if(j.current&&E.current){let e=j.current.getModifiedEditor(),r=J(E.current,t||"",o||n||"text",u||"");r!==e.getModel()&&e.setModel(r)}}),[u],m),H((()=>{let e=j.current.getModifiedEditor();e.getOption(E.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())}),[t],m),H((()=>{j.current?.getModel()?.original.setValue(e||"")}),[e],m),H((()=>{let{original:e,modified:t}=j.current.getModel();E.current.editor.setModelLanguage(e,r||n||"text"),E.current.editor.setModelLanguage(t,o||n||"text")}),[n,r,o],m),H((()=>{E.current?.editor.setTheme(s)}),[s],m),H((()=>{j.current?.updateOptions(f)}),[f],m);let R=(0,q.useCallback)((()=>{if(!E.current)return;_.current(E.current);let c=J(E.current,e||"",r||n||"text",i||""),a=J(E.current,t||"",o||n||"text",u||"");j.current?.setModel({original:c,modified:a})}),[n,t,o,e,r,i,u]),x=(0,q.useCallback)((()=>{!P.current&&L.current&&(j.current=E.current.editor.createDiffEditor(L.current,{automaticLayout:!0,...f}),R(),E.current?.editor.setTheme(s),b(!0),P.current=!0)}),[f,s,R]);return(0,q.useEffect)((()=>{m&&M.current(j.current,E.current)}),[m]),(0,q.useEffect)((()=>{!w&&!m&&x()}),[w,m,x]),q.createElement(Y,{width:p,height:d,isEditorReady:m,loading:l,_ref:L,className:h,wrapperProps:g})}));var X=new Map,Z=(0,q.memo)((function({defaultValue:e,defaultLanguage:t,defaultPath:n,value:r,language:o,path:i,theme:u="light",line:c,loading:a="Loading...",options:s={},overrideServices:l={},saveViewState:f=!0,keepCurrentModel:d=!1,width:p="100%",height:h="100%",className:g,wrapperProps:v={},beforeMount:y=$,onMount:m=$,onChange:b,onValidate:w=$}){let[O,j]=(0,q.useState)(!1),[E,L]=(0,q.useState)(!0),M=(0,q.useRef)(null),_=(0,q.useRef)(null),P=(0,q.useRef)(null),R=(0,q.useRef)(m),x=(0,q.useRef)(y),k=(0,q.useRef)(),C=(0,q.useRef)(r),S=function(e){let t=(0,q.useRef)();return(0,q.useEffect)((()=>{t.current=e}),[e]),t.current}(i),T=(0,q.useRef)(!1),I=(0,q.useRef)(!1);G((()=>{let e=F.init();return e.then((e=>(M.current=e)&&L(!1))).catch((e=>"cancelation"!==e?.type&&console.error("Monaco initialization: error:",e))),()=>_.current?(k.current?.dispose(),d?f&&X.set(i,_.current.saveViewState()):_.current.getModel()?.dispose(),void _.current.dispose()):e.cancel()})),H((()=>{let u=J(M.current,e||r||"",t||o||"",i||n||"");u!==_.current?.getModel()&&(f&&X.set(S,_.current?.saveViewState()),_.current?.setModel(u),f&&_.current?.restoreViewState(X.get(i)))}),[i],O),H((()=>{_.current?.updateOptions(s)}),[s],O),H((()=>{!_.current||void 0===r||(_.current.getOption(M.current.editor.EditorOption.readOnly)?_.current.setValue(r):r!==_.current.getValue()&&(I.current=!0,_.current.executeEdits("",[{range:_.current.getModel().getFullModelRange(),text:r,forceMoveMarkers:!0}]),_.current.pushUndoStop(),I.current=!1))}),[r],O),H((()=>{let e=_.current?.getModel();e&&o&&M.current?.editor.setModelLanguage(e,o)}),[o],O),H((()=>{void 0!==c&&_.current?.revealLine(c)}),[c],O),H((()=>{M.current?.editor.setTheme(u)}),[u],O);let A=(0,q.useCallback)((()=>{if(P.current&&M.current&&!T.current){x.current(M.current);let a=i||n,d=J(M.current,r||e||"",t||o||"",a||"");_.current=M.current?.editor.create(P.current,{model:d,automaticLayout:!0,...s},l),f&&_.current.restoreViewState(X.get(a)),M.current.editor.setTheme(u),void 0!==c&&_.current.revealLine(c),j(!0),T.current=!0}}),[e,t,n,r,o,i,s,l,f,u,c]);return(0,q.useEffect)((()=>{O&&R.current(_.current,M.current)}),[O]),(0,q.useEffect)((()=>{!E&&!O&&A()}),[E,O,A]),C.current=r,(0,q.useEffect)((()=>{O&&b&&(k.current?.dispose(),k.current=_.current?.onDidChangeModelContent((e=>{I.current||b(_.current.getValue(),e)})))}),[O,b]),(0,q.useEffect)((()=>{if(O){let e=M.current.editor.onDidChangeMarkers((e=>{let t=_.current.getModel()?.uri;if(t&&e.find((e=>e.path===t.path))){let e=M.current.editor.getModelMarkers({resource:t});w?.(e)}}));return()=>{e?.dispose()}}return()=>{}}),[O,w]),q.createElement(Y,{width:p,height:h,isEditorReady:O,loading:a,_ref:P,className:g,wrapperProps:v})}))}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBRWxELFNBQVN1TSx5QkFBd0JMLElBQUlELEVBQUVqTSxTQUFTbUosRUFBRWpHLEVBQUVsRCxRQUFRb0ssV0FBVzhCLEVBQUMsSUFBRyxHQUFHLENBQUM3QyxFQUFFRixLQUFJLGdCQUFFLEtBQUssR0FBR0UsRUFBRSxDQUFDLElBQUk2QyxFQUFFMUMsRUFBRXhKLFFBQVF1RixPQUFPaUgsb0JBQW1CM1osSUFBSSxJQUFJNFosRUFBRXZKLEVBQUVsRCxRQUFRcUgsWUFBWXFGLElBQUksR0FBR0QsR0FBRzVaLEVBQUU4WixNQUFLQyxHQUFHQSxFQUFFcEIsT0FBT2lCLEVBQUVqQixPQUFNLENBQUMsSUFBSW9CLEVBQUVwRCxFQUFFeEosUUFBUXVGLE9BQU9zSCxnQkFBZ0IsQ0FBQ0MsU0FBU0wsSUFBSXJELElBQUl3RCxFQUFFLEtBQUksTUFBTSxLQUFLVixHQUFHdkMsU0FBUSxDQUFFLENBQUMsTUFBTSxNQUFLLEdBQUcsQ0FBQ04sRUFBRUQsSUFBMEksZ0JBQWlCN0MsRUFBRSxDQUFDVixNQUFNOEMsRUFBRTNDLE9BQU80QyxFQUFFbkMsY0FBYzRDLEVBQUUzQyxRQUFRNEIsRUFBRWhELEtBQUttRSxFQUFFNUMsVUFBVWdDLEVBQUUvQixhQUFhaUMsR0FBRyxHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvZXZlbnRzL2V2ZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Btb25hY28tZWRpdG9yL2xvYWRlci9saWIvZXMvX3ZpcnR1YWwvX3JvbGx1cFBsdWdpbkJhYmVsSGVscGVycy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9zdGF0ZS1sb2NhbC9saWIvZXMvc3RhdGUtbG9jYWwuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG1vbmFjby1lZGl0b3IvbG9hZGVyL2xpYi9lcy92YWxpZGF0b3JzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Btb25hY28tZWRpdG9yL2xvYWRlci9saWIvZXMvdXRpbHMvY3VycnkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG1vbmFjby1lZGl0b3IvbG9hZGVyL2xpYi9lcy91dGlscy9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbW9uYWNvLWVkaXRvci9sb2FkZXIvbGliL2VzL3V0aWxzL2RlZXBNZXJnZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbW9uYWNvLWVkaXRvci9sb2FkZXIvbGliL2VzL3V0aWxzL21ha2VDYW5jZWxhYmxlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Btb25hY28tZWRpdG9yL2xvYWRlci9saWIvZXMvbG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Btb25hY28tZWRpdG9yL2xvYWRlci9saWIvZXMvY29uZmlnL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Btb25hY28tZWRpdG9yL2xvYWRlci9saWIvZXMvdXRpbHMvY29tcG9zZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbW9uYWNvLWVkaXRvci9yZWFjdC9kaXN0L2luZGV4Lm1qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUiA9IHR5cGVvZiBSZWZsZWN0ID09PSAnb2JqZWN0JyA/IFJlZmxlY3QgOiBudWxsXG52YXIgUmVmbGVjdEFwcGx5ID0gUiAmJiB0eXBlb2YgUi5hcHBseSA9PT0gJ2Z1bmN0aW9uJ1xuICA/IFIuYXBwbHlcbiAgOiBmdW5jdGlvbiBSZWZsZWN0QXBwbHkodGFyZ2V0LCByZWNlaXZlciwgYXJncykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKTtcbiAgfVxuXG52YXIgUmVmbGVjdE93bktleXNcbmlmIChSICYmIHR5cGVvZiBSLm93bktleXMgPT09ICdmdW5jdGlvbicpIHtcbiAgUmVmbGVjdE93bktleXMgPSBSLm93bktleXNcbn0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpXG4gICAgICAuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSk7XG4gIH07XG59IGVsc2Uge1xuICBSZWZsZWN0T3duS2V5cyA9IGZ1bmN0aW9uIFJlZmxlY3RPd25LZXlzKHRhcmdldCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0YXJnZXQpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBQcm9jZXNzRW1pdFdhcm5pbmcod2FybmluZykge1xuICBpZiAoY29uc29sZSAmJiBjb25zb2xlLndhcm4pIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbn1cblxudmFyIE51bWJlcklzTmFOID0gTnVtYmVyLmlzTmFOIHx8IGZ1bmN0aW9uIE51bWJlcklzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgRXZlbnRFbWl0dGVyLmluaXQuY2FsbCh0aGlzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyO1xubW9kdWxlLmV4cG9ydHMub25jZSA9IG9uY2U7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzQ291bnQgPSAwO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG52YXIgZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG5mdW5jdGlvbiBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKSB7XG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGxpc3RlbmVyKTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRFbWl0dGVyLCAnZGVmYXVsdE1heExpc3RlbmVycycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1heExpc3RlbmVycztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbihhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBOdW1iZXJJc05hTihhcmcpKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBhcmcgKyAnLicpO1xuICAgIH1cbiAgICBkZWZhdWx0TWF4TGlzdGVuZXJzID0gYXJnO1xuICB9XG59KTtcblxuRXZlbnRFbWl0dGVyLmluaXQgPSBmdW5jdGlvbigpIHtcblxuICBpZiAodGhpcy5fZXZlbnRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuX2V2ZW50cyA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59O1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IE51bWJlcklzTmFOKG4pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgbiArICcuJyk7XG4gIH1cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBfZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiBfZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBhcmdzID0gW107XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgdmFyIGRvRXJyb3IgPSAodHlwZSA9PT0gJ2Vycm9yJyk7XG5cbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKVxuICAgIGRvRXJyb3IgPSAoZG9FcnJvciAmJiBldmVudHMuZXJyb3IgPT09IHVuZGVmaW5lZCk7XG4gIGVsc2UgaWYgKCFkb0Vycm9yKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmIChkb0Vycm9yKSB7XG4gICAgdmFyIGVyO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApXG4gICAgICBlciA9IGFyZ3NbMF07XG4gICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIC8vIE5vdGU6IFRoZSBjb21tZW50cyBvbiB0aGUgYHRocm93YCBsaW5lcyBhcmUgaW50ZW50aW9uYWwsIHRoZXkgc2hvd1xuICAgICAgLy8gdXAgaW4gTm9kZSdzIG91dHB1dCBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi5cbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgIH1cbiAgICAvLyBBdCBsZWFzdCBnaXZlIHNvbWUga2luZCBvZiBjb250ZXh0IHRvIHRoZSB1c2VyXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIGVycm9yLicgKyAoZXIgPyAnICgnICsgZXIubWVzc2FnZSArICcpJyA6ICcnKSk7XG4gICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICB0aHJvdyBlcnI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IGV2ZW50c1t0eXBlXTtcblxuICBpZiAoaGFuZGxlciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBSZWZsZWN0QXBwbHkoaGFuZGxlciwgdGhpcywgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIFJlZmxlY3RBcHBseShsaXN0ZW5lcnNbaV0sIHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBfYWRkTGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgcHJlcGVuZCkge1xuICB2YXIgbTtcbiAgdmFyIGV2ZW50cztcbiAgdmFyIGV4aXN0aW5nO1xuXG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGFyZ2V0Ll9ldmVudHNDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gICAgaWYgKGV2ZW50cy5uZXdMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgPyBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICAgICAgLy8gUmUtYXNzaWduIGBldmVudHNgIGJlY2F1c2UgYSBuZXdMaXN0ZW5lciBoYW5kbGVyIGNvdWxkIGhhdmUgY2F1c2VkIHRoZVxuICAgICAgLy8gdGhpcy5fZXZlbnRzIHRvIGJlIGFzc2lnbmVkIHRvIGEgbmV3IG9iamVjdFxuICAgICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gICAgfVxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgcHJlcGVuZCA/IFtsaXN0ZW5lciwgZXhpc3RpbmddIDogW2V4aXN0aW5nLCBsaXN0ZW5lcl07XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgfSBlbHNlIGlmIChwcmVwZW5kKSB7XG4gICAgICBleGlzdGluZy51bnNoaWZ0KGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RpbmcucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgICBtID0gX2dldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgIGlmIChtID4gMCAmJiBleGlzdGluZy5sZW5ndGggPiBtICYmICFleGlzdGluZy53YXJuZWQpIHtcbiAgICAgIGV4aXN0aW5nLndhcm5lZCA9IHRydWU7XG4gICAgICAvLyBObyBlcnJvciBjb2RlIGZvciB0aGlzIHNpbmNlIGl0IGlzIGEgV2FybmluZ1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcubGVuZ3RoICsgJyAnICsgU3RyaW5nKHR5cGUpICsgJyBsaXN0ZW5lcnMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNyZWFzZSBsaW1pdCcpO1xuICAgICAgdy5uYW1lID0gJ01heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyc7XG4gICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICB3LnR5cGUgPSB0eXBlO1xuICAgICAgdy5jb3VudCA9IGV4aXN0aW5nLmxlbmd0aDtcbiAgICAgIFByb2Nlc3NFbWl0V2FybmluZyh3KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICBpZiAoIXRoaXMuZmlyZWQpIHtcbiAgICB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIHRoaXMud3JhcEZuKTtcbiAgICB0aGlzLmZpcmVkID0gdHJ1ZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LCBhcmd1bWVudHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9vbmNlV3JhcCh0YXJnZXQsIHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBzdGF0ZSA9IHsgZmlyZWQ6IGZhbHNlLCB3cmFwRm46IHVuZGVmaW5lZCwgdGFyZ2V0OiB0YXJnZXQsIHR5cGU6IHR5cGUsIGxpc3RlbmVyOiBsaXN0ZW5lciB9O1xuICB2YXIgd3JhcHBlZCA9IG9uY2VXcmFwcGVyLmJpbmQoc3RhdGUpO1xuICB3cmFwcGVkLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHN0YXRlLndyYXBGbiA9IHdyYXBwZWQ7XG4gIHJldHVybiB3cmFwcGVkO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbiBvbmNlKHR5cGUsIGxpc3RlbmVyKSB7XG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICB0aGlzLm9uKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZE9uY2VMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gICAgICB0aGlzLnByZXBlbmRMaXN0ZW5lcih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbi8vIEVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZiBhbmQgb25seSBpZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgdmFyIGxpc3QsIGV2ZW50cywgcG9zaXRpb24sIGksIG9yaWdpbmFsTGlzdGVuZXI7XG5cbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKGxpc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fCBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdC5saXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGxpc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcG9zaXRpb24gPSAtMTtcblxuICAgICAgICBmb3IgKGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8IGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBvcmlnaW5hbExpc3RlbmVyID0gbGlzdFtpXS5saXN0ZW5lcjtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAwKVxuICAgICAgICAgIGxpc3Quc2hpZnQoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3BsaWNlT25lKGxpc3QsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgb3JpZ2luYWxMaXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub2ZmID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyh0eXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzLCBldmVudHMsIGk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50c1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhldmVudHMpO1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIExJRk8gb3JkZXJcbiAgICAgICAgZm9yIChpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbmZ1bmN0aW9uIF9saXN0ZW5lcnModGFyZ2V0LCB0eXBlLCB1bndyYXApIHtcbiAgdmFyIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmIChldmxpc3RlbmVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gdW53cmFwID8gW2V2bGlzdGVuZXIubGlzdGVuZXIgfHwgZXZsaXN0ZW5lcl0gOiBbZXZsaXN0ZW5lcl07XG5cbiAgcmV0dXJuIHVud3JhcCA/XG4gICAgdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGV2bGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICByZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQgPiAwID8gUmVmbGVjdE93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICg7IGluZGV4ICsgMSA8IGxpc3QubGVuZ3RoOyBpbmRleCsrKVxuICAgIGxpc3RbaW5kZXhdID0gbGlzdFtpbmRleCArIDFdO1xuICBsaXN0LnBvcCgpO1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBvbmNlKGVtaXR0ZXIsIG5hbWUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBlcnJvckxpc3RlbmVyKGVycikge1xuICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcihuYW1lLCByZXNvbHZlcik7XG4gICAgICByZWplY3QoZXJyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZXNvbHZlcigpIHtcbiAgICAgIGlmICh0eXBlb2YgZW1pdHRlci5yZW1vdmVMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIGVycm9yTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgcmVzb2x2ZShbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIH07XG5cbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgcmVzb2x2ZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICBpZiAobmFtZSAhPT0gJ2Vycm9yJykge1xuICAgICAgYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgZXJyb3JMaXN0ZW5lciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGhhbmRsZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCAnZXJyb3InLCBoYW5kbGVyLCBmbGFncyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIGxpc3RlbmVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoZmxhZ3Mub25jZSkge1xuICAgICAgZW1pdHRlci5vbmNlKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdHRlci5vbihuYW1lLCBsaXN0ZW5lcik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBFdmVudFRhcmdldCBkb2VzIG5vdCBoYXZlIGBlcnJvcmAgZXZlbnQgc2VtYW50aWNzIGxpa2UgTm9kZVxuICAgIC8vIEV2ZW50RW1pdHRlcnMsIHdlIGRvIG5vdCBsaXN0ZW4gZm9yIGBlcnJvcmAgZXZlbnRzIGhlcmUuXG4gICAgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKG5hbWUsIGZ1bmN0aW9uIHdyYXBMaXN0ZW5lcihhcmcpIHtcbiAgICAgIC8vIElFIGRvZXMgbm90IGhhdmUgYnVpbHRpbiBgeyBvbmNlOiB0cnVlIH1gIHN1cHBvcnQgc28gd2VcbiAgICAgIC8vIGhhdmUgdG8gZG8gaXQgbWFudWFsbHkuXG4gICAgICBpZiAoZmxhZ3Mub25jZSkge1xuICAgICAgICBlbWl0dGVyLnJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgd3JhcExpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIGxpc3RlbmVyKGFyZyk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiZW1pdHRlclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBFdmVudEVtaXR0ZXIuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBlbWl0dGVyKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuICAgIGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICAgIH0pO1xuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkge1xuICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTtcbiAgdmFyIHRhcmdldCA9IHt9O1xuICB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7XG4gIHZhciBrZXksIGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBzb3VyY2VLZXlzW2ldO1xuICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuXG4gIHZhciB0YXJnZXQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKTtcblxuICB2YXIga2V5LCBpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHNvdXJjZVN5bWJvbEtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc291cmNlU3ltYm9sS2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTtcbiAgICAgIGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7XG4gICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzb3VyY2UsIGtleSkpIGNvbnRpbnVlO1xuICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcbiAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gIHRyeSB7XG4gICAgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHtcbiAgaWYgKCFvKSByZXR1cm47XG4gIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG4gIHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTtcbiAgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTtcbiAgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7XG4gIGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldO1xuXG4gIHJldHVybiBhcnIyO1xufVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuXG5leHBvcnQgeyBfYXJyYXlMaWtlVG9BcnJheSBhcyBhcnJheUxpa2VUb0FycmF5LCBfYXJyYXlXaXRoSG9sZXMgYXMgYXJyYXlXaXRoSG9sZXMsIF9kZWZpbmVQcm9wZXJ0eSBhcyBkZWZpbmVQcm9wZXJ0eSwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0IGFzIGl0ZXJhYmxlVG9BcnJheUxpbWl0LCBfbm9uSXRlcmFibGVSZXN0IGFzIG5vbkl0ZXJhYmxlUmVzdCwgX29iamVjdFNwcmVhZDIgYXMgb2JqZWN0U3ByZWFkMiwgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBhcyBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLCBfc2xpY2VkVG9BcnJheSBhcyBzbGljZWRUb0FycmF5LCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgYXMgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgfTtcbiIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpO1xuXG4gIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7XG4gICAgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkge1xuICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7XG4gICAgfSk7XG4gICAga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQyKHRhcmdldCkge1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9O1xuXG4gICAgaWYgKGkgJSAyKSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBjb21wb3NlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZm5zID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGZuc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiBmbnMucmVkdWNlUmlnaHQoZnVuY3Rpb24gKHksIGYpIHtcbiAgICAgIHJldHVybiBmKHkpO1xuICAgIH0sIHgpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjdXJyeShmbikge1xuICByZXR1cm4gZnVuY3Rpb24gY3VycmllZCgpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MubGVuZ3RoID49IGZuLmxlbmd0aCA/IGZuLmFwcGx5KHRoaXMsIGFyZ3MpIDogZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBuZXh0QXJncyA9IG5ldyBBcnJheShfbGVuMyksIF9rZXkzID0gMDsgX2tleTMgPCBfbGVuMzsgX2tleTMrKykge1xuICAgICAgICBuZXh0QXJnc1tfa2V5M10gPSBhcmd1bWVudHNbX2tleTNdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY3VycmllZC5hcHBseShfdGhpcywgW10uY29uY2F0KGFyZ3MsIG5leHRBcmdzKSk7XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHt9LnRvU3RyaW5nLmNhbGwodmFsdWUpLmluY2x1ZGVzKCdPYmplY3QnKTtcbn1cblxuZnVuY3Rpb24gaXNFbXB0eShvYmopIHtcbiAgcmV0dXJuICFPYmplY3Qua2V5cyhvYmopLmxlbmd0aDtcbn1cblxuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hhbmdlcyhpbml0aWFsLCBjaGFuZ2VzKSB7XG4gIGlmICghaXNPYmplY3QoY2hhbmdlcykpIGVycm9ySGFuZGxlcignY2hhbmdlVHlwZScpO1xuICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlcykuc29tZShmdW5jdGlvbiAoZmllbGQpIHtcbiAgICByZXR1cm4gIWhhc093blByb3BlcnR5KGluaXRpYWwsIGZpZWxkKTtcbiAgfSkpIGVycm9ySGFuZGxlcignY2hhbmdlRmllbGQnKTtcbiAgcmV0dXJuIGNoYW5nZXM7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlU2VsZWN0b3Ioc2VsZWN0b3IpIHtcbiAgaWYgKCFpc0Z1bmN0aW9uKHNlbGVjdG9yKSkgZXJyb3JIYW5kbGVyKCdzZWxlY3RvclR5cGUnKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVIYW5kbGVyKGhhbmRsZXIpIHtcbiAgaWYgKCEoaXNGdW5jdGlvbihoYW5kbGVyKSB8fCBpc09iamVjdChoYW5kbGVyKSkpIGVycm9ySGFuZGxlcignaGFuZGxlclR5cGUnKTtcbiAgaWYgKGlzT2JqZWN0KGhhbmRsZXIpICYmIE9iamVjdC52YWx1ZXMoaGFuZGxlcikuc29tZShmdW5jdGlvbiAoX2hhbmRsZXIpIHtcbiAgICByZXR1cm4gIWlzRnVuY3Rpb24oX2hhbmRsZXIpO1xuICB9KSkgZXJyb3JIYW5kbGVyKCdoYW5kbGVyc1R5cGUnKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVJbml0aWFsKGluaXRpYWwpIHtcbiAgaWYgKCFpbml0aWFsKSBlcnJvckhhbmRsZXIoJ2luaXRpYWxJc1JlcXVpcmVkJyk7XG4gIGlmICghaXNPYmplY3QoaW5pdGlhbCkpIGVycm9ySGFuZGxlcignaW5pdGlhbFR5cGUnKTtcbiAgaWYgKGlzRW1wdHkoaW5pdGlhbCkpIGVycm9ySGFuZGxlcignaW5pdGlhbENvbnRlbnQnKTtcbn1cblxuZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvck1lc3NhZ2VzLCB0eXBlKSB7XG4gIHRocm93IG5ldyBFcnJvcihlcnJvck1lc3NhZ2VzW3R5cGVdIHx8IGVycm9yTWVzc2FnZXNbXCJkZWZhdWx0XCJdKTtcbn1cblxudmFyIGVycm9yTWVzc2FnZXMgPSB7XG4gIGluaXRpYWxJc1JlcXVpcmVkOiAnaW5pdGlhbCBzdGF0ZSBpcyByZXF1aXJlZCcsXG4gIGluaXRpYWxUeXBlOiAnaW5pdGlhbCBzdGF0ZSBzaG91bGQgYmUgYW4gb2JqZWN0JyxcbiAgaW5pdGlhbENvbnRlbnQ6ICdpbml0aWFsIHN0YXRlIHNob3VsZG5cXCd0IGJlIGFuIGVtcHR5IG9iamVjdCcsXG4gIGhhbmRsZXJUeXBlOiAnaGFuZGxlciBzaG91bGQgYmUgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24nLFxuICBoYW5kbGVyc1R5cGU6ICdhbGwgaGFuZGxlcnMgc2hvdWxkIGJlIGEgZnVuY3Rpb25zJyxcbiAgc2VsZWN0b3JUeXBlOiAnc2VsZWN0b3Igc2hvdWxkIGJlIGEgZnVuY3Rpb24nLFxuICBjaGFuZ2VUeXBlOiAncHJvdmlkZWQgdmFsdWUgb2YgY2hhbmdlcyBzaG91bGQgYmUgYW4gb2JqZWN0JyxcbiAgY2hhbmdlRmllbGQ6ICdpdCBzZWFtcyB5b3Ugd2FudCB0byBjaGFuZ2UgYSBmaWVsZCBpbiB0aGUgc3RhdGUgd2hpY2ggaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgXCJpbml0aWFsXCIgc3RhdGUnLFxuICBcImRlZmF1bHRcIjogJ2FuIHVua25vd24gZXJyb3IgYWNjdXJlZCBpbiBgc3RhdGUtbG9jYWxgIHBhY2thZ2UnXG59O1xudmFyIGVycm9ySGFuZGxlciA9IGN1cnJ5KHRocm93RXJyb3IpKGVycm9yTWVzc2FnZXMpO1xudmFyIHZhbGlkYXRvcnMgPSB7XG4gIGNoYW5nZXM6IHZhbGlkYXRlQ2hhbmdlcyxcbiAgc2VsZWN0b3I6IHZhbGlkYXRlU2VsZWN0b3IsXG4gIGhhbmRsZXI6IHZhbGlkYXRlSGFuZGxlcixcbiAgaW5pdGlhbDogdmFsaWRhdGVJbml0aWFsXG59O1xuXG5mdW5jdGlvbiBjcmVhdGUoaW5pdGlhbCkge1xuICB2YXIgaGFuZGxlciA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG4gIHZhbGlkYXRvcnMuaW5pdGlhbChpbml0aWFsKTtcbiAgdmFsaWRhdG9ycy5oYW5kbGVyKGhhbmRsZXIpO1xuICB2YXIgc3RhdGUgPSB7XG4gICAgY3VycmVudDogaW5pdGlhbFxuICB9O1xuICB2YXIgZGlkVXBkYXRlID0gY3VycnkoZGlkU3RhdGVVcGRhdGUpKHN0YXRlLCBoYW5kbGVyKTtcbiAgdmFyIHVwZGF0ZSA9IGN1cnJ5KHVwZGF0ZVN0YXRlKShzdGF0ZSk7XG4gIHZhciB2YWxpZGF0ZSA9IGN1cnJ5KHZhbGlkYXRvcnMuY2hhbmdlcykoaW5pdGlhbCk7XG4gIHZhciBnZXRDaGFuZ2VzID0gY3VycnkoZXh0cmFjdENoYW5nZXMpKHN0YXRlKTtcblxuICBmdW5jdGlvbiBnZXRTdGF0ZSgpIHtcbiAgICB2YXIgc2VsZWN0b3IgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH07XG4gICAgdmFsaWRhdG9ycy5zZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgcmV0dXJuIHNlbGVjdG9yKHN0YXRlLmN1cnJlbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUoY2F1c2VkQ2hhbmdlcykge1xuICAgIGNvbXBvc2UoZGlkVXBkYXRlLCB1cGRhdGUsIHZhbGlkYXRlLCBnZXRDaGFuZ2VzKShjYXVzZWRDaGFuZ2VzKTtcbiAgfVxuXG4gIHJldHVybiBbZ2V0U3RhdGUsIHNldFN0YXRlXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdENoYW5nZXMoc3RhdGUsIGNhdXNlZENoYW5nZXMpIHtcbiAgcmV0dXJuIGlzRnVuY3Rpb24oY2F1c2VkQ2hhbmdlcykgPyBjYXVzZWRDaGFuZ2VzKHN0YXRlLmN1cnJlbnQpIDogY2F1c2VkQ2hhbmdlcztcbn1cblxuZnVuY3Rpb24gdXBkYXRlU3RhdGUoc3RhdGUsIGNoYW5nZXMpIHtcbiAgc3RhdGUuY3VycmVudCA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBzdGF0ZS5jdXJyZW50KSwgY2hhbmdlcyk7XG4gIHJldHVybiBjaGFuZ2VzO1xufVxuXG5mdW5jdGlvbiBkaWRTdGF0ZVVwZGF0ZShzdGF0ZSwgaGFuZGxlciwgY2hhbmdlcykge1xuICBpc0Z1bmN0aW9uKGhhbmRsZXIpID8gaGFuZGxlcihzdGF0ZS5jdXJyZW50KSA6IE9iamVjdC5rZXlzKGNoYW5nZXMpLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgdmFyIF9oYW5kbGVyJGZpZWxkO1xuXG4gICAgcmV0dXJuIChfaGFuZGxlciRmaWVsZCA9IGhhbmRsZXJbZmllbGRdKSA9PT0gbnVsbCB8fCBfaGFuZGxlciRmaWVsZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2hhbmRsZXIkZmllbGQuY2FsbChoYW5kbGVyLCBzdGF0ZS5jdXJyZW50W2ZpZWxkXSk7XG4gIH0pO1xuICByZXR1cm4gY2hhbmdlcztcbn1cblxudmFyIGluZGV4ID0ge1xuICBjcmVhdGU6IGNyZWF0ZVxufTtcblxuZXhwb3J0IGRlZmF1bHQgaW5kZXg7XG4iLCJpbXBvcnQgY3VycnkgZnJvbSAnLi4vdXRpbHMvY3VycnkuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4uL3V0aWxzL2lzT2JqZWN0LmpzJztcblxuLyoqXG4gKiB2YWxpZGF0ZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGFuZCBpbmZvcm1zIGFib3V0IGRlcHJlY2F0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIC0gdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IFxuICogQHJldHVybiB7T2JqZWN0fSBjb25maWcgLSB0aGUgdmFsaWRhdGVkIGNvbmZpZ3VyYXRpb24gb2JqZWN0XG4gKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVDb25maWcoY29uZmlnKSB7XG4gIGlmICghY29uZmlnKSBlcnJvckhhbmRsZXIoJ2NvbmZpZ0lzUmVxdWlyZWQnKTtcbiAgaWYgKCFpc09iamVjdChjb25maWcpKSBlcnJvckhhbmRsZXIoJ2NvbmZpZ1R5cGUnKTtcblxuICBpZiAoY29uZmlnLnVybHMpIHtcbiAgICBpbmZvcm1BYm91dERlcHJlY2F0aW9uKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGhzOiB7XG4gICAgICAgIHZzOiBjb25maWcudXJscy5tb25hY29CYXNlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG4vKipcbiAqIGxvZ3MgZGVwcmVjYXRpb24gbWVzc2FnZVxuICovXG5cblxuZnVuY3Rpb24gaW5mb3JtQWJvdXREZXByZWNhdGlvbigpIHtcbiAgY29uc29sZS53YXJuKGVycm9yTWVzc2FnZXMuZGVwcmVjYXRpb24pO1xufVxuXG5mdW5jdGlvbiB0aHJvd0Vycm9yKGVycm9yTWVzc2FnZXMsIHR5cGUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXNbdHlwZV0gfHwgZXJyb3JNZXNzYWdlc1tcImRlZmF1bHRcIl0pO1xufVxuXG52YXIgZXJyb3JNZXNzYWdlcyA9IHtcbiAgY29uZmlnSXNSZXF1aXJlZDogJ3RoZSBjb25maWd1cmF0aW9uIG9iamVjdCBpcyByZXF1aXJlZCcsXG4gIGNvbmZpZ1R5cGU6ICd0aGUgY29uZmlndXJhdGlvbiBvYmplY3Qgc2hvdWxkIGJlIGFuIG9iamVjdCcsXG4gIFwiZGVmYXVsdFwiOiAnYW4gdW5rbm93biBlcnJvciBhY2N1cmVkIGluIGBAbW9uYWNvLWVkaXRvci9sb2FkZXJgIHBhY2thZ2UnLFxuICBkZXByZWNhdGlvbjogXCJEZXByZWNhdGlvbiB3YXJuaW5nIVxcbiAgICBZb3UgYXJlIHVzaW5nIGRlcHJlY2F0ZWQgd2F5IG9mIGNvbmZpZ3VyYXRpb24uXFxuXFxuICAgIEluc3RlYWQgb2YgdXNpbmdcXG4gICAgICBtb25hY28uY29uZmlnKHsgdXJsczogeyBtb25hY29CYXNlOiAnLi4uJyB9IH0pXFxuICAgIHVzZVxcbiAgICAgIG1vbmFjby5jb25maWcoeyBwYXRoczogeyB2czogJy4uLicgfSB9KVxcblxcbiAgICBGb3IgbW9yZSBwbGVhc2UgY2hlY2sgdGhlIGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3N1cmVuLWF0b3lhbi9tb25hY28tbG9hZGVyI2NvbmZpZ1xcbiAgXCJcbn07XG52YXIgZXJyb3JIYW5kbGVyID0gY3VycnkodGhyb3dFcnJvcikoZXJyb3JNZXNzYWdlcyk7XG52YXIgdmFsaWRhdG9ycyA9IHtcbiAgY29uZmlnOiB2YWxpZGF0ZUNvbmZpZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdG9ycztcbmV4cG9ydCB7IGVycm9ySGFuZGxlciwgZXJyb3JNZXNzYWdlcyB9O1xuIiwiZnVuY3Rpb24gY3VycnkoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGN1cnJpZWQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJncy5sZW5ndGggPj0gZm4ubGVuZ3RoID8gZm4uYXBwbHkodGhpcywgYXJncykgOiBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIG5leHRBcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIG5leHRBcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjdXJyaWVkLmFwcGx5KF90aGlzLCBbXS5jb25jYXQoYXJncywgbmV4dEFyZ3MpKTtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdXJyeTtcbiIsImZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB7fS50b1N0cmluZy5jYWxsKHZhbHVlKS5pbmNsdWRlcygnT2JqZWN0Jyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzT2JqZWN0O1xuIiwiaW1wb3J0IHsgb2JqZWN0U3ByZWFkMiBhcyBfb2JqZWN0U3ByZWFkMiB9IGZyb20gJy4uL192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMnO1xuXG5mdW5jdGlvbiBtZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgaWYgKHRhcmdldFtrZXldKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oc291cmNlW2tleV0sIG1lcmdlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgdGFyZ2V0KSwgc291cmNlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVyZ2U7XG4iLCIvLyBUaGUgc291cmNlIChoYXMgYmVlbiBjaGFuZ2VkKSBpcyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzU0NjUjaXNzdWVjb21tZW50LTE1Nzg4ODMyNVxudmFyIENBTkNFTEFUSU9OX01FU1NBR0UgPSB7XG4gIHR5cGU6ICdjYW5jZWxhdGlvbicsXG4gIG1zZzogJ29wZXJhdGlvbiBpcyBtYW51YWxseSBjYW5jZWxlZCdcbn07XG5cbmZ1bmN0aW9uIG1ha2VDYW5jZWxhYmxlKHByb21pc2UpIHtcbiAgdmFyIGhhc0NhbmNlbGVkXyA9IGZhbHNlO1xuICB2YXIgd3JhcHBlZFByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHJldHVybiBoYXNDYW5jZWxlZF8gPyByZWplY3QoQ0FOQ0VMQVRJT05fTUVTU0FHRSkgOiByZXNvbHZlKHZhbCk7XG4gICAgfSk7XG4gICAgcHJvbWlzZVtcImNhdGNoXCJdKHJlamVjdCk7XG4gIH0pO1xuICByZXR1cm4gd3JhcHBlZFByb21pc2UuY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBoYXNDYW5jZWxlZF8gPSB0cnVlO1xuICB9LCB3cmFwcGVkUHJvbWlzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFrZUNhbmNlbGFibGU7XG5leHBvcnQgeyBDQU5DRUxBVElPTl9NRVNTQUdFIH07XG4iLCJpbXBvcnQgeyBzbGljZWRUb0FycmF5IGFzIF9zbGljZWRUb0FycmF5LCBvYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgfSBmcm9tICcuLi9fdmlydHVhbC9fcm9sbHVwUGx1Z2luQmFiZWxIZWxwZXJzLmpzJztcbmltcG9ydCBzdGF0ZSBmcm9tICdzdGF0ZS1sb2NhbCc7XG5pbXBvcnQgY29uZmlnJDEgZnJvbSAnLi4vY29uZmlnL2luZGV4LmpzJztcbmltcG9ydCB2YWxpZGF0b3JzIGZyb20gJy4uL3ZhbGlkYXRvcnMvaW5kZXguanMnO1xuaW1wb3J0IGNvbXBvc2UgZnJvbSAnLi4vdXRpbHMvY29tcG9zZS5qcyc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnLi4vdXRpbHMvZGVlcE1lcmdlLmpzJztcbmltcG9ydCBtYWtlQ2FuY2VsYWJsZSBmcm9tICcuLi91dGlscy9tYWtlQ2FuY2VsYWJsZS5qcyc7XG5cbi8qKiB0aGUgbG9jYWwgc3RhdGUgb2YgdGhlIG1vZHVsZSAqL1xuXG52YXIgX3N0YXRlJGNyZWF0ZSA9IHN0YXRlLmNyZWF0ZSh7XG4gIGNvbmZpZzogY29uZmlnJDEsXG4gIGlzSW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICByZXNvbHZlOiBudWxsLFxuICByZWplY3Q6IG51bGwsXG4gIG1vbmFjbzogbnVsbFxufSksXG4gICAgX3N0YXRlJGNyZWF0ZTIgPSBfc2xpY2VkVG9BcnJheShfc3RhdGUkY3JlYXRlLCAyKSxcbiAgICBnZXRTdGF0ZSA9IF9zdGF0ZSRjcmVhdGUyWzBdLFxuICAgIHNldFN0YXRlID0gX3N0YXRlJGNyZWF0ZTJbMV07XG4vKipcbiAqIHNldCB0aGUgbG9hZGVyIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgLSB0aGUgY29uZmlndXJhdGlvbiBvYmplY3RcbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbmZpZyhnbG9iYWxDb25maWcpIHtcbiAgdmFyIF92YWxpZGF0b3JzJGNvbmZpZyA9IHZhbGlkYXRvcnMuY29uZmlnKGdsb2JhbENvbmZpZyksXG4gICAgICBtb25hY28gPSBfdmFsaWRhdG9ycyRjb25maWcubW9uYWNvLFxuICAgICAgY29uZmlnID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF92YWxpZGF0b3JzJGNvbmZpZywgW1wibW9uYWNvXCJdKTtcblxuICBzZXRTdGF0ZShmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiBtZXJnZShzdGF0ZS5jb25maWcsIGNvbmZpZyksXG4gICAgICBtb25hY286IG1vbmFjb1xuICAgIH07XG4gIH0pO1xufVxuLyoqXG4gKiBoYW5kbGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgbW9uYWNvLWVkaXRvclxuICogQHJldHVybiB7UHJvbWlzZX0gLSByZXR1cm5zIGFuIGluc3RhbmNlIG9mIG1vbmFjbyAod2l0aCBhIGNhbmNlbGFibGUgcHJvbWlzZSlcbiAqL1xuXG5cbmZ1bmN0aW9uIGluaXQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldFN0YXRlKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgdmFyIG1vbmFjbyA9IF9yZWYubW9uYWNvLFxuICAgICAgICBpc0luaXRpYWxpemVkID0gX3JlZi5pc0luaXRpYWxpemVkLFxuICAgICAgICByZXNvbHZlID0gX3JlZi5yZXNvbHZlO1xuICAgIHJldHVybiB7XG4gICAgICBtb25hY286IG1vbmFjbyxcbiAgICAgIGlzSW5pdGlhbGl6ZWQ6IGlzSW5pdGlhbGl6ZWQsXG4gICAgICByZXNvbHZlOiByZXNvbHZlXG4gICAgfTtcbiAgfSk7XG5cbiAgaWYgKCFzdGF0ZS5pc0luaXRpYWxpemVkKSB7XG4gICAgc2V0U3RhdGUoe1xuICAgICAgaXNJbml0aWFsaXplZDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgaWYgKHN0YXRlLm1vbmFjbykge1xuICAgICAgc3RhdGUucmVzb2x2ZShzdGF0ZS5tb25hY28pO1xuICAgICAgcmV0dXJuIG1ha2VDYW5jZWxhYmxlKHdyYXBwZXJQcm9taXNlKTtcbiAgICB9XG5cbiAgICBpZiAod2luZG93Lm1vbmFjbyAmJiB3aW5kb3cubW9uYWNvLmVkaXRvcikge1xuICAgICAgc3RvcmVNb25hY29JbnN0YW5jZSh3aW5kb3cubW9uYWNvKTtcbiAgICAgIHN0YXRlLnJlc29sdmUod2luZG93Lm1vbmFjbyk7XG4gICAgICByZXR1cm4gbWFrZUNhbmNlbGFibGUod3JhcHBlclByb21pc2UpO1xuICAgIH1cblxuICAgIGNvbXBvc2UoaW5qZWN0U2NyaXB0cywgZ2V0TW9uYWNvTG9hZGVyU2NyaXB0KShjb25maWd1cmVMb2FkZXIpO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VDYW5jZWxhYmxlKHdyYXBwZXJQcm9taXNlKTtcbn1cbi8qKlxuICogaW5qZWN0cyBwcm92aWRlZCBzY3JpcHRzIGludG8gdGhlIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7T2JqZWN0fSBzY3JpcHQgLSBhbiBIVE1MIHNjcmlwdCBlbGVtZW50XG4gKiBAcmV0dXJuIHtPYmplY3R9IC0gdGhlIGluamVjdGVkIEhUTUwgc2NyaXB0IGVsZW1lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIGluamVjdFNjcmlwdHMoc2NyaXB0KSB7XG4gIHJldHVybiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG59XG4vKipcbiAqIGNyZWF0ZXMgYW4gSFRNTCBzY3JpcHQgZWxlbWVudCB3aXRoL3dpdGhvdXQgcHJvdmlkZWQgc3JjXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NyY10gLSB0aGUgc291cmNlIHBhdGggb2YgdGhlIHNjcmlwdFxuICogQHJldHVybiB7T2JqZWN0fSAtIHRoZSBjcmVhdGVkIEhUTUwgc2NyaXB0IGVsZW1lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIGNyZWF0ZVNjcmlwdChzcmMpIHtcbiAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICByZXR1cm4gc3JjICYmIChzY3JpcHQuc3JjID0gc3JjKSwgc2NyaXB0O1xufVxuLyoqXG4gKiBjcmVhdGVzIGFuIEhUTUwgc2NyaXB0IGVsZW1lbnQgd2l0aCB0aGUgbW9uYWNvIGxvYWRlciBzcmNcbiAqIEByZXR1cm4ge09iamVjdH0gLSB0aGUgY3JlYXRlZCBIVE1MIHNjcmlwdCBlbGVtZW50XG4gKi9cblxuXG5mdW5jdGlvbiBnZXRNb25hY29Mb2FkZXJTY3JpcHQoY29uZmlndXJlTG9hZGVyKSB7XG4gIHZhciBzdGF0ZSA9IGdldFN0YXRlKGZ1bmN0aW9uIChfcmVmMikge1xuICAgIHZhciBjb25maWcgPSBfcmVmMi5jb25maWcsXG4gICAgICAgIHJlamVjdCA9IF9yZWYyLnJlamVjdDtcbiAgICByZXR1cm4ge1xuICAgICAgY29uZmlnOiBjb25maWcsXG4gICAgICByZWplY3Q6IHJlamVjdFxuICAgIH07XG4gIH0pO1xuICB2YXIgbG9hZGVyU2NyaXB0ID0gY3JlYXRlU2NyaXB0KFwiXCIuY29uY2F0KHN0YXRlLmNvbmZpZy5wYXRocy52cywgXCIvbG9hZGVyLmpzXCIpKTtcblxuICBsb2FkZXJTY3JpcHQub25sb2FkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjb25maWd1cmVMb2FkZXIoKTtcbiAgfTtcblxuICBsb2FkZXJTY3JpcHQub25lcnJvciA9IHN0YXRlLnJlamVjdDtcbiAgcmV0dXJuIGxvYWRlclNjcmlwdDtcbn1cbi8qKlxuICogY29uZmlndXJlcyB0aGUgbW9uYWNvIGxvYWRlclxuICovXG5cblxuZnVuY3Rpb24gY29uZmlndXJlTG9hZGVyKCkge1xuICB2YXIgc3RhdGUgPSBnZXRTdGF0ZShmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICB2YXIgY29uZmlnID0gX3JlZjMuY29uZmlnLFxuICAgICAgICByZXNvbHZlID0gX3JlZjMucmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0ID0gX3JlZjMucmVqZWN0O1xuICAgIHJldHVybiB7XG4gICAgICBjb25maWc6IGNvbmZpZyxcbiAgICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgICByZWplY3Q6IHJlamVjdFxuICAgIH07XG4gIH0pO1xuICB2YXIgcmVxdWlyZSA9IHdpbmRvdy5yZXF1aXJlO1xuXG4gIHJlcXVpcmUuY29uZmlnKHN0YXRlLmNvbmZpZyk7XG5cbiAgcmVxdWlyZShbJ3ZzL2VkaXRvci9lZGl0b3IubWFpbiddLCBmdW5jdGlvbiAobW9uYWNvKSB7XG4gICAgc3RvcmVNb25hY29JbnN0YW5jZShtb25hY28pO1xuICAgIHN0YXRlLnJlc29sdmUobW9uYWNvKTtcbiAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgc3RhdGUucmVqZWN0KGVycm9yKTtcbiAgfSk7XG59XG4vKipcbiAqIHN0b3JlIG1vbmFjbyBpbnN0YW5jZSBpbiBsb2NhbCBzdGF0ZVxuICovXG5cblxuZnVuY3Rpb24gc3RvcmVNb25hY29JbnN0YW5jZShtb25hY28pIHtcbiAgaWYgKCFnZXRTdGF0ZSgpLm1vbmFjbykge1xuICAgIHNldFN0YXRlKHtcbiAgICAgIG1vbmFjbzogbW9uYWNvXG4gICAgfSk7XG4gIH1cbn1cbi8qKlxuICogaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9uXG4gKiBleHRyYWN0cyBzdG9yZWQgbW9uYWNvIGluc3RhbmNlXG4gKiBAcmV0dXJuIHtPYmplY3R8bnVsbH0gLSB0aGUgbW9uYWNvIGluc3RhbmNlXG4gKi9cblxuXG5mdW5jdGlvbiBfX2dldE1vbmFjb0luc3RhbmNlKCkge1xuICByZXR1cm4gZ2V0U3RhdGUoZnVuY3Rpb24gKF9yZWY0KSB7XG4gICAgdmFyIG1vbmFjbyA9IF9yZWY0Lm1vbmFjbztcbiAgICByZXR1cm4gbW9uYWNvO1xuICB9KTtcbn1cblxudmFyIHdyYXBwZXJQcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICByZXR1cm4gc2V0U3RhdGUoe1xuICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgcmVqZWN0OiByZWplY3RcbiAgfSk7XG59KTtcbnZhciBsb2FkZXIgPSB7XG4gIGNvbmZpZzogY29uZmlnLFxuICBpbml0OiBpbml0LFxuICBfX2dldE1vbmFjb0luc3RhbmNlOiBfX2dldE1vbmFjb0luc3RhbmNlXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2FkZXI7XG4iLCJ2YXIgY29uZmlnID0ge1xuICBwYXRoczoge1xuICAgIHZzOiAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9tb25hY28tZWRpdG9yQDAuNDMuMC9taW4vdnMnXG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbmZpZztcbiIsInZhciBjb21wb3NlID0gZnVuY3Rpb24gY29tcG9zZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGZucyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBmbnNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4gZm5zLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uICh5LCBmKSB7XG4gICAgICByZXR1cm4gZih5KTtcbiAgICB9LCB4KTtcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2U7XG4iLCJpbXBvcnQgX3QgZnJvbVwiQG1vbmFjby1lZGl0b3IvbG9hZGVyXCI7aW1wb3J0e21lbW8gYXMgVGV9ZnJvbVwicmVhY3RcIjtpbXBvcnQga2Use3VzZVN0YXRlIGFzIHJlLHVzZVJlZiBhcyBTLHVzZUNhbGxiYWNrIGFzIG9lLHVzZUVmZmVjdCBhcyBuZX1mcm9tXCJyZWFjdFwiO2ltcG9ydCBTZSBmcm9tXCJAbW9uYWNvLWVkaXRvci9sb2FkZXJcIjtpbXBvcnR7bWVtbyBhcyB5ZX1mcm9tXCJyZWFjdFwiO2ltcG9ydCBLIGZyb21cInJlYWN0XCI7dmFyIGxlPXt3cmFwcGVyOntkaXNwbGF5OlwiZmxleFwiLHBvc2l0aW9uOlwicmVsYXRpdmVcIix0ZXh0QWxpZ246XCJpbml0aWFsXCJ9LGZ1bGxXaWR0aDp7d2lkdGg6XCIxMDAlXCJ9LGhpZGU6e2Rpc3BsYXk6XCJub25lXCJ9fSx2PWxlO2ltcG9ydCBtZSBmcm9tXCJyZWFjdFwiO3ZhciBhZT17Y29udGFpbmVyOntkaXNwbGF5OlwiZmxleFwiLGhlaWdodDpcIjEwMCVcIix3aWR0aDpcIjEwMCVcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIn19LFk9YWU7ZnVuY3Rpb24gTWUoe2NoaWxkcmVuOmV9KXtyZXR1cm4gbWUuY3JlYXRlRWxlbWVudChcImRpdlwiLHtzdHlsZTpZLmNvbnRhaW5lcn0sZSl9dmFyIFo9TWU7dmFyICQ9WjtmdW5jdGlvbiBFZSh7d2lkdGg6ZSxoZWlnaHQ6cixpc0VkaXRvclJlYWR5Om4sbG9hZGluZzp0LF9yZWY6YSxjbGFzc05hbWU6bSx3cmFwcGVyUHJvcHM6RX0pe3JldHVybiBLLmNyZWF0ZUVsZW1lbnQoXCJzZWN0aW9uXCIse3N0eWxlOnsuLi52LndyYXBwZXIsd2lkdGg6ZSxoZWlnaHQ6cn0sLi4uRX0sIW4mJksuY3JlYXRlRWxlbWVudCgkLG51bGwsdCksSy5jcmVhdGVFbGVtZW50KFwiZGl2XCIse3JlZjphLHN0eWxlOnsuLi52LmZ1bGxXaWR0aCwuLi4hbiYmdi5oaWRlfSxjbGFzc05hbWU6bX0pKX12YXIgZWU9RWU7dmFyIEg9eWUoZWUpO2ltcG9ydHt1c2VFZmZlY3QgYXMgeGV9ZnJvbVwicmVhY3RcIjtmdW5jdGlvbiBDZShlKXt4ZShlLFtdKX12YXIgaz1DZTtpbXBvcnR7dXNlRWZmZWN0IGFzIGdlLHVzZVJlZiBhcyBSZX1mcm9tXCJyZWFjdFwiO2Z1bmN0aW9uIGhlKGUscixuPSEwKXtsZXQgdD1SZSghMCk7Z2UodC5jdXJyZW50fHwhbj8oKT0+e3QuY3VycmVudD0hMX06ZSxyKX12YXIgbD1oZTtmdW5jdGlvbiBEKCl7fWZ1bmN0aW9uIGgoZSxyLG4sdCl7cmV0dXJuIERlKGUsdCl8fGJlKGUscixuLHQpfWZ1bmN0aW9uIERlKGUscil7cmV0dXJuIGUuZWRpdG9yLmdldE1vZGVsKHRlKGUscikpfWZ1bmN0aW9uIGJlKGUscixuLHQpe3JldHVybiBlLmVkaXRvci5jcmVhdGVNb2RlbChyLG4sdD90ZShlLHQpOnZvaWQgMCl9ZnVuY3Rpb24gdGUoZSxyKXtyZXR1cm4gZS5VcmkucGFyc2Uocil9ZnVuY3Rpb24gT2Uoe29yaWdpbmFsOmUsbW9kaWZpZWQ6cixsYW5ndWFnZTpuLG9yaWdpbmFsTGFuZ3VhZ2U6dCxtb2RpZmllZExhbmd1YWdlOmEsb3JpZ2luYWxNb2RlbFBhdGg6bSxtb2RpZmllZE1vZGVsUGF0aDpFLGtlZXBDdXJyZW50T3JpZ2luYWxNb2RlbDpnPSExLGtlZXBDdXJyZW50TW9kaWZpZWRNb2RlbDpOPSExLHRoZW1lOng9XCJsaWdodFwiLGxvYWRpbmc6UD1cIkxvYWRpbmcuLi5cIixvcHRpb25zOnk9e30saGVpZ2h0OlY9XCIxMDAlXCIsd2lkdGg6ej1cIjEwMCVcIixjbGFzc05hbWU6Rix3cmFwcGVyUHJvcHM6aj17fSxiZWZvcmVNb3VudDpBPUQsb25Nb3VudDpxPUR9KXtsZXRbTSxPXT1yZSghMSksW1Qsc109cmUoITApLHU9UyhudWxsKSxjPVMobnVsbCksdz1TKG51bGwpLGQ9UyhxKSxvPVMoQSksYj1TKCExKTtrKCgpPT57bGV0IGk9U2UuaW5pdCgpO3JldHVybiBpLnRoZW4oZj0+KGMuY3VycmVudD1mKSYmcyghMSkpLmNhdGNoKGY9PmY/LnR5cGUhPT1cImNhbmNlbGF0aW9uXCImJmNvbnNvbGUuZXJyb3IoXCJNb25hY28gaW5pdGlhbGl6YXRpb246IGVycm9yOlwiLGYpKSwoKT0+dS5jdXJyZW50P0koKTppLmNhbmNlbCgpfSksbCgoKT0+e2lmKHUuY3VycmVudCYmYy5jdXJyZW50KXtsZXQgaT11LmN1cnJlbnQuZ2V0T3JpZ2luYWxFZGl0b3IoKSxmPWgoYy5jdXJyZW50LGV8fFwiXCIsdHx8bnx8XCJ0ZXh0XCIsbXx8XCJcIik7ZiE9PWkuZ2V0TW9kZWwoKSYmaS5zZXRNb2RlbChmKX19LFttXSxNKSxsKCgpPT57aWYodS5jdXJyZW50JiZjLmN1cnJlbnQpe2xldCBpPXUuY3VycmVudC5nZXRNb2RpZmllZEVkaXRvcigpLGY9aChjLmN1cnJlbnQscnx8XCJcIixhfHxufHxcInRleHRcIixFfHxcIlwiKTtmIT09aS5nZXRNb2RlbCgpJiZpLnNldE1vZGVsKGYpfX0sW0VdLE0pLGwoKCk9PntsZXQgaT11LmN1cnJlbnQuZ2V0TW9kaWZpZWRFZGl0b3IoKTtpLmdldE9wdGlvbihjLmN1cnJlbnQuZWRpdG9yLkVkaXRvck9wdGlvbi5yZWFkT25seSk/aS5zZXRWYWx1ZShyfHxcIlwiKTpyIT09aS5nZXRWYWx1ZSgpJiYoaS5leGVjdXRlRWRpdHMoXCJcIixbe3JhbmdlOmkuZ2V0TW9kZWwoKS5nZXRGdWxsTW9kZWxSYW5nZSgpLHRleHQ6cnx8XCJcIixmb3JjZU1vdmVNYXJrZXJzOiEwfV0pLGkucHVzaFVuZG9TdG9wKCkpfSxbcl0sTSksbCgoKT0+e3UuY3VycmVudD8uZ2V0TW9kZWwoKT8ub3JpZ2luYWwuc2V0VmFsdWUoZXx8XCJcIil9LFtlXSxNKSxsKCgpPT57bGV0e29yaWdpbmFsOmksbW9kaWZpZWQ6Zn09dS5jdXJyZW50LmdldE1vZGVsKCk7Yy5jdXJyZW50LmVkaXRvci5zZXRNb2RlbExhbmd1YWdlKGksdHx8bnx8XCJ0ZXh0XCIpLGMuY3VycmVudC5lZGl0b3Iuc2V0TW9kZWxMYW5ndWFnZShmLGF8fG58fFwidGV4dFwiKX0sW24sdCxhXSxNKSxsKCgpPT57Yy5jdXJyZW50Py5lZGl0b3Iuc2V0VGhlbWUoeCl9LFt4XSxNKSxsKCgpPT57dS5jdXJyZW50Py51cGRhdGVPcHRpb25zKHkpfSxbeV0sTSk7bGV0IEw9b2UoKCk9PntpZighYy5jdXJyZW50KXJldHVybjtvLmN1cnJlbnQoYy5jdXJyZW50KTtsZXQgaT1oKGMuY3VycmVudCxlfHxcIlwiLHR8fG58fFwidGV4dFwiLG18fFwiXCIpLGY9aChjLmN1cnJlbnQscnx8XCJcIixhfHxufHxcInRleHRcIixFfHxcIlwiKTt1LmN1cnJlbnQ/LnNldE1vZGVsKHtvcmlnaW5hbDppLG1vZGlmaWVkOmZ9KX0sW24scixhLGUsdCxtLEVdKSxVPW9lKCgpPT57IWIuY3VycmVudCYmdy5jdXJyZW50JiYodS5jdXJyZW50PWMuY3VycmVudC5lZGl0b3IuY3JlYXRlRGlmZkVkaXRvcih3LmN1cnJlbnQse2F1dG9tYXRpY0xheW91dDohMCwuLi55fSksTCgpLGMuY3VycmVudD8uZWRpdG9yLnNldFRoZW1lKHgpLE8oITApLGIuY3VycmVudD0hMCl9LFt5LHgsTF0pO25lKCgpPT57TSYmZC5jdXJyZW50KHUuY3VycmVudCxjLmN1cnJlbnQpfSxbTV0pLG5lKCgpPT57IVQmJiFNJiZVKCl9LFtULE0sVV0pO2Z1bmN0aW9uIEkoKXtsZXQgaT11LmN1cnJlbnQ/LmdldE1vZGVsKCk7Z3x8aT8ub3JpZ2luYWw/LmRpc3Bvc2UoKSxOfHxpPy5tb2RpZmllZD8uZGlzcG9zZSgpLHUuY3VycmVudD8uZGlzcG9zZSgpfXJldHVybiBrZS5jcmVhdGVFbGVtZW50KEgse3dpZHRoOnosaGVpZ2h0OlYsaXNFZGl0b3JSZWFkeTpNLGxvYWRpbmc6UCxfcmVmOncsY2xhc3NOYW1lOkYsd3JhcHBlclByb3BzOmp9KX12YXIgaWU9T2U7dmFyIHdlPVRlKGllKTtpbXBvcnR7dXNlU3RhdGUgYXMgSWV9ZnJvbVwicmVhY3RcIjtpbXBvcnQgY2UgZnJvbVwiQG1vbmFjby1lZGl0b3IvbG9hZGVyXCI7ZnVuY3Rpb24gUGUoKXtsZXRbZSxyXT1JZShjZS5fX2dldE1vbmFjb0luc3RhbmNlKCkpO3JldHVybiBrKCgpPT57bGV0IG47cmV0dXJuIGV8fChuPWNlLmluaXQoKSxuLnRoZW4odD0+e3IodCl9KSksKCk9Pm4/LmNhbmNlbCgpfSksZX12YXIgTGU9UGU7aW1wb3J0e21lbW8gYXMgemV9ZnJvbVwicmVhY3RcIjtpbXBvcnQgV2Use3VzZVN0YXRlIGFzIHVlLHVzZUVmZmVjdCBhcyBXLHVzZVJlZiBhcyBDLHVzZUNhbGxiYWNrIGFzIF9lfWZyb21cInJlYWN0XCI7aW1wb3J0IE5lIGZyb21cIkBtb25hY28tZWRpdG9yL2xvYWRlclwiO2ltcG9ydHt1c2VFZmZlY3QgYXMgVWUsdXNlUmVmIGFzIHZlfWZyb21cInJlYWN0XCI7ZnVuY3Rpb24gSGUoZSl7bGV0IHI9dmUoKTtyZXR1cm4gVWUoKCk9PntyLmN1cnJlbnQ9ZX0sW2VdKSxyLmN1cnJlbnR9dmFyIHNlPUhlO3ZhciBfPW5ldyBNYXA7ZnVuY3Rpb24gVmUoe2RlZmF1bHRWYWx1ZTplLGRlZmF1bHRMYW5ndWFnZTpyLGRlZmF1bHRQYXRoOm4sdmFsdWU6dCxsYW5ndWFnZTphLHBhdGg6bSx0aGVtZTpFPVwibGlnaHRcIixsaW5lOmcsbG9hZGluZzpOPVwiTG9hZGluZy4uLlwiLG9wdGlvbnM6eD17fSxvdmVycmlkZVNlcnZpY2VzOlA9e30sc2F2ZVZpZXdTdGF0ZTp5PSEwLGtlZXBDdXJyZW50TW9kZWw6Vj0hMSx3aWR0aDp6PVwiMTAwJVwiLGhlaWdodDpGPVwiMTAwJVwiLGNsYXNzTmFtZTpqLHdyYXBwZXJQcm9wczpBPXt9LGJlZm9yZU1vdW50OnE9RCxvbk1vdW50Ok09RCxvbkNoYW5nZTpPLG9uVmFsaWRhdGU6VD1EfSl7bGV0W3MsdV09dWUoITEpLFtjLHddPXVlKCEwKSxkPUMobnVsbCksbz1DKG51bGwpLGI9QyhudWxsKSxMPUMoTSksVT1DKHEpLEk9QygpLGk9Qyh0KSxmPXNlKG0pLFE9QyghMSksQj1DKCExKTtrKCgpPT57bGV0IHA9TmUuaW5pdCgpO3JldHVybiBwLnRoZW4oUj0+KGQuY3VycmVudD1SKSYmdyghMSkpLmNhdGNoKFI9PlI/LnR5cGUhPT1cImNhbmNlbGF0aW9uXCImJmNvbnNvbGUuZXJyb3IoXCJNb25hY28gaW5pdGlhbGl6YXRpb246IGVycm9yOlwiLFIpKSwoKT0+by5jdXJyZW50P3BlKCk6cC5jYW5jZWwoKX0pLGwoKCk9PntsZXQgcD1oKGQuY3VycmVudCxlfHx0fHxcIlwiLHJ8fGF8fFwiXCIsbXx8bnx8XCJcIik7cCE9PW8uY3VycmVudD8uZ2V0TW9kZWwoKSYmKHkmJl8uc2V0KGYsby5jdXJyZW50Py5zYXZlVmlld1N0YXRlKCkpLG8uY3VycmVudD8uc2V0TW9kZWwocCkseSYmby5jdXJyZW50Py5yZXN0b3JlVmlld1N0YXRlKF8uZ2V0KG0pKSl9LFttXSxzKSxsKCgpPT57by5jdXJyZW50Py51cGRhdGVPcHRpb25zKHgpfSxbeF0scyksbCgoKT0+eyFvLmN1cnJlbnR8fHQ9PT12b2lkIDB8fChvLmN1cnJlbnQuZ2V0T3B0aW9uKGQuY3VycmVudC5lZGl0b3IuRWRpdG9yT3B0aW9uLnJlYWRPbmx5KT9vLmN1cnJlbnQuc2V0VmFsdWUodCk6dCE9PW8uY3VycmVudC5nZXRWYWx1ZSgpJiYoQi5jdXJyZW50PSEwLG8uY3VycmVudC5leGVjdXRlRWRpdHMoXCJcIixbe3JhbmdlOm8uY3VycmVudC5nZXRNb2RlbCgpLmdldEZ1bGxNb2RlbFJhbmdlKCksdGV4dDp0LGZvcmNlTW92ZU1hcmtlcnM6ITB9XSksby5jdXJyZW50LnB1c2hVbmRvU3RvcCgpLEIuY3VycmVudD0hMSkpfSxbdF0scyksbCgoKT0+e2xldCBwPW8uY3VycmVudD8uZ2V0TW9kZWwoKTtwJiZhJiZkLmN1cnJlbnQ/LmVkaXRvci5zZXRNb2RlbExhbmd1YWdlKHAsYSl9LFthXSxzKSxsKCgpPT57ZyE9PXZvaWQgMCYmby5jdXJyZW50Py5yZXZlYWxMaW5lKGcpfSxbZ10scyksbCgoKT0+e2QuY3VycmVudD8uZWRpdG9yLnNldFRoZW1lKEUpfSxbRV0scyk7bGV0IFg9X2UoKCk9PntpZighKCFiLmN1cnJlbnR8fCFkLmN1cnJlbnQpJiYhUS5jdXJyZW50KXtVLmN1cnJlbnQoZC5jdXJyZW50KTtsZXQgcD1tfHxuLFI9aChkLmN1cnJlbnQsdHx8ZXx8XCJcIixyfHxhfHxcIlwiLHB8fFwiXCIpO28uY3VycmVudD1kLmN1cnJlbnQ/LmVkaXRvci5jcmVhdGUoYi5jdXJyZW50LHttb2RlbDpSLGF1dG9tYXRpY0xheW91dDohMCwuLi54fSxQKSx5JiZvLmN1cnJlbnQucmVzdG9yZVZpZXdTdGF0ZShfLmdldChwKSksZC5jdXJyZW50LmVkaXRvci5zZXRUaGVtZShFKSxnIT09dm9pZCAwJiZvLmN1cnJlbnQucmV2ZWFsTGluZShnKSx1KCEwKSxRLmN1cnJlbnQ9ITB9fSxbZSxyLG4sdCxhLG0seCxQLHksRSxnXSk7VygoKT0+e3MmJkwuY3VycmVudChvLmN1cnJlbnQsZC5jdXJyZW50KX0sW3NdKSxXKCgpPT57IWMmJiFzJiZYKCl9LFtjLHMsWF0pLGkuY3VycmVudD10LFcoKCk9PntzJiZPJiYoSS5jdXJyZW50Py5kaXNwb3NlKCksSS5jdXJyZW50PW8uY3VycmVudD8ub25EaWRDaGFuZ2VNb2RlbENvbnRlbnQocD0+e0IuY3VycmVudHx8TyhvLmN1cnJlbnQuZ2V0VmFsdWUoKSxwKX0pKX0sW3MsT10pLFcoKCk9PntpZihzKXtsZXQgcD1kLmN1cnJlbnQuZWRpdG9yLm9uRGlkQ2hhbmdlTWFya2VycyhSPT57bGV0IEc9by5jdXJyZW50LmdldE1vZGVsKCk/LnVyaTtpZihHJiZSLmZpbmQoSj0+Si5wYXRoPT09Ry5wYXRoKSl7bGV0IEo9ZC5jdXJyZW50LmVkaXRvci5nZXRNb2RlbE1hcmtlcnMoe3Jlc291cmNlOkd9KTtUPy4oSil9fSk7cmV0dXJuKCk9PntwPy5kaXNwb3NlKCl9fXJldHVybigpPT57fX0sW3MsVF0pO2Z1bmN0aW9uIHBlKCl7SS5jdXJyZW50Py5kaXNwb3NlKCksVj95JiZfLnNldChtLG8uY3VycmVudC5zYXZlVmlld1N0YXRlKCkpOm8uY3VycmVudC5nZXRNb2RlbCgpPy5kaXNwb3NlKCksby5jdXJyZW50LmRpc3Bvc2UoKX1yZXR1cm4gV2UuY3JlYXRlRWxlbWVudChILHt3aWR0aDp6LGhlaWdodDpGLGlzRWRpdG9yUmVhZHk6cyxsb2FkaW5nOk4sX3JlZjpiLGNsYXNzTmFtZTpqLHdyYXBwZXJQcm9wczpBfSl9dmFyIGZlPVZlO3ZhciBkZT16ZShmZSk7dmFyIEZ0PWRlO2V4cG9ydHt3ZSBhcyBEaWZmRWRpdG9yLGRlIGFzIEVkaXRvcixGdCBhcyBkZWZhdWx0LF90IGFzIGxvYWRlcixMZSBhcyB1c2VNb25hY299O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcCJdLCJuYW1lcyI6WyJSZWZsZWN0T3duS2V5cyIsIlIiLCJSZWZsZWN0IiwiUmVmbGVjdEFwcGx5IiwiYXBwbHkiLCJ0YXJnZXQiLCJyZWNlaXZlciIsImFyZ3MiLCJGdW5jdGlvbiIsInByb3RvdHlwZSIsImNhbGwiLCJvd25LZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImNvbmNhdCIsIk51bWJlcklzTmFOIiwiTnVtYmVyIiwiaXNOYU4iLCJ2YWx1ZSIsIkV2ZW50RW1pdHRlciIsImluaXQiLCJ0aGlzIiwibW9kdWxlIiwiZXhwb3J0cyIsIm9uY2UiLCJlbWl0dGVyIiwibmFtZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXJyb3JMaXN0ZW5lciIsImVyciIsInJlbW92ZUxpc3RlbmVyIiwicmVzb2x2ZXIiLCJzbGljZSIsImFyZ3VtZW50cyIsImV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lciIsImhhbmRsZXIiLCJvbiIsImFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyIiwiX2V2ZW50cyIsInVuZGVmaW5lZCIsIl9ldmVudHNDb3VudCIsIl9tYXhMaXN0ZW5lcnMiLCJkZWZhdWx0TWF4TGlzdGVuZXJzIiwiY2hlY2tMaXN0ZW5lciIsImxpc3RlbmVyIiwiVHlwZUVycm9yIiwiX2dldE1heExpc3RlbmVycyIsInRoYXQiLCJfYWRkTGlzdGVuZXIiLCJ0eXBlIiwicHJlcGVuZCIsIm0iLCJldmVudHMiLCJleGlzdGluZyIsIndhcm5pbmciLCJjcmVhdGUiLCJuZXdMaXN0ZW5lciIsImVtaXQiLCJ1bnNoaWZ0IiwicHVzaCIsImxlbmd0aCIsIndhcm5lZCIsInciLCJFcnJvciIsIlN0cmluZyIsImNvdW50IiwiY29uc29sZSIsIndhcm4iLCJvbmNlV3JhcHBlciIsImZpcmVkIiwid3JhcEZuIiwiX29uY2VXcmFwIiwic3RhdGUiLCJ3cmFwcGVkIiwiYmluZCIsIl9saXN0ZW5lcnMiLCJ1bndyYXAiLCJldmxpc3RlbmVyIiwiYXJyIiwicmV0IiwiQXJyYXkiLCJpIiwidW53cmFwTGlzdGVuZXJzIiwiYXJyYXlDbG9uZSIsImxpc3RlbmVyQ291bnQiLCJuIiwiY29weSIsImZsYWdzIiwiYWRkRXZlbnRMaXN0ZW5lciIsIndyYXBMaXN0ZW5lciIsImFyZyIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJzZXQiLCJSYW5nZUVycm9yIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRNYXhMaXN0ZW5lcnMiLCJnZXRNYXhMaXN0ZW5lcnMiLCJkb0Vycm9yIiwiZXJyb3IiLCJlciIsIm1lc3NhZ2UiLCJjb250ZXh0IiwibGVuIiwibGlzdGVuZXJzIiwiYWRkTGlzdGVuZXIiLCJwcmVwZW5kTGlzdGVuZXIiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwibGlzdCIsInBvc2l0aW9uIiwib3JpZ2luYWxMaXN0ZW5lciIsInNoaWZ0IiwiaW5kZXgiLCJwb3AiLCJzcGxpY2VPbmUiLCJvZmYiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJrZXkiLCJrZXlzIiwicmF3TGlzdGVuZXJzIiwiZXZlbnROYW1lcyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wcyIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiX2RlZmluZVByb3BlcnR5Iiwib2JqIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJlbnVtZXJhYmxlT25seSIsInN5bWJvbHMiLCJmaWx0ZXIiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkMiIsInNvdXJjZSIsImZvckVhY2giLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIl9hcnJheUxpa2VUb0FycmF5IiwiYXJyMiIsImN1cnJ5IiwiZm4iLCJjdXJyaWVkIiwiX3RoaXMiLCJfbGVuMiIsIl9rZXkyIiwiX2xlbjMiLCJuZXh0QXJncyIsIl9rZXkzIiwiaXNPYmplY3QiLCJ0b1N0cmluZyIsImluY2x1ZGVzIiwiaXNGdW5jdGlvbiIsImVycm9ySGFuZGxlciIsImVycm9yTWVzc2FnZXMiLCJpbml0aWFsSXNSZXF1aXJlZCIsImluaXRpYWxUeXBlIiwiaW5pdGlhbENvbnRlbnQiLCJoYW5kbGVyVHlwZSIsImhhbmRsZXJzVHlwZSIsInNlbGVjdG9yVHlwZSIsImNoYW5nZVR5cGUiLCJjaGFuZ2VGaWVsZCIsInZhbGlkYXRvcnMiLCJpbml0aWFsIiwiY2hhbmdlcyIsInNvbWUiLCJmaWVsZCIsInByb3BlcnR5IiwiaGFzT3duUHJvcGVydHkiLCJzZWxlY3RvciIsInZhbHVlcyIsIl9oYW5kbGVyIiwiZXh0cmFjdENoYW5nZXMiLCJjYXVzZWRDaGFuZ2VzIiwiY3VycmVudCIsInVwZGF0ZVN0YXRlIiwiZGlkU3RhdGVVcGRhdGUiLCJfaGFuZGxlciRmaWVsZCIsImRpZFVwZGF0ZSIsInVwZGF0ZSIsInZhbGlkYXRlIiwiZ2V0Q2hhbmdlcyIsIl9sZW4iLCJmbnMiLCJfa2V5IiwieCIsInJlZHVjZVJpZ2h0IiwieSIsImYiLCJjb21wb3NlIiwiY29uZmlnSXNSZXF1aXJlZCIsImNvbmZpZ1R5cGUiLCJkZXByZWNhdGlvbiIsImNvbmZpZyIsInVybHMiLCJwYXRocyIsInZzIiwibW9uYWNvQmFzZSIsIm1lcmdlIiwiYXNzaWduIiwiQ0FOQ0VMQVRJT05fTUVTU0FHRSIsIm1zZyIsInByb21pc2UiLCJoYXNDYW5jZWxlZF8iLCJ3cmFwcGVkUHJvbWlzZSIsInRoZW4iLCJ2YWwiLCJjYW5jZWwiLCJfc3RhdGUkY3JlYXRlMiIsImlzQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJpc0luaXRpYWxpemVkIiwibW9uYWNvIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwiX3MiLCJfaSIsIm5leHQiLCJkb25lIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwibyIsImNvbnN0cnVjdG9yIiwiZnJvbSIsInRlc3QiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiZ2V0U3RhdGUiLCJzZXRTdGF0ZSIsImluamVjdFNjcmlwdHMiLCJzY3JpcHQiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImdldE1vbmFjb0xvYWRlclNjcmlwdCIsImNvbmZpZ3VyZUxvYWRlciIsInNyYyIsIl9yZWYyIiwibG9hZGVyU2NyaXB0IiwiY3JlYXRlRWxlbWVudCIsIm9ubG9hZCIsIm9uZXJyb3IiLCJfcmVmMyIsInJlcXVpcmUiLCJ3aW5kb3ciLCJzdG9yZU1vbmFjb0luc3RhbmNlIiwid3JhcHBlclByb21pc2UiLCJsb2FkZXIiLCJnbG9iYWxDb25maWciLCJfdmFsaWRhdG9ycyRjb25maWciLCJleGNsdWRlZCIsInNvdXJjZUtleXMiLCJpbmRleE9mIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfcmVmIiwiZWRpdG9yIiwiX19nZXRNb25hY29JbnN0YW5jZSIsIl9yZWY0IiwidiIsImRpc3BsYXkiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsIlkiLCJjb250YWluZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCIkIiwiY2hpbGRyZW4iLCJlIiwic3R5bGUiLCJIIiwiciIsImlzRWRpdG9yUmVhZHkiLCJsb2FkaW5nIiwidCIsImEiLCJjbGFzc05hbWUiLCJ3cmFwcGVyUHJvcHMiLCJFIiwicmVmIiwiayIsImwiLCJEIiwiaCIsImdldE1vZGVsIiwidGUiLCJEZSIsImNyZWF0ZU1vZGVsIiwiYmUiLCJVcmkiLCJwYXJzZSIsIm9yaWdpbmFsIiwibW9kaWZpZWQiLCJsYW5ndWFnZSIsIm9yaWdpbmFsTGFuZ3VhZ2UiLCJtb2RpZmllZExhbmd1YWdlIiwib3JpZ2luYWxNb2RlbFBhdGgiLCJtb2RpZmllZE1vZGVsUGF0aCIsImtlZXBDdXJyZW50T3JpZ2luYWxNb2RlbCIsImciLCJrZWVwQ3VycmVudE1vZGlmaWVkTW9kZWwiLCJOIiwidGhlbWUiLCJQIiwib3B0aW9ucyIsIlYiLCJ6IiwiRiIsImoiLCJiZWZvcmVNb3VudCIsIkEiLCJvbk1vdW50IiwicSIsIk0iLCJPIiwiVCIsInMiLCJ1IiwiYyIsImQiLCJiIiwiY2F0Y2giLCJkaXNwb3NlIiwiSSIsImdldE9yaWdpbmFsRWRpdG9yIiwic2V0TW9kZWwiLCJnZXRNb2RpZmllZEVkaXRvciIsImdldE9wdGlvbiIsIkVkaXRvck9wdGlvbiIsInJlYWRPbmx5Iiwic2V0VmFsdWUiLCJnZXRWYWx1ZSIsImV4ZWN1dGVFZGl0cyIsInJhbmdlIiwiZ2V0RnVsbE1vZGVsUmFuZ2UiLCJ0ZXh0IiwiZm9yY2VNb3ZlTWFya2VycyIsInB1c2hVbmRvU3RvcCIsInNldE1vZGVsTGFuZ3VhZ2UiLCJzZXRUaGVtZSIsInVwZGF0ZU9wdGlvbnMiLCJMIiwiVSIsImNyZWF0ZURpZmZFZGl0b3IiLCJhdXRvbWF0aWNMYXlvdXQiLCJfIiwiTWFwIiwiRnQiLCJkZWZhdWx0VmFsdWUiLCJkZWZhdWx0TGFuZ3VhZ2UiLCJkZWZhdWx0UGF0aCIsInBhdGgiLCJsaW5lIiwib3ZlcnJpZGVTZXJ2aWNlcyIsInNhdmVWaWV3U3RhdGUiLCJrZWVwQ3VycmVudE1vZGVsIiwib25DaGFuZ2UiLCJvblZhbGlkYXRlIiwic2UiLCJRIiwiQiIsInAiLCJyZXN0b3JlVmlld1N0YXRlIiwicmV2ZWFsTGluZSIsIlgiLCJtb2RlbCIsIm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50Iiwib25EaWRDaGFuZ2VNYXJrZXJzIiwiRyIsInVyaSIsImZpbmQiLCJKIiwiZ2V0TW9kZWxNYXJrZXJzIiwicmVzb3VyY2UiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2725.65d4176a.js b/react_frontend/static/react_frontend/js/2725.65d4176a.js new file mode 100644 index 000000000..314d3e309 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2725.65d4176a.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2725],{2725:(e,a,t)=>{function n(e){return decodeURIComponent(escape(e))}t.r(a),t.d(a,{drawImage:()=>o,drawLeftImage:()=>d});var i=new Image,r=new Image;function o(e){var a=document.getElementById("gui_canvas_right"),t=a.getContext("2d");function r(){window.requestAnimationFrame(r),t.drawImage(i,0,0)}i.onload=function(){r()};var o=JSON.parse(e.image),d=n(o.image),g=o.shape;""!=d&&(i.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}function d(e){var a=document.getElementById("gui_canvas_left"),t=a.getContext("2d");function i(){window.requestAnimationFrame(i),t.drawImage(r,0,0)}r.onload=function(){i()};var o=JSON.parse(e.image_left),d=n(o.image_left),g=o.shape;""!=d&&(r.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMjcyNS41MTJhMDQzOS5qcyIsIm1hcHBpbmdzIjoiZ0hBQ0EsU0FBU0EsRUFBWUMsR0FDakIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNyQyxDLG9EQUVBLElBQUlHLEVBQVEsSUFBSUMsTUFDWkMsRUFBYSxJQUFJRCxNQUVkLFNBQVNFLEVBQVdDLEdBQ3ZCLElBQUlDLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0xDLE9BQU9DLHNCQUFzQkYsR0FDN0JGLEVBQVFMLFVBQVVILEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNYSxPQUFTLFdBQ1hILEdBQ0osRUFTQSxJQUFJSSxFQUFhQyxLQUFLQyxNQUFNWixFQUFLSixPQUM3QmlCLEVBQVNyQixFQUFZa0IsRUFBV2QsT0FDaENrQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NqQixFQUFNbUIsSUFBTSwwQkFBNEJGLEVBQ3hDWixFQUFPZSxNQUFRRixFQUFNLEdBQ3JCYixFQUFPZ0IsT0FBU0gsRUFBTSxHQUU5QixDQUVPLFNBQVNJLEVBQWVsQixHQUMzQixJQUFJbUIsRUFBY2pCLFNBQVNDLGVBQWUsbUJBQzFDaUIsRUFBZUQsRUFBWWQsV0FBVyxNQVF0QyxTQUFTZ0IsSUFDTGQsT0FBT0Msc0JBQXNCYSxHQUM3QkQsRUFBYXJCLFVBQVVELEVBQVksRUFBRyxFQUMxQyxDQVJBQSxFQUFXVyxPQUFTLFdBQ2hCWSxHQUNKLEVBU0EsSUFBSVgsRUFBYUMsS0FBS0MsTUFBTVosRUFBS0YsWUFDN0JlLEVBQVNyQixFQUFZa0IsRUFBV1osWUFDaENnQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NmLEVBQVdpQixJQUFNLDBCQUE0QkYsRUFDN0NNLEVBQVlILE1BQVFGLEVBQU0sR0FDMUJLLEVBQVlGLE9BQVNILEVBQU0sR0FFbkMsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Zpc3VhbF9sYW5kZXJfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc1Zpc3VhbExhbmRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iXSwibmFtZXMiOlsiZGVjb2RlX3V0ZjgiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwiaW1hZ2UiLCJJbWFnZSIsImltYWdlX2xlZnQiLCJkcmF3SW1hZ2UiLCJkYXRhIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwidXBkYXRlX2ltYWdlIiwid2luZG93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib25sb2FkIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsInNvdXJjZSIsInNoYXBlIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiLCJkcmF3TGVmdEltYWdlIiwiY2FudmFzX2xlZnQiLCJjb250ZXh0X2xlZnQiLCJ1cGRhdGVfbGVmdF9pbWFnZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2745.33d54ad3.js b/react_frontend/static/react_frontend/js/2745.33d54ad3.js new file mode 100644 index 000000000..e39fc9711 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2745.33d54ad3.js @@ -0,0 +1,3 @@ +/*! For license information please see 2745.33d54ad3.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2745],{7437:(e,t,r)=>{"use strict";r.d(t,{AH:()=>p,i7:()=>l,mL:()=>c});var o=r(5684),n=r(6540),a=r(41),s=r(1287),i=r(6899),c=(r(4300),r(4146),(0,o.w)((function(e,t){var r=e.styles,c=(0,i.J)([r],void 0,n.useContext(o.T));if(!o.i){for(var p,l=c.name,u=c.styles,f=c.next;void 0!==f;)l+=" "+f.name,u+=f.styles,f=f.next;var y=!0===t.compat,m=t.insert("",{name:l,styles:u},t.sheet,y);return y?null:n.createElement("style",((p={})["data-emotion"]=t.key+"-global "+l,p.dangerouslySetInnerHTML={__html:m},p.nonce=t.sheet.nonce,p))}var d=n.useRef();return(0,s.i)((function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),o=!1,n=document.querySelector('style[data-emotion="'+e+" "+c.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==n&&(o=!0,n.setAttribute("data-emotion",e),r.hydrate([n])),d.current=[r,o],function(){r.flush()}}),[t]),(0,s.i)((function(){var e=d.current,r=e[0];if(e[1])e[1]=!1;else{if(void 0!==c.next&&(0,a.sk)(t,c.next,!0),r.tags.length){var o=r.tags[r.tags.length-1].nextElementSibling;r.before=o,r.flush()}t.insert("",c,r,!1)}}),[t,c.name]),null})));function p(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";r.d(t,{A:()=>c});var o=r(7413),n=r(9071),a=r(6544),s=r(8312);const i=(0,a.A)(),c=(0,o.A)({themeId:s.A,defaultTheme:i,defaultClassName:"MuiBox-root",generateClassName:n.A.generate})},4073:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var o=r(8587),n=r(8168),a=r(6540),s=r(53),i=r(9599),c=r(5659),p=r(7577),l=r(4409),u=r(8466),f=r(8413),y=r(1609);function m(e){return(0,y.A)("MuiTypography",e)}(0,f.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var d=r(4848);const h=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],g=(0,p.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,u.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,n.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),b={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},v={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},A=a.forwardRef((function(e,t){const r=(0,l.A)({props:e,name:"MuiTypography"}),a=(e=>v[e]||e)(r.color),p=(0,i.A)((0,n.A)({},r,{color:a})),{align:f="inherit",className:y,component:A,gutterBottom:x=!1,noWrap:S=!1,paragraph:w=!1,variant:C="body1",variantMapping:$=b}=p,P=(0,o.A)(p,h),T=(0,n.A)({},p,{align:f,color:a,className:y,component:A,gutterBottom:x,noWrap:S,paragraph:w,variant:C,variantMapping:$}),O=A||(w?"p":$[C]||b[C])||"span",_=(e=>{const{align:t,gutterBottom:r,noWrap:o,paragraph:n,variant:a,classes:s}=e,i={root:["root",a,"inherit"!==e.align&&`align${(0,u.A)(t)}`,r&&"gutterBottom",o&&"noWrap",n&&"paragraph"]};return(0,c.A)(i,m,s)})(T);return(0,d.jsx)(g,(0,n.A)({as:O,ref:t,ownerState:T,className:(0,s.A)(_.root,y)},P))}))},7413:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var o=r(8168),n=r(8587),a=r(6540),s=r(53),i=r(9359),c=r(3571),p=r(9599),l=r(2858),u=r(4848);const f=["className","component"];function y(e={}){const{themeId:t,defaultTheme:r,defaultClassName:y="MuiBox-root",generateClassName:m}=e,d=(0,i.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(c.A);return a.forwardRef((function(e,a){const i=(0,l.A)(r),c=(0,p.A)(e),{className:h,component:g="div"}=c,b=(0,n.A)(c,f);return(0,u.jsx)(d,(0,o.A)({as:g,ref:a,className:(0,s.A)(h,m?m(y):y),theme:t&&i[t]||i},b))}))}},9599:(e,t,r)=>{"use strict";r.d(t,{A:()=>p});var o=r(8168),n=r(8587),a=r(3272),s=r(4188);const i=["sx"],c=e=>{var t,r;const o={systemProps:{},otherProps:{}},n=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:s.A;return Object.keys(e).forEach((t=>{n[t]?o.systemProps[t]=e[t]:o.otherProps[t]=e[t]})),o};function p(e){const{sx:t}=e,r=(0,n.A)(e,i),{systemProps:s,otherProps:p}=c(r);let l;return l=Array.isArray(t)?[s,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,a.Q)(r)?(0,o.A)({},s,r):s}:(0,o.A)({},s,t),(0,o.A)({},p,{sx:l})}},2745:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>h});var o,n,a,s=r(7437),i=(r(6540),r(5556)),c=r.n(i),p=r(4719),l=r(4073),u=r(7577),f=r(4848),y=(0,s.i7)(o||(n=["\n from { opacity: 0; }\n to { opacity: 1; }\n"],a||(a=n.slice(0)),o=Object.freeze(Object.defineProperties(n,{raw:{value:Object.freeze(a)}})))),m=((0,u.Ay)("div")((function(e){var t=e.status;return{backgroundColor:"ACTIVE"===t?"green":"INACTIVE"===t?"red":"orange",width:10,height:10,borderRadius:"50%",borderColor:"black",animation:"".concat(y," 3s linear infinite")}})),(0,u.Ay)("div")((function(e){var t=e.status;return{backgroundColor:"ACTIVE"===t?"green":"INACTIVE"===t?"red":"orange",width:10,height:10,borderRadius:"50%",borderColor:"black"}}))),d=function(e){return(0,f.jsxs)(p.A,{sx:{display:"inline-flex",flexDirection:"row",alignItems:"center",justifyContent:"center",border:1,borderColor:"white",py:.5,pl:1,pr:2,borderRadius:"16px"},children:[(0,f.jsx)(l.A,{color:"white",variant:"h8",component:"div",sx:{marginRight:2},children:"Status"}),(0,f.jsx)(m,{status:e.status})]})};d.propTypes={status:c().string};const h=d},4146:(e,t,r)=>{"use strict";var o=r(3404),n={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},s={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},i={};function c(e){return o.isMemo(e)?s:i[e.$$typeof]||n}i[o.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},i[o.Memo]=s;var p=Object.defineProperty,l=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,y=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,r,o){if("string"!=typeof r){if(m){var n=y(r);n&&n!==m&&e(t,n,o)}var s=l(r);u&&(s=s.concat(u(r)));for(var i=c(t),d=c(r),h=0;h{"use strict";var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,n=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,s=r?Symbol.for("react.strict_mode"):60108,i=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,p=r?Symbol.for("react.context"):60110,l=r?Symbol.for("react.async_mode"):60111,u=r?Symbol.for("react.concurrent_mode"):60111,f=r?Symbol.for("react.forward_ref"):60112,y=r?Symbol.for("react.suspense"):60113,m=r?Symbol.for("react.suspense_list"):60120,d=r?Symbol.for("react.memo"):60115,h=r?Symbol.for("react.lazy"):60116,g=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,v=r?Symbol.for("react.responder"):60118,A=r?Symbol.for("react.scope"):60119;function x(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case l:case u:case a:case i:case s:case y:return e;default:switch(e=e&&e.$$typeof){case p:case f:case h:case d:case c:return e;default:return t}}case n:return t}}}function S(e){return x(e)===u}t.AsyncMode=l,t.ConcurrentMode=u,t.ContextConsumer=p,t.ContextProvider=c,t.Element=o,t.ForwardRef=f,t.Fragment=a,t.Lazy=h,t.Memo=d,t.Portal=n,t.Profiler=i,t.StrictMode=s,t.Suspense=y,t.isAsyncMode=function(e){return S(e)||x(e)===l},t.isConcurrentMode=S,t.isContextConsumer=function(e){return x(e)===p},t.isContextProvider=function(e){return x(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return x(e)===f},t.isFragment=function(e){return x(e)===a},t.isLazy=function(e){return x(e)===h},t.isMemo=function(e){return x(e)===d},t.isPortal=function(e){return x(e)===n},t.isProfiler=function(e){return x(e)===i},t.isStrictMode=function(e){return x(e)===s},t.isSuspense=function(e){return x(e)===y},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===u||e===i||e===s||e===y||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===d||e.$$typeof===c||e.$$typeof===p||e.$$typeof===f||e.$$typeof===b||e.$$typeof===v||e.$$typeof===A||e.$$typeof===g)},t.typeOf=x},3404:(e,t,r)=>{"use strict";e.exports=r(3072)},2694:(e,t,r)=>{"use strict";var o=r(6925);function n(){}function a(){}a.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,a,s){if(s!==o){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:n};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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akIsRUFDUmtCLE9BQVFsQixFQUVSbUIsSUFBS25CLEVBQ0xvQixRQUFTWixFQUNUdk8sUUFBUytOLEVBQ1RxQixZQUFhckIsRUFDYnNCLFdBQVlkLEVBQ1psUCxLQUFNME8sRUFDTnVCLFNBQVVmLEVBQ1ZnQixNQUFPaEIsRUFDUGlCLFVBQVdqQixFQUNYa0IsTUFBT2xCLEVBQ1BtQixNQUFPbkIsRUFFUG9CLGVBQWdCOUIsRUFDaEJDLGtCQUFtQkYsR0FLckIsT0FGQWEsRUFBZTFHLFVBQVkwRyxFQUVwQkEsQ0FDVCxrQkMvQ0UxRSxFQUFPQyxRQUFVLEVBQVEsS0FBUiwwQkNObkJELEVBQU9DLFFBRm9CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQm94L0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvdHlwb2dyYXBoeUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L1R5cG9ncmFwaHkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZUJveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L2V4dGVuZFN4UHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL0V4ZXJjaXNlU3RhdHVzSW5kaWNhdG9yLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3Mvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjcmVhdGVCb3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJy4uL2NsYXNzTmFtZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuY29uc3QgZGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCh7XG4gIHRoZW1lSWQ6IFRIRU1FX0lELFxuICBkZWZhdWx0VGhlbWUsXG4gIGRlZmF1bHRDbGFzc05hbWU6ICdNdWlCb3gtcm9vdCcsXG4gIGdlbmVyYXRlQ2xhc3NOYW1lOiBDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGVcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUeXBvZ3JhcGh5Jywgc2xvdCk7XG59XG5jb25zdCB0eXBvZ3JhcGh5Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVR5cG9ncmFwaHknLCBbJ3Jvb3QnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMicsICdib2R5MScsICdib2R5MicsICdpbmhlcml0JywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ292ZXJsaW5lJywgJ2FsaWduTGVmdCcsICdhbGlnblJpZ2h0JywgJ2FsaWduQ2VudGVyJywgJ2FsaWduSnVzdGlmeScsICdub1dyYXAnLCAnZ3V0dGVyQm90dG9tJywgJ3BhcmFncmFwaCddKTtcbmV4cG9ydCBkZWZhdWx0IHR5cG9ncmFwaHlDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFsaWduXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZ3V0dGVyQm90dG9tXCIsIFwibm9XcmFwXCIsIFwicGFyYWdyYXBoXCIsIFwidmFyaWFudFwiLCBcInZhcmlhbnRNYXBwaW5nXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfZXh0ZW5kU3hQcm9wIGFzIGV4dGVuZFN4UHJvcCB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB7IGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3R5cG9ncmFwaHlDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWxpZ24sXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgYGFsaWduJHtjYXBpdGFsaXplKGFsaWduKX1gLCBndXR0ZXJCb3R0b20gJiYgJ2d1dHRlckJvdHRvbScsIG5vV3JhcCAmJiAnbm9XcmFwJywgcGFyYWdyYXBoICYmICdwYXJhZ3JhcGgnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmV4cG9ydCBjb25zdCBUeXBvZ3JhcGh5Um9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVR5cG9ncmFwaHknLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2BhbGlnbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmFsaWduKX1gXSwgb3duZXJTdGF0ZS5ub1dyYXAgJiYgc3R5bGVzLm5vV3JhcCwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYgc3R5bGVzLmd1dHRlckJvdHRvbSwgb3duZXJTdGF0ZS5wYXJhZ3JhcGggJiYgc3R5bGVzLnBhcmFncmFwaF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG1hcmdpbjogMFxufSwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHRoZW1lLnR5cG9ncmFwaHlbb3duZXJTdGF0ZS52YXJpYW50XSwgb3duZXJTdGF0ZS5hbGlnbiAhPT0gJ2luaGVyaXQnICYmIHtcbiAgdGV4dEFsaWduOiBvd25lclN0YXRlLmFsaWduXG59LCBvd25lclN0YXRlLm5vV3JhcCAmJiB7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xufSwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYge1xuICBtYXJnaW5Cb3R0b206ICcwLjM1ZW0nXG59LCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiB7XG4gIG1hcmdpbkJvdHRvbTogMTZcbn0pKTtcbmNvbnN0IGRlZmF1bHRWYXJpYW50TWFwcGluZyA9IHtcbiAgaDE6ICdoMScsXG4gIGgyOiAnaDInLFxuICBoMzogJ2gzJyxcbiAgaDQ6ICdoNCcsXG4gIGg1OiAnaDUnLFxuICBoNjogJ2g2JyxcbiAgc3VidGl0bGUxOiAnaDYnLFxuICBzdWJ0aXRsZTI6ICdoNicsXG4gIGJvZHkxOiAncCcsXG4gIGJvZHkyOiAncCcsXG4gIGluaGVyaXQ6ICdwJ1xufTtcblxuLy8gVE9ETyB2NjogZGVwcmVjYXRlIHRoZXNlIGNvbG9yIHZhbHVlcyBpbiB2NS54IGFuZCByZW1vdmUgdGhlIHRyYW5zZm9ybWF0aW9uIGluIHY2XG5jb25zdCBjb2xvclRyYW5zZm9ybWF0aW9ucyA9IHtcbiAgcHJpbWFyeTogJ3ByaW1hcnkubWFpbicsXG4gIHRleHRQcmltYXJ5OiAndGV4dC5wcmltYXJ5JyxcbiAgc2Vjb25kYXJ5OiAnc2Vjb25kYXJ5Lm1haW4nLFxuICB0ZXh0U2Vjb25kYXJ5OiAndGV4dC5zZWNvbmRhcnknLFxuICBlcnJvcjogJ2Vycm9yLm1haW4nXG59O1xuY29uc3QgdHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyA9IGNvbG9yID0+IHtcbiAgcmV0dXJuIGNvbG9yVHJhbnNmb3JtYXRpb25zW2NvbG9yXSB8fCBjb2xvcjtcbn07XG5jb25zdCBUeXBvZ3JhcGh5ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVHlwb2dyYXBoeShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWVQcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUeXBvZ3JhcGh5J1xuICB9KTtcbiAgY29uc3QgY29sb3IgPSB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzKHRoZW1lUHJvcHMuY29sb3IpO1xuICBjb25zdCBwcm9wcyA9IGV4dGVuZFN4UHJvcChfZXh0ZW5kcyh7fSwgdGhlbWVQcm9wcywge1xuICAgIGNvbG9yXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgICAgYWxpZ24gPSAnaW5oZXJpdCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQsXG4gICAgICBndXR0ZXJCb3R0b20gPSBmYWxzZSxcbiAgICAgIG5vV3JhcCA9IGZhbHNlLFxuICAgICAgcGFyYWdyYXBoID0gZmFsc2UsXG4gICAgICB2YXJpYW50ID0gJ2JvZHkxJyxcbiAgICAgIHZhcmlhbnRNYXBwaW5nID0gZGVmYXVsdFZhcmlhbnRNYXBwaW5nXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBhbGlnbixcbiAgICBjb2xvcixcbiAgICBjbGFzc05hbWUsXG4gICAgY29tcG9uZW50LFxuICAgIGd1dHRlckJvdHRvbSxcbiAgICBub1dyYXAsXG4gICAgcGFyYWdyYXBoLFxuICAgIHZhcmlhbnQsXG4gICAgdmFyaWFudE1hcHBpbmdcbiAgfSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IGNvbXBvbmVudCB8fCAocGFyYWdyYXBoID8gJ3AnIDogdmFyaWFudE1hcHBpbmdbdmFyaWFudF0gfHwgZGVmYXVsdFZhcmlhbnRNYXBwaW5nW3ZhcmlhbnRdKSB8fCAnc3Bhbic7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFR5cG9ncmFwaHlSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IENvbXBvbmVudCxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSlcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVHlwb2dyYXBoeS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRleHQtYWxpZ24gb24gdGhlIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2luaGVyaXQnLCAnanVzdGlmeScsICdsZWZ0JywgJ3JpZ2h0J10pLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBoYXZlIGEgYm90dG9tIG1hcmdpbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGd1dHRlckJvdHRvbTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0ZXh0IHdpbGwgbm90IHdyYXAsIGJ1dCBpbnN0ZWFkIHdpbGwgdHJ1bmNhdGUgd2l0aCBhIHRleHQgb3ZlcmZsb3cgZWxsaXBzaXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0ZXh0IG92ZXJmbG93IGNhbiBvbmx5IGhhcHBlbiB3aXRoIGJsb2NrIG9yIGlubGluZS1ibG9jayBsZXZlbCBlbGVtZW50c1xuICAgKiAodGhlIGVsZW1lbnQgbmVlZHMgdG8gaGF2ZSBhIHdpZHRoIGluIG9yZGVyIHRvIG92ZXJmbG93KS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG5vV3JhcDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBlbGVtZW50IHdpbGwgYmUgYSBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHBhcmFncmFwaDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSB0aGVtZSB0eXBvZ3JhcGh5IHN0eWxlcy5cbiAgICogQGRlZmF1bHQgJ2JvZHkxJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydib2R5MScsICdib2R5MicsICdidXR0b24nLCAnY2FwdGlvbicsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdpbmhlcml0JywgJ292ZXJsaW5lJywgJ3N1YnRpdGxlMScsICdzdWJ0aXRsZTInXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgbWFwcyB0aGUgdmFyaWFudCBwcm9wIHRvIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IEhUTUwgZWxlbWVudCB0eXBlcy5cbiAgICogRm9yIGluc3RhbmNlLCBzdWJ0aXRsZTEgdG8gYDxoNj5gLlxuICAgKiBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhhdCBtYXBwaW5nLCB5b3UgY2FuIHByb3ZpZGUgeW91ciBvd24uXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgY29tcG9uZW50YCBwcm9wLlxuICAgKiBAZGVmYXVsdCB7XG4gICAqICAgaDE6ICdoMScsXG4gICAqICAgaDI6ICdoMicsXG4gICAqICAgaDM6ICdoMycsXG4gICAqICAgaDQ6ICdoNCcsXG4gICAqICAgaDU6ICdoNScsXG4gICAqICAgaDY6ICdoNicsXG4gICAqICAgc3VidGl0bGUxOiAnaDYnLFxuICAgKiAgIHN1YnRpdGxlMjogJ2g2JyxcbiAgICogICBib2R5MTogJ3AnLFxuICAgKiAgIGJvZHkyOiAncCcsXG4gICAqICAgaW5oZXJpdDogJ3AnLFxuICAgKiB9XG4gICAqL1xuICB2YXJpYW50TWFwcGluZzogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub2JqZWN0XG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVHlwb2dyYXBoeTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCBzdHlsZUZ1bmN0aW9uU3gsIHsgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnLi9zdHlsZUZ1bmN0aW9uU3gnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4vdXNlVGhlbWUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUJveChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lSWQsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIGRlZmF1bHRDbGFzc05hbWUgPSAnTXVpQm94LXJvb3QnLFxuICAgIGdlbmVyYXRlQ2xhc3NOYW1lXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBCb3hSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gICAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcHJvcCAhPT0gJ3RoZW1lJyAmJiBwcm9wICE9PSAnc3gnICYmIHByb3AgIT09ICdhcydcbiAgfSkoc3R5bGVGdW5jdGlvblN4KTtcbiAgY29uc3QgQm94ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQm94KGluUHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgICBjb25zdCBfZXh0ZW5kU3hQcm9wID0gZXh0ZW5kU3hQcm9wKGluUHJvcHMpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIGNvbXBvbmVudCA9ICdkaXYnXG4gICAgICB9ID0gX2V4dGVuZFN4UHJvcCxcbiAgICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX2V4dGVuZFN4UHJvcCwgX2V4Y2x1ZGVkKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQm94Um9vdCwgX2V4dGVuZHMoe1xuICAgICAgYXM6IGNvbXBvbmVudCxcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzTmFtZSwgZ2VuZXJhdGVDbGFzc05hbWUgPyBnZW5lcmF0ZUNsYXNzTmFtZShkZWZhdWx0Q2xhc3NOYW1lKSA6IGRlZmF1bHRDbGFzc05hbWUpLFxuICAgICAgdGhlbWU6IHRoZW1lSWQgPyB0aGVtZVt0aGVtZUlkXSB8fCB0aGVtZSA6IHRoZW1lXG4gICAgfSwgb3RoZXIpKTtcbiAgfSk7XG4gIHJldHVybiBCb3g7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInN4XCJdO1xuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGRlZmF1bHRTeENvbmZpZyBmcm9tICcuL2RlZmF1bHRTeENvbmZpZyc7XG5jb25zdCBzcGxpdFByb3BzID0gcHJvcHMgPT4ge1xuICB2YXIgX3Byb3BzJHRoZW1lJHVuc3RhYmxlLCBfcHJvcHMkdGhlbWU7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBzeXN0ZW1Qcm9wczoge30sXG4gICAgb3RoZXJQcm9wczoge31cbiAgfTtcbiAgY29uc3QgY29uZmlnID0gKF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA9IHByb3BzID09IG51bGwgfHwgKF9wcm9wcyR0aGVtZSA9IHByb3BzLnRoZW1lKSA9PSBudWxsID8gdm9pZCAwIDogX3Byb3BzJHRoZW1lLnVuc3RhYmxlX3N4Q29uZmlnKSAhPSBudWxsID8gX3Byb3BzJHRoZW1lJHVuc3RhYmxlIDogZGVmYXVsdFN4Q29uZmlnO1xuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChwcm9wID0+IHtcbiAgICBpZiAoY29uZmlnW3Byb3BdKSB7XG4gICAgICByZXN1bHQuc3lzdGVtUHJvcHNbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0Lm90aGVyUHJvcHNbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVuZFN4UHJvcChwcm9wcykge1xuICBjb25zdCB7XG4gICAgICBzeDogaW5TeFxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCB7XG4gICAgc3lzdGVtUHJvcHMsXG4gICAgb3RoZXJQcm9wc1xuICB9ID0gc3BsaXRQcm9wcyhvdGhlcik7XG4gIGxldCBmaW5hbFN4O1xuICBpZiAoQXJyYXkuaXNBcnJheShpblN4KSkge1xuICAgIGZpbmFsU3ggPSBbc3lzdGVtUHJvcHMsIC4uLmluU3hdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpblN4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZmluYWxTeCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpblN4KC4uLmFyZ3MpO1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHN5c3RlbVByb3BzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgcmVzdWx0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGZpbmFsU3ggPSBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIGluU3gpO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3RoZXJQcm9wcywge1xuICAgIHN4OiBmaW5hbFN4XG4gIH0pO1xufSIsImltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gXCJAbXVpL3N5c3RlbVwiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XHJcblxyXG5jb25zdCBibGluayA9IGtleWZyYW1lc2BcclxuICBmcm9tIHsgb3BhY2l0eTogMDsgfVxyXG4gIHRvIHsgb3BhY2l0eTogMTsgfVxyXG5gO1xyXG5cclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbmNvbnN0IEJsaW5raW5nSW5kaWNhdG9yID0gc3R5bGVkKFwiZGl2XCIpKCh7IHN0YXR1cyB9KSA9PiAoe1xyXG4gIGJhY2tncm91bmRDb2xvcjpcclxuICAgIHN0YXR1cyA9PT0gXCJBQ1RJVkVcIiA/IFwiZ3JlZW5cIiA6IHN0YXR1cyA9PT0gXCJJTkFDVElWRVwiID8gXCJyZWRcIiA6IFwib3JhbmdlXCIsXHJcbiAgd2lkdGg6IDEwLFxyXG4gIGhlaWdodDogMTAsXHJcbiAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxyXG4gIGJvcmRlckNvbG9yOiBcImJsYWNrXCIsXHJcbiAgYW5pbWF0aW9uOiBgJHtibGlua30gM3MgbGluZWFyIGluZmluaXRlYCxcclxufSkpO1xyXG5cclxuY29uc3QgSW5kaWNhdG9yID0gc3R5bGVkKFwiZGl2XCIpKCh7IHN0YXR1cyB9KSA9PiAoe1xyXG4gIGJhY2tncm91bmRDb2xvcjpcclxuICAgIHN0YXR1cyA9PT0gXCJBQ1RJVkVcIiA/IFwiZ3JlZW5cIiA6IHN0YXR1cyA9PT0gXCJJTkFDVElWRVwiID8gXCJyZWRcIiA6IFwib3JhbmdlXCIsXHJcbiAgd2lkdGg6IDEwLFxyXG4gIGhlaWdodDogMTAsXHJcbiAgYm9yZGVyUmFkaXVzOiBcIjUwJVwiLFxyXG4gIGJvcmRlckNvbG9yOiBcImJsYWNrXCIsXHJcbiAgLy8gYW5pbWF0aW9uOiBgJHtibGlua30gM3MgbGluZWFyIGluZmluaXRlYCxcclxufSkpO1xyXG5cclxuY29uc3QgRXhlcmNpc2VTdGF0dXNJbmRpY2F0b3IgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEJveFxyXG4gICAgICBzeD17e1xyXG4gICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWZsZXhcIixcclxuICAgICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxyXG4gICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXHJcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgYm9yZGVyOiAxLFxyXG4gICAgICAgIGJvcmRlckNvbG9yOiBcIndoaXRlXCIsXHJcbiAgICAgICAgcHk6IDAuNSxcclxuICAgICAgICBwbDogMSxcclxuICAgICAgICBwcjogMixcclxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiMTZweFwiLFxyXG4gICAgICB9fVxyXG4gICAgPlxyXG4gICAgICA8VHlwb2dyYXBoeVxyXG4gICAgICAgIGNvbG9yPXtcIndoaXRlXCJ9XHJcbiAgICAgICAgdmFyaWFudD1cImg4XCJcclxuICAgICAgICBjb21wb25lbnQ9XCJkaXZcIlxyXG4gICAgICAgIHN4PXt7IG1hcmdpblJpZ2h0OiAyIH19XHJcbiAgICAgID5cclxuICAgICAgICBTdGF0dXNcclxuICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICA8SW5kaWNhdG9yIHN0YXR1cz17cHJvcHMuc3RhdHVzfSAvPlxyXG4gICAgPC9Cb3g+XHJcbiAgKTtcclxufTtcclxuXHJcbkV4ZXJjaXNlU3RhdHVzSW5kaWNhdG9yLnByb3BUeXBlcyA9IHtcclxuICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFeGVyY2lzZVN0YXR1c0luZGljYXRvcjtcclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbi8qKlxuICogQ29weXJpZ2h0IDIwMTUsIFlhaG9vISBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbnZhciBSRUFDVF9TVEFUSUNTID0ge1xuICBjaGlsZENvbnRleHRUeXBlczogdHJ1ZSxcbiAgY29udGV4dFR5cGU6IHRydWUsXG4gIGNvbnRleHRUeXBlczogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I6IHRydWUsXG4gIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczogdHJ1ZSxcbiAgbWl4aW5zOiB0cnVlLFxuICBwcm9wVHlwZXM6IHRydWUsXG4gIHR5cGU6IHRydWVcbn07XG52YXIgS05PV05fU1RBVElDUyA9IHtcbiAgbmFtZTogdHJ1ZSxcbiAgbGVuZ3RoOiB0cnVlLFxuICBwcm90b3R5cGU6IHRydWUsXG4gIGNhbGxlcjogdHJ1ZSxcbiAgY2FsbGVlOiB0cnVlLFxuICBhcmd1bWVudHM6IHRydWUsXG4gIGFyaXR5OiB0cnVlXG59O1xudmFyIEZPUldBUkRfUkVGX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIHJlbmRlcjogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlXG59O1xudmFyIE1FTU9fU1RBVElDUyA9IHtcbiAgJyQkdHlwZW9mJzogdHJ1ZSxcbiAgY29tcGFyZTogdHJ1ZSxcbiAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICBkaXNwbGF5TmFtZTogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIFRZUEVfU1RBVElDUyA9IHt9O1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuRm9yd2FyZFJlZl0gPSBGT1JXQVJEX1JFRl9TVEFUSUNTO1xuVFlQRV9TVEFUSUNTW3JlYWN0SXMuTWVtb10gPSBNRU1PX1NUQVRJQ1M7XG5cbmZ1bmN0aW9uIGdldFN0YXRpY3MoY29tcG9uZW50KSB7XG4gIC8vIFJlYWN0IHYxNi4xMSBhbmQgYmVsb3dcbiAgaWYgKHJlYWN0SXMuaXNNZW1vKGNvbXBvbmVudCkpIHtcbiAgICByZXR1cm4gTUVNT19TVEFUSUNTO1xuICB9IC8vIFJlYWN0IHYxNi4xMiBhbmQgYWJvdmVcblxuXG4gIHJldHVybiBUWVBFX1NUQVRJQ1NbY29tcG9uZW50WyckJHR5cGVvZiddXSB8fCBSRUFDVF9TVEFUSUNTO1xufVxuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuZnVuY3Rpb24gaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBzb3VyY2VDb21wb25lbnQsIGJsYWNrbGlzdCkge1xuICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHtcbiAgICAvLyBkb24ndCBob2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuICAgIGlmIChvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBnZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICBpZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICAgIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgaW5oZXJpdGVkQ29tcG9uZW50LCBibGFja2xpc3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgaWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2VDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0U3RhdGljcyA9IGdldFN0YXRpY3ModGFyZ2V0Q29tcG9uZW50KTtcbiAgICB2YXIgc291cmNlU3RhdGljcyA9IGdldFN0YXRpY3Moc291cmNlQ29tcG9uZW50KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cbiAgICAgIGlmICghS05PV05fU1RBVElDU1trZXldICYmICEoYmxhY2tsaXN0ICYmIGJsYWNrbGlzdFtrZXldKSAmJiAhKHNvdXJjZVN0YXRpY3MgJiYgc291cmNlU3RhdGljc1trZXldKSAmJiAhKHRhcmdldFN0YXRpY3MgJiYgdGFyZ2V0U3RhdGljc1trZXldKSkge1xuICAgICAgICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2VDb21wb25lbnQsIGtleSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBBdm9pZCBmYWlsdXJlcyBmcm9tIHJlYWQtb25seSBwcm9wZXJ0aWVzXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0Q29tcG9uZW50LCBrZXksIGRlc2NyaXB0b3IpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaG9pc3ROb25SZWFjdFN0YXRpY3M7XG4iLCIvKiogQGxpY2Vuc2UgUmVhY3QgdjE2LjEzLjFcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO3ZhciBiPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3IsYz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpOjYwMTAzLGQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpOjYwMTA2LGU9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIik6NjAxMDcsZj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKTo2MDEwOCxnPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpOjYwMTE0LGg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIik6NjAxMDksaz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpOjYwMTEwLGw9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYXN5bmNfbW9kZVwiKTo2MDExMSxtPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbmN1cnJlbnRfbW9kZVwiKTo2MDExMSxuPWI/U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpOjYwMTEyLHA9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIik6NjAxMTMscT1iP1xuU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIik6NjAxMjAscj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpOjYwMTE1LHQ9Yj9TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTo2MDExNix2PWI/U3ltYm9sLmZvcihcInJlYWN0LmJsb2NrXCIpOjYwMTIxLHc9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZnVuZGFtZW50YWxcIik6NjAxMTcseD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5yZXNwb25kZXJcIik6NjAxMTgseT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTo2MDExOTtcbmZ1bmN0aW9uIHooYSl7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSl7dmFyIHU9YS4kJHR5cGVvZjtzd2l0Y2godSl7Y2FzZSBjOnN3aXRjaChhPWEudHlwZSxhKXtjYXNlIGw6Y2FzZSBtOmNhc2UgZTpjYXNlIGc6Y2FzZSBmOmNhc2UgcDpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgbjpjYXNlIHQ6Y2FzZSByOmNhc2UgaDpyZXR1cm4gYTtkZWZhdWx0OnJldHVybiB1fX1jYXNlIGQ6cmV0dXJuIHV9fX1mdW5jdGlvbiBBKGEpe3JldHVybiB6KGEpPT09bX1leHBvcnRzLkFzeW5jTW9kZT1sO2V4cG9ydHMuQ29uY3VycmVudE1vZGU9bTtleHBvcnRzLkNvbnRleHRDb25zdW1lcj1rO2V4cG9ydHMuQ29udGV4dFByb3ZpZGVyPWg7ZXhwb3J0cy5FbGVtZW50PWM7ZXhwb3J0cy5Gb3J3YXJkUmVmPW47ZXhwb3J0cy5GcmFnbWVudD1lO2V4cG9ydHMuTGF6eT10O2V4cG9ydHMuTWVtbz1yO2V4cG9ydHMuUG9ydGFsPWQ7XG5leHBvcnRzLlByb2ZpbGVyPWc7ZXhwb3J0cy5TdHJpY3RNb2RlPWY7ZXhwb3J0cy5TdXNwZW5zZT1wO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIEEoYSl8fHooYSk9PT1sfTtleHBvcnRzLmlzQ29uY3VycmVudE1vZGU9QTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09a307ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWh9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1jfTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PW59O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWV9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09dH07XG5leHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXJ9O2V4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1kfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1nfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWZ9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXB9O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWV8fGE9PT1tfHxhPT09Z3x8YT09PWZ8fGE9PT1wfHxhPT09cXx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT10fHxhLiQkdHlwZW9mPT09cnx8YS4kJHR5cGVvZj09PWh8fGEuJCR0eXBlb2Y9PT1rfHxhLiQkdHlwZW9mPT09bnx8YS4kJHR5cGVvZj09PXd8fGEuJCR0eXBlb2Y9PT14fHxhLiQkdHlwZW9mPT09eXx8YS4kJHR5cGVvZj09PXYpfTtleHBvcnRzLnR5cGVPZj16O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiJdLCJuYW1lcyI6WyJHbG9iYWwiLCJ3IiwicHJvcHMiLCJjYWNoZSIsInN0eWxlcyIsInNlcmlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJUIiwiaSIsIl9yZWYiLCJzZXJpYWxpemVkTmFtZXMiLCJuYW1lIiwic2VyaWFsaXplZFN0eWxlcyIsIm5leHQiLCJzaG91bGRDYWNoZSIsImNvbXBhdCIsInJ1bGVzIiwiaW5zZXJ0Iiwic2hlZXQiLCJrZXkiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsIm5vbmNlIiwic2hlZXRSZWYiLCJjb25zdHJ1Y3RvciIsImNvbnRhaW5lciIsInNwZWVkeSIsImlzU3BlZWR5IiwicmVoeWRyYXRpbmciLCJub2RlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwidGFncyIsImxlbmd0aCIsImJlZm9yZSIsInNldEF0dHJpYnV0ZSIsImh5ZHJhdGUiLCJjdXJyZW50IiwiZmx1c2giLCJzaGVldFJlZkN1cnJlbnQiLCJlbGVtZW50IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiY3NzIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJrZXlmcmFtZXMiLCJpbnNlcnRhYmxlIiwiYXBwbHkiLCJhbmltIiwidG9TdHJpbmciLCJ0aGlzIiwiZGVmYXVsdFRoZW1lIiwidGhlbWVJZCIsImRlZmF1bHRDbGFzc05hbWUiLCJnZW5lcmF0ZUNsYXNzTmFtZSIsImdlbmVyYXRlIiwiZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJUeXBvZ3JhcGh5Um9vdCIsInN0eWxlZCIsIm92ZXJyaWRlc1Jlc29sdmVyIiwib3duZXJTdGF0ZSIsInJvb3QiLCJ2YXJpYW50IiwiYWxpZ24iLCJjYXBpdGFsaXplIiwibm9XcmFwIiwiZ3V0dGVyQm90dG9tIiwicGFyYWdyYXBoIiwidGhlbWUiLCJtYXJnaW4iLCJ0eXBvZ3JhcGh5IiwidGV4dEFsaWduIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJ3aGl0ZVNwYWNlIiwibWFyZ2luQm90dG9tIiwiZGVmYXVsdFZhcmlhbnRNYXBwaW5nIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Iiwic3VidGl0bGUxIiwic3VidGl0bGUyIiwiYm9keTEiLCJib2R5MiIsImluaGVyaXQiLCJjb2xvclRyYW5zZm9ybWF0aW9ucyIsInByaW1hcnkiLCJ0ZXh0UHJpbWFyeSIsInNlY29uZGFyeSIsInRleHRTZWNvbmRhcnkiLCJlcnJvciIsImluUHJvcHMiLCJyZWYiLCJ0aGVtZVByb3BzIiwidXNlVGhlbWVQcm9wcyIsImNvbG9yIiwidHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyIsImV4dGVuZFN4UHJvcCIsImNsYXNzTmFtZSIsImNvbXBvbmVudCIsInZhcmlhbnRNYXBwaW5nIiwib3RoZXIiLCJDb21wb25lbnQiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJjcmVhdGVCb3giLCJvcHRpb25zIiwiQm94Um9vdCIsInNob3VsZEZvcndhcmRQcm9wIiwicHJvcCIsIl9leHRlbmRTeFByb3AiLCJzcGxpdFByb3BzIiwiX3Byb3BzJHRoZW1lJHVuc3RhYmxlIiwiX3Byb3BzJHRoZW1lIiwicmVzdWx0Iiwic3lzdGVtUHJvcHMiLCJvdGhlclByb3BzIiwiY29uZmlnIiwidW5zdGFibGVfc3hDb25maWciLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInN4IiwiaW5TeCIsImZpbmFsU3giLCJpc0FycmF5IiwiYmxpbmsiLCJfdGVtcGxhdGVPYmplY3QiLCJJbmRpY2F0b3IiLCJzdGF0dXMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ3aWR0aCIsImhlaWdodCIsImJvcmRlclJhZGl1cyIsImJvcmRlckNvbG9yIiwiYW5pbWF0aW9uIiwiY29uY2F0IiwiX3JlZjIiLCJFeGVyY2lzZVN0YXR1c0luZGljYXRvciIsIl9qc3hzIiwiQm94IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJib3JkZXIiLCJweSIsInBsIiwicHIiLCJjaGlsZHJlbiIsIl9qc3giLCJUeXBvZ3JhcGh5IiwibWFyZ2luUmlnaHQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJyZWFjdElzIiwiUkVBQ1RfU1RBVElDUyIsImNoaWxkQ29udGV4dFR5cGVzIiwiY29udGV4dFR5cGUiLCJjb250ZXh0VHlwZXMiLCJkZWZhdWx0UHJvcHMiLCJkaXNwbGF5TmFtZSIsImdldERlZmF1bHRQcm9wcyIsImdldERlcml2ZWRTdGF0ZUZyb21FcnJvciIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm1peGlucyIsInR5cGUiLCJLTk9XTl9TVEFUSUNTIiwicHJvdG90eXBlIiwiY2FsbGVyIiwiY2FsbGVlIiwiYXJpdHkiLCJNRU1PX1NUQVRJQ1MiLCJjb21wYXJlIiwiVFlQRV9TVEFUSUNTIiwiZ2V0U3RhdGljcyIsImlzTWVtbyIsIkZvcndhcmRSZWYiLCJyZW5kZXIiLCJNZW1vIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0UHJvdG90eXBlT2YiLCJvYmplY3RQcm90b3R5cGUiLCJtb2R1bGUiLCJleHBvcnRzIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJpbmhlcml0ZWRDb21wb25lbnQiLCJ0YXJnZXRTdGF0aWNzIiwic291cmNlU3RhdGljcyIsImRlc2NyaXB0b3IiLCJlIiwiYiIsIlN5bWJvbCIsImZvciIsImMiLCJkIiwiZiIsImciLCJoIiwiayIsImwiLCJtIiwibiIsInAiLCJxIiwiciIsInQiLCJ2IiwieCIsInkiLCJ6IiwiYSIsInUiLCIkJHR5cGVvZiIsIkEiLCJBc3luY01vZGUiLCJDb25jdXJyZW50TW9kZSIsIkNvbnRleHRDb25zdW1lciIsIkNvbnRleHRQcm92aWRlciIsIkVsZW1lbnQiLCJGcmFnbWVudCIsIkxhenkiLCJQb3J0YWwiLCJQcm9maWxlciIsIlN0cmljdE1vZGUiLCJTdXNwZW5zZSIsImlzQXN5bmNNb2RlIiwiaXNDb25jdXJyZW50TW9kZSIsImlzQ29udGV4dENvbnN1bWVyIiwiaXNDb250ZXh0UHJvdmlkZXIiLCJpc0VsZW1lbnQiLCJpc0ZvcndhcmRSZWYiLCJpc0ZyYWdtZW50IiwiaXNMYXp5IiwiaXNQb3J0YWwiLCJpc1Byb2ZpbGVyIiwiaXNTdHJpY3RNb2RlIiwiaXNTdXNwZW5zZSIsImlzVmFsaWRFbGVtZW50VHlwZSIsInR5cGVPZiIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/2745.33d54ad3.js.LICENSE.txt b/react_frontend/static/react_frontend/js/2745.33d54ad3.js.LICENSE.txt new file mode 100644 index 000000000..6f6f2bb3f --- /dev/null +++ b/react_frontend/static/react_frontend/js/2745.33d54ad3.js.LICENSE.txt @@ -0,0 +1,8 @@ +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/2973.c84ba46a.js b/react_frontend/static/react_frontend/js/2973.c84ba46a.js new file mode 100644 index 000000000..6270d89d4 --- /dev/null +++ b/react_frontend/static/react_frontend/js/2973.c84ba46a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[2973],{2973:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/302.612c9575.js b/react_frontend/static/react_frontend/js/302.612c9575.js new file mode 100644 index 000000000..f38e13a95 --- /dev/null +++ b/react_frontend/static/react_frontend/js/302.612c9575.js @@ -0,0 +1,3 @@ +/*! For license information please see 302.612c9575.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[302],{302:(e,r,t)=>{t.r(r),t.d(r,{CameraMonitorIcon:()=>o,CameraNotFoundIcon:()=>l});var n=t(4848),o=function(e){return e.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 -960 960 960",width:"24px",fill:"#525252",children:(0,n.jsx)("path",{d:"M80-600v-160q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v160h-80v-160H160v160H80Zm80 360q-33 0-56.5-23.5T80-320v-200h80v200h640v-200h80v200q0 33-23.5 56.5T800-240H160ZM40-120v-80h880v80H40Zm440-420ZM80-520v-80h240q11 0 21 6t15 16l47 93 123-215q5-9 14-14.5t20-5.5q11 0 21 5.5t15 16.5l49 98h235v80H620q-11 0-21-5.5T584-542l-26-53-123 215q-5 10-15 15t-21 5q-11 0-20.5-6T364-382l-69-138H80Z"})})},l=function(e){return e.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"80px",viewBox:"0 -960 960 960",width:"80px",fill:"#aaa",children:(0,n.jsx)("path",{d:"M880-275 720-435v111l-60-60v-356H304l-60-60h416q24 0 42 18t18 42v215l160-160v410ZM848-27 39-836l42-42L890-69l-42 42ZM484-560Zm-87 82ZM159-800l60 60h-79v520h520v-79l60 60v19q0 24-18 42t-42 18H140q-24 0-42-18t-18-42v-520q0-24 18-42t42-18h19Z"})})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),l=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,v=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,h={key:!0,ref:!0,__self:!0,__source:!0};function a(e,r,t){var n,l={},a=null,f=null;for(n in void 0!==t&&(a=""+t),void 0!==r.key&&(a=""+r.key),void 0!==r.ref&&(f=r.ref),r)s.call(r,n)&&!h.hasOwnProperty(n)&&(l[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===l[n]&&(l[n]=r[n]);return{$$typeof:o,type:e,key:a,ref:f,props:l,_owner:v.current}}r.Fragment=l,r.jsx=a,r.jsxs=a},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMzAyLjEwODNmZjlmLmpzIiwibWFwcGluZ3MiOiI7NkxBQWFBLEVBQW9CLFNBQUhDLEdBQWMsT0FBQUEsRUFBUkMsVUFDbENDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsTUFBTSw2QkFDTkMsT0FBTyxPQUNQQyxRQUFRLGlCQUNSQyxNQUFNLE9BQ05DLEtBQUssVUFBU0MsVUFFZE4sRUFBQUEsRUFBQUEsS0FBQSxRQUFNTyxFQUFFLDhZQUNKLEVBR0tDLEVBQXFCLFNBQUhDLEdBQWMsT0FBQUEsRUFBUlYsVUFDbkNDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsTUFBTSw2QkFDTkMsT0FBTyxPQUNQQyxRQUFRLGlCQUNSQyxNQUFNLE9BQ05DLEtBQUssT0FBTUMsVUFFWE4sRUFBQUEsRUFBQUEsS0FBQSxRQUFNTyxFQUFFLHFQQUNKLGtCQ1pLLElBQUlHLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFeEIsRUFBRSxDQUFDLEVBQUV5QixFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUYsVUFBaEYsSUFBU0QsSUFBSUUsRUFBRSxHQUFHRixRQUFHLElBQVNELEVBQUVOLE1BQU1TLEVBQUUsR0FBR0gsRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNUyxFQUFFSixFQUFFTCxLQUFjSyxFQUFFZCxFQUFFbUIsS0FBS0wsRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS3hCLEVBQUV3QixHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVPLGFBQWEsSUFBSUosS0FBS0YsRUFBRUQsRUFBRU8sa0JBQWUsSUFBUzVCLEVBQUV3QixLQUFLeEIsRUFBRXdCLEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDSyxTQUFTekIsRUFBRTBCLEtBQUtULEVBQUVMLElBQUlTLEVBQUVSLElBQUlTLEVBQUVLLE1BQU0vQixFQUFFZ0MsT0FBT3BCLEVBQUVxQixRQUFRLENBQUNDLEVBQVFDLFNBQVM1QixFQUFFMkIsRUFBUUUsSUFBSWhCLEVBQUVjLEVBQVFHLEtBQUtqQixrQkNQeFdrQixFQUFPSixRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvc3R5bGVzL2NhbWVyYV9kcml2ZXIvQ2FtZXJhRHJpdmVySWNvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBDYW1lcmFNb25pdG9ySWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjI0cHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjRweFwiXHJcbiAgICBmaWxsPVwiIzUyNTI1MlwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk04MC02MDB2LTE2MHEwLTMzIDIzLjUtNTYuNVQxNjAtODQwaDY0MHEzMyAwIDU2LjUgMjMuNVQ4ODAtNzYwdjE2MGgtODB2LTE2MEgxNjB2MTYwSDgwWm04MCAzNjBxLTMzIDAtNTYuNS0yMy41VDgwLTMyMHYtMjAwaDgwdjIwMGg2NDB2LTIwMGg4MHYyMDBxMCAzMy0yMy41IDU2LjVUODAwLTI0MEgxNjBaTTQwLTEyMHYtODBoODgwdjgwSDQwWm00NDAtNDIwWk04MC01MjB2LTgwaDI0MHExMSAwIDIxIDZ0MTUgMTZsNDcgOTMgMTIzLTIxNXE1LTkgMTQtMTQuNXQyMC01LjVxMTEgMCAyMSA1LjV0MTUgMTYuNWw0OSA5OGgyMzV2ODBINjIwcS0xMSAwLTIxLTUuNVQ1ODQtNTQybC0yNi01My0xMjMgMjE1cS01IDEwLTE1IDE1dC0yMSA1cS0xMSAwLTIwLjUtNlQzNjQtMzgybC02OS0xMzhIODBaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBDYW1lcmFOb3RGb3VuZEljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCI4MHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjgwcHhcIlxyXG4gICAgZmlsbD1cIiNhYWFcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNODgwLTI3NSA3MjAtNDM1djExMWwtNjAtNjB2LTM1NkgzMDRsLTYwLTYwaDQxNnEyNCAwIDQyIDE4dDE4IDQydjIxNWwxNjAtMTYwdjQxMFpNODQ4LTI3IDM5LTgzNmw0Mi00Mkw4OTAtNjlsLTQyIDQyWk00ODQtNTYwWm0tODcgODJaTTE1OS04MDBsNjAgNjBoLTc5djUyMGg1MjB2LTc5bDYwIDYwdjE5cTAgMjQtMTggNDJ0LTQyIDE4SDE0MHEtMjQgMC00Mi0xOHQtMTgtNDJ2LTUyMHEwLTI0IDE4LTQydDQyLTE4aDE5WlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJDYW1lcmFNb25pdG9ySWNvbiIsIl9yZWYiLCJjc3NDbGFzcyIsIl9qc3giLCJ4bWxucyIsImhlaWdodCIsInZpZXdCb3giLCJ3aWR0aCIsImZpbGwiLCJjaGlsZHJlbiIsImQiLCJDYW1lcmFOb3RGb3VuZEljb24iLCJfcmVmMiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJwcm9wcyIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/302.612c9575.js.LICENSE.txt b/react_frontend/static/react_frontend/js/302.612c9575.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/302.612c9575.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/3093.f3c3e376.js b/react_frontend/static/react_frontend/js/3093.f3c3e376.js new file mode 100644 index 000000000..a9689e944 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3093.f3c3e376.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3093,1052],{7437:(e,t,r)=>{"use strict";r.d(t,{AH:()=>c,i7:()=>u,mL:()=>l});var n=r(5684),o=r(6540),i=r(41),a=r(1287),s=r(6899),l=(r(4300),r(4146),(0,n.w)((function(e,t){var r=e.styles,l=(0,s.J)([r],void 0,o.useContext(n.T));if(!n.i){for(var c,u=l.name,d=l.styles,m=l.next;void 0!==m;)u+=" "+m.name,d+=m.styles,m=m.next;var p=!0===t.compat,h=t.insert("",{name:u,styles:d},t.sheet,p);return p?null:o.createElement("style",((c={})["data-emotion"]=t.key+"-global "+u,c.dangerouslySetInnerHTML={__html:h},c.nonce=t.sheet.nonce,c))}var f=o.useRef();return(0,a.i)((function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,o=document.querySelector('style[data-emotion="'+e+" "+l.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==o&&(n=!0,o.setAttribute("data-emotion",e),r.hydrate([o])),f.current=[r,n],function(){r.flush()}}),[t]),(0,a.i)((function(){var e=f.current,r=e[0];if(e[1])e[1]=!1;else{if(void 0!==l.next&&(0,i.sk)(t,l.next,!0),r.tags.length){var n=r.tags[r.tags.length-1].nextElementSibling;r.before=n,r.flush()}t.insert("",l,r,!1)}}),[t,l.name]),null})));function c(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";var n=r(4994);t.A=void 0;var o=n(r(2032)),i=r(4848),a=(0,o.default)([(0,i.jsx)("path",{d:"M15.22 4.75 7.87 7.79l4.96 11.96 7.35-3.05-4.96-11.95zM11 10c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z",opacity:".3"},"0"),(0,i.jsx)("path",{d:"m3.87 11.18-2.43 5.86c-.41 1.02.08 2.19 1.09 2.61l1.34.56v-9.03zm18.16 4.77L17.07 3.98c-.31-.75-1.04-1.21-1.81-1.23-.26 0-.53.04-.79.15L7.1 5.95c-.75.31-1.21 1.03-1.23 1.8-.01.27.04.54.15.8l4.96 11.97c.31.76 1.05 1.22 1.83 1.23.26 0 .52-.05.77-.15l7.36-3.05c1.02-.42 1.51-1.59 1.09-2.6zm-9.2 3.8L7.87 7.79l7.35-3.04h.01l4.95 11.95-7.35 3.05z"},"1"),(0,i.jsx)("circle",{cx:"11",cy:"9",r:"1"},"2"),(0,i.jsx)("path",{d:"m9.33 21.75-3.45-8.34v6.34c0 1.1.9 2 2 2h1.45z"},"3")],"StyleTwoTone");t.A=a},2032:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.createSvgIcon}});var n=r(8826)},4073:(e,t,r)=>{"use strict";r.d(t,{A:()=>x});var n=r(8587),o=r(8168),i=r(6540),a=r(53),s=r(9599),l=r(5659),c=r(7577),u=r(4409),d=r(8466),m=r(8413),p=r(1609);function h(e){return(0,p.A)("MuiTypography",e)}(0,m.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var f=r(4848);const v=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],g=(0,c.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,d.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,o.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),A={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},y={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},x=i.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiTypography"}),i=(e=>y[e]||e)(r.color),c=(0,s.A)((0,o.A)({},r,{color:i})),{align:m="inherit",className:p,component:x,gutterBottom:S=!1,noWrap:w=!1,paragraph:b=!1,variant:M="body1",variantMapping:C=A}=c,j=(0,n.A)(c,v),k=(0,o.A)({},c,{align:m,color:i,className:p,component:x,gutterBottom:S,noWrap:w,paragraph:b,variant:M,variantMapping:C}),z=x||(b?"p":C[M]||A[M])||"span",I=(e=>{const{align:t,gutterBottom:r,noWrap:n,paragraph:o,variant:i,classes:a}=e,s={root:["root",i,"inherit"!==e.align&&`align${(0,d.A)(t)}`,r&&"gutterBottom",n&&"noWrap",o&&"paragraph"]};return(0,l.A)(s,h,a)})(k);return(0,f.jsx)(g,(0,o.A)({as:z,ref:t,ownerState:k,className:(0,a.A)(I.root,p)},j))}))},5003:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var n=r(8168),o=r(6540),i=r(8587),a=r(53),s=r(5659),l=r(8466),c=r(4409),u=r(7577),d=r(8413),m=r(1609);function p(e){return(0,m.A)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=r(4848);const f=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],v=(0,u.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"inherit"!==r.color&&t[`color${(0,l.A)(r.color)}`],t[`fontSize${(0,l.A)(r.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var r,n,o,i,a,s,l,c,u,d,m,p,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(r=e.transitions)||null==(n=r.create)?void 0:n.call(r,"fill",{duration:null==(o=e.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(i=e.typography)||null==(a=i.pxToRem)?void 0:a.call(i,20))||"1.25rem",medium:(null==(s=e.typography)||null==(l=s.pxToRem)?void 0:l.call(s,24))||"1.5rem",large:(null==(c=e.typography)||null==(u=c.pxToRem)?void 0:u.call(c,35))||"2.1875rem"}[t.fontSize],color:null!=(d=null==(m=(e.vars||e).palette)||null==(m=m[t.color])?void 0:m.main)?d:{action:null==(p=(e.vars||e).palette)||null==(p=p.action)?void 0:p.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[t.color]}})),g=o.forwardRef((function(e,t){const r=(0,c.A)({props:e,name:"MuiSvgIcon"}),{children:u,className:d,color:m="inherit",component:g="svg",fontSize:A="medium",htmlColor:y,inheritViewBox:x=!1,titleAccess:S,viewBox:w="0 0 24 24"}=r,b=(0,i.A)(r,f),M=o.isValidElement(u)&&"svg"===u.type,C=(0,n.A)({},r,{color:m,component:g,fontSize:A,instanceFontSize:e.fontSize,inheritViewBox:x,viewBox:w,hasSvgAsChild:M}),j={};x||(j.viewBox=w);const k=(e=>{const{color:t,fontSize:r,classes:n}=e,o={root:["root","inherit"!==t&&`color${(0,l.A)(t)}`,`fontSize${(0,l.A)(r)}`]};return(0,s.A)(o,p,n)})(C);return(0,h.jsxs)(v,(0,n.A)({as:g,className:(0,a.A)(k.root,d),focusable:"false",color:y,"aria-hidden":!S||void 0,role:S?"img":void 0,ref:t},j,b,M&&u.props,{ownerState:C,children:[M?u.props.children:u,S?(0,h.jsx)("title",{children:S}):null]}))}));g.muiName="SvgIcon";const A=g;function y(e,t){function r(r,o){return(0,h.jsx)(A,(0,n.A)({"data-testid":`${t}Icon`,ref:o},r,{children:e}))}return r.muiName=A.muiName,o.memo(o.forwardRef(r))}},1935:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(4705).A},8826:(e,t,r)=>{"use strict";r.r(t),r.d(t,{capitalize:()=>o.A,createChainedFunction:()=>i,createSvgIcon:()=>a.A,debounce:()=>s.A,deprecatedPropType:()=>l,isMuiElement:()=>c.A,ownerDocument:()=>u.A,ownerWindow:()=>d.A,requirePropFactory:()=>m,setRef:()=>p,unstable_ClassNameGenerator:()=>S,unstable_useEnhancedEffect:()=>h.A,unstable_useId:()=>f.A,unsupportedProp:()=>v,useControlled:()=>g.A,useEventCallback:()=>A.A,useForkRef:()=>y.A,useIsFocusVisible:()=>x.A});var n=r(9071),o=r(8466);const i=r(1210).A;var a=r(5003),s=r(1935);const l=function(e,t){return()=>null};var c=r(5034),u=r(6248),d=r(3749);r(8168);const m=function(e,t){return()=>null},p=r(989).A;var h=r(2778),f=r(1668);const v=function(e,t,r,n,o){return null};var g=r(1159),A=r(3034),y=r(6852),x=r(1544);const S={configure:e=>{n.A.configure(e)}}},5034:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(6540);const o=function(e,t){return n.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},6248:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(2325).A},3749:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(4877).A},1159:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(2501).A},2778:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(1529).A},1668:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(4661).A},9599:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(8168),o=r(8587),i=r(3272),a=r(4188);const s=["sx"],l=e=>{var t,r;const n={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:a.A;return Object.keys(e).forEach((t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]})),n};function c(e){const{sx:t}=e,r=(0,o.A)(e,s),{systemProps:a,otherProps:c}=l(r);let u;return u=Array.isArray(t)?[a,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,i.Q)(r)?(0,n.A)({},a,r):a}:(0,n.A)({},a,t),(0,n.A)({},c,{sx:u})}},1210:(e,t,r)=>{"use strict";function n(...e){return e.reduce(((e,t)=>null==t?e:function(...r){e.apply(this,r),t.apply(this,r)}),(()=>{}))}r.d(t,{A:()=>n})},4705:(e,t,r)=>{"use strict";function n(e,t=166){let r;function n(...n){clearTimeout(r),r=setTimeout((()=>{e.apply(this,n)}),t)}return n.clear=()=>{clearTimeout(r)},n}r.d(t,{A:()=>n})},2325:(e,t,r)=>{"use strict";function n(e){return e&&e.ownerDocument||document}r.d(t,{A:()=>n})},4877:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(2325);function o(e){return(0,n.A)(e).defaultView||window}},2501:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(6540);function o({controlled:e,default:t,name:r,state:o="value"}){const{current:i}=n.useRef(void 0!==e),[a,s]=n.useState(t);return[i?e:a,n.useCallback((e=>{i||s(e)}),[])]}},4661:(e,t,r)=>{"use strict";var n;r.d(t,{A:()=>s});var o=r(6540);let i=0;const a=(n||(n=r.t(o,2)))["useId".toString()];function s(e){if(void 0!==a){const t=a();return null!=e?e:t}return function(e){const[t,r]=o.useState(e),n=e||t;return o.useEffect((()=>{null==t&&(i+=1,r(`mui-${i}`))}),[t]),n}(e)}},6965:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ExerciseCard:()=>M});var n=r(6540);const o=JSON.parse('{"H":{"K":{"n":{"type":"image","url":"/static/exercises/assets/img/${exerciseid}_teaser.png"},"r":"/exercises/exercises/${exerciseid}"}}}');var i=r(2022),a=r(8587),s=r(8168),l=r(53),c=r(5659),u=r(4409),d=r(7577),m=r(8413),p=r(1609);function h(e){return(0,p.A)("MuiCardMedia",e)}(0,m.A)("MuiCardMedia",["root","media","img"]);var f=r(4848);const v=["children","className","component","image","src","style"],g=(0,d.Ay)("div",{name:"MuiCardMedia",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{isMediaComponent:n,isImageComponent:o}=r;return[t.root,n&&t.media,o&&t.img]}})((({ownerState:e})=>(0,s.A)({display:"block",backgroundSize:"cover",backgroundRepeat:"no-repeat",backgroundPosition:"center"},e.isMediaComponent&&{width:"100%"},e.isImageComponent&&{objectFit:"cover"}))),A=["video","audio","picture","iframe","img"],y=["picture","img"],x=n.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiCardMedia"}),{children:n,className:o,component:i="div",image:d,src:m,style:p}=r,x=(0,a.A)(r,v),S=-1!==A.indexOf(i),w=!S&&d?(0,s.A)({backgroundImage:`url("${d}")`},p):p,b=(0,s.A)({},r,{component:i,isMediaComponent:S,isImageComponent:-1!==y.indexOf(i)}),M=(e=>{const{classes:t,isMediaComponent:r,isImageComponent:n}=e,o={root:["root",r&&"media",n&&"img"]};return(0,c.A)(o,h,t)})(b);return(0,f.jsx)(g,(0,s.A)({className:(0,l.A)(M.root,o),as:i,role:!S&&d?"img":void 0,ref:t,style:w,ownerState:b,src:S?d||m:void 0},x,{children:n}))}));var S=r(4073),w=r(9132);const b=r.p+"4c3c9ff3e5e41de1a959.svg";var M=function(e){var t=e.id,r=e.name,n=e.description,i=e.tags,a=e.status,s="".concat(o.H.K.r),l=o.H.K.n,c=JSON.parse(i).tags;return(0,f.jsx)("div",{className:"exercise-card",style:{borderColor:"ACTIVE"===a?"green":"INACTIVE"===a?"red":"orange"},children:(0,f.jsxs)("div",{style:{flexGrow:1,display:"flex",flexDirection:"column",alignItems:"flex-start"},onClick:function(){window.location.href=s.interpolate({exerciseid:t})},children:[(0,f.jsx)(x,{component:"img",height:"auto",style:{flexGrow:1},image:l.url.interpolate({exerciseid:t}),onError:function(e){return e.target.src=b}}),(0,f.jsxs)("div",{className:"exercise-info-container",children:[(0,f.jsx)(S.A,{gutterBottom:!0,variant:"h6",component:"div",color:"white",sx:{wordBreak:"break-word"},style:{alignSelf:"center",pointerEvents:"none"},children:r}),(0,f.jsx)(S.A,{id:"exercise-info",gutterBottom:!0,variant:"h7",component:"div",color:"white",style:{pointerEvents:"none"},children:n}),(0,f.jsx)(C,{tagList:c})]})]})})},C=function(e){var t=e.tagList;Array.isArray(t)||(t=t.split(","));var r=t.map((function(e){return(0,f.jsx)(i.A,{sx:{m:.5},icon:(0,f.jsx)(w.A,{}),color:"success",label:e},e)}));return(0,f.jsx)("div",{className:"exercise-tag-list",children:r})}},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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S0FBSSxTQUFDQyxHQUFJLE9BRWxDM0IsRUFBQUEsRUFBQUEsS0FBQzRCLEVBQUFBLEVBQUksQ0FFSDVGLEdBQUksQ0FBRTZGLEVBQUcsSUFDVEMsTUFBTTlCLEVBQUFBLEVBQUFBLEtBQUMrQixFQUFBQSxFQUFnQixJQUN2QnpMLE1BQU8sVUFDUDBMLE1BQU9MLEdBSkZBLEVBS0wsSUFHSixPQUFPM0IsRUFBQUEsRUFBQUEsS0FBQSxPQUFLdkosVUFBVSxvQkFBbUJrRCxTQUFFOEgsR0FDN0MsQyxXQ3hGQVEsRUFBTzNQLFFBTFAsU0FBZ0M0UCxHQUM5QixPQUFPQSxHQUFLQSxFQUFFQyxXQUFhRCxFQUFJLENBQzdCLFFBQVdBLEVBRWYsRUFDeUNELEVBQU8zUCxRQUFRNlAsWUFBYSxFQUFNRixFQUFPM1AsUUFBaUIsUUFBSTJQLEVBQU8zUCxPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvU3R5bGVUd29Ub25lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvdHlwb2dyYXBoeUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L1R5cG9ncmFwaHkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL3N2Z0ljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlcHJlY2F0ZWRQcm9wVHlwZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9yZXF1aXJlUHJvcEZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9zZXRSZWYuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdW5zdXBwb3J0ZWRQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pc011aUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyV2luZG93LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlQ29udHJvbGxlZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUVuaGFuY2VkRWZmZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3N0eWxlRnVuY3Rpb25TeC9leHRlbmRTeFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyRG9jdW1lbnQvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lcldpbmRvdy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VDb250cm9sbGVkL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlSWQvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DYXJkTWVkaWEvY2FyZE1lZGlhQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NhcmRNZWRpYS9DYXJkTWVkaWEuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9FeGVyY2lzZUNhcmQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KShbLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE1LjIyIDQuNzUgNy44NyA3Ljc5bDQuOTYgMTEuOTYgNy4zNS0zLjA1LTQuOTYtMTEuOTV6TTExIDEwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCIsXG4gIG9wYWNpdHk6IFwiLjNcIlxufSwgXCIwXCIpLCAvKiNfX1BVUkVfXyovKDAsIF9qc3hSdW50aW1lLmpzeCkoXCJwYXRoXCIsIHtcbiAgZDogXCJtMy44NyAxMS4xOC0yLjQzIDUuODZjLS40MSAxLjAyLjA4IDIuMTkgMS4wOSAyLjYxbDEuMzQuNTZ2LTkuMDN6bTE4LjE2IDQuNzdMMTcuMDcgMy45OGMtLjMxLS43NS0xLjA0LTEuMjEtMS44MS0xLjIzLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVjLS43NS4zMS0xLjIxIDEuMDMtMS4yMyAxLjgtLjAxLjI3LjA0LjU0LjE1LjhsNC45NiAxMS45N2MuMzEuNzYgMS4wNSAxLjIyIDEuODMgMS4yMy4yNiAwIC41Mi0uMDUuNzctLjE1bDcuMzYtMy4wNWMxLjAyLS40MiAxLjUxLTEuNTkgMS4wOS0yLjZ6bS05LjIgMy44TDcuODcgNy43OWw3LjM1LTMuMDRoLjAxbDQuOTUgMTEuOTUtNy4zNSAzLjA1elwiXG59LCBcIjFcIiksIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcImNpcmNsZVwiLCB7XG4gIGN4OiBcIjExXCIsXG4gIGN5OiBcIjlcIixcbiAgcjogXCIxXCJcbn0sIFwiMlwiKSwgLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwibTkuMzMgMjEuNzUtMy40NS04LjM0djYuMzRjMCAxLjEuOSAyIDIgMmgxLjQ1elwiXG59LCBcIjNcIildLCAnU3R5bGVUd29Ub25lJyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbid1c2UgY2xpZW50JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3V0aWxzLmNyZWF0ZVN2Z0ljb247XG4gIH1cbn0pO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3V0aWxzXCIpOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUeXBvZ3JhcGh5Jywgc2xvdCk7XG59XG5jb25zdCB0eXBvZ3JhcGh5Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVR5cG9ncmFwaHknLCBbJ3Jvb3QnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMicsICdib2R5MScsICdib2R5MicsICdpbmhlcml0JywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ292ZXJsaW5lJywgJ2FsaWduTGVmdCcsICdhbGlnblJpZ2h0JywgJ2FsaWduQ2VudGVyJywgJ2FsaWduSnVzdGlmeScsICdub1dyYXAnLCAnZ3V0dGVyQm90dG9tJywgJ3BhcmFncmFwaCddKTtcbmV4cG9ydCBkZWZhdWx0IHR5cG9ncmFwaHlDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFsaWduXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZ3V0dGVyQm90dG9tXCIsIFwibm9XcmFwXCIsIFwicGFyYWdyYXBoXCIsIFwidmFyaWFudFwiLCBcInZhcmlhbnRNYXBwaW5nXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfZXh0ZW5kU3hQcm9wIGFzIGV4dGVuZFN4UHJvcCB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB7IGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3R5cG9ncmFwaHlDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWxpZ24sXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgYGFsaWduJHtjYXBpdGFsaXplKGFsaWduKX1gLCBndXR0ZXJCb3R0b20gJiYgJ2d1dHRlckJvdHRvbScsIG5vV3JhcCAmJiAnbm9XcmFwJywgcGFyYWdyYXBoICYmICdwYXJhZ3JhcGgnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmV4cG9ydCBjb25zdCBUeXBvZ3JhcGh5Um9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVR5cG9ncmFwaHknLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2BhbGlnbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmFsaWduKX1gXSwgb3duZXJTdGF0ZS5ub1dyYXAgJiYgc3R5bGVzLm5vV3JhcCwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYgc3R5bGVzLmd1dHRlckJvdHRvbSwgb3duZXJTdGF0ZS5wYXJhZ3JhcGggJiYgc3R5bGVzLnBhcmFncmFwaF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG1hcmdpbjogMFxufSwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHRoZW1lLnR5cG9ncmFwaHlbb3duZXJTdGF0ZS52YXJpYW50XSwgb3duZXJTdGF0ZS5hbGlnbiAhPT0gJ2luaGVyaXQnICYmIHtcbiAgdGV4dEFsaWduOiBvd25lclN0YXRlLmFsaWduXG59LCBvd25lclN0YXRlLm5vV3JhcCAmJiB7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xufSwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYge1xuICBtYXJnaW5Cb3R0b206ICcwLjM1ZW0nXG59LCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiB7XG4gIG1hcmdpbkJvdHRvbTogMTZcbn0pKTtcbmNvbnN0IGRlZmF1bHRWYXJpYW50TWFwcGluZyA9IHtcbiAgaDE6ICdoMScsXG4gIGgyOiAnaDInLFxuICBoMzogJ2gzJyxcbiAgaDQ6ICdoNCcsXG4gIGg1OiAnaDUnLFxuICBoNjogJ2g2JyxcbiAgc3VidGl0bGUxOiAnaDYnLFxuICBzdWJ0aXRsZTI6ICdoNicsXG4gIGJvZHkxOiAncCcsXG4gIGJvZHkyOiAncCcsXG4gIGluaGVyaXQ6ICdwJ1xufTtcblxuLy8gVE9ETyB2NjogZGVwcmVjYXRlIHRoZXNlIGNvbG9yIHZhbHVlcyBpbiB2NS54IGFuZCByZW1vdmUgdGhlIHRyYW5zZm9ybWF0aW9uIGluIHY2XG5jb25zdCBjb2xvclRyYW5zZm9ybWF0aW9ucyA9IHtcbiAgcHJpbWFyeTogJ3ByaW1hcnkubWFpbicsXG4gIHRleHRQcmltYXJ5OiAndGV4dC5wcmltYXJ5JyxcbiAgc2Vjb25kYXJ5OiAnc2Vjb25kYXJ5Lm1haW4nLFxuICB0ZXh0U2Vjb25kYXJ5OiAndGV4dC5zZWNvbmRhcnknLFxuICBlcnJvcjogJ2Vycm9yLm1haW4nXG59O1xuY29uc3QgdHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyA9IGNvbG9yID0+IHtcbiAgcmV0dXJuIGNvbG9yVHJhbnNmb3JtYXRpb25zW2NvbG9yXSB8fCBjb2xvcjtcbn07XG5jb25zdCBUeXBvZ3JhcGh5ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVHlwb2dyYXBoeShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWVQcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUeXBvZ3JhcGh5J1xuICB9KTtcbiAgY29uc3QgY29sb3IgPSB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzKHRoZW1lUHJvcHMuY29sb3IpO1xuICBjb25zdCBwcm9wcyA9IGV4dGVuZFN4UHJvcChfZXh0ZW5kcyh7fSwgdGhlbWVQcm9wcywge1xuICAgIGNvbG9yXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgICAgYWxpZ24gPSAnaW5oZXJpdCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQsXG4gICAgICBndXR0ZXJCb3R0b20gPSBmYWxzZSxcbiAgICAgIG5vV3JhcCA9IGZhbHNlLFxuICAgICAgcGFyYWdyYXBoID0gZmFsc2UsXG4gICAgICB2YXJpYW50ID0gJ2JvZHkxJyxcbiAgICAgIHZhcmlhbnRNYXBwaW5nID0gZGVmYXVsdFZhcmlhbnRNYXBwaW5nXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBhbGlnbixcbiAgICBjb2xvcixcbiAgICBjbGFzc05hbWUsXG4gICAgY29tcG9uZW50LFxuICAgIGd1dHRlckJvdHRvbSxcbiAgICBub1dyYXAsXG4gICAgcGFyYWdyYXBoLFxuICAgIHZhcmlhbnQsXG4gICAgdmFyaWFudE1hcHBpbmdcbiAgfSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IGNvbXBvbmVudCB8fCAocGFyYWdyYXBoID8gJ3AnIDogdmFyaWFudE1hcHBpbmdbdmFyaWFudF0gfHwgZGVmYXVsdFZhcmlhbnRNYXBwaW5nW3ZhcmlhbnRdKSB8fCAnc3Bhbic7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFR5cG9ncmFwaHlSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IENvbXBvbmVudCxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSlcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVHlwb2dyYXBoeS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRleHQtYWxpZ24gb24gdGhlIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2luaGVyaXQnLCAnanVzdGlmeScsICdsZWZ0JywgJ3JpZ2h0J10pLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBoYXZlIGEgYm90dG9tIG1hcmdpbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGd1dHRlckJvdHRvbTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0ZXh0IHdpbGwgbm90IHdyYXAsIGJ1dCBpbnN0ZWFkIHdpbGwgdHJ1bmNhdGUgd2l0aCBhIHRleHQgb3ZlcmZsb3cgZWxsaXBzaXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0ZXh0IG92ZXJmbG93IGNhbiBvbmx5IGhhcHBlbiB3aXRoIGJsb2NrIG9yIGlubGluZS1ibG9jayBsZXZlbCBlbGVtZW50c1xuICAgKiAodGhlIGVsZW1lbnQgbmVlZHMgdG8gaGF2ZSBhIHdpZHRoIGluIG9yZGVyIHRvIG92ZXJmbG93KS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG5vV3JhcDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBlbGVtZW50IHdpbGwgYmUgYSBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHBhcmFncmFwaDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSB0aGVtZSB0eXBvZ3JhcGh5IHN0eWxlcy5cbiAgICogQGRlZmF1bHQgJ2JvZHkxJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydib2R5MScsICdib2R5MicsICdidXR0b24nLCAnY2FwdGlvbicsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdpbmhlcml0JywgJ292ZXJsaW5lJywgJ3N1YnRpdGxlMScsICdzdWJ0aXRsZTInXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgbWFwcyB0aGUgdmFyaWFudCBwcm9wIHRvIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IEhUTUwgZWxlbWVudCB0eXBlcy5cbiAgICogRm9yIGluc3RhbmNlLCBzdWJ0aXRsZTEgdG8gYDxoNj5gLlxuICAgKiBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhhdCBtYXBwaW5nLCB5b3UgY2FuIHByb3ZpZGUgeW91ciBvd24uXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgY29tcG9uZW50YCBwcm9wLlxuICAgKiBAZGVmYXVsdCB7XG4gICAqICAgaDE6ICdoMScsXG4gICAqICAgaDI6ICdoMicsXG4gICAqICAgaDM6ICdoMycsXG4gICAqICAgaDQ6ICdoNCcsXG4gICAqICAgaDU6ICdoNScsXG4gICAqICAgaDY6ICdoNicsXG4gICAqICAgc3VidGl0bGUxOiAnaDYnLFxuICAgKiAgIHN1YnRpdGxlMjogJ2g2JyxcbiAgICogICBib2R5MTogJ3AnLFxuICAgKiAgIGJvZHkyOiAncCcsXG4gICAqICAgaW5oZXJpdDogJ3AnLFxuICAgKiB9XG4gICAqL1xuICB2YXJpYW50TWFwcGluZzogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub2JqZWN0XG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVHlwb2dyYXBoeTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpU3ZnSWNvbicsIHNsb3QpO1xufVxuY29uc3Qgc3ZnSWNvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlTdmdJY29uJywgWydyb290JywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvckFjdGlvbicsICdjb2xvckVycm9yJywgJ2NvbG9yRGlzYWJsZWQnLCAnZm9udFNpemVJbmhlcml0JywgJ2ZvbnRTaXplU21hbGwnLCAnZm9udFNpemVNZWRpdW0nLCAnZm9udFNpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IHN2Z0ljb25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJmb250U2l6ZVwiLCBcImh0bWxDb2xvclwiLCBcImluaGVyaXRWaWV3Qm94XCIsIFwidGl0bGVBY2Nlc3NcIiwgXCJ2aWV3Qm94XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vc3ZnSWNvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBmb250U2l6ZSxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBjb2xvciAhPT0gJ2luaGVyaXQnICYmIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYGZvbnRTaXplJHtjYXBpdGFsaXplKGZvbnRTaXplKX1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IFN2Z0ljb25Sb290ID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlTdmdJY29uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYGZvbnRTaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuZm9udFNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSR0cmFuc2l0aW9ucywgX3RoZW1lJHRyYW5zaXRpb25zJGNyLCBfdGhlbWUkdHJhbnNpdGlvbnMyLCBfdGhlbWUkdHlwb2dyYXBoeSwgX3RoZW1lJHR5cG9ncmFwaHkkcHhULCBfdGhlbWUkdHlwb2dyYXBoeTIsIF90aGVtZSR0eXBvZ3JhcGh5MiRweCwgX3RoZW1lJHR5cG9ncmFwaHkzLCBfdGhlbWUkdHlwb2dyYXBoeTMkcHgsIF9wYWxldHRlJG93bmVyU3RhdGUkYywgX3BhbGV0dGUsIF9wYWxldHRlMiwgX3BhbGV0dGUzO1xuICByZXR1cm4ge1xuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICB3aWR0aDogJzFlbScsXG4gICAgaGVpZ2h0OiAnMWVtJyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAvLyB0aGUgPHN2Zz4gd2lsbCBkZWZpbmUgdGhlIHByb3BlcnR5IHRoYXQgaGFzIGBjdXJyZW50Q29sb3JgXG4gICAgLy8gZS5nLiBoZXJvaWNvbnMgdXNlcyBmaWxsPVwibm9uZVwiIGFuZCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgIGZpbGw6IG93bmVyU3RhdGUuaGFzU3ZnQXNDaGlsZCA/IHVuZGVmaW5lZCA6ICdjdXJyZW50Q29sb3InLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgdHJhbnNpdGlvbjogKF90aGVtZSR0cmFuc2l0aW9ucyA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMkY3IgPSBfdGhlbWUkdHJhbnNpdGlvbnMuY3JlYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHRyYW5zaXRpb25zJGNyLmNhbGwoX3RoZW1lJHRyYW5zaXRpb25zLCAnZmlsbCcsIHtcbiAgICAgIGR1cmF0aW9uOiAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMyID0gX3RoZW1lJHRyYW5zaXRpb25zMi5kdXJhdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9uczIuc2hvcnRlclxuICAgIH0pLFxuICAgIGZvbnRTaXplOiB7XG4gICAgICBpbmhlcml0OiAnaW5oZXJpdCcsXG4gICAgICBzbWFsbDogKChfdGhlbWUkdHlwb2dyYXBoeSA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5JHB4VCA9IF90aGVtZSR0eXBvZ3JhcGh5LnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeSRweFQuY2FsbChfdGhlbWUkdHlwb2dyYXBoeSwgMjApKSB8fCAnMS4yNXJlbScsXG4gICAgICBtZWRpdW06ICgoX3RoZW1lJHR5cG9ncmFwaHkyID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkyJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkyLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTIkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTIsIDI0KSkgfHwgJzEuNXJlbScsXG4gICAgICBsYXJnZTogKChfdGhlbWUkdHlwb2dyYXBoeTMgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeTMkcHggPSBfdGhlbWUkdHlwb2dyYXBoeTMucHhUb1JlbSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0eXBvZ3JhcGh5MyRweC5jYWxsKF90aGVtZSR0eXBvZ3JhcGh5MywgMzUpKSB8fCAnMi4xODc1cmVtJ1xuICAgIH1bb3duZXJTdGF0ZS5mb250U2l6ZV0sXG4gICAgLy8gVE9ETyB2NSBkZXByZWNhdGUsIHY2IHJlbW92ZSBmb3Igc3hcbiAgICBjb2xvcjogKF9wYWxldHRlJG93bmVyU3RhdGUkYyA9IChfcGFsZXR0ZSA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZSA9IF9wYWxldHRlW293bmVyU3RhdGUuY29sb3JdKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUubWFpbikgIT0gbnVsbCA/IF9wYWxldHRlJG93bmVyU3RhdGUkYyA6IHtcbiAgICAgIGFjdGlvbjogKF9wYWxldHRlMiA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTIgPSBfcGFsZXR0ZTIuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUyLmFjdGl2ZSxcbiAgICAgIGRpc2FibGVkOiAoX3BhbGV0dGUzID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgfHwgKF9wYWxldHRlMyA9IF9wYWxldHRlMy5hY3Rpb24pID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZTMuZGlzYWJsZWQsXG4gICAgICBpbmhlcml0OiB1bmRlZmluZWRcbiAgICB9W293bmVyU3RhdGUuY29sb3JdXG4gIH07XG59KTtcbmNvbnN0IFN2Z0ljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBTdmdJY29uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlTdmdJY29uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdpbmhlcml0JyxcbiAgICAgIGNvbXBvbmVudCA9ICdzdmcnLFxuICAgICAgZm9udFNpemUgPSAnbWVkaXVtJyxcbiAgICAgIGh0bWxDb2xvcixcbiAgICAgIGluaGVyaXRWaWV3Qm94ID0gZmFsc2UsXG4gICAgICB0aXRsZUFjY2VzcyxcbiAgICAgIHZpZXdCb3ggPSAnMCAwIDI0IDI0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBoYXNTdmdBc0NoaWxkID0gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi50eXBlID09PSAnc3ZnJztcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBmb250U2l6ZSxcbiAgICBpbnN0YW5jZUZvbnRTaXplOiBpblByb3BzLmZvbnRTaXplLFxuICAgIGluaGVyaXRWaWV3Qm94LFxuICAgIHZpZXdCb3gsXG4gICAgaGFzU3ZnQXNDaGlsZFxuICB9KTtcbiAgY29uc3QgbW9yZSA9IHt9O1xuICBpZiAoIWluaGVyaXRWaWV3Qm94KSB7XG4gICAgbW9yZS52aWV3Qm94ID0gdmlld0JveDtcbiAgfVxuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoU3ZnSWNvblJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY29sb3I6IGh0bWxDb2xvcixcbiAgICBcImFyaWEtaGlkZGVuXCI6IHRpdGxlQWNjZXNzID8gdW5kZWZpbmVkIDogdHJ1ZSxcbiAgICByb2xlOiB0aXRsZUFjY2VzcyA/ICdpbWcnIDogdW5kZWZpbmVkLFxuICAgIHJlZjogcmVmXG4gIH0sIG1vcmUsIG90aGVyLCBoYXNTdmdBc0NoaWxkICYmIGNoaWxkcmVuLnByb3BzLCB7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogW2hhc1N2Z0FzQ2hpbGQgPyBjaGlsZHJlbi5wcm9wcy5jaGlsZHJlbiA6IGNoaWxkcmVuLCB0aXRsZUFjY2VzcyA/IC8qI19fUFVSRV9fKi9fanN4KFwidGl0bGVcIiwge1xuICAgICAgY2hpbGRyZW46IHRpdGxlQWNjZXNzXG4gICAgfSkgOiBudWxsXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFN2Z0ljb24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogTm9kZSBwYXNzZWQgaW50byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIFlvdSBjYW4gdXNlIHRoZSBgaHRtbENvbG9yYCBwcm9wIHRvIGFwcGx5IGEgY29sb3IgYXR0cmlidXRlIHRvIHRoZSBTVkcgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2FjdGlvbicsICdkaXNhYmxlZCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgZm9udFNpemUgYXBwbGllZCB0byB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gMjRweCwgYnV0IGNhbiBiZSBjb25maWd1cmUgdG8gaW5oZXJpdCBmb250IHNpemUuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBmb250U2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2xhcmdlJywgJ21lZGl1bScsICdzbWFsbCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQXBwbGllcyBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBodG1sQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByb290IG5vZGUgd2lsbCBpbmhlcml0IHRoZSBjdXN0b20gYGNvbXBvbmVudGAncyB2aWV3Qm94IGFuZCB0aGUgYHZpZXdCb3hgXG4gICAqIHByb3Agd2lsbCBiZSBpZ25vcmVkLlxuICAgKiBVc2VmdWwgd2hlbiB5b3Ugd2FudCB0byByZWZlcmVuY2UgYSBjdXN0b20gYGNvbXBvbmVudGAgYW5kIGhhdmUgYFN2Z0ljb25gIHBhc3MgdGhhdFxuICAgKiBgY29tcG9uZW50YCdzIHZpZXdCb3ggdG8gdGhlIHJvb3Qgbm9kZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGluaGVyaXRWaWV3Qm94OiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaGFwZS1yZW5kZXJpbmcgYXR0cmlidXRlLiBUaGUgYmVoYXZpb3Igb2YgdGhlIGRpZmZlcmVudCBvcHRpb25zIGlzIGRlc2NyaWJlZCBvbiB0aGVcbiAgICogW01ETiBXZWIgRG9jc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zaGFwZS1yZW5kZXJpbmcpLlxuICAgKiBJZiB5b3UgYXJlIGhhdmluZyBpc3N1ZXMgd2l0aCBibHVycnkgaWNvbnMgeW91IHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGlzIHByb3AuXG4gICAqL1xuICBzaGFwZVJlbmRlcmluZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgaHVtYW4tcmVhZGFibGUgdGl0bGUgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgaXQuXG4gICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkctYWNjZXNzLyNFcXVpdmFsZW50XG4gICAqL1xuICB0aXRsZUFjY2VzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gcmVkZWZpbmUgd2hhdCB0aGUgY29vcmRpbmF0ZXMgd2l0aG91dCB1bml0cyBtZWFuIGluc2lkZSBhbiBTVkcgZWxlbWVudC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBTVkcgZWxlbWVudCBpcyA1MDAgKHdpZHRoKSBieSAyMDAgKGhlaWdodCksXG4gICAqIGFuZCB5b3UgcGFzcyB2aWV3Qm94PVwiMCAwIDUwIDIwXCIsXG4gICAqIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29vcmRpbmF0ZXMgaW5zaWRlIHRoZSBTVkcgd2lsbCBnbyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIgKDAsMClcbiAgICogdG8gYm90dG9tIHJpZ2h0ICg1MCwyMCkgYW5kIGVhY2ggdW5pdCB3aWxsIGJlIHdvcnRoIDEwcHguXG4gICAqIEBkZWZhdWx0ICcwIDAgMjQgMjQnXG4gICAqL1xuICB2aWV3Qm94OiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuU3ZnSWNvbi5tdWlOYW1lID0gJ1N2Z0ljb24nO1xuZXhwb3J0IGRlZmF1bHQgU3ZnSWNvbjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFN2Z0ljb24gZnJvbSAnLi4vU3ZnSWNvbic7XG5cbi8qKlxuICogUHJpdmF0ZSBtb2R1bGUgcmVzZXJ2ZWQgZm9yIEBtdWkgcGFja2FnZXMuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdmdJY29uKHBhdGgsIGRpc3BsYXlOYW1lKSB7XG4gIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFN2Z0ljb24sIF9leHRlbmRzKHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogYCR7ZGlzcGxheU5hbWV9SWNvbmAsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogcGF0aFxuICAgIH0pKTtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIE5lZWQgdG8gc2V0IGBkaXNwbGF5TmFtZWAgb24gdGhlIGlubmVyIGNvbXBvbmVudCBmb3IgUmVhY3QubWVtby5cbiAgICAvLyBSZWFjdCBwcmlvciB0byAxNi4xNCBpZ25vcmVzIGBkaXNwbGF5TmFtZWAgb24gdGhlIHdyYXBwZXIuXG4gICAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7ZGlzcGxheU5hbWV9SWNvbmA7XG4gIH1cbiAgQ29tcG9uZW50Lm11aU5hbWUgPSBTdmdJY29uLm11aU5hbWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyggLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoQ29tcG9uZW50KSk7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVib3VuY2UgYXMgZGVib3VuY2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGRlYm91bmNlOyIsImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZUNoYWluZWRGdW5jdGlvbiBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9kZXByZWNhdGVkUHJvcFR5cGUgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZXByZWNhdGVkUHJvcFR5cGU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVwcmVjYXRlZFByb3BUeXBlKHZhbGlkYXRvciwgcmVhc29uKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cbiAgcmV0dXJuIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgJHtsb2NhdGlvbn0gXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZVNhZmV9XFxgIGlzIGRlcHJlY2F0ZWQuICR7cmVhc29ufWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9yZXF1aXJlUHJvcEZhY3RvcnkgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCByZXF1aXJlUHJvcEZhY3Rvcnk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlUHJvcEZhY3RvcnkoY29tcG9uZW50TmFtZUluRXJyb3IsIENvbXBvbmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2ZvcmJpZC1mb3JlaWduLXByb3AtdHlwZXNcbiAgY29uc3QgcHJldlByb3BUeXBlcyA9IENvbXBvbmVudCA/IF9leHRlbmRzKHt9LCBDb21wb25lbnQucHJvcFR5cGVzKSA6IG51bGw7XG4gIGNvbnN0IHJlcXVpcmVQcm9wID0gcmVxdWlyZWRQcm9wID0+IChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQ2hlY2tlciA9IHByZXZQcm9wVHlwZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZQcm9wVHlwZXNbcHJvcEZ1bGxOYW1lU2FmZV07XG4gICAgaWYgKGRlZmF1bHRUeXBlQ2hlY2tlcikge1xuICAgICAgY29uc3QgdHlwZUNoZWNrZXJSZXN1bHQgPSBkZWZhdWx0VHlwZUNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICh0eXBlQ2hlY2tlclJlc3VsdCkge1xuICAgICAgICByZXR1cm4gdHlwZUNoZWNrZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJyAmJiAhcHJvcHNbcmVxdWlyZWRQcm9wXSkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZUluRXJyb3J9XFxgIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgXFxgJHtyZXF1aXJlZFByb3B9XFxgIHByb3AuYCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICByZXR1cm4gcmVxdWlyZVByb3A7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgc2V0UmVmOyIsImltcG9ydCB7IHVuc3RhYmxlX3Vuc3VwcG9ydGVkUHJvcCBhcyB1bnN1cHBvcnRlZFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVuc3VwcG9ydGVkUHJvcDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnN1cHBvcnRlZFByb3AocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVtb3ZlIGl0LmApO1xuICB9XG4gIHJldHVybiBudWxsO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvYmFzZS9jbGFzc05hbWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYXBpdGFsaXplIH0gZnJvbSAnLi9jYXBpdGFsaXplJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVTdmdJY29uIH0gZnJvbSAnLi9jcmVhdGVTdmdJY29uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnLi9kZXByZWNhdGVkUHJvcFR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICcuL2lzTXVpRWxlbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lcldpbmRvdyB9IGZyb20gJy4vb3duZXJXaW5kb3cnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXF1aXJlUHJvcEZhY3RvcnkgfSBmcm9tICcuL3JlcXVpcmVQcm9wRmFjdG9yeSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFJlZiB9IGZyb20gJy4vc2V0UmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICcuL3VzZUVuaGFuY2VkRWZmZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlSWQgfSBmcm9tICcuL3VzZUlkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnLi91bnN1cHBvcnRlZFByb3AnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VDb250cm9sbGVkIH0gZnJvbSAnLi91c2VDb250cm9sbGVkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZvcmtSZWYgfSBmcm9tICcuL3VzZUZvcmtSZWYnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJy4vdXNlSXNGb2N1c1Zpc2libGUnO1xuLy8gVE9ETzogcmVtb3ZlIHRoaXMgZXhwb3J0IG9uY2UgQ2xhc3NOYW1lR2VuZXJhdG9yIGlzIHN0YWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciA9IHtcbiAgY29uZmlndXJlOiBnZW5lcmF0b3IgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydNVUk6IGBDbGFzc05hbWVHZW5lcmF0b3JgIGltcG9ydCBmcm9tIGBAbXVpL21hdGVyaWFsL3V0aWxzYCBpcyBvdXRkYXRlZCBhbmQgbWlnaHQgY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMuJywgJycsIFwiWW91IHNob3VsZCB1c2UgYGltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvY2xhc3NOYW1lJ2AgaW5zdGVhZFwiLCAnJywgJ1RoZSBkZXRhaWwgb2YgdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8zMDAxMSNpc3N1ZWNvbW1lbnQtMTAyNDk5MzQwMScsICcnLCAnVGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9tdWkuY29tL2d1aWRlcy9jbGFzc25hbWUtZ2VuZXJhdG9yLyddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgQ2xhc3NOYW1lR2VuZXJhdG9yLmNvbmZpZ3VyZShnZW5lcmF0b3IpO1xuICB9XG59OyIsImltcG9ydCB7IHVuc3RhYmxlX2lzTXVpRWxlbWVudCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGlzTXVpRWxlbWVudDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc011aUVsZW1lbnQoZWxlbWVudCwgbXVpTmFtZXMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJiBtdWlOYW1lcy5pbmRleE9mKGVsZW1lbnQudHlwZS5tdWlOYW1lKSAhPT0gLTE7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lckRvY3VtZW50OyIsImltcG9ydCB7IHVuc3RhYmxlX293bmVyV2luZG93IGFzIG93bmVyV2luZG93IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lcldpbmRvdzsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUNvbnRyb2xsZWQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlQ29udHJvbGxlZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IGFzIHVzZUVuaGFuY2VkRWZmZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlkIGFzIHVzZUlkIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJZDsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wic3hcIl07XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZGVmYXVsdFN4Q29uZmlnIGZyb20gJy4vZGVmYXVsdFN4Q29uZmlnJztcbmNvbnN0IHNwbGl0UHJvcHMgPSBwcm9wcyA9PiB7XG4gIHZhciBfcHJvcHMkdGhlbWUkdW5zdGFibGUsIF9wcm9wcyR0aGVtZTtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHN5c3RlbVByb3BzOiB7fSxcbiAgICBvdGhlclByb3BzOiB7fVxuICB9O1xuICBjb25zdCBjb25maWcgPSAoX3Byb3BzJHRoZW1lJHVuc3RhYmxlID0gcHJvcHMgPT0gbnVsbCB8fCAoX3Byb3BzJHRoZW1lID0gcHJvcHMudGhlbWUpID09IG51bGwgPyB2b2lkIDAgOiBfcHJvcHMkdGhlbWUudW5zdGFibGVfc3hDb25maWcpICE9IG51bGwgPyBfcHJvcHMkdGhlbWUkdW5zdGFibGUgOiBkZWZhdWx0U3hDb25maWc7XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIGlmIChjb25maWdbcHJvcF0pIHtcbiAgICAgIHJlc3VsdC5zeXN0ZW1Qcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQub3RoZXJQcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0ZW5kU3hQcm9wKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICAgIHN4OiBpblN4XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHtcbiAgICBzeXN0ZW1Qcm9wcyxcbiAgICBvdGhlclByb3BzXG4gIH0gPSBzcGxpdFByb3BzKG90aGVyKTtcbiAgbGV0IGZpbmFsU3g7XG4gIGlmIChBcnJheS5pc0FycmF5KGluU3gpKSB7XG4gICAgZmluYWxTeCA9IFtzeXN0ZW1Qcm9wcywgLi4uaW5TeF07XG4gIH0gZWxzZSBpZiAodHlwZW9mIGluU3ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBmaW5hbFN4ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluU3goLi4uYXJncyk7XG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gc3lzdGVtUHJvcHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCByZXN1bHQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZmluYWxTeCA9IF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgaW5TeCk7XG4gIH1cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdGhlclByb3BzLCB7XG4gICAgc3g6IGZpbmFsU3hcbiAgfSk7XG59IiwiLyoqXG4gKiBTYWZlIGNoYWluZWQgZnVuY3Rpb24uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiguLi5mdW5jcykge1xuICByZXR1cm4gZnVuY3MucmVkdWNlKChhY2MsIGZ1bmMpID0+IHtcbiAgICBpZiAoZnVuYyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgIGFjYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfSwgKCkgPT4ge30pO1xufSIsIi8vIENvcnJlc3BvbmRzIHRvIDEwIGZyYW1lcyBhdCA2MCBIei5cbi8vIEEgZmV3IGJ5dGVzIHBheWxvYWQgb3ZlcmhlYWQgd2hlbiBsb2Rhc2gvZGVib3VuY2UgaXMgfjMga0IgYW5kIGRlYm91bmNlIH4zMDAgQi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQgPSAxNjYpIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIGZ1bmN0aW9uIGRlYm91bmNlZCguLi5hcmdzKSB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgfVxuICBkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9O1xuICByZXR1cm4gZGVib3VuY2VkO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSIsIid1c2UgY2xpZW50JztcblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MsIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29udHJvbGxlZCh7XG4gIGNvbnRyb2xsZWQsXG4gIGRlZmF1bHQ6IGRlZmF1bHRQcm9wLFxuICBuYW1lLFxuICBzdGF0ZSA9ICd2YWx1ZSdcbn0pIHtcbiAgLy8gaXNDb250cm9sbGVkIGlzIGlnbm9yZWQgaW4gdGhlIGhvb2sgZGVwZW5kZW5jeSBsaXN0cyBhcyBpdCBzaG91bGQgbmV2ZXIgY2hhbmdlLlxuICBjb25zdCB7XG4gICAgY3VycmVudDogaXNDb250cm9sbGVkXG4gIH0gPSBSZWFjdC51c2VSZWYoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgW3ZhbHVlU3RhdGUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgY29uc3QgdmFsdWUgPSBpc0NvbnRyb2xsZWQgPyBjb250cm9sbGVkIDogdmFsdWVTdGF0ZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCAhPT0gKGNvbnRyb2xsZWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogQSBjb21wb25lbnQgaXMgY2hhbmdpbmcgdGhlICR7aXNDb250cm9sbGVkID8gJycgOiAndW4nfWNvbnRyb2xsZWQgJHtzdGF0ZX0gc3RhdGUgb2YgJHtuYW1lfSB0byBiZSAke2lzQ29udHJvbGxlZCA/ICd1bicgOiAnJ31jb250cm9sbGVkLmAsICdFbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4nLCBgRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAke25hbWV9IGAgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuJywgXCJUaGUgbmF0dXJlIG9mIHRoZSBzdGF0ZSBpcyBkZXRlcm1pbmVkIGR1cmluZyB0aGUgZmlyc3QgcmVuZGVyLiBJdCdzIGNvbnNpZGVyZWQgY29udHJvbGxlZCBpZiB0aGUgdmFsdWUgaXMgbm90IGB1bmRlZmluZWRgLlwiLCAnTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cyddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbc3RhdGUsIG5hbWUsIGNvbnRyb2xsZWRdKTtcbiAgICBjb25zdCB7XG4gICAgICBjdXJyZW50OiBkZWZhdWx0VmFsdWVcbiAgICB9ID0gUmVhY3QudXNlUmVmKGRlZmF1bHRQcm9wKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFpc0NvbnRyb2xsZWQgJiYgZGVmYXVsdFZhbHVlICE9PSBkZWZhdWx0UHJvcCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgZGVmYXVsdCAke3N0YXRlfSBzdGF0ZSBvZiBhbiB1bmNvbnRyb2xsZWQgJHtuYW1lfSBhZnRlciBiZWluZyBpbml0aWFsaXplZC4gYCArIGBUbyBzdXBwcmVzcyB0aGlzIHdhcm5pbmcgb3B0IHRvIHVzZSBhIGNvbnRyb2xsZWQgJHtuYW1lfS5gXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfSwgW0pTT04uc3RyaW5naWZ5KGRlZmF1bHRQcm9wKV0pO1xuICB9XG4gIGNvbnN0IHNldFZhbHVlSWZVbmNvbnRyb2xsZWQgPSBSZWFjdC51c2VDYWxsYmFjayhuZXdWYWx1ZSA9PiB7XG4gICAgaWYgKCFpc0NvbnRyb2xsZWQpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVJZlVuY29udHJvbGxlZF07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5sZXQgZ2xvYmFsSWQgPSAwO1xuZnVuY3Rpb24gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSkge1xuICBjb25zdCBbZGVmYXVsdElkLCBzZXREZWZhdWx0SWRdID0gUmVhY3QudXNlU3RhdGUoaWRPdmVycmlkZSk7XG4gIGNvbnN0IGlkID0gaWRPdmVycmlkZSB8fCBkZWZhdWx0SWQ7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRJZCA9PSBudWxsKSB7XG4gICAgICAvLyBGYWxsYmFjayB0byB0aGlzIGRlZmF1bHQgaWQgd2hlbiBwb3NzaWJsZS5cbiAgICAgIC8vIFVzZSB0aGUgaW5jcmVtZW50aW5nIHZhbHVlIGZvciBjbGllbnQtc2lkZSByZW5kZXJpbmcgb25seS5cbiAgICAgIC8vIFdlIGNhbid0IHVzZSBpdCBzZXJ2ZXItc2lkZS5cbiAgICAgIC8vIElmIHlvdSB3YW50IHRvIHVzZSByYW5kb20gdmFsdWVzIHBsZWFzZSBjb25zaWRlciB0aGUgQmlydGhkYXkgUHJvYmxlbTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlydGhkYXlfcHJvYmxlbVxuICAgICAgZ2xvYmFsSWQgKz0gMTtcbiAgICAgIHNldERlZmF1bHRJZChgbXVpLSR7Z2xvYmFsSWR9YCk7XG4gICAgfVxuICB9LCBbZGVmYXVsdElkXSk7XG4gIHJldHVybiBpZDtcbn1cblxuLy8gZG93bnN0cmVhbSBidW5kbGVycyBtYXkgcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbmNhdGVuYXRpb24sIGJ1dCB3b24ndCByZW1vdmUgdG9TdHJpbmcgY2FsbCAtLSBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2lzc3Vlcy8xNDgxNFxuY29uc3QgbWF5YmVSZWFjdFVzZUlkID0gUmVhY3RbJ3VzZUlkJy50b1N0cmluZygpXTtcbi8qKlxuICpcbiAqIEBleGFtcGxlIDxkaXYgaWQ9e3VzZUlkKCl9IC8+XG4gKiBAcGFyYW0gaWRPdmVycmlkZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSWQoaWRPdmVycmlkZSkge1xuICBpZiAobWF5YmVSZWFjdFVzZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZWFjdElkID0gbWF5YmVSZWFjdFVzZUlkKCk7XG4gICAgcmV0dXJuIGlkT3ZlcnJpZGUgIT0gbnVsbCA/IGlkT3ZlcnJpZGUgOiByZWFjdElkO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcyAtLSBgUmVhY3QudXNlSWRgIGlzIGludmFyaWFudCBhdCBydW50aW1lLlxuICByZXR1cm4gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSk7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhcmRNZWRpYVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQ2FyZE1lZGlhJywgc2xvdCk7XG59XG5jb25zdCBjYXJkTWVkaWFDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2FyZE1lZGlhJywgWydyb290JywgJ21lZGlhJywgJ2ltZyddKTtcbmV4cG9ydCBkZWZhdWx0IGNhcmRNZWRpYUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJpbWFnZVwiLCBcInNyY1wiLCBcInN0eWxlXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRDYXJkTWVkaWFVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2NhcmRNZWRpYUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGlzTWVkaWFDb21wb25lbnQsXG4gICAgaXNJbWFnZUNvbXBvbmVudFxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgaXNNZWRpYUNvbXBvbmVudCAmJiAnbWVkaWEnLCBpc0ltYWdlQ29tcG9uZW50ICYmICdpbWcnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldENhcmRNZWRpYVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgQ2FyZE1lZGlhUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQ2FyZE1lZGlhJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHtcbiAgICAgIGlzTWVkaWFDb21wb25lbnQsXG4gICAgICBpc0ltYWdlQ29tcG9uZW50XG4gICAgfSA9IG93bmVyU3RhdGU7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgaXNNZWRpYUNvbXBvbmVudCAmJiBzdHlsZXMubWVkaWEsIGlzSW1hZ2VDb21wb25lbnQgJiYgc3R5bGVzLmltZ107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgYmFja2dyb3VuZFNpemU6ICdjb3ZlcicsXG4gIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnLFxuICBiYWNrZ3JvdW5kUG9zaXRpb246ICdjZW50ZXInXG59LCBvd25lclN0YXRlLmlzTWVkaWFDb21wb25lbnQgJiYge1xuICB3aWR0aDogJzEwMCUnXG59LCBvd25lclN0YXRlLmlzSW1hZ2VDb21wb25lbnQgJiYge1xuICAvLyDimqDvuI8gb2JqZWN0LWZpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFMTEuXG4gIG9iamVjdEZpdDogJ2NvdmVyJ1xufSkpO1xuY29uc3QgTUVESUFfQ09NUE9ORU5UUyA9IFsndmlkZW8nLCAnYXVkaW8nLCAncGljdHVyZScsICdpZnJhbWUnLCAnaW1nJ107XG5jb25zdCBJTUFHRV9DT01QT05FTlRTID0gWydwaWN0dXJlJywgJ2ltZyddO1xuY29uc3QgQ2FyZE1lZGlhID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQ2FyZE1lZGlhKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDYXJkTWVkaWEnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgaW1hZ2UsXG4gICAgICBzcmMsXG4gICAgICBzdHlsZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBpc01lZGlhQ29tcG9uZW50ID0gTUVESUFfQ09NUE9ORU5UUy5pbmRleE9mKGNvbXBvbmVudCkgIT09IC0xO1xuICBjb25zdCBjb21wb3NlZFN0eWxlID0gIWlzTWVkaWFDb21wb25lbnQgJiYgaW1hZ2UgPyBfZXh0ZW5kcyh7XG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiJHtpbWFnZX1cIilgXG4gIH0sIHN0eWxlKSA6IHN0eWxlO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGlzTWVkaWFDb21wb25lbnQsXG4gICAgaXNJbWFnZUNvbXBvbmVudDogSU1BR0VfQ09NUE9ORU5UUy5pbmRleE9mKGNvbXBvbmVudCkgIT09IC0xXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDYXJkTWVkaWFSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBhczogY29tcG9uZW50LFxuICAgIHJvbGU6ICFpc01lZGlhQ29tcG9uZW50ICYmIGltYWdlID8gJ2ltZycgOiB1bmRlZmluZWQsXG4gICAgcmVmOiByZWYsXG4gICAgc3R5bGU6IGNvbXBvc2VkU3R5bGUsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBzcmM6IGlzTWVkaWFDb21wb25lbnQgPyBpbWFnZSB8fCBzcmMgOiB1bmRlZmluZWRcbiAgfSwgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDYXJkTWVkaWEucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMubm9kZSwgcHJvcHMgPT4ge1xuICAgIGlmICghcHJvcHMuY2hpbGRyZW4gJiYgIXByb3BzLmltYWdlICYmICFwcm9wcy5zcmMgJiYgIXByb3BzLmNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignTVVJOiBFaXRoZXIgYGNoaWxkcmVuYCwgYGltYWdlYCwgYHNyY2Agb3IgYGNvbXBvbmVudGAgcHJvcCBtdXN0IGJlIHNwZWNpZmllZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSW1hZ2UgdG8gYmUgZGlzcGxheWVkIGFzIGEgYmFja2dyb3VuZCBpbWFnZS5cbiAgICogRWl0aGVyIGBpbWFnZWAgb3IgYHNyY2AgcHJvcCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogTm90ZSB0aGF0IGNhbGxlciBtdXN0IHNwZWNpZnkgaGVpZ2h0IG90aGVyd2lzZSB0aGUgaW1hZ2Ugd2lsbCBub3QgYmUgdmlzaWJsZS5cbiAgICovXG4gIGltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQW4gYWxpYXMgZm9yIGBpbWFnZWAgcHJvcGVydHkuXG4gICAqIEF2YWlsYWJsZSBvbmx5IHdpdGggbWVkaWEgY29tcG9uZW50cy5cbiAgICogTWVkaWEgY29tcG9uZW50czogYHZpZGVvYCwgYGF1ZGlvYCwgYHBpY3R1cmVgLCBgaWZyYW1lYCwgYGltZ2AuXG4gICAqL1xuICBzcmM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENhcmRNZWRpYTsiLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBjb25maWd1cmF0aW9uIGZyb20gXCIuLi9jb25maWcuanNvblwiO1xyXG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IENhcmRNZWRpYSBmcm9tIFwiQG11aS9tYXRlcmlhbC9DYXJkTWVkaWFcIjtcclxuaW1wb3J0IFwiLi4vc3R5bGVzL0V4ZXJjaXNlTGlzdC5jc3NcIjtcclxuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeVwiO1xyXG5pbXBvcnQgU3R5bGVUd29Ub25lSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TdHlsZVR3b1RvbmVcIjtcclxuaW1wb3J0IEZBTExCQUNLX0lNQUdFIGZyb20gXCIuLi9pbWFnZXMvZGVmYXVsdF9jYXJkLnN2Z1wiO1xyXG5cclxuY29uc3QgRXhlcmNpc2VDYXJkID0gKHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uLCB0YWdzLCBzdGF0dXMgfSkgPT4ge1xyXG4gIGNvbnN0IGV4ZXJjaXNlVVJMID0gYCR7Y29uZmlndXJhdGlvbi5hY2FkZW15LmV4ZXJjaXNlcy5leGVyY2lzZV91cmx9YDtcclxuICBjb25zdCB0ZWFzZXIgPSBjb25maWd1cmF0aW9uLmFjYWRlbXkuZXhlcmNpc2VzLnRlYXNlcjtcclxuICBjb25zdCBvbk1lZGlhRmFsbGJhY2sgPSAoZXZlbnQpID0+IChldmVudC50YXJnZXQuc3JjID0gRkFMTEJBQ0tfSU1BR0UpO1xyXG5cclxuICBjb25zdCBuYXZpZ2F0ZVRvRXhlcmNpc2UgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGV4ZXJjaXNlVVJMLmludGVycG9sYXRlKHsgZXhlcmNpc2VpZDogaWQgfSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgdGFnc0xpc3QgPSBKU09OLnBhcnNlKHRhZ3MpLnRhZ3M7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT1cImV4ZXJjaXNlLWNhcmRcIlxyXG4gICAgICBzdHlsZT17e1xyXG4gICAgICAgIGJvcmRlckNvbG9yOlxyXG4gICAgICAgICAgc3RhdHVzID09PSBcIkFDVElWRVwiXHJcbiAgICAgICAgICAgID8gXCJncmVlblwiXHJcbiAgICAgICAgICAgIDogc3RhdHVzID09PSBcIklOQUNUSVZFXCJcclxuICAgICAgICAgICAgPyBcInJlZFwiXHJcbiAgICAgICAgICAgIDogXCJvcmFuZ2VcIixcclxuICAgICAgfX1cclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICBmbGV4R3JvdzogMSxcclxuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcclxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiLFxyXG4gICAgICAgIH19XHJcbiAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUb0V4ZXJjaXNlKCl9XHJcbiAgICAgID5cclxuICAgICAgICA8Q2FyZE1lZGlhXHJcbiAgICAgICAgICBjb21wb25lbnQ9XCJpbWdcIlxyXG4gICAgICAgICAgaGVpZ2h0PVwiYXV0b1wiXHJcbiAgICAgICAgICBzdHlsZT17eyBmbGV4R3JvdzogMSB9fVxyXG4gICAgICAgICAgaW1hZ2U9e3RlYXNlci51cmwuaW50ZXJwb2xhdGUoeyBleGVyY2lzZWlkOiBpZCB9KX1cclxuICAgICAgICAgIG9uRXJyb3I9e29uTWVkaWFGYWxsYmFja31cclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhlcmNpc2UtaW5mby1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5XHJcbiAgICAgICAgICAgIGd1dHRlckJvdHRvbVxyXG4gICAgICAgICAgICB2YXJpYW50PVwiaDZcIlxyXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJkaXZcIlxyXG4gICAgICAgICAgICBjb2xvcj17XCJ3aGl0ZVwifVxyXG4gICAgICAgICAgICBzeD17eyB3b3JkQnJlYWs6IFwiYnJlYWstd29yZFwiIH19XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IGFsaWduU2VsZjogXCJjZW50ZXJcIiwgcG9pbnRlckV2ZW50czogXCJub25lXCIgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge25hbWV9XHJcbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeVxyXG4gICAgICAgICAgICBpZD1cImV4ZXJjaXNlLWluZm9cIlxyXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cclxuICAgICAgICAgICAgdmFyaWFudD1cImg3XCJcclxuICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcclxuICAgICAgICAgICAgY29sb3I9e1wid2hpdGVcIn1cclxuICAgICAgICAgICAgc3R5bGU9e3sgcG9pbnRlckV2ZW50czogXCJub25lXCIgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxyXG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPENoaXBzQXJyYXkgdGFnTGlzdD17dGFnc0xpc3R9IC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IENoaXBzQXJyYXkgPSAoeyB0YWdMaXN0IH0pID0+IHtcclxuICBsZXQgY2hpcERhdGEgPSB0YWdMaXN0O1xyXG4gIGlmICghQXJyYXkuaXNBcnJheShjaGlwRGF0YSkpIHtcclxuICAgIGNoaXBEYXRhID0gY2hpcERhdGEuc3BsaXQoXCIsXCIpO1xyXG4gIH1cclxuICBjb25zdCBjaGlwc0xpc3QgPSBjaGlwRGF0YS5tYXAoKGRhdGEpID0+IChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gta2V5XHJcbiAgICA8Q2hpcFxyXG4gICAgICBrZXk9e2RhdGF9XHJcbiAgICAgIHN4PXt7IG06IDAuNSB9fVxyXG4gICAgICBpY29uPXs8U3R5bGVUd29Ub25lSWNvbiAvPn1cclxuICAgICAgY29sb3I9e1wic3VjY2Vzc1wifVxyXG4gICAgICBsYWJlbD17ZGF0YX1cclxuICAgIC8+XHJcbiAgKSk7XHJcblxyXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImV4ZXJjaXNlLXRhZy1saXN0XCI+e2NoaXBzTGlzdH08L2Rpdj47XHJcbn07XHJcblxyXG5leHBvcnQgeyBFeGVyY2lzZUNhcmQgfTtcclxuIiwiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChlKSB7XG4gIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7XG4gICAgXCJkZWZhdWx0XCI6IGVcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJuYW1lcyI6WyJHbG9iYWwiLCJ3IiwicHJvcHMiLCJjYWNoZSIsInN0eWxlcyIsInNlcmlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJUIiwiaSIsIl9yZWYiLCJzZXJpYWxpemVkTmFtZXMiLCJuYW1lIiwic2VyaWFsaXplZFN0eWxlcyIsIm5leHQiLCJzaG91bGRDYWNoZSIsImNvbXBhdCIsInJ1bGVzIiwiaW5zZXJ0Iiwic2hlZXQiLCJrZXkiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsIm5vbmNlIiwic2hlZXRSZWYiLCJjb25zdHJ1Y3RvciIsImNvbnRhaW5lciIsInNwZWVkeSIsImlzU3BlZWR5IiwicmVoeWRyYXRpbmciLCJub2RlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwidGFncyIsImxlbmd0aCIsImJlZm9yZSIsInNldEF0dHJpYnV0ZSIsImh5ZHJhdGUiLCJjdXJyZW50IiwiZmx1c2giLCJzaGVldFJlZkN1cnJlbnQiLCJlbGVtZW50IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiY3NzIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJrZXlmcmFtZXMiLCJpbnNlcnRhYmxlIiwiYXBwbHkiLCJhbmltIiwidG9TdHJpbmciLCJ0aGlzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImV4cG9ydHMiLCJfY3JlYXRlU3ZnSWNvbiIsIl9qc3hSdW50aW1lIiwiX2RlZmF1bHQiLCJkZWZhdWx0IiwianN4IiwiZCIsIm9wYWNpdHkiLCJjeCIsImN5IiwiciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX3V0aWxzIiwiY3JlYXRlU3ZnSWNvbiIsImdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MiLCJzbG90IiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiVHlwb2dyYXBoeVJvb3QiLCJzdHlsZWQiLCJvdmVycmlkZXNSZXNvbHZlciIsIm93bmVyU3RhdGUiLCJyb290IiwidmFyaWFudCIsImFsaWduIiwiY2FwaXRhbGl6ZSIsIm5vV3JhcCIsImd1dHRlckJvdHRvbSIsInBhcmFncmFwaCIsInRoZW1lIiwibWFyZ2luIiwidHlwb2dyYXBoeSIsInRleHRBbGlnbiIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93Iiwid2hpdGVTcGFjZSIsIm1hcmdpbkJvdHRvbSIsImRlZmF1bHRWYXJpYW50TWFwcGluZyIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsInN1YnRpdGxlMSIsInN1YnRpdGxlMiIsImJvZHkxIiwiYm9keTIiLCJpbmhlcml0IiwiY29sb3JUcmFuc2Zvcm1hdGlvbnMiLCJwcmltYXJ5IiwidGV4dFByaW1hcnkiLCJzZWNvbmRhcnkiLCJ0ZXh0U2Vjb25kYXJ5IiwiZXJyb3IiLCJpblByb3BzIiwicmVmIiwidGhlbWVQcm9wcyIsInVzZVRoZW1lUHJvcHMiLCJjb2xvciIsInRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnMiLCJleHRlbmRTeFByb3AiLCJjbGFzc05hbWUiLCJjb21wb25lbnQiLCJ2YXJpYW50TWFwcGluZyIsIm90aGVyIiwiQ29tcG9uZW50IiwiY2xhc3NlcyIsInNsb3RzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImFzIiwiZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyIsIlN2Z0ljb25Sb290IiwiZm9udFNpemUiLCJfdGhlbWUkdHJhbnNpdGlvbnMiLCJfdGhlbWUkdHJhbnNpdGlvbnMkY3IiLCJfdGhlbWUkdHJhbnNpdGlvbnMyIiwiX3RoZW1lJHR5cG9ncmFwaHkiLCJfdGhlbWUkdHlwb2dyYXBoeSRweFQiLCJfdGhlbWUkdHlwb2dyYXBoeTIiLCJfdGhlbWUkdHlwb2dyYXBoeTIkcHgiLCJfdGhlbWUkdHlwb2dyYXBoeTMiLCJfdGhlbWUkdHlwb2dyYXBoeTMkcHgiLCJfcGFsZXR0ZSRvd25lclN0YXRlJGMiLCJfcGFsZXR0ZSIsIl9wYWxldHRlMiIsIl9wYWxldHRlMyIsInVzZXJTZWxlY3QiLCJ3aWR0aCIsImhlaWdodCIsImRpc3BsYXkiLCJmaWxsIiwiaGFzU3ZnQXNDaGlsZCIsImZsZXhTaHJpbmsiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJjYWxsIiwiZHVyYXRpb24iLCJzaG9ydGVyIiwic21hbGwiLCJweFRvUmVtIiwibWVkaXVtIiwibGFyZ2UiLCJ2YXJzIiwicGFsZXR0ZSIsIm1haW4iLCJhY3Rpb24iLCJhY3RpdmUiLCJkaXNhYmxlZCIsIlN2Z0ljb24iLCJjaGlsZHJlbiIsImh0bWxDb2xvciIsImluaGVyaXRWaWV3Qm94IiwidGl0bGVBY2Nlc3MiLCJ2aWV3Qm94IiwidHlwZSIsImluc3RhbmNlRm9udFNpemUiLCJtb3JlIiwiZm9jdXNhYmxlIiwicm9sZSIsIm11aU5hbWUiLCJwYXRoIiwiZGlzcGxheU5hbWUiLCJ2YWxpZGF0b3IiLCJyZWFzb24iLCJjb21wb25lbnROYW1lSW5FcnJvciIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwidW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIiwiY29uZmlndXJlIiwiZ2VuZXJhdG9yIiwiQ2xhc3NOYW1lR2VuZXJhdG9yIiwibXVpTmFtZXMiLCJpbmRleE9mIiwic3BsaXRQcm9wcyIsIl9wcm9wcyR0aGVtZSR1bnN0YWJsZSIsIl9wcm9wcyR0aGVtZSIsInJlc3VsdCIsInN5c3RlbVByb3BzIiwib3RoZXJQcm9wcyIsImNvbmZpZyIsInVuc3RhYmxlX3N4Q29uZmlnIiwia2V5cyIsImZvckVhY2giLCJwcm9wIiwic3giLCJpblN4IiwiZmluYWxTeCIsImlzQXJyYXkiLCJjcmVhdGVDaGFpbmVkRnVuY3Rpb24iLCJmdW5jcyIsInJlZHVjZSIsImFjYyIsImZ1bmMiLCJkZWJvdW5jZSIsIndhaXQiLCJ0aW1lb3V0IiwiZGVib3VuY2VkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyIiwib3duZXJEb2N1bWVudCIsIm93bmVyV2luZG93IiwiZGVmYXVsdFZpZXciLCJ3aW5kb3ciLCJ1c2VDb250cm9sbGVkIiwiY29udHJvbGxlZCIsImRlZmF1bHRQcm9wIiwic3RhdGUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZVN0YXRlIiwic2V0VmFsdWUiLCJuZXdWYWx1ZSIsImdsb2JhbElkIiwibWF5YmVSZWFjdFVzZUlkIiwidXNlSWQiLCJpZE92ZXJyaWRlIiwicmVhY3RJZCIsImRlZmF1bHRJZCIsInNldERlZmF1bHRJZCIsImlkIiwidXNlR2xvYmFsSWQiLCJnZXRDYXJkTWVkaWFVdGlsaXR5Q2xhc3MiLCJDYXJkTWVkaWFSb290IiwiaXNNZWRpYUNvbXBvbmVudCIsImlzSW1hZ2VDb21wb25lbnQiLCJtZWRpYSIsImltZyIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZFJlcGVhdCIsImJhY2tncm91bmRQb3NpdGlvbiIsIm9iamVjdEZpdCIsIk1FRElBX0NPTVBPTkVOVFMiLCJJTUFHRV9DT01QT05FTlRTIiwiaW1hZ2UiLCJzcmMiLCJzdHlsZSIsImNvbXBvc2VkU3R5bGUiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJFeGVyY2lzZUNhcmQiLCJkZXNjcmlwdGlvbiIsInN0YXR1cyIsImV4ZXJjaXNlVVJMIiwiY29uY2F0IiwiY29uZmlndXJhdGlvbiIsInRlYXNlciIsInRhZ3NMaXN0IiwiSlNPTiIsInBhcnNlIiwiX2pzeCIsImJvcmRlckNvbG9yIiwiX2pzeHMiLCJmbGV4R3JvdyIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwib25DbGljayIsImhyZWYiLCJpbnRlcnBvbGF0ZSIsImV4ZXJjaXNlaWQiLCJDYXJkTWVkaWEiLCJ1cmwiLCJvbkVycm9yIiwiZXZlbnQiLCJ0YXJnZXQiLCJGQUxMQkFDS19JTUFHRSIsIlR5cG9ncmFwaHkiLCJ3b3JkQnJlYWsiLCJhbGlnblNlbGYiLCJwb2ludGVyRXZlbnRzIiwiQ2hpcHNBcnJheSIsInRhZ0xpc3QiLCJfcmVmMiIsImNoaXBEYXRhIiwic3BsaXQiLCJjaGlwc0xpc3QiLCJtYXAiLCJkYXRhIiwiQ2hpcCIsIm0iLCJpY29uIiwiU3R5bGVUd29Ub25lSWNvbiIsImxhYmVsIiwibW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3147.06fb6a5f.js b/react_frontend/static/react_frontend/js/3147.06fb6a5f.js new file mode 100644 index 000000000..84e3f55a3 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3147.06fb6a5f.js @@ -0,0 +1,3 @@ +/*! For license information please see 3147.06fb6a5f.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3147,2230],{41:(e,t,r)=>{"use strict";function n(e,t,r){var n="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "})),n}r.d(t,{Rk:()=>n,SF:()=>o,sk:()=>i});var o=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},i=function(e,t,r){o(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var i=t;do{e.insert(t===i?"."+n:"",i,e.sheet,!0),i=i.next}while(void 0!==i)}}},5793:(e,t,r)=>{"use strict";r.d(t,{A:()=>v});var n=r(8168),o=r(8587),i=r(6540);const a=i.createContext(null);function s(){return i.useContext(a)}const l="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var c=r(4848);const d=function(e){const{children:t,theme:r}=e,o=s(),d=i.useMemo((()=>{const e=null===o?r:function(e,t){return"function"==typeof t?t(e):(0,n.A)({},e,t)}(o,r);return null!=e&&(e[l]=null!==o),e}),[r,o]);return(0,c.jsx)(a.Provider,{value:d,children:t})};var u=r(5684),p=r(3951);const m={};function f(e,t,r,o=!1){return i.useMemo((()=>{const i=e&&t[e]||t;if("function"==typeof r){const a=r(i),s=e?(0,n.A)({},t,{[e]:a}):a;return o?()=>s:s}return e?(0,n.A)({},t,{[e]:r}):(0,n.A)({},t,r)}),[e,t,r,o])}const h=function(e){const{children:t,theme:r,themeId:n}=e,o=(0,p.A)(m),i=s()||m,a=f(n,o,r),l=f(n,i,r,!0);return(0,c.jsx)(d,{theme:l,children:(0,c.jsx)(u.T.Provider,{value:a,children:t})})};var y=r(8312);const g=["theme"];function v(e){let{theme:t}=e,r=(0,o.A)(e,g);const i=t[y.A];return(0,c.jsx)(h,(0,n.A)({},r,{themeId:i?y.A:void 0,theme:i||t}))}},9359:(e,t,r)=>{"use strict";r.d(t,{Ay:()=>v,q_:()=>b});var n=r(8168),o=r(6540),i=r(6289),a=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,i.A)((function(e){return a.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=r(5684),c=r(41),d=r(6899),u=r(1287),p=s,m=function(e){return"theme"!==e},f=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:m},h=function(e,t,r){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},y=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,c.SF)(t,r,n),(0,u.s)((function(){return(0,c.sk)(t,r,n)})),null},g=function e(t,r){var i,a,s=t.__emotion_real===t,u=s&&t.__emotion_base||t;void 0!==r&&(i=r.label,a=r.target);var p=h(t,r,s),m=p||f(u),g=!m("as");return function(){var v=arguments,b=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==i&&b.push("label:"+i+";"),null==v[0]||void 0===v[0].raw)b.push.apply(b,v);else{b.push(v[0][0]);for(var k=v.length,A=1;A{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},5687:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=(0,r(7413).A)()},7413:(e,t,r)=>{"use strict";r.d(t,{A:()=>m});var n=r(8168),o=r(8587),i=r(6540),a=r(53),s=r(9359),l=r(3571),c=r(9599),d=r(2858),u=r(4848);const p=["className","component"];function m(e={}){const{themeId:t,defaultTheme:r,defaultClassName:m="MuiBox-root",generateClassName:f}=e,h=(0,s.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.A);return i.forwardRef((function(e,i){const s=(0,d.A)(r),l=(0,c.A)(e),{className:y,component:g="div"}=l,v=(0,o.A)(l,p);return(0,u.jsx)(h,(0,n.A)({as:g,ref:i,className:(0,a.A)(y,f?f(m):m),theme:t&&s[t]||s},v))}))}},9599:(e,t,r)=>{"use strict";r.d(t,{A:()=>c});var n=r(8168),o=r(8587),i=r(3272),a=r(4188);const s=["sx"],l=e=>{var t,r;const n={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:a.A;return Object.keys(e).forEach((t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]})),n};function c(e){const{sx:t}=e,r=(0,o.A)(e,s),{systemProps:a,otherProps:c}=l(r);let d;return d=Array.isArray(t)?[a,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,i.Q)(r)?(0,n.A)({},a,r):a}:(0,n.A)({},a,t),(0,n.A)({},c,{sx:d})}},2858:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(3221),o=r(3951);const i=(0,n.A)(),a=function(e=i){return(0,o.A)(e)}},2230:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d}),r(6540);var n=r(6544),o=r(5793),i=r(5556),a=r.n(i),s=r(4848),l=(0,n.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function c(e){return(0,s.jsx)(o.A,{theme:l,children:e.children})}c.propTypes={children:a().node};const d=c},3147:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(5687),o=r(2230),i=(r(6540),r(4848));const a=function(e){return(0,i.jsx)(o.default,{children:(0,i.jsx)(n.A,{id:e.id,children:e.children})})}},53:(e,t,r)=>{"use strict";function n(e){var t,r,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,r=0,o="";r{"use strict";var n=r(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,i,a){if(a!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QU1iLEVBQ05jLE9BQVFkLEVBQ1JlLE9BQVFmLEVBQ1JnQixPQUFRaEIsRUFDUmlCLE9BQVFqQixFQUVSa0IsSUFBS2xCLEVBQ0xtQixRQUFTWixFQUNUYSxRQUFTcEIsRUFDVHFCLFlBQWFyQixFQUNic0IsV0FBWWYsRUFDWmdCLEtBQU12QixFQUNOd0IsU0FBVWpCLEVBQ1ZrQixNQUFPbEIsRUFDUG1CLFVBQVduQixFQUNYb0IsTUFBT3BCLEVBQ1BxQixNQUFPckIsRUFFUHNCLGVBQWdCakMsRUFDaEJDLGtCQUFtQkYsR0FLckIsT0FGQWMsRUFBZXZCLFVBQVl1QixFQUVwQkEsQ0FDVCxrQkMvQ0VYLEVBQU9DLFFBQVUsRUFBUSxLQUFSLDBCQ05uQkQsRUFBT0MsUUFGb0IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi91dGlscy9kaXN0L2Vtb3Rpb24tdXRpbHMuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvdXNlVGhlbWUvVGhlbWVDb250ZXh0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvcHJpdmF0ZS10aGVtaW5nL3VzZVRoZW1lL3VzZVRoZW1lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvcHJpdmF0ZS10aGVtaW5nL1RoZW1lUHJvdmlkZXIvbmVzdGVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvcHJpdmF0ZS10aGVtaW5nL1RoZW1lUHJvdmlkZXIvVGhlbWVQcm92aWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vVGhlbWVQcm92aWRlci9UaGVtZVByb3ZpZGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL1RoZW1lUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaXMtcHJvcC12YWxpZC9kaXN0L2Vtb3Rpb24taXMtcHJvcC12YWxpZC5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc3R5bGVkL2Jhc2UvZGlzdC9lbW90aW9uLXN0eWxlZC1iYXNlLmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3N0eWxlZC9kaXN0L2Vtb3Rpb24tc3R5bGVkLmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3R5bGVkLWVuZ2luZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vQm94L0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3JlYXRlQm94LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zdHlsZUZ1bmN0aW9uU3gvZXh0ZW5kU3hQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS91c2VUaGVtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL1JvYm90aWNzVGhlbWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy93cmFwcGVycy9NYXRlcmlhbEJveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnO1xuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWVzKSB7XG4gIHZhciByYXdDbGFzc05hbWUgPSAnJztcbiAgY2xhc3NOYW1lcy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgIGlmIChyZWdpc3RlcmVkW2NsYXNzTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVnaXN0ZXJlZFN0eWxlcy5wdXNoKHJlZ2lzdGVyZWRbY2xhc3NOYW1lXSArIFwiO1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmF3Q2xhc3NOYW1lICs9IGNsYXNzTmFtZSArIFwiIFwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByYXdDbGFzc05hbWU7XG59XG52YXIgcmVnaXN0ZXJTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuXG4gIGlmICggLy8gd2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSByZWdpc3RlcmVkIGNhY2hlIGlmIHRoZVxuICAvLyBjbGFzcyBuYW1lIGNvdWxkIGJlIHVzZWQgZnVydGhlciBkb3duXG4gIC8vIHRoZSB0cmVlIGJ1dCBpZiBpdCdzIGEgc3RyaW5nIHRhZywgd2Uga25vdyBpdCB3b24ndFxuICAvLyBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCBpdCB0byByZWdpc3RlcmVkIGNhY2hlLlxuICAvLyB0aGlzIGltcHJvdmVzIG1lbW9yeSB1c2FnZSBzaW5jZSB3ZSBjYW4gYXZvaWQgc3RvcmluZyB0aGUgd2hvbGUgc3R5bGUgc3RyaW5nXG4gIChpc1N0cmluZ1RhZyA9PT0gZmFsc2UgfHwgLy8gd2UgbmVlZCB0byBhbHdheXMgc3RvcmUgaXQgaWYgd2UncmUgaW4gY29tcGF0IG1vZGUgYW5kXG4gIC8vIGluIG5vZGUgc2luY2UgZW1vdGlvbi1zZXJ2ZXIgcmVsaWVzIG9uIHdoZXRoZXIgYSBzdHlsZSBpcyBpblxuICAvLyB0aGUgcmVnaXN0ZXJlZCBjYWNoZSB0byBrbm93IHdoZXRoZXIgYSBzdHlsZSBpcyBnbG9iYWwgb3Igbm90XG4gIC8vIGFsc28sIG5vdGUgdGhhdCB0aGlzIGNoZWNrIHdpbGwgYmUgZGVhZCBjb2RlIGVsaW1pbmF0ZWQgaW4gdGhlIGJyb3dzZXJcbiAgaXNCcm93c2VyID09PSBmYWxzZSApICYmIGNhY2hlLnJlZ2lzdGVyZWRbY2xhc3NOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY2FjaGUucmVnaXN0ZXJlZFtjbGFzc05hbWVdID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gIH1cbn07XG52YXIgaW5zZXJ0U3R5bGVzID0gZnVuY3Rpb24gaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZykge1xuICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB2YXIgY2xhc3NOYW1lID0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG5cbiAgaWYgKGNhY2hlLmluc2VydGVkW3NlcmlhbGl6ZWQubmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBjdXJyZW50ID0gc2VyaWFsaXplZDtcblxuICAgIGRvIHtcbiAgICAgIGNhY2hlLmluc2VydChzZXJpYWxpemVkID09PSBjdXJyZW50ID8gXCIuXCIgKyBjbGFzc05hbWUgOiAnJywgY3VycmVudCwgY2FjaGUuc2hlZXQsIHRydWUpO1xuXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH0gd2hpbGUgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMgfTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFRoZW1lQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgVGhlbWVDb250ZXh0LmRpc3BsYXlOYW1lID0gJ1RoZW1lQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBUaGVtZUNvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRoZW1lQ29udGV4dCBmcm9tICcuL1RoZW1lQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRGVidWdWYWx1ZSh0aGVtZSk7XG4gIH1cbiAgcmV0dXJuIHRoZW1lO1xufSIsImNvbnN0IGhhc1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbmV4cG9ydCBkZWZhdWx0IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ211aS5uZXN0ZWQnKSA6ICdfX1RIRU1FX05FU1RFRF9fJzsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBleGFjdFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBUaGVtZUNvbnRleHQgZnJvbSAnLi4vdXNlVGhlbWUvVGhlbWVDb250ZXh0JztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi91c2VUaGVtZSc7XG5pbXBvcnQgbmVzdGVkIGZyb20gJy4vbmVzdGVkJztcblxuLy8gVG8gc3VwcG9ydCBjb21wb3NpdGlvbiBvZiB0aGVtZS5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBtZXJnZU91dGVyTG9jYWxUaGVtZShvdXRlclRoZW1lLCBsb2NhbFRoZW1lKSB7XG4gIGlmICh0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gbG9jYWxUaGVtZShvdXRlclRoZW1lKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFtZXJnZWRUaGVtZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3Ugc2hvdWxkIHJldHVybiBhbiBvYmplY3QgZnJvbSB5b3VyIHRoZW1lIGZ1bmN0aW9uLCBpLmUuJywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXsoKSA9PiAoe30pfSAvPiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG59XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgdGFrZXMgYSBgdGhlbWVgIHByb3AuXG4gKiBJdCBtYWtlcyB0aGUgYHRoZW1lYCBhdmFpbGFibGUgZG93biB0aGUgUmVhY3QgdHJlZSB0aGFua3MgdG8gUmVhY3QgY29udGV4dC5cbiAqIFRoaXMgY29tcG9uZW50IHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQgYXQgKip0aGUgcm9vdCBvZiB5b3VyIGNvbXBvbmVudCB0cmVlKiouXG4gKi9cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIHRoZW1lOiBsb2NhbFRoZW1lXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgb3V0ZXJUaGVtZSA9IHVzZVRoZW1lKCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKG91dGVyVGhlbWUgPT09IG51bGwgJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IFlvdSBhcmUgcHJvdmlkaW5nIGEgdGhlbWUgZnVuY3Rpb24gcHJvcCB0byB0aGUgVGhlbWVQcm92aWRlciBjb21wb25lbnQ6JywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXtvdXRlclRoZW1lID0+IG91dGVyVGhlbWV9IC8+JywgJycsICdIb3dldmVyLCBubyBvdXRlciB0aGVtZSBpcyBwcmVzZW50LicsICdNYWtlIHN1cmUgYSB0aGVtZSBpcyBhbHJlYWR5IGluamVjdGVkIGhpZ2hlciBpbiB0aGUgUmVhY3QgdHJlZSAnICsgJ29yIHByb3ZpZGUgYSB0aGVtZSBvYmplY3QuJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IG91dGVyVGhlbWUgPT09IG51bGwgPyBsb2NhbFRoZW1lIDogbWVyZ2VPdXRlckxvY2FsVGhlbWUob3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gICAgaWYgKG91dHB1dCAhPSBudWxsKSB7XG4gICAgICBvdXRwdXRbbmVzdGVkXSA9IG91dGVyVGhlbWUgIT09IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0sIFtsb2NhbFRoZW1lLCBvdXRlclRoZW1lXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdGhlbWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBZb3VyIGNvbXBvbmVudCB0cmVlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQSB0aGVtZSBvYmplY3QuIFlvdSBjYW4gcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGV4dGVuZCB0aGUgb3V0ZXIgdGhlbWUuXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKS5pc1JlcXVpcmVkXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSBleGFjdFByb3AoVGhlbWVQcm92aWRlci5wcm9wVHlwZXMpIDogdm9pZCAwO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgYXMgTXVpVGhlbWVQcm92aWRlciwgdXNlVGhlbWUgYXMgdXNlUHJpdmF0ZVRoZW1lIH0gZnJvbSAnQG11aS9wcml2YXRlLXRoZW1pbmcnO1xuaW1wb3J0IHsgZXhhY3RQcm9wIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgYXMgU3R5bGVkRW5naW5lVGhlbWVDb250ZXh0IH0gZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCB1c2VUaGVtZVdpdGhvdXREZWZhdWx0IGZyb20gJy4uL3VzZVRoZW1lV2l0aG91dERlZmF1bHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IEVNUFRZX1RIRU1FID0ge307XG5mdW5jdGlvbiB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSwgaXNQcml2YXRlID0gZmFsc2UpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkVGhlbWUgPSB0aGVtZUlkID8gdXBwZXJUaGVtZVt0aGVtZUlkXSB8fCB1cHBlclRoZW1lIDogdXBwZXJUaGVtZTtcbiAgICBpZiAodHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gbG9jYWxUaGVtZShyZXNvbHZlZFRoZW1lKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoZW1lSWQgPyBfZXh0ZW5kcyh7fSwgdXBwZXJUaGVtZSwge1xuICAgICAgICBbdGhlbWVJZF06IG1lcmdlZFRoZW1lXG4gICAgICB9KSA6IG1lcmdlZFRoZW1lO1xuICAgICAgLy8gbXVzdCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgdGhlIHByaXZhdGUgdGhlbWUgdG8gTk9UIG1lcmdlIHdpdGggdGhlIHVwcGVyIHRoZW1lLlxuICAgICAgLy8gc2VlIHRoZSB0ZXN0IGNhc2UgXCJ1c2UgcHJvdmlkZWQgdGhlbWUgZnJvbSBhIGNhbGxiYWNrXCIgaW4gVGhlbWVQcm92aWRlci50ZXN0LmpzXG4gICAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdGhlbWVJZCA/IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCB7XG4gICAgICBbdGhlbWVJZF06IGxvY2FsVGhlbWVcbiAgICB9KSA6IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCBsb2NhbFRoZW1lKTtcbiAgfSwgW3RoZW1lSWQsIHVwcGVyVGhlbWUsIGxvY2FsVGhlbWUsIGlzUHJpdmF0ZV0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IG1ha2VzIHRoZSBgdGhlbWVgIGF2YWlsYWJsZSBkb3duIHRoZSBSZWFjdCB0cmVlLlxuICogSXQgc2hvdWxkIHByZWZlcmFibHkgYmUgdXNlZCBhdCAqKnRoZSByb290IG9mIHlvdXIgY29tcG9uZW50IHRyZWUqKi5cbiAqXG4gKiA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PiAvLyBleGlzdGluZyB1c2UgY2FzZVxuICogPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3sgaWQ6IHRoZW1lIH19PiAvLyB0aGVtZSBzY29waW5nXG4gKi9cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIHRoZW1lOiBsb2NhbFRoZW1lLFxuICAgIHRoZW1lSWRcbiAgfSA9IHByb3BzO1xuICBjb25zdCB1cHBlclRoZW1lID0gdXNlVGhlbWVXaXRob3V0RGVmYXVsdChFTVBUWV9USEVNRSk7XG4gIGNvbnN0IHVwcGVyUHJpdmF0ZVRoZW1lID0gdXNlUHJpdmF0ZVRoZW1lKCkgfHwgRU1QVFlfVEhFTUU7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHVwcGVyVGhlbWUgPT09IG51bGwgJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicgfHwgdGhlbWVJZCAmJiB1cHBlclRoZW1lICYmICF1cHBlclRoZW1lW3RoZW1lSWRdICYmIHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3UgYXJlIHByb3ZpZGluZyBhIHRoZW1lIGZ1bmN0aW9uIHByb3AgdG8gdGhlIFRoZW1lUHJvdmlkZXIgY29tcG9uZW50OicsICc8VGhlbWVQcm92aWRlciB0aGVtZT17b3V0ZXJUaGVtZSA9PiBvdXRlclRoZW1lfSAvPicsICcnLCAnSG93ZXZlciwgbm8gb3V0ZXIgdGhlbWUgaXMgcHJlc2VudC4nLCAnTWFrZSBzdXJlIGEgdGhlbWUgaXMgYWxyZWFkeSBpbmplY3RlZCBoaWdoZXIgaW4gdGhlIFJlYWN0IHRyZWUgJyArICdvciBwcm92aWRlIGEgdGhlbWUgb2JqZWN0LiddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZW5naW5lVGhlbWUgPSB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gIGNvbnN0IHByaXZhdGVUaGVtZSA9IHVzZVRoZW1lU2NvcGluZyh0aGVtZUlkLCB1cHBlclByaXZhdGVUaGVtZSwgbG9jYWxUaGVtZSwgdHJ1ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChNdWlUaGVtZVByb3ZpZGVyLCB7XG4gICAgdGhlbWU6IHByaXZhdGVUaGVtZSxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU3R5bGVkRW5naW5lVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogZW5naW5lVGhlbWUsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogWW91ciBjb21wb25lbnQgdHJlZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEEgdGhlbWUgb2JqZWN0LiBZb3UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBleHRlbmQgdGhlIG91dGVyIHRoZW1lLlxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSkuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSBkZXNpZ24gc3lzdGVtJ3MgdW5pcXVlIGlkIGZvciBnZXR0aW5nIHRoZSBjb3JyZXNwb25kZWQgdGhlbWUgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZGVzaWduIHN5c3RlbXMuXG4gICAqL1xuICB0aGVtZUlkOiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSBleGFjdFByb3AoVGhlbWVQcm92aWRlci5wcm9wVHlwZXMpIDogdm9pZCAwO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJ0aGVtZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIGFzIFN5c3RlbVRoZW1lUHJvdmlkZXIgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKF9yZWYpIHtcbiAgbGV0IHtcbiAgICAgIHRoZW1lOiB0aGVtZUlucHV0XG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBzY29wZWRUaGVtZSA9IHRoZW1lSW5wdXRbVEhFTUVfSURdO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU3lzdGVtVGhlbWVQcm92aWRlciwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgdGhlbWVJZDogc2NvcGVkVGhlbWUgPyBUSEVNRV9JRCA6IHVuZGVmaW5lZCxcbiAgICB0aGVtZTogc2NvcGVkVGhlbWUgfHwgdGhlbWVJbnB1dFxuICB9KSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFlvdXIgY29tcG9uZW50IHRyZWUuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBBIHRoZW1lIG9iamVjdC4gWW91IGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZXh0ZW5kIHRoZSBvdXRlciB0aGVtZS5cbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuZnVuY10pLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7IiwiaW1wb3J0IG1lbW9pemUgZnJvbSAnQGVtb3Rpb24vbWVtb2l6ZSc7XG5cbnZhciByZWFjdFByb3BzUmVnZXggPSAvXigoY2hpbGRyZW58ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUx8a2V5fHJlZnxhdXRvRm9jdXN8ZGVmYXVsdFZhbHVlfGRlZmF1bHRDaGVja2VkfGlubmVySFRNTHxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmd8c3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nfHZhbHVlTGlua3xhYmJyfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGVudGVyS2V5SGludHxmb3JtfGZvcm1BY3Rpb258Zm9ybUVuY1R5cGV8Zm9ybU1ldGhvZHxmb3JtTm9WYWxpZGF0ZXxmb3JtVGFyZ2V0fGZyYW1lQm9yZGVyfGhlYWRlcnN8aGVpZ2h0fGhpZGRlbnxoaWdofGhyZWZ8aHJlZkxhbmd8aHRtbEZvcnxodHRwRXF1aXZ8aWR8aW5wdXRNb2RlfGludGVncml0eXxpc3xrZXlQYXJhbXN8a2V5VHlwZXxraW5kfGxhYmVsfGxhbmd8bGlzdHxsb2FkaW5nfGxvb3B8bG93fG1hcmdpbkhlaWdodHxtYXJnaW5XaWR0aHxtYXh8bWF4TGVuZ3RofG1lZGlhfG1lZGlhR3JvdXB8bWV0aG9kfG1pbnxtaW5MZW5ndGh8bXVsdGlwbGV8bXV0ZWR8bmFtZXxub25jZXxub1ZhbGlkYXRlfG9wZW58b3B0aW11bXxwYXR0ZXJufHBsYWNlaG9sZGVyfHBsYXlzSW5saW5lfHBvc3RlcnxwcmVsb2FkfHByb2ZpbGV8cmFkaW9Hcm91cHxyZWFkT25seXxyZWZlcnJlclBvbGljeXxyZWx8cmVxdWlyZWR8cmV2ZXJzZWR8cm9sZXxyb3dzfHJvd1NwYW58c2FuZGJveHxzY29wZXxzY29wZWR8c2Nyb2xsaW5nfHNlYW1sZXNzfHNlbGVjdGVkfHNoYXBlfHNpemV8c2l6ZXN8c2xvdHxzcGFufHNwZWxsQ2hlY2t8c3JjfHNyY0RvY3xzcmNMYW5nfHNyY1NldHxzdGFydHxzdGVwfHN0eWxlfHN1bW1hcnl8dGFiSW5kZXh8dGFyZ2V0fHRpdGxlfHRyYW5zbGF0ZXx0eXBlfHVzZU1hcHx2YWx1ZXx3aWR0aHx3bW9kZXx3cmFwfGFib3V0fGRhdGF0eXBlfGlubGlzdHxwcmVmaXh8cHJvcGVydHl8cmVzb3VyY2V8dHlwZW9mfHZvY2FifGF1dG9DYXBpdGFsaXplfGF1dG9Db3JyZWN0fGF1dG9TYXZlfGNvbG9yfGluY3JlbWVudGFsfGZhbGxiYWNrfGluZXJ0fGl0ZW1Qcm9wfGl0ZW1TY29wZXxpdGVtVHlwZXxpdGVtSUR8aXRlbVJlZnxvbnxvcHRpb258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvOyAvLyBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzViZmVlNjhhNGNkN2U2MDA5ZWY2MWQyM1xuXG52YXIgaXNQcm9wVmFsaWQgPSAvKiAjX19QVVJFX18gKi9tZW1vaXplKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHJldHVybiByZWFjdFByb3BzUmVnZXgudGVzdChwcm9wKSB8fCBwcm9wLmNoYXJDb2RlQXQoMCkgPT09IDExMVxuICAvKiBvICovXG4gICYmIHByb3AuY2hhckNvZGVBdCgxKSA9PT0gMTEwXG4gIC8qIG4gKi9cbiAgJiYgcHJvcC5jaGFyQ29kZUF0KDIpIDwgOTE7XG59XG4vKiBaKzEgKi9cbik7XG5cbmV4cG9ydCB7IGlzUHJvcFZhbGlkIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc1Byb3BWYWxpZCBmcm9tICdAZW1vdGlvbi9pcy1wcm9wLXZhbGlkJztcbmltcG9ydCB7IHdpdGhFbW90aW9uQ2FjaGUsIFRoZW1lQ29udGV4dCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBpbnNlcnRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcblxudmFyIHRlc3RPbWl0UHJvcHNPblN0cmluZ1RhZyA9IGlzUHJvcFZhbGlkO1xuXG52YXIgdGVzdE9taXRQcm9wc09uQ29tcG9uZW50ID0gZnVuY3Rpb24gdGVzdE9taXRQcm9wc09uQ29tcG9uZW50KGtleSkge1xuICByZXR1cm4ga2V5ICE9PSAndGhlbWUnO1xufTtcblxudmFyIGdldERlZmF1bHRTaG91bGRGb3J3YXJkUHJvcCA9IGZ1bmN0aW9uIGdldERlZmF1bHRTaG91bGRGb3J3YXJkUHJvcCh0YWcpIHtcbiAgcmV0dXJuIHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnICYmIC8vIDk2IGlzIG9uZSBsZXNzIHRoYW4gdGhlIGNoYXIgY29kZVxuICAvLyBmb3IgXCJhXCIgc28gdGhpcyBpcyBjaGVja2luZyB0aGF0XG4gIC8vIGl0J3MgYSBsb3dlcmNhc2UgY2hhcmFjdGVyXG4gIHRhZy5jaGFyQ29kZUF0KDApID4gOTYgPyB0ZXN0T21pdFByb3BzT25TdHJpbmdUYWcgOiB0ZXN0T21pdFByb3BzT25Db21wb25lbnQ7XG59O1xudmFyIGNvbXBvc2VTaG91bGRGb3J3YXJkUHJvcHMgPSBmdW5jdGlvbiBjb21wb3NlU2hvdWxkRm9yd2FyZFByb3BzKHRhZywgb3B0aW9ucywgaXNSZWFsKSB7XG4gIHZhciBzaG91bGRGb3J3YXJkUHJvcDtcblxuICBpZiAob3B0aW9ucykge1xuICAgIHZhciBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AgPSBvcHRpb25zLnNob3VsZEZvcndhcmRQcm9wO1xuICAgIHNob3VsZEZvcndhcmRQcm9wID0gdGFnLl9fZW1vdGlvbl9mb3J3YXJkUHJvcCAmJiBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AgPyBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgICAgIHJldHVybiB0YWcuX19lbW90aW9uX2ZvcndhcmRQcm9wKHByb3BOYW1lKSAmJiBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AocHJvcE5hbWUpO1xuICAgIH0gOiBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3A7XG4gIH1cblxuICBpZiAodHlwZW9mIHNob3VsZEZvcndhcmRQcm9wICE9PSAnZnVuY3Rpb24nICYmIGlzUmVhbCkge1xuICAgIHNob3VsZEZvcndhcmRQcm9wID0gdGFnLl9fZW1vdGlvbl9mb3J3YXJkUHJvcDtcbiAgfVxuXG4gIHJldHVybiBzaG91bGRGb3J3YXJkUHJvcDtcbn07XG5cbnZhciBJTExFR0FMX0VTQ0FQRV9TRVFVRU5DRV9FUlJPUiA9IFwiWW91IGhhdmUgaWxsZWdhbCBlc2NhcGUgc2VxdWVuY2UgaW4geW91ciB0ZW1wbGF0ZSBsaXRlcmFsLCBtb3N0IGxpa2VseSBpbnNpZGUgY29udGVudCdzIHByb3BlcnR5IHZhbHVlLlxcbkJlY2F1c2UgeW91IHdyaXRlIHlvdXIgQ1NTIGluc2lkZSBhIEphdmFTY3JpcHQgc3RyaW5nIHlvdSBhY3R1YWxseSBoYXZlIHRvIGRvIGRvdWJsZSBlc2NhcGluZywgc28gZm9yIGV4YW1wbGUgXFxcImNvbnRlbnQ6ICdcXFxcMDBkNyc7XFxcIiBzaG91bGQgYmVjb21lIFxcXCJjb250ZW50OiAnXFxcXFxcXFwwMGQ3JztcXFwiLlxcbllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IHRoaXMgaGVyZTpcXG5odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9UZW1wbGF0ZV9saXRlcmFscyNFUzIwMThfcmV2aXNpb25fb2ZfaWxsZWdhbF9lc2NhcGVfc2VxdWVuY2VzXCI7XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZCA9IF9yZWYuc2VyaWFsaXplZCxcbiAgICAgIGlzU3RyaW5nVGFnID0gX3JlZi5pc1N0cmluZ1RhZztcbiAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBjcmVhdGVTdHlsZWQgPSBmdW5jdGlvbiBjcmVhdGVTdHlsZWQodGFnLCBvcHRpb25zKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHRhZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBhcmUgdHJ5aW5nIHRvIGNyZWF0ZSBhIHN0eWxlZCBlbGVtZW50IHdpdGggYW4gdW5kZWZpbmVkIGNvbXBvbmVudC5cXG5Zb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGltcG9ydCBpdC4nKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaXNSZWFsID0gdGFnLl9fZW1vdGlvbl9yZWFsID09PSB0YWc7XG4gIHZhciBiYXNlVGFnID0gaXNSZWFsICYmIHRhZy5fX2Vtb3Rpb25fYmFzZSB8fCB0YWc7XG4gIHZhciBpZGVudGlmaWVyTmFtZTtcbiAgdmFyIHRhcmdldENsYXNzTmFtZTtcblxuICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWRlbnRpZmllck5hbWUgPSBvcHRpb25zLmxhYmVsO1xuICAgIHRhcmdldENsYXNzTmFtZSA9IG9wdGlvbnMudGFyZ2V0O1xuICB9XG5cbiAgdmFyIHNob3VsZEZvcndhcmRQcm9wID0gY29tcG9zZVNob3VsZEZvcndhcmRQcm9wcyh0YWcsIG9wdGlvbnMsIGlzUmVhbCk7XG4gIHZhciBkZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AgPSBzaG91bGRGb3J3YXJkUHJvcCB8fCBnZXREZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AoYmFzZVRhZyk7XG4gIHZhciBzaG91bGRVc2VBcyA9ICFkZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AoJ2FzJyk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIHN0eWxlcyA9IGlzUmVhbCAmJiB0YWcuX19lbW90aW9uX3N0eWxlcyAhPT0gdW5kZWZpbmVkID8gdGFnLl9fZW1vdGlvbl9zdHlsZXMuc2xpY2UoMCkgOiBbXTtcblxuICAgIGlmIChpZGVudGlmaWVyTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdHlsZXMucHVzaChcImxhYmVsOlwiICsgaWRlbnRpZmllck5hbWUgKyBcIjtcIik7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3NbMF0gPT0gbnVsbCB8fCBhcmdzWzBdLnJhdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdHlsZXMucHVzaC5hcHBseShzdHlsZXMsIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmdzWzBdWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTExFR0FMX0VTQ0FQRV9TRVFVRU5DRV9FUlJPUik7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlcy5wdXNoKGFyZ3NbMF1bMF0pO1xuICAgICAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICAgICAgdmFyIGkgPSAxO1xuXG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFyZ3NbMF1baV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0VfRVJST1IpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3R5bGVzLnB1c2goYXJnc1tpXSwgYXJnc1swXVtpXSk7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lOiB3ZSBuZWVkIHRvIGNhc3QgU3RhdGVsZXNzRnVuY3Rpb25hbENvbXBvbmVudCB0byBvdXIgUHJpdmF0ZVN0eWxlZENvbXBvbmVudCBjbGFzc1xuXG5cbiAgICB2YXIgU3R5bGVkID0gd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlLCByZWYpIHtcbiAgICAgIHZhciBGaW5hbFRhZyA9IHNob3VsZFVzZUFzICYmIHByb3BzLmFzIHx8IGJhc2VUYWc7XG4gICAgICB2YXIgY2xhc3NOYW1lID0gJyc7XG4gICAgICB2YXIgY2xhc3NJbnRlcnBvbGF0aW9ucyA9IFtdO1xuICAgICAgdmFyIG1lcmdlZFByb3BzID0gcHJvcHM7XG5cbiAgICAgIGlmIChwcm9wcy50aGVtZSA9PSBudWxsKSB7XG4gICAgICAgIG1lcmdlZFByb3BzID0ge307XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgbWVyZ2VkUHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRQcm9wcy50aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMoY2FjaGUucmVnaXN0ZXJlZCwgY2xhc3NJbnRlcnBvbGF0aW9ucywgcHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMuY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lICsgXCIgXCI7XG4gICAgICB9XG5cbiAgICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKHN0eWxlcy5jb25jYXQoY2xhc3NJbnRlcnBvbGF0aW9ucyksIGNhY2hlLnJlZ2lzdGVyZWQsIG1lcmdlZFByb3BzKTtcbiAgICAgIGNsYXNzTmFtZSArPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcblxuICAgICAgaWYgKHRhcmdldENsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsYXNzTmFtZSArPSBcIiBcIiArIHRhcmdldENsYXNzTmFtZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpbmFsU2hvdWxkRm9yd2FyZFByb3AgPSBzaG91bGRVc2VBcyAmJiBzaG91bGRGb3J3YXJkUHJvcCA9PT0gdW5kZWZpbmVkID8gZ2V0RGVmYXVsdFNob3VsZEZvcndhcmRQcm9wKEZpbmFsVGFnKSA6IGRlZmF1bHRTaG91bGRGb3J3YXJkUHJvcDtcbiAgICAgIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBfa2V5IGluIHByb3BzKSB7XG4gICAgICAgIGlmIChzaG91bGRVc2VBcyAmJiBfa2V5ID09PSAnYXMnKSBjb250aW51ZTtcblxuICAgICAgICBpZiAoIC8vICRGbG93Rml4TWVcbiAgICAgICAgZmluYWxTaG91bGRGb3J3YXJkUHJvcChfa2V5KSkge1xuICAgICAgICAgIG5ld1Byb3BzW19rZXldID0gcHJvcHNbX2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3UHJvcHMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgbmV3UHJvcHMucmVmID0gcmVmO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICAgICAgY2FjaGU6IGNhY2hlLFxuICAgICAgICBzZXJpYWxpemVkOiBzZXJpYWxpemVkLFxuICAgICAgICBpc1N0cmluZ1RhZzogdHlwZW9mIEZpbmFsVGFnID09PSAnc3RyaW5nJ1xuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZpbmFsVGFnLCBuZXdQcm9wcykpO1xuICAgIH0pO1xuICAgIFN0eWxlZC5kaXNwbGF5TmFtZSA9IGlkZW50aWZpZXJOYW1lICE9PSB1bmRlZmluZWQgPyBpZGVudGlmaWVyTmFtZSA6IFwiU3R5bGVkKFwiICsgKHR5cGVvZiBiYXNlVGFnID09PSAnc3RyaW5nJyA/IGJhc2VUYWcgOiBiYXNlVGFnLmRpc3BsYXlOYW1lIHx8IGJhc2VUYWcubmFtZSB8fCAnQ29tcG9uZW50JykgKyBcIilcIjtcbiAgICBTdHlsZWQuZGVmYXVsdFByb3BzID0gdGFnLmRlZmF1bHRQcm9wcztcbiAgICBTdHlsZWQuX19lbW90aW9uX3JlYWwgPSBTdHlsZWQ7XG4gICAgU3R5bGVkLl9fZW1vdGlvbl9iYXNlID0gYmFzZVRhZztcbiAgICBTdHlsZWQuX19lbW90aW9uX3N0eWxlcyA9IHN0eWxlcztcbiAgICBTdHlsZWQuX19lbW90aW9uX2ZvcndhcmRQcm9wID0gc2hvdWxkRm9yd2FyZFByb3A7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0eWxlZCwgJ3RvU3RyaW5nJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkge1xuICAgICAgICBpZiAodGFyZ2V0Q2xhc3NOYW1lID09PSB1bmRlZmluZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHJldHVybiAnTk9fQ09NUE9ORU5UX1NFTEVDVE9SJztcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lOiBjb2VyY2UgdW5kZWZpbmVkIHRvIHN0cmluZ1xuXG5cbiAgICAgICAgcmV0dXJuIFwiLlwiICsgdGFyZ2V0Q2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgU3R5bGVkLndpdGhDb21wb25lbnQgPSBmdW5jdGlvbiAobmV4dFRhZywgbmV4dE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVTdHlsZWQobmV4dFRhZywgX2V4dGVuZHMoe30sIG9wdGlvbnMsIG5leHRPcHRpb25zLCB7XG4gICAgICAgIHNob3VsZEZvcndhcmRQcm9wOiBjb21wb3NlU2hvdWxkRm9yd2FyZFByb3BzKFN0eWxlZCwgbmV4dE9wdGlvbnMsIHRydWUpXG4gICAgICB9KSkuYXBwbHkodm9pZCAwLCBzdHlsZXMpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU3R5bGVkO1xuICB9O1xufTtcblxuZXhwb3J0IHsgY3JlYXRlU3R5bGVkIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBjcmVhdGVTdHlsZWQgZnJvbSAnLi4vYmFzZS9kaXN0L2Vtb3Rpb24tc3R5bGVkLWJhc2UuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdyZWFjdCc7XG5pbXBvcnQgJ0BlbW90aW9uL2lzLXByb3AtdmFsaWQnO1xuaW1wb3J0ICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuXG52YXIgdGFncyA9IFsnYScsICdhYmJyJywgJ2FkZHJlc3MnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2F1ZGlvJywgJ2InLCAnYmFzZScsICdiZGknLCAnYmRvJywgJ2JpZycsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhbnZhcycsICdjYXB0aW9uJywgJ2NpdGUnLCAnY29kZScsICdjb2wnLCAnY29sZ3JvdXAnLCAnZGF0YScsICdkYXRhbGlzdCcsICdkZCcsICdkZWwnLCAnZGV0YWlscycsICdkZm4nLCAnZGlhbG9nJywgJ2RpdicsICdkbCcsICdkdCcsICdlbScsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9ybScsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpJywgJ2lmcmFtZScsICdpbWcnLCAnaW5wdXQnLCAnaW5zJywgJ2tiZCcsICdrZXlnZW4nLCAnbGFiZWwnLCAnbGVnZW5kJywgJ2xpJywgJ2xpbmsnLCAnbWFpbicsICdtYXAnLCAnbWFyaycsICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICdtZXRlcicsICduYXYnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ29wdGdyb3VwJywgJ29wdGlvbicsICdvdXRwdXQnLCAncCcsICdwYXJhbScsICdwaWN0dXJlJywgJ3ByZScsICdwcm9ncmVzcycsICdxJywgJ3JwJywgJ3J0JywgJ3J1YnknLCAncycsICdzYW1wJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzbWFsbCcsICdzb3VyY2UnLCAnc3BhbicsICdzdHJvbmcnLCAnc3R5bGUnLCAnc3ViJywgJ3N1bW1hcnknLCAnc3VwJywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpbWUnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndScsICd1bCcsICd2YXInLCAndmlkZW8nLCAnd2JyJywgLy8gU1ZHXG4nY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2RlZnMnLCAnZWxsaXBzZScsICdmb3JlaWduT2JqZWN0JywgJ2cnLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lYXJHcmFkaWVudCcsICdtYXNrJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICdzdmcnLCAndGV4dCcsICd0c3BhbiddO1xuXG52YXIgbmV3U3R5bGVkID0gY3JlYXRlU3R5bGVkLmJpbmQoKTtcbnRhZ3MuZm9yRWFjaChmdW5jdGlvbiAodGFnTmFtZSkge1xuICAvLyAkRmxvd0ZpeE1lOiB3ZSBjYW4gaWdub3JlIHRoaXMgYmVjYXVzZSBpdHMgZXhwb3NlZCB0eXBlIGlzIGRlZmluZWQgYnkgdGhlIENyZWF0ZVN0eWxlZCB0eXBlXG4gIG5ld1N0eWxlZFt0YWdOYW1lXSA9IG5ld1N0eWxlZCh0YWdOYW1lKTtcbn0pO1xuXG5leHBvcnQgeyBuZXdTdHlsZWQgYXMgZGVmYXVsdCB9O1xuIiwiLyoqXG4gKiBAbXVpL3N0eWxlZC1lbmdpbmUgdjUuMTMuMlxuICpcbiAqIEBsaWNlbnNlIE1JVFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5pbXBvcnQgZW1TdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0eWxlZCh0YWcsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3R5bGVzRmFjdG9yeSA9IGVtU3R5bGVkKHRhZywgb3B0aW9ucyk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICguLi5zdHlsZXMpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnID8gYFwiJHt0YWd9XCJgIDogJ2NvbXBvbmVudCc7XG4gICAgICBpZiAoc3R5bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBTZWVtcyBsaWtlIHlvdSBjYWxsZWQgXFxgc3R5bGVkKCR7Y29tcG9uZW50fSkoKVxcYCB3aXRob3V0IGEgXFxgc3R5bGVcXGAgYXJndW1lbnQuYCwgJ1lvdSBtdXN0IHByb3ZpZGUgYSBgc3R5bGVzYCBhcmd1bWVudDogYHN0eWxlZChcImRpdlwiKShzdHlsZVlvdUZvcmdvdFRvUGFzcylgLiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH0gZWxzZSBpZiAoc3R5bGVzLnNvbWUoc3R5bGUgPT4gc3R5bGUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgTVVJOiB0aGUgc3R5bGVkKCR7Y29tcG9uZW50fSkoLi4uYXJncykgQVBJIHJlcXVpcmVzIGFsbCBpdHMgYXJncyB0byBiZSBkZWZpbmVkLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0eWxlc0ZhY3RvcnkoLi4uc3R5bGVzKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBzdHlsZXNGYWN0b3J5O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgaW50ZXJuYWxfcHJvY2Vzc1N0eWxlcyA9ICh0YWcsIHByb2Nlc3NvcikgPT4ge1xuICAvLyBFbW90aW9uIGF0dGFjaGVzIGFsbCB0aGUgc3R5bGVzIGFzIGBfX2Vtb3Rpb25fc3R5bGVzYC5cbiAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2Jsb2IvMTZkOTcxZDBkYTIyOTU5NmQ2YmNjMzlkMjgyYmE5NzUzYzllZTdjZi9wYWNrYWdlcy9zdHlsZWQvc3JjL2Jhc2UuanMjTDE4NlxuICBpZiAoQXJyYXkuaXNBcnJheSh0YWcuX19lbW90aW9uX3N0eWxlcykpIHtcbiAgICB0YWcuX19lbW90aW9uX3N0eWxlcyA9IHByb2Nlc3Nvcih0YWcuX19lbW90aW9uX3N0eWxlcyk7XG4gIH1cbn07XG5leHBvcnQgeyBUaGVtZUNvbnRleHQsIGtleWZyYW1lcywgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gJy4vU3R5bGVkRW5naW5lUHJvdmlkZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHbG9iYWxTdHlsZXMgfSBmcm9tICcuL0dsb2JhbFN0eWxlcyc7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNyZWF0ZUJveCBmcm9tICcuLi9jcmVhdGVCb3gnO1xuY29uc3QgQm94ID0gY3JlYXRlQm94KCk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCb3gucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCb3g7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BtdWkvc3R5bGVkLWVuZ2luZSc7XG5pbXBvcnQgc3R5bGVGdW5jdGlvblN4LCB7IGV4dGVuZFN4UHJvcCB9IGZyb20gJy4vc3R5bGVGdW5jdGlvblN4JztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuL3VzZVRoZW1lJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVCb3gob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZUlkLFxuICAgIGRlZmF1bHRUaGVtZSxcbiAgICBkZWZhdWx0Q2xhc3NOYW1lID0gJ011aUJveC1yb290JyxcbiAgICBnZW5lcmF0ZUNsYXNzTmFtZVxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgQm94Um9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICAgIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHByb3AgIT09ICd0aGVtZScgJiYgcHJvcCAhPT0gJ3N4JyAmJiBwcm9wICE9PSAnYXMnXG4gIH0pKHN0eWxlRnVuY3Rpb25TeCk7XG4gIGNvbnN0IEJveCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJveChpblByb3BzLCByZWYpIHtcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gICAgY29uc3QgX2V4dGVuZFN4UHJvcCA9IGV4dGVuZFN4UHJvcChpblByb3BzKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBjb21wb25lbnQgPSAnZGl2J1xuICAgICAgfSA9IF9leHRlbmRTeFByb3AsXG4gICAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9leHRlbmRTeFByb3AsIF9leGNsdWRlZCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEJveFJvb3QsIF9leHRlbmRzKHtcbiAgICAgIGFzOiBjb21wb25lbnQsXG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc05hbWUsIGdlbmVyYXRlQ2xhc3NOYW1lID8gZ2VuZXJhdGVDbGFzc05hbWUoZGVmYXVsdENsYXNzTmFtZSkgOiBkZWZhdWx0Q2xhc3NOYW1lKSxcbiAgICAgIHRoZW1lOiB0aGVtZUlkID8gdGhlbWVbdGhlbWVJZF0gfHwgdGhlbWUgOiB0aGVtZVxuICAgIH0sIG90aGVyKSk7XG4gIH0pO1xuICByZXR1cm4gQm94O1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJzeFwiXTtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBkZWZhdWx0U3hDb25maWcgZnJvbSAnLi9kZWZhdWx0U3hDb25maWcnO1xuY29uc3Qgc3BsaXRQcm9wcyA9IHByb3BzID0+IHtcbiAgdmFyIF9wcm9wcyR0aGVtZSR1bnN0YWJsZSwgX3Byb3BzJHRoZW1lO1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgc3lzdGVtUHJvcHM6IHt9LFxuICAgIG90aGVyUHJvcHM6IHt9XG4gIH07XG4gIGNvbnN0IGNvbmZpZyA9IChfcHJvcHMkdGhlbWUkdW5zdGFibGUgPSBwcm9wcyA9PSBudWxsIHx8IChfcHJvcHMkdGhlbWUgPSBwcm9wcy50aGVtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wcm9wcyR0aGVtZS51bnN0YWJsZV9zeENvbmZpZykgIT0gbnVsbCA/IF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA6IGRlZmF1bHRTeENvbmZpZztcbiAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgaWYgKGNvbmZpZ1twcm9wXSkge1xuICAgICAgcmVzdWx0LnN5c3RlbVByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5vdGhlclByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlbmRTeFByb3AocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgICAgc3g6IGluU3hcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qge1xuICAgIHN5c3RlbVByb3BzLFxuICAgIG90aGVyUHJvcHNcbiAgfSA9IHNwbGl0UHJvcHMob3RoZXIpO1xuICBsZXQgZmluYWxTeDtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5TeCkpIHtcbiAgICBmaW5hbFN4ID0gW3N5c3RlbVByb3BzLCAuLi5pblN4XTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5TeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZpbmFsU3ggPSAoLi4uYXJncykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5TeCguLi5hcmdzKTtcbiAgICAgIGlmICghaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBzeXN0ZW1Qcm9wcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIHJlc3VsdCk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBmaW5hbFN4ID0gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCBpblN4KTtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICBzeDogZmluYWxTeFxuICB9KTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBjcmVhdGVUaGVtZSBmcm9tICcuL2NyZWF0ZVRoZW1lJztcbmltcG9ydCB1c2VUaGVtZVdpdGhvdXREZWZhdWx0IGZyb20gJy4vdXNlVGhlbWVXaXRob3V0RGVmYXVsdCc7XG5leHBvcnQgY29uc3Qgc3lzdGVtRGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmZ1bmN0aW9uIHVzZVRoZW1lKGRlZmF1bHRUaGVtZSA9IHN5c3RlbURlZmF1bHRUaGVtZSkge1xuICByZXR1cm4gdXNlVGhlbWVXaXRob3V0RGVmYXVsdChkZWZhdWx0VGhlbWUpO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlVGhlbWU7IiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBjcmVhdGVUaGVtZSwgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcclxuICBwYWxldHRlOiB7XHJcbiAgICB0eXBlOiBcImxpZ2h0XCIsXHJcbiAgICBwcmltYXJ5OiB7XHJcbiAgICAgIG1haW46IFwiI2ZmYTcyNlwiLFxyXG4gICAgfSxcclxuICAgIHNlY29uZGFyeToge1xyXG4gICAgICBtYWluOiBcIiMxNDdhZmZcIixcclxuICAgIH0sXHJcbiAgICBzdWNjZXNzOiB7XHJcbiAgICAgIG1haW46IFwiIzRDQUY1MFwiLFxyXG4gICAgfSxcclxuICAgIG5vdENvbm5lY3RlZDoge1xyXG4gICAgICBtYWluOiBcIiM3NTc1NzVcIixcclxuICAgIH0sXHJcbiAgICBsb2FkaW5nOiB7XHJcbiAgICAgIG1haW46IFwiI0U2NEExOVwiLFxyXG4gICAgfSxcclxuICAgIHNlbGVjdG9yOiB7XHJcbiAgICAgIG1haW46IFwiIzMyOUQ5Q1wiLFxyXG4gICAgfSxcclxuICB9LFxyXG4gIHR5cG9ncmFwaHk6IHtcclxuICAgIGZvbnRGYW1pbHk6IFwiUm9ib3RvXCIsXHJcbiAgfSxcclxufSk7XHJcblxyXG5mdW5jdGlvbiBSb2JvdGljc1RoZW1lKHByb3BzKSB7XHJcbiAgcmV0dXJuIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e3Byb3BzLmNoaWxkcmVufTwvVGhlbWVQcm92aWRlcj47XHJcbn1cclxuXHJcblJvYm90aWNzVGhlbWUucHJvcFR5cGVzID0ge1xyXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJvYm90aWNzVGhlbWU7XHJcbiIsImltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL3N5c3RlbVwiO1xyXG5pbXBvcnQgUm9ib3RpY3NUaGVtZSBmcm9tIFwiQ29tcG9uZW50cy9Sb2JvdGljc1RoZW1lXCI7XHJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmNvbnN0IE1hdGVyaWFsQm94ID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSb2JvdGljc1RoZW1lPlxyXG4gICAgICA8Qm94IGlkPXtwcm9wcy5pZH0+e3Byb3BzLmNoaWxkcmVufTwvQm94PlxyXG4gICAgPC9Sb2JvdGljc1RoZW1lPlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNYXRlcmlhbEJveDtcclxuIiwiZnVuY3Rpb24gcihlKXt2YXIgdCxmLG49XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpbis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdJiYoZj1yKGVbdF0pKSYmKG4mJihuKz1cIiBcIiksbis9Zik7ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBmdW5jdGlvbiBjbHN4KCl7Zm9yKHZhciBlLHQsZj0wLG49XCJcIjtmPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tmKytdKSYmKHQ9cihlKSkmJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBkZWZhdWx0IGNsc3g7IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iXSwibmFtZXMiOlsiZ2V0UmVnaXN0ZXJlZFN0eWxlcyIsInJlZ2lzdGVyZWQiLCJyZWdpc3RlcmVkU3R5bGVzIiwiY2xhc3NOYW1lcyIsInJhd0NsYXNzTmFtZSIsInNwbGl0IiwiZm9yRWFjaCIsImNsYXNzTmFtZSIsInVuZGVmaW5lZCIsInB1c2giLCJyZWdpc3RlclN0eWxlcyIsImNhY2hlIiwic2VyaWFsaXplZCIsImlzU3RyaW5nVGFnIiwia2V5IiwibmFtZSIsInN0eWxlcyIsImluc2VydFN0eWxlcyIsImluc2VydGVkIiwiY3VycmVudCIsImluc2VydCIsInNoZWV0IiwibmV4dCIsInVzZVRoZW1lIiwiU3ltYm9sIiwiZm9yIiwicHJvcHMiLCJjaGlsZHJlbiIsInRoZW1lIiwibG9jYWxUaGVtZSIsIm91dGVyVGhlbWUiLCJvdXRwdXQiLCJtZXJnZU91dGVyTG9jYWxUaGVtZSIsIm5lc3RlZCIsIlByb3ZpZGVyIiwidmFsdWUiLCJFTVBUWV9USEVNRSIsInVzZVRoZW1lU2NvcGluZyIsInRoZW1lSWQiLCJ1cHBlclRoZW1lIiwiaXNQcml2YXRlIiwicmVzb2x2ZWRUaGVtZSIsIm1lcmdlZFRoZW1lIiwicmVzdWx0IiwidXNlVGhlbWVXaXRob3V0RGVmYXVsdCIsInVwcGVyUHJpdmF0ZVRoZW1lIiwiZW5naW5lVGhlbWUiLCJwcml2YXRlVGhlbWUiLCJfZXhjbHVkZWQiLCJfcmVmIiwidGhlbWVJbnB1dCIsInNjb3BlZFRoZW1lIiwicmVhY3RQcm9wc1JlZ2V4IiwiaXNQcm9wVmFsaWQiLCJwcm9wIiwidGVzdCIsImNoYXJDb2RlQXQiLCJ0ZXN0T21pdFByb3BzT25TdHJpbmdUYWciLCJ0ZXN0T21pdFByb3BzT25Db21wb25lbnQiLCJnZXREZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AiLCJ0YWciLCJjb21wb3NlU2hvdWxkRm9yd2FyZFByb3BzIiwib3B0aW9ucyIsImlzUmVhbCIsInNob3VsZEZvcndhcmRQcm9wIiwib3B0aW9uc1Nob3VsZEZvcndhcmRQcm9wIiwiX19lbW90aW9uX2ZvcndhcmRQcm9wIiwicHJvcE5hbWUiLCJJbnNlcnRpb24iLCJuZXdTdHlsZWQiLCJjcmVhdGVTdHlsZWQiLCJpZGVudGlmaWVyTmFtZSIsInRhcmdldENsYXNzTmFtZSIsIl9fZW1vdGlvbl9yZWFsIiwiYmFzZVRhZyIsIl9fZW1vdGlvbl9iYXNlIiwibGFiZWwiLCJ0YXJnZXQiLCJkZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AiLCJzaG91bGRVc2VBcyIsImFyZ3MiLCJhcmd1bWVudHMiLCJfX2Vtb3Rpb25fc3R5bGVzIiwic2xpY2UiLCJyYXciLCJhcHBseSIsImxlbiIsImxlbmd0aCIsImkiLCJTdHlsZWQiLCJ3IiwicmVmIiwiRmluYWxUYWciLCJhcyIsImNsYXNzSW50ZXJwb2xhdGlvbnMiLCJtZXJnZWRQcm9wcyIsIlQiLCJjb25jYXQiLCJmaW5hbFNob3VsZEZvcndhcmRQcm9wIiwibmV3UHJvcHMiLCJfa2V5IiwiZGlzcGxheU5hbWUiLCJkZWZhdWx0UHJvcHMiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndpdGhDb21wb25lbnQiLCJuZXh0VGFnIiwibmV4dE9wdGlvbnMiLCJiaW5kIiwic3R5bGVkIiwidGFnTmFtZSIsImludGVybmFsX3Byb2Nlc3NTdHlsZXMiLCJwcm9jZXNzb3IiLCJBcnJheSIsImlzQXJyYXkiLCJjcmVhdGVCb3giLCJkZWZhdWx0VGhlbWUiLCJkZWZhdWx0Q2xhc3NOYW1lIiwiZ2VuZXJhdGVDbGFzc05hbWUiLCJCb3hSb290IiwiaW5Qcm9wcyIsIl9leHRlbmRTeFByb3AiLCJjb21wb25lbnQiLCJvdGhlciIsInNwbGl0UHJvcHMiLCJfcHJvcHMkdGhlbWUkdW5zdGFibGUiLCJfcHJvcHMkdGhlbWUiLCJzeXN0ZW1Qcm9wcyIsIm90aGVyUHJvcHMiLCJjb25maWciLCJ1bnN0YWJsZV9zeENvbmZpZyIsImtleXMiLCJleHRlbmRTeFByb3AiLCJzeCIsImluU3giLCJmaW5hbFN4Iiwic3lzdGVtRGVmYXVsdFRoZW1lIiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwidHlwZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5Iiwic3VjY2VzcyIsIm5vdENvbm5lY3RlZCIsImxvYWRpbmciLCJzZWxlY3RvciIsInR5cG9ncmFwaHkiLCJmb250RmFtaWx5IiwiUm9ib3RpY3NUaGVtZSIsIl9qc3giLCJUaGVtZVByb3ZpZGVyIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiQm94IiwiaWQiLCJyIiwiZSIsInQiLCJmIiwibiIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJzaGltIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3147.06fb6a5f.js.LICENSE.txt b/react_frontend/static/react_frontend/js/3147.06fb6a5f.js.LICENSE.txt new file mode 100644 index 000000000..e053db672 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3147.06fb6a5f.js.LICENSE.txt @@ -0,0 +1,7 @@ +/** + * @mui/styled-engine v5.13.2 + * + * @license MIT + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/3152.ddefd0ee.js b/react_frontend/static/react_frontend/js/3152.ddefd0ee.js new file mode 100644 index 000000000..65c896680 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3152.ddefd0ee.js @@ -0,0 +1,3 @@ +/*! For license information please see 3152.ddefd0ee.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3152],{3152:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMzE1Mi44YzdlNjFmNC5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjBCLFNBQUNBLEdBQ3pCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzLzNkX3JlY29uc3RydWN0aW9uL3JlYWN0LWNvbXBvbmVudHMvUmVjb25zdHJ1Y3Rpb24zRFJSLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9SZWNvbnN0cnVjdGlvbjNEUlIuY3NzXCI7XHJcblxyXG5jb25zdCBSZWNvbnRydWN0aW9uM0RSUiA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSZWNvbnRydWN0aW9uM0RSUjsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3152.ddefd0ee.js.LICENSE.txt b/react_frontend/static/react_frontend/js/3152.ddefd0ee.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3152.ddefd0ee.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/3169.5cab53af.js b/react_frontend/static/react_frontend/js/3169.5cab53af.js new file mode 100644 index 000000000..0d4dc5258 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3169.5cab53af.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3169,4668],{7437:(e,t,o)=>{o.d(t,{AH:()=>c,i7:()=>d,mL:()=>s});var n=o(5684),a=o(6540),r=o(41),i=o(1287),l=o(6899),s=(o(4300),o(4146),(0,n.w)((function(e,t){var o=e.styles,s=(0,l.J)([o],void 0,a.useContext(n.T));if(!n.i){for(var c,d=s.name,u=s.styles,p=s.next;void 0!==p;)d+=" "+p.name,u+=p.styles,p=p.next;var v=!0===t.compat,m=t.insert("",{name:d,styles:u},t.sheet,v);return v?null:a.createElement("style",((c={})["data-emotion"]=t.key+"-global "+d,c.dangerouslySetInnerHTML={__html:m},c.nonce=t.sheet.nonce,c))}var h=a.useRef();return(0,i.i)((function(){var e=t.key+"-global",o=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,a=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(o.before=t.sheet.tags[0]),null!==a&&(n=!0,a.setAttribute("data-emotion",e),o.hydrate([a])),h.current=[o,n],function(){o.flush()}}),[t]),(0,i.i)((function(){var e=h.current,o=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,r.sk)(t,s.next,!0),o.tags.length){var n=o.tags[o.tags.length-1].nextElementSibling;o.before=n,o.flush()}t.insert("",s,o,!1)}}),[t,s.name]),null})));function c(){for(var e=arguments.length,t=new Array(e),o=0;o{o.d(t,{A:()=>C});var n=o(8587),a=o(8168),r=o(6540),i=o(53),l=o(3726),s=o(5659),c=o(4279),d=o(7577),u=o(4409),p=o(6606),v=o(8466),m=o(8413),h=o(1609);function b(e){return(0,h.A)("MuiButton",e)}const g=(0,m.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var f=o(1848),y=o(4848);const x=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],S=e=>(0,a.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),z=(0,d.Ay)(p.A,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,v.A)(o.color)}`],t[`size${(0,v.A)(o.size)}`],t[`${o.variant}Size${(0,v.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const r="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,a.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,a.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${g.focusVisible}`]:(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${g.disabled}`]:(0,a.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,c.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:r,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${g.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${g.disabled}`]:{boxShadow:"none"}})),A=(0,d.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},S(e)))),w=(0,d.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},S(e)))),C=r.forwardRef((function(e,t){const o=r.useContext(f.A),c=(0,l.A)(o,e),d=(0,u.A)({props:c,name:"MuiButton"}),{children:p,color:m="primary",component:h="button",className:g,disabled:S=!1,disableElevation:C=!1,disableFocusRipple:I=!1,endIcon:$,focusVisibleClassName:E,fullWidth:R=!1,size:k="medium",startIcon:M,type:T,variant:W="text"}=d,B=(0,n.A)(d,x),N=(0,a.A)({},d,{color:m,component:h,disabled:S,disableElevation:C,disableFocusRipple:I,fullWidth:R,size:k,type:T,variant:W}),O=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:r,variant:i,classes:l}=e,c={root:["root",i,`${i}${(0,v.A)(t)}`,`size${(0,v.A)(r)}`,`${i}Size${(0,v.A)(r)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,v.A)(r)}`],endIcon:["endIcon",`iconSize${(0,v.A)(r)}`]},d=(0,s.A)(c,b,l);return(0,a.A)({},l,d)})(N),_=M&&(0,y.jsx)(A,{className:O.startIcon,ownerState:N,children:M}),L=$&&(0,y.jsx)(w,{className:O.endIcon,ownerState:N,children:$});return(0,y.jsxs)(z,(0,a.A)({ownerState:N,className:(0,i.A)(o.className,O.root,g),component:h,disabled:S,focusRipple:!I,focusVisibleClassName:(0,i.A)(O.focusVisible,E),ref:t,type:T},B,{classes:O,children:[_,p,L]}))}))},1848:(e,t,o)=>{o.d(t,{A:()=>n});const n=o(6540).createContext({})},9869:(e,t,o)=>{o.r(t),o.d(t,{ResetCar:()=>l});var n=o(1224),a=o(6540),r=o(4848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=Array(t);o{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3322.2eb10ef8.js b/react_frontend/static/react_frontend/js/3322.2eb10ef8.js new file mode 100644 index 000000000..9fc79fdb4 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3322.2eb10ef8.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3322],{7437:(e,o,t)=>{t.d(o,{AH:()=>s,i7:()=>u,mL:()=>d});var r=t(5684),n=t(6540),i=t(41),a=t(1287),l=t(6899),d=(t(4300),t(4146),(0,r.w)((function(e,o){var t=e.styles,d=(0,l.J)([t],void 0,n.useContext(r.T));if(!r.i){for(var s,u=d.name,c=d.styles,v=d.next;void 0!==v;)u+=" "+v.name,c+=v.styles,v=v.next;var p=!0===o.compat,h=o.insert("",{name:u,styles:c},o.sheet,p);return p?null:n.createElement("style",((s={})["data-emotion"]=o.key+"-global "+u,s.dangerouslySetInnerHTML={__html:h},s.nonce=o.sheet.nonce,s))}var m=n.useRef();return(0,a.i)((function(){var e=o.key+"-global",t=new o.sheet.constructor({key:e,nonce:o.sheet.nonce,container:o.sheet.container,speedy:o.sheet.isSpeedy}),r=!1,n=document.querySelector('style[data-emotion="'+e+" "+d.name+'"]');return o.sheet.tags.length&&(t.before=o.sheet.tags[0]),null!==n&&(r=!0,n.setAttribute("data-emotion",e),t.hydrate([n])),m.current=[t,r],function(){t.flush()}}),[o]),(0,a.i)((function(){var e=m.current,t=e[0];if(e[1])e[1]=!1;else{if(void 0!==d.next&&(0,i.sk)(o,d.next,!0),t.tags.length){var r=t.tags[t.tags.length-1].nextElementSibling;t.before=r,t.flush()}o.insert("",d,t,!1)}}),[o,d.name]),null})));function s(){for(var e=arguments.length,o=new Array(e),t=0;t{var r=t(4994);o.A=void 0;var n=r(t(2032)),i=t(4848),a=(0,n.default)((0,i.jsx)("path",{d:"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18zM20 4v13.17L18.83 16H4V4h16zM6 12h12v2H6zm0-3h12v2H6zm0-3h12v2H6z"}),"CommentOutlined");o.A=a},9463:(e,o,t)=>{var r=t(4994);o.A=void 0;var n=r(t(2032)),i=t(4848),a=(0,n.default)((0,i.jsx)("path",{d:"M12 3 1 9l4 2.18v6L12 21l7-3.82v-6l2-1.09V17h2V9L12 3zm6.82 6L12 12.72 5.18 9 12 5.28 18.82 9zM17 15.99l-5 2.73-5-2.73v-3.72L12 15l5-2.73v3.72z"}),"SchoolOutlined");o.A=a},833:(e,o,t)=>{t.d(o,{A:()=>x});var r=t(8587),n=t(8168),i=t(6540),a=t(53),l=t(5659),d=t(4279),s=t(8466),u=t(7577),c=t(4409),v=t(8413),p=t(1609);function h(e){return(0,p.A)("MuiButtonGroup",e)}const m=(0,v.A)("MuiButtonGroup",["root","contained","outlined","text","disableElevation","disabled","fullWidth","vertical","grouped","groupedHorizontal","groupedVertical","groupedText","groupedTextHorizontal","groupedTextVertical","groupedTextPrimary","groupedTextSecondary","groupedOutlined","groupedOutlinedHorizontal","groupedOutlinedVertical","groupedOutlinedPrimary","groupedOutlinedSecondary","groupedContained","groupedContainedHorizontal","groupedContainedVertical","groupedContainedPrimary","groupedContainedSecondary"]);var f=t(1848),g=t(4848);const b=["children","className","color","component","disabled","disableElevation","disableFocusRipple","disableRipple","fullWidth","orientation","size","variant"],A=(0,u.Ay)("div",{name:"MuiButtonGroup",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:t}=e;return[{[`& .${m.grouped}`]:o.grouped},{[`& .${m.grouped}`]:o[`grouped${(0,s.A)(t.orientation)}`]},{[`& .${m.grouped}`]:o[`grouped${(0,s.A)(t.variant)}`]},{[`& .${m.grouped}`]:o[`grouped${(0,s.A)(t.variant)}${(0,s.A)(t.orientation)}`]},{[`& .${m.grouped}`]:o[`grouped${(0,s.A)(t.variant)}${(0,s.A)(t.color)}`]},o.root,o[t.variant],!0===t.disableElevation&&o.disableElevation,t.fullWidth&&o.fullWidth,"vertical"===t.orientation&&o.vertical]}})((({theme:e,ownerState:o})=>(0,n.A)({display:"inline-flex",borderRadius:(e.vars||e).shape.borderRadius},"contained"===o.variant&&{boxShadow:(e.vars||e).shadows[2]},o.disableElevation&&{boxShadow:"none"},o.fullWidth&&{width:"100%"},"vertical"===o.orientation&&{flexDirection:"column"},{[`& .${m.grouped}`]:(0,n.A)({minWidth:40,"&:not(:first-of-type)":(0,n.A)({},"horizontal"===o.orientation&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},"vertical"===o.orientation&&{borderTopRightRadius:0,borderTopLeftRadius:0},"outlined"===o.variant&&"horizontal"===o.orientation&&{marginLeft:-1},"outlined"===o.variant&&"vertical"===o.orientation&&{marginTop:-1}),"&:not(:last-of-type)":(0,n.A)({},"horizontal"===o.orientation&&{borderTopRightRadius:0,borderBottomRightRadius:0},"vertical"===o.orientation&&{borderBottomRightRadius:0,borderBottomLeftRadius:0},"text"===o.variant&&"horizontal"===o.orientation&&{borderRight:e.vars?`1px solid rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:"1px solid "+("light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${m.disabled}`]:{borderRight:`1px solid ${(e.vars||e).palette.action.disabled}`}},"text"===o.variant&&"vertical"===o.orientation&&{borderBottom:e.vars?`1px solid rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:"1px solid "+("light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)"),[`&.${m.disabled}`]:{borderBottom:`1px solid ${(e.vars||e).palette.action.disabled}`}},"text"===o.variant&&"inherit"!==o.color&&{borderColor:e.vars?`rgba(${e.vars.palette[o.color].mainChannel} / 0.5)`:(0,d.X4)(e.palette[o.color].main,.5)},"outlined"===o.variant&&"horizontal"===o.orientation&&{borderRightColor:"transparent"},"outlined"===o.variant&&"vertical"===o.orientation&&{borderBottomColor:"transparent"},"contained"===o.variant&&"horizontal"===o.orientation&&{borderRight:`1px solid ${(e.vars||e).palette.grey[400]}`,[`&.${m.disabled}`]:{borderRight:`1px solid ${(e.vars||e).palette.action.disabled}`}},"contained"===o.variant&&"vertical"===o.orientation&&{borderBottom:`1px solid ${(e.vars||e).palette.grey[400]}`,[`&.${m.disabled}`]:{borderBottom:`1px solid ${(e.vars||e).palette.action.disabled}`}},"contained"===o.variant&&"inherit"!==o.color&&{borderColor:(e.vars||e).palette[o.color].dark},{"&:hover":(0,n.A)({},"outlined"===o.variant&&"horizontal"===o.orientation&&{borderRightColor:"currentColor"},"outlined"===o.variant&&"vertical"===o.orientation&&{borderBottomColor:"currentColor"})}),"&:hover":(0,n.A)({},"contained"===o.variant&&{boxShadow:"none"})},"contained"===o.variant&&{boxShadow:"none"})}))),x=i.forwardRef((function(e,o){const t=(0,c.A)({props:e,name:"MuiButtonGroup"}),{children:d,className:u,color:v="primary",component:p="div",disabled:m=!1,disableElevation:x=!1,disableFocusRipple:y=!1,disableRipple:S=!1,fullWidth:z=!1,orientation:R="horizontal",size:$="medium",variant:w="outlined"}=t,C=(0,r.A)(t,b),B=(0,n.A)({},t,{color:v,component:p,disabled:m,disableElevation:x,disableFocusRipple:y,disableRipple:S,fullWidth:z,orientation:R,size:$,variant:w}),E=(e=>{const{classes:o,color:t,disabled:r,disableElevation:n,fullWidth:i,orientation:a,variant:d}=e,u={root:["root",d,"vertical"===a&&"vertical",i&&"fullWidth",n&&"disableElevation"],grouped:["grouped",`grouped${(0,s.A)(a)}`,`grouped${(0,s.A)(d)}`,`grouped${(0,s.A)(d)}${(0,s.A)(a)}`,`grouped${(0,s.A)(d)}${(0,s.A)(t)}`,r&&"disabled"]};return(0,l.A)(u,h,o)})(B),M=i.useMemo((()=>({className:E.grouped,color:v,disabled:m,disableElevation:x,disableFocusRipple:y,disableRipple:S,fullWidth:z,size:$,variant:w})),[v,m,x,y,S,z,$,w,E.grouped]);return(0,g.jsx)(A,(0,n.A)({as:p,role:"group",className:(0,a.A)(E.root,u),ref:o,ownerState:B},C,{children:(0,g.jsx)(f.A.Provider,{value:M,children:d})}))}))},5793:(e,o,t)=>{t.d(o,{A:()=>b});var r=t(8168),n=t(8587),i=t(6540);const a=i.createContext(null);function l(){return i.useContext(a)}const d="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var s=t(4848);const u=function(e){const{children:o,theme:t}=e,n=l(),u=i.useMemo((()=>{const e=null===n?t:function(e,o){return"function"==typeof o?o(e):(0,r.A)({},e,o)}(n,t);return null!=e&&(e[d]=null!==n),e}),[t,n]);return(0,s.jsx)(a.Provider,{value:u,children:o})};var c=t(5684),v=t(3951);const p={};function h(e,o,t,n=!1){return i.useMemo((()=>{const i=e&&o[e]||o;if("function"==typeof t){const a=t(i),l=e?(0,r.A)({},o,{[e]:a}):a;return n?()=>l:l}return e?(0,r.A)({},o,{[e]:t}):(0,r.A)({},o,t)}),[e,o,t,n])}const m=function(e){const{children:o,theme:t,themeId:r}=e,n=(0,v.A)(p),i=l()||p,a=h(r,n,t),d=h(r,i,t,!0);return(0,s.jsx)(u,{theme:d,children:(0,s.jsx)(c.T.Provider,{value:a,children:o})})};var f=t(8312);const g=["theme"];function b(e){let{theme:o}=e,t=(0,n.A)(e,g);const i=o[f.A];return(0,s.jsx)(m,(0,r.A)({},t,{themeId:i?f.A:void 0,theme:i||o}))}},5003:(e,o,t)=>{t.d(o,{A:()=>A});var r=t(8168),n=t(6540),i=t(8587),a=t(53),l=t(5659),d=t(8466),s=t(4409),u=t(7577),c=t(8413),v=t(1609);function p(e){return(0,v.A)("MuiSvgIcon",e)}(0,c.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=t(4848);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],f=(0,u.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:t}=e;return[o.root,"inherit"!==t.color&&o[`color${(0,d.A)(t.color)}`],o[`fontSize${(0,d.A)(t.fontSize)}`]]}})((({theme:e,ownerState:o})=>{var t,r,n,i,a,l,d,s,u,c,v,p,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:o.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(t=e.transitions)||null==(r=t.create)?void 0:r.call(t,"fill",{duration:null==(n=e.transitions)||null==(n=n.duration)?void 0:n.shorter}),fontSize:{inherit:"inherit",small:(null==(i=e.typography)||null==(a=i.pxToRem)?void 0:a.call(i,20))||"1.25rem",medium:(null==(l=e.typography)||null==(d=l.pxToRem)?void 0:d.call(l,24))||"1.5rem",large:(null==(s=e.typography)||null==(u=s.pxToRem)?void 0:u.call(s,35))||"2.1875rem"}[o.fontSize],color:null!=(c=null==(v=(e.vars||e).palette)||null==(v=v[o.color])?void 0:v.main)?c:{action:null==(p=(e.vars||e).palette)||null==(p=p.action)?void 0:p.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[o.color]}})),g=n.forwardRef((function(e,o){const t=(0,s.A)({props:e,name:"MuiSvgIcon"}),{children:u,className:c,color:v="inherit",component:g="svg",fontSize:b="medium",htmlColor:A,inheritViewBox:x=!1,titleAccess:y,viewBox:S="0 0 24 24"}=t,z=(0,i.A)(t,m),R=n.isValidElement(u)&&"svg"===u.type,$=(0,r.A)({},t,{color:v,component:g,fontSize:b,instanceFontSize:e.fontSize,inheritViewBox:x,viewBox:S,hasSvgAsChild:R}),w={};x||(w.viewBox=S);const C=(e=>{const{color:o,fontSize:t,classes:r}=e,n={root:["root","inherit"!==o&&`color${(0,d.A)(o)}`,`fontSize${(0,d.A)(t)}`]};return(0,l.A)(n,p,r)})($);return(0,h.jsxs)(f,(0,r.A)({as:g,className:(0,a.A)(C.root,c),focusable:"false",color:A,"aria-hidden":!y||void 0,role:y?"img":void 0,ref:o},w,z,R&&u.props,{ownerState:$,children:[R?u.props.children:u,y?(0,h.jsx)("title",{children:y}):null]}))}));g.muiName="SvgIcon";const b=g;function A(e,o){function t(t,n){return(0,h.jsx)(b,(0,r.A)({"data-testid":`${o}Icon`,ref:n},t,{children:e}))}return t.muiName=b.muiName,n.memo(n.forwardRef(t))}},1935:(e,o,t)=>{t.d(o,{A:()=>r});const r=t(4705).A},5034:(e,o,t)=>{t.d(o,{A:()=>n});var r=t(6540);const n=function(e,o){return r.isValidElement(e)&&-1!==o.indexOf(e.type.muiName)}},6248:(e,o,t)=>{t.d(o,{A:()=>r});const r=t(2325).A},3749:(e,o,t)=>{t.d(o,{A:()=>r});const r=t(4877).A},2778:(e,o,t)=>{t.d(o,{A:()=>r});const r=t(1529).A},1210:(e,o,t)=>{function r(...e){return e.reduce(((e,o)=>null==o?e:function(...t){e.apply(this,t),o.apply(this,t)}),(()=>{}))}t.d(o,{A:()=>r})},4705:(e,o,t)=>{function r(e,o=166){let t;function r(...r){clearTimeout(t),t=setTimeout((()=>{e.apply(this,r)}),o)}return r.clear=()=>{clearTimeout(t)},r}t.d(o,{A:()=>r})},4877:(e,o,t)=>{t.d(o,{A:()=>n});var r=t(2325);function n(e){return(0,r.A)(e).defaultView||window}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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T0EsRUFBTUMsUUFBTyxDQUFDQyxFQUFLQyxJQUNaLE1BQVJBLEVBQ0tELEVBRUYsWUFBNEJqSyxHQUNqQ2lLLEVBQUk1SixNQUFNRyxLQUFNUixHQUNoQmtLLEVBQUs3SixNQUFNRyxLQUFNUixFQUNuQixJQUNDLFFBQ0wsQyxpQ0NkZSxTQUFTbUssRUFBU0QsRUFBTUUsRUFBTyxLQUM1QyxJQUFJQyxFQUNKLFNBQVNDLEtBQWF0SyxHQUtwQnVLLGFBQWFGLEdBQ2JBLEVBQVVHLFlBTEksS0FFWk4sRUFBSzdKLE1BQU1HLEtBQU1SLEVBQUssR0FHSW9LLEVBQzlCLENBSUEsT0FIQUUsRUFBVUcsTUFBUSxLQUNoQkYsYUFBYUYsRUFBUSxFQUVoQkMsQ0FDVCxDLGdFQ2ZlLFNBQVNJLEVBQVkxTCxHQUVsQyxPQURZLE9BQWNBLEdBQ2YyTCxhQUFlQyxNQUM1QixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvQ29tbWVudE91dGxpbmVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvU2Nob29sT3V0bGluZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9idXR0b25Hcm91cENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy91c2VUaGVtZS9UaGVtZUNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvdXNlVGhlbWUvdXNlVGhlbWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvVGhlbWVQcm92aWRlci9uZXN0ZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvVGhlbWVQcm92aWRlci9UaGVtZVByb3ZpZGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9UaGVtZVByb3ZpZGVyL1RoZW1lUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvVGhlbWVQcm92aWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1N2Z0ljb24vc3ZnSWNvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL1N2Z0ljb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9jcmVhdGVTdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pc011aUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyV2luZG93LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRW5oYW5jZWRFZmZlY3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyV2luZG93L293bmVyV2luZG93LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGggYXMgaGFzT3duUHJvcGVydHksIEUgYXMgRW1vdGlvbiwgYyBhcyBjcmVhdGVFbW90aW9uUHJvcHMsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgVCBhcyBUaGVtZUNvbnRleHQsIGkgYXMgaXNCcm93c2VyJDEgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5leHBvcnQgeyBDIGFzIENhY2hlUHJvdmlkZXIsIFQgYXMgVGhlbWVDb250ZXh0LCBhIGFzIFRoZW1lUHJvdmlkZXIsIF8gYXMgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlLCB1IGFzIHVzZVRoZW1lLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIGIgYXMgd2l0aFRoZW1lIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaW5zZXJ0U3R5bGVzLCByZWdpc3RlclN0eWxlcywgZ2V0UmVnaXN0ZXJlZFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnLi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuXG52YXIgcGtnID0ge1xuXHRuYW1lOiBcIkBlbW90aW9uL3JlYWN0XCIsXG5cdHZlcnNpb246IFwiMTEuMTEuMVwiLFxuXHRtYWluOiBcImRpc3QvZW1vdGlvbi1yZWFjdC5janMuanNcIixcblx0bW9kdWxlOiBcImRpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIixcblx0YnJvd3Nlcjoge1xuXHRcdFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIlxuXHR9LFxuXHRleHBvcnRzOiB7XG5cdFx0XCIuXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3Qud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL2pzeC1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL19pc29sYXRlZC1obnJzXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL2pzeC1kZXYtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vcGFja2FnZS5qc29uXCI6IFwiLi9wYWNrYWdlLmpzb25cIixcblx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcIi4vbWFjcm9cIjoge1xuXHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uZC50c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0fVxuXHR9LFxuXHR0eXBlczogXCJ0eXBlcy9pbmRleC5kLnRzXCIsXG5cdGZpbGVzOiBbXG5cdFx0XCJzcmNcIixcblx0XHRcImRpc3RcIixcblx0XHRcImpzeC1ydW50aW1lXCIsXG5cdFx0XCJqc3gtZGV2LXJ1bnRpbWVcIixcblx0XHRcIl9pc29sYXRlZC1obnJzXCIsXG5cdFx0XCJ0eXBlcy8qLmQudHNcIixcblx0XHRcIm1hY3JvLipcIlxuXHRdLFxuXHRzaWRlRWZmZWN0czogZmFsc2UsXG5cdGF1dGhvcjogXCJFbW90aW9uIENvbnRyaWJ1dG9yc1wiLFxuXHRsaWNlbnNlOiBcIk1JVFwiLFxuXHRzY3JpcHRzOiB7XG5cdFx0XCJ0ZXN0OnR5cGVzY3JpcHRcIjogXCJkdHNsaW50IHR5cGVzXCJcblx0fSxcblx0ZGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAYmFiZWwvcnVudGltZVwiOiBcIl43LjE4LjNcIixcblx0XHRcIkBlbW90aW9uL2JhYmVsLXBsdWdpblwiOiBcIl4xMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jYWNoZVwiOiBcIl4xMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJpYWxpemVcIjogXCJeMS4xLjJcIixcblx0XHRcIkBlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzXCI6IFwiXjEuMC4xXCIsXG5cdFx0XCJAZW1vdGlvbi91dGlsc1wiOiBcIl4xLjIuMVwiLFxuXHRcdFwiQGVtb3Rpb24vd2Vhay1tZW1vaXplXCI6IFwiXjAuMy4xXCIsXG5cdFx0XCJob2lzdC1ub24tcmVhY3Qtc3RhdGljc1wiOiBcIl4zLjMuMVwiXG5cdH0sXG5cdHBlZXJEZXBlbmRlbmNpZXM6IHtcblx0XHRyZWFjdDogXCI+PTE2LjguMFwiXG5cdH0sXG5cdHBlZXJEZXBlbmRlbmNpZXNNZXRhOiB7XG5cdFx0XCJAdHlwZXMvcmVhY3RcIjoge1xuXHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHR9XG5cdH0sXG5cdGRldkRlcGVuZGVuY2llczoge1xuXHRcdFwiQGRlZmluaXRlbHl0eXBlZC9kdHNsaW50XCI6IFwiMC4wLjExMlwiLFxuXHRcdFwiQGVtb3Rpb24vY3NzXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY3NzLXByZXR0aWZpZXJcIjogXCIxLjEuM1wiLFxuXHRcdFwiQGVtb3Rpb24vc2VydmVyXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc3R5bGVkXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiaHRtbC10YWctbmFtZXNcIjogXCJeMS4xLjJcIixcblx0XHRyZWFjdDogXCIxNi4xNC4wXCIsXG5cdFx0XCJzdmctdGFnLW5hbWVzXCI6IFwiXjEuMS4xXCIsXG5cdFx0dHlwZXNjcmlwdDogXCJeNC41LjVcIlxuXHR9LFxuXHRyZXBvc2l0b3J5OiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vdHJlZS9tYWluL3BhY2thZ2VzL3JlYWN0XCIsXG5cdHB1Ymxpc2hDb25maWc6IHtcblx0XHRhY2Nlc3M6IFwicHVibGljXCJcblx0fSxcblx0XCJ1bWQ6bWFpblwiOiBcImRpc3QvZW1vdGlvbi1yZWFjdC51bWQubWluLmpzXCIsXG5cdHByZWNvbnN0cnVjdDoge1xuXHRcdGVudHJ5cG9pbnRzOiBbXG5cdFx0XHRcIi4vaW5kZXguanNcIixcblx0XHRcdFwiLi9qc3gtcnVudGltZS5qc1wiLFxuXHRcdFx0XCIuL2pzeC1kZXYtcnVudGltZS5qc1wiLFxuXHRcdFx0XCIuL19pc29sYXRlZC1obnJzLmpzXCJcblx0XHRdLFxuXHRcdHVtZE5hbWU6IFwiZW1vdGlvblJlYWN0XCIsXG5cdFx0ZXhwb3J0czoge1xuXHRcdFx0ZW52Q29uZGl0aW9uczogW1xuXHRcdFx0XHRcImJyb3dzZXJcIixcblx0XHRcdFx0XCJ3b3JrZXJcIlxuXHRcdFx0XSxcblx0XHRcdGV4dHJhOiB7XG5cdFx0XHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFx0XHRcIi4vbWFjcm9cIjoge1xuXHRcdFx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uZC50c1wiXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxudmFyIGpzeCA9IGZ1bmN0aW9uIGpzeCh0eXBlLCBwcm9wcykge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBpZiAocHJvcHMgPT0gbnVsbCB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgJ2NzcycpKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gIH1cblxuICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgY3JlYXRlRWxlbWVudEFyZ0FycmF5ID0gbmV3IEFycmF5KGFyZ3NMZW5ndGgpO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMF0gPSBFbW90aW9uO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMV0gPSBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpO1xuXG4gIGZvciAodmFyIGkgPSAyOyBpIDwgYXJnc0xlbmd0aDsgaSsrKSB7XG4gICAgY3JlYXRlRWxlbWVudEFyZ0FycmF5W2ldID0gYXJnc1tpXTtcbiAgfSAvLyAkRmxvd0ZpeE1lXG5cblxuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShudWxsLCBjcmVhdGVFbGVtZW50QXJnQXJyYXkpO1xufTtcblxudmFyIHdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCA9IGZhbHNlOyAvLyBtYWludGFpbiBwbGFjZSBvdmVyIHJlcmVuZGVycy5cbi8vIGluaXRpYWwgcmVuZGVyIGZyb20gYnJvd3NlciwgaW5zZXJ0QmVmb3JlIGNvbnRleHQuc2hlZXQudGFnc1swXSBvciBpZiBhIHN0eWxlIGhhc24ndCBiZWVuIGluc2VydGVkIHRoZXJlIHlldCwgYXBwZW5kQ2hpbGRcbi8vIGluaXRpYWwgY2xpZW50LXNpZGUgcmVuZGVyIGZyb20gU1NSLCB1c2UgcGxhY2Ugb2YgaHlkcmF0aW5nIHRhZ1xuXG52YXIgR2xvYmFsID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgJiYgKCAvLyBjaGVjayBmb3IgY2xhc3NOYW1lIGFzIHdlbGwgc2luY2UgdGhlIHVzZXIgaXNcbiAgLy8gcHJvYmFibHkgdXNpbmcgdGhlIGN1c3RvbSBjcmVhdGVFbGVtZW50IHdoaWNoXG4gIC8vIG1lYW5zIGl0IHdpbGwgYmUgdHVybmVkIGludG8gYSBjbGFzc05hbWUgcHJvcFxuICAvLyAkRmxvd0ZpeE1lIEkgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gYWRkIGl0IHRvIHRoZSB0eXBlIHNpbmNlIGl0IHNob3VsZG4ndCBiZSB1c2VkXG4gIHByb3BzLmNsYXNzTmFtZSB8fCBwcm9wcy5jc3MpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIHRoZSBjc3MgcHJvcCBvbiBHbG9iYWwsIGRpZCB5b3UgbWVhbiB0byB1c2UgdGhlIHN0eWxlcyBwcm9wIGluc3RlYWQ/XCIpO1xuICAgIHdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCA9IHRydWU7XG4gIH1cblxuICB2YXIgc3R5bGVzID0gcHJvcHMuc3R5bGVzO1xuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhbc3R5bGVzXSwgdW5kZWZpbmVkLCBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCkpO1xuXG4gIGlmICghaXNCcm93c2VyJDEpIHtcbiAgICB2YXIgX3JlZjtcblxuICAgIHZhciBzZXJpYWxpemVkTmFtZXMgPSBzZXJpYWxpemVkLm5hbWU7XG4gICAgdmFyIHNlcmlhbGl6ZWRTdHlsZXMgPSBzZXJpYWxpemVkLnN0eWxlcztcbiAgICB2YXIgbmV4dCA9IHNlcmlhbGl6ZWQubmV4dDtcblxuICAgIHdoaWxlIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlcmlhbGl6ZWROYW1lcyArPSAnICcgKyBuZXh0Lm5hbWU7XG4gICAgICBzZXJpYWxpemVkU3R5bGVzICs9IG5leHQuc3R5bGVzO1xuICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkQ2FjaGUgPSBjYWNoZS5jb21wYXQgPT09IHRydWU7XG4gICAgdmFyIHJ1bGVzID0gY2FjaGUuaW5zZXJ0KFwiXCIsIHtcbiAgICAgIG5hbWU6IHNlcmlhbGl6ZWROYW1lcyxcbiAgICAgIHN0eWxlczogc2VyaWFsaXplZFN0eWxlc1xuICAgIH0sIGNhY2hlLnNoZWV0LCBzaG91bGRDYWNoZSk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIChfcmVmID0ge30sIF9yZWZbXCJkYXRhLWVtb3Rpb25cIl0gPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWwgXCIgKyBzZXJpYWxpemVkTmFtZXMsIF9yZWYuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB7XG4gICAgICBfX2h0bWw6IHJ1bGVzXG4gICAgfSwgX3JlZi5ub25jZSA9IGNhY2hlLnNoZWV0Lm5vbmNlLCBfcmVmKSk7XG4gIH0gLy8geWVzLCBpIGtub3cgdGhlc2UgaG9va3MgYXJlIHVzZWQgY29uZGl0aW9uYWxseVxuICAvLyBidXQgaXQgaXMgYmFzZWQgb24gYSBjb25zdGFudCB0aGF0IHdpbGwgbmV2ZXIgY2hhbmdlIGF0IHJ1bnRpbWVcbiAgLy8gaXQncyBlZmZlY3RpdmVseSBsaWtlIGhhdmluZyB0d28gaW1wbGVtZW50YXRpb25zIGFuZCBzd2l0Y2hpbmcgdGhlbSBvdXRcbiAgLy8gc28gaXQncyBub3QgYWN0dWFsbHkgYnJlYWtpbmcgYW55dGhpbmdcblxuXG4gIHZhciBzaGVldFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBrZXkgPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWxcIjsgLy8gdXNlIGNhc2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi9pc3N1ZXMvMjY3NVxuXG4gICAgdmFyIHNoZWV0ID0gbmV3IGNhY2hlLnNoZWV0LmNvbnN0cnVjdG9yKHtcbiAgICAgIGtleToga2V5LFxuICAgICAgbm9uY2U6IGNhY2hlLnNoZWV0Lm5vbmNlLFxuICAgICAgY29udGFpbmVyOiBjYWNoZS5zaGVldC5jb250YWluZXIsXG4gICAgICBzcGVlZHk6IGNhY2hlLnNoZWV0LmlzU3BlZWR5XG4gICAgfSk7XG4gICAgdmFyIHJlaHlkcmF0aW5nID0gZmFsc2U7IC8vICRGbG93Rml4TWVcblxuICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcInN0eWxlW2RhdGEtZW1vdGlvbj1cXFwiXCIgKyBrZXkgKyBcIiBcIiArIHNlcmlhbGl6ZWQubmFtZSArIFwiXFxcIl1cIik7XG5cbiAgICBpZiAoY2FjaGUuc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGNhY2hlLnNoZWV0LnRhZ3NbMF07XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlaHlkcmF0aW5nID0gdHJ1ZTsgLy8gY2xlYXIgdGhlIGhhc2ggc28gdGhpcyBub2RlIHdvbid0IGJlIHJlY29nbml6YWJsZSBhcyByZWh5ZHJhdGFibGUgYnkgb3RoZXIgPEdsb2JhbC8+c1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywga2V5KTtcbiAgICAgIHNoZWV0Lmh5ZHJhdGUoW25vZGVdKTtcbiAgICB9XG5cbiAgICBzaGVldFJlZi5jdXJyZW50ID0gW3NoZWV0LCByZWh5ZHJhdGluZ107XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfTtcbiAgfSwgW2NhY2hlXSk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0UmVmQ3VycmVudCA9IHNoZWV0UmVmLmN1cnJlbnQ7XG4gICAgdmFyIHNoZWV0ID0gc2hlZXRSZWZDdXJyZW50WzBdLFxuICAgICAgICByZWh5ZHJhdGluZyA9IHNoZWV0UmVmQ3VycmVudFsxXTtcblxuICAgIGlmIChyZWh5ZHJhdGluZykge1xuICAgICAgc2hlZXRSZWZDdXJyZW50WzFdID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZWQubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBpbnNlcnQga2V5ZnJhbWVzXG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQubmV4dCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgdGhlbiBpdCB3aWxsIGJlIG51bGwgc28gdGhlIHN0eWxlIGVsZW1lbnQgd2lsbCBiZSBhcHBlbmRlZFxuICAgICAgdmFyIGVsZW1lbnQgPSBzaGVldC50YWdzW3NoZWV0LnRhZ3MubGVuZ3RoIC0gMV0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgc2hlZXQuYmVmb3JlID0gZWxlbWVudDtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfVxuXG4gICAgY2FjaGUuaW5zZXJ0KFwiXCIsIHNlcmlhbGl6ZWQsIHNoZWV0LCBmYWxzZSk7XG4gIH0sIFtjYWNoZSwgc2VyaWFsaXplZC5uYW1lXSk7XG4gIHJldHVybiBudWxsO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEdsb2JhbC5kaXNwbGF5TmFtZSA9ICdFbW90aW9uR2xvYmFsJztcbn1cblxuZnVuY3Rpb24gY3NzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVN0eWxlcyhhcmdzKTtcbn1cblxudmFyIGtleWZyYW1lcyA9IGZ1bmN0aW9uIGtleWZyYW1lcygpIHtcbiAgdmFyIGluc2VydGFibGUgPSBjc3MuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB2YXIgbmFtZSA9IFwiYW5pbWF0aW9uLVwiICsgaW5zZXJ0YWJsZS5uYW1lOyAvLyAkRmxvd0ZpeE1lXG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogXCJAa2V5ZnJhbWVzIFwiICsgbmFtZSArIFwie1wiICsgaW5zZXJ0YWJsZS5zdHlsZXMgKyBcIn1cIixcbiAgICBhbmltOiAxLFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIl9FTU9fXCIgKyB0aGlzLm5hbWUgKyBcIl9cIiArIHRoaXMuc3R5bGVzICsgXCJfRU1PX1wiO1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBjbGFzc25hbWVzID0gZnVuY3Rpb24gY2xhc3NuYW1lcyhhcmdzKSB7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgY2xzID0gJyc7XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT0gbnVsbCkgY29udGludWU7XG4gICAgdmFyIHRvQWRkID0gdm9pZCAwO1xuXG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgICB0b0FkZCA9IGNsYXNzbmFtZXMoYXJnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgYXJnLnN0eWxlcyAhPT0gdW5kZWZpbmVkICYmIGFyZy5uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignWW91IGhhdmUgcGFzc2VkIHN0eWxlcyBjcmVhdGVkIHdpdGggYGNzc2AgZnJvbSBgQGVtb3Rpb24vcmVhY3RgIHBhY2thZ2UgdG8gdGhlIGBjeGAuXFxuJyArICdgY3hgIGlzIG1lYW50IHRvIGNvbXBvc2UgY2xhc3MgbmFtZXMgKHN0cmluZ3MpIHNvIHlvdSBzaG91bGQgY29udmVydCB0aG9zZSBzdHlsZXMgdG8gYSBjbGFzcyBuYW1lIGJ5IHBhc3NpbmcgdGhlbSB0byB0aGUgYGNzc2AgcmVjZWl2ZWQgZnJvbSA8Q2xhc3NOYW1lcy8+IGNvbXBvbmVudC4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG9BZGQgPSAnJztcblxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhcmcpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ1trXSAmJiBrKSB7XG4gICAgICAgICAgICAgICAgdG9BZGQgJiYgKHRvQWRkICs9ICcgJyk7XG4gICAgICAgICAgICAgICAgdG9BZGQgKz0gaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICB0b0FkZCA9IGFyZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b0FkZCkge1xuICAgICAgY2xzICYmIChjbHMgKz0gJyAnKTtcbiAgICAgIGNscyArPSB0b0FkZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xzO1xufTtcblxuZnVuY3Rpb24gbWVyZ2UocmVnaXN0ZXJlZCwgY3NzLCBjbGFzc05hbWUpIHtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbXTtcbiAgdmFyIHJhd0NsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lKTtcblxuICBpZiAocmVnaXN0ZXJlZFN0eWxlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHJldHVybiByYXdDbGFzc05hbWUgKyBjc3MocmVnaXN0ZXJlZFN0eWxlcyk7XG59XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZEFyciA9IF9yZWYuc2VyaWFsaXplZEFycjtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmlhbGl6ZWRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZEFycltpXSwgZmFsc2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgQ2xhc3NOYW1lcyA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICB2YXIgaGFzUmVuZGVyZWQgPSBmYWxzZTtcbiAgdmFyIHNlcmlhbGl6ZWRBcnIgPSBbXTtcblxuICB2YXIgY3NzID0gZnVuY3Rpb24gY3NzKCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NzcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoYXJncywgY2FjaGUucmVnaXN0ZXJlZCk7XG4gICAgc2VyaWFsaXplZEFyci5wdXNoKHNlcmlhbGl6ZWQpOyAvLyByZWdpc3RyYXRpb24gaGFzIHRvIGhhcHBlbiBoZXJlIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBtaWdodCBnZXQgY29uc3VtZWQgYnkgYGN4YFxuXG4gICAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGZhbHNlKTtcbiAgICByZXR1cm4gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIH07XG5cbiAgdmFyIGN4ID0gZnVuY3Rpb24gY3goKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3ggY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKGNhY2hlLnJlZ2lzdGVyZWQsIGNzcywgY2xhc3NuYW1lcyhhcmdzKSk7XG4gIH07XG5cbiAgdmFyIGNvbnRlbnQgPSB7XG4gICAgY3NzOiBjc3MsXG4gICAgY3g6IGN4LFxuICAgIHRoZW1lOiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbiAgfTtcbiAgdmFyIGVsZSA9IHByb3BzLmNoaWxkcmVuKGNvbnRlbnQpO1xuICBoYXNSZW5kZXJlZCA9IHRydWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWRBcnI6IHNlcmlhbGl6ZWRBcnJcbiAgfSksIGVsZSk7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgQ2xhc3NOYW1lcy5kaXNwbGF5TmFtZSA9ICdFbW90aW9uQ2xhc3NOYW1lcyc7XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBpc0Jyb3dzZXIgPSBcIm9iamVjdFwiICE9PSAndW5kZWZpbmVkJzsgLy8gIzE3MjcsICMyOTA1IGZvciBzb21lIHJlYXNvbiBKZXN0IGFuZCBWaXRlc3QgZXZhbHVhdGUgbW9kdWxlcyB0d2ljZSBpZiBzb21lIGNvbnN1bWluZyBtb2R1bGUgZ2V0cyBtb2NrZWRcblxuICB2YXIgaXNUZXN0RW52ID0gdHlwZW9mIGplc3QgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB2aSAhPT0gJ3VuZGVmaW5lZCc7XG5cbiAgaWYgKGlzQnJvd3NlciAmJiAhaXNUZXN0RW52KSB7XG4gICAgLy8gZ2xvYmFsVGhpcyBoYXMgd2lkZSBicm93c2VyIHN1cHBvcnQgLSBodHRwczovL2Nhbml1c2UuY29tLz9zZWFyY2g9Z2xvYmFsVGhpcywgTm9kZS5qcyAxMiBhbmQgbGF0ZXJcbiAgICB2YXIgZ2xvYmFsQ29udGV4dCA9IC8vICRGbG93SWdub3JlXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgOiBpc0Jyb3dzZXIgPyB3aW5kb3cgOiBnbG9iYWw7XG4gICAgdmFyIGdsb2JhbEtleSA9IFwiX19FTU9USU9OX1JFQUNUX1wiICsgcGtnLnZlcnNpb24uc3BsaXQoJy4nKVswXSArIFwiX19cIjtcblxuICAgIGlmIChnbG9iYWxDb250ZXh0W2dsb2JhbEtleV0pIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGFyZSBsb2FkaW5nIEBlbW90aW9uL3JlYWN0IHdoZW4gaXQgaXMgYWxyZWFkeSBsb2FkZWQuIFJ1bm5pbmcgJyArICdtdWx0aXBsZSBpbnN0YW5jZXMgbWF5IGNhdXNlIHByb2JsZW1zLiBUaGlzIGNhbiBoYXBwZW4gaWYgbXVsdGlwbGUgJyArICd2ZXJzaW9ucyBhcmUgdXNlZCwgb3IgaWYgbXVsdGlwbGUgYnVpbGRzIG9mIHRoZSBzYW1lIHZlcnNpb24gYXJlICcgKyAndXNlZC4nKTtcbiAgICB9XG5cbiAgICBnbG9iYWxDb250ZXh0W2dsb2JhbEtleV0gPSB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCB7IENsYXNzTmFtZXMsIEdsb2JhbCwganN4IGFzIGNyZWF0ZUVsZW1lbnQsIGNzcywganN4LCBrZXlmcmFtZXMgfTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXCJ1c2UgY2xpZW50XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfY3JlYXRlU3ZnSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvY3JlYXRlU3ZnSWNvblwiKSk7XG52YXIgX2pzeFJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG52YXIgX2RlZmF1bHQgPSAoMCwgX2NyZWF0ZVN2Z0ljb24uZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcInBhdGhcIiwge1xuICBkOiBcIk0yMS45OSA0YzAtMS4xLS44OS0yLTEuOTktMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE0bDQgNC0uMDEtMTh6TTIwIDR2MTMuMTdMMTguODMgMTZINFY0aDE2ek02IDEyaDEydjJINnptMC0zaDEydjJINnptMC0zaDEydjJINnpcIlxufSksICdDb21tZW50T3V0bGluZWQnKTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXCJ1c2UgY2xpZW50XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfY3JlYXRlU3ZnSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvY3JlYXRlU3ZnSWNvblwiKSk7XG52YXIgX2pzeFJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG52YXIgX2RlZmF1bHQgPSAoMCwgX2NyZWF0ZVN2Z0ljb24uZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcInBhdGhcIiwge1xuICBkOiBcIk0xMiAzIDEgOWw0IDIuMTh2NkwxMiAyMWw3LTMuODJ2LTZsMi0xLjA5VjE3aDJWOUwxMiAzem02LjgyIDZMMTIgMTIuNzIgNS4xOCA5IDEyIDUuMjggMTguODIgOXpNMTcgMTUuOTlsLTUgMi43My01LTIuNzN2LTMuNzJMMTIgMTVsNS0yLjczdjMuNzJ6XCJcbn0pLCAnU2Nob29sT3V0bGluZWQnKTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25Hcm91cFV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQnV0dG9uR3JvdXAnLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkdyb3VwQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUJ1dHRvbkdyb3VwJywgWydyb290JywgJ2NvbnRhaW5lZCcsICdvdXRsaW5lZCcsICd0ZXh0JywgJ2Rpc2FibGVFbGV2YXRpb24nLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ3ZlcnRpY2FsJywgJ2dyb3VwZWQnLCAnZ3JvdXBlZEhvcml6b250YWwnLCAnZ3JvdXBlZFZlcnRpY2FsJywgJ2dyb3VwZWRUZXh0JywgJ2dyb3VwZWRUZXh0SG9yaXpvbnRhbCcsICdncm91cGVkVGV4dFZlcnRpY2FsJywgJ2dyb3VwZWRUZXh0UHJpbWFyeScsICdncm91cGVkVGV4dFNlY29uZGFyeScsICdncm91cGVkT3V0bGluZWQnLCAnZ3JvdXBlZE91dGxpbmVkSG9yaXpvbnRhbCcsICdncm91cGVkT3V0bGluZWRWZXJ0aWNhbCcsICdncm91cGVkT3V0bGluZWRQcmltYXJ5JywgJ2dyb3VwZWRPdXRsaW5lZFNlY29uZGFyeScsICdncm91cGVkQ29udGFpbmVkJywgJ2dyb3VwZWRDb250YWluZWRIb3Jpem9udGFsJywgJ2dyb3VwZWRDb250YWluZWRWZXJ0aWNhbCcsICdncm91cGVkQ29udGFpbmVkUHJpbWFyeScsICdncm91cGVkQ29udGFpbmVkU2Vjb25kYXJ5J10pO1xuZXhwb3J0IGRlZmF1bHQgYnV0dG9uR3JvdXBDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVFbGV2YXRpb25cIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJkaXNhYmxlUmlwcGxlXCIsIFwiZnVsbFdpZHRoXCIsIFwib3JpZW50YXRpb25cIiwgXCJzaXplXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IGJ1dHRvbkdyb3VwQ2xhc3NlcywgeyBnZXRCdXR0b25Hcm91cFV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uR3JvdXBDbGFzc2VzJztcbmltcG9ydCBCdXR0b25Hcm91cENvbnRleHQgZnJvbSAnLi9CdXR0b25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IG92ZXJyaWRlc1Jlc29sdmVyID0gKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgY29uc3Qge1xuICAgIG93bmVyU3RhdGVcbiAgfSA9IHByb3BzO1xuICByZXR1cm4gW3tcbiAgICBbYCYgLiR7YnV0dG9uR3JvdXBDbGFzc2VzLmdyb3VwZWR9YF06IHN0eWxlcy5ncm91cGVkXG4gIH0sIHtcbiAgICBbYCYgLiR7YnV0dG9uR3JvdXBDbGFzc2VzLmdyb3VwZWR9YF06IHN0eWxlc1tgZ3JvdXBlZCR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLm9yaWVudGF0aW9uKX1gXVxuICB9LCB7XG4gICAgW2AmIC4ke2J1dHRvbkdyb3VwQ2xhc3Nlcy5ncm91cGVkfWBdOiBzdHlsZXNbYGdyb3VwZWQke2NhcGl0YWxpemUob3duZXJTdGF0ZS52YXJpYW50KX1gXVxuICB9LCB7XG4gICAgW2AmIC4ke2J1dHRvbkdyb3VwQ2xhc3Nlcy5ncm91cGVkfWBdOiBzdHlsZXNbYGdyb3VwZWQke2NhcGl0YWxpemUob3duZXJTdGF0ZS52YXJpYW50KX0ke2NhcGl0YWxpemUob3duZXJTdGF0ZS5vcmllbnRhdGlvbil9YF1cbiAgfSwge1xuICAgIFtgJiAuJHtidXR0b25Hcm91cENsYXNzZXMuZ3JvdXBlZH1gXTogc3R5bGVzW2Bncm91cGVkJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9JHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdXG4gIH0sIHN0eWxlcy5yb290LCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uID09PSB0cnVlICYmIHN0eWxlcy5kaXNhYmxlRWxldmF0aW9uLCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiBzdHlsZXMuZnVsbFdpZHRoLCBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHN0eWxlcy52ZXJ0aWNhbF07XG59O1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgY29sb3IsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUVsZXZhdGlvbixcbiAgICBmdWxsV2lkdGgsXG4gICAgb3JpZW50YXRpb24sXG4gICAgdmFyaWFudFxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgb3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgJ3ZlcnRpY2FsJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnLCBkaXNhYmxlRWxldmF0aW9uICYmICdkaXNhYmxlRWxldmF0aW9uJ10sXG4gICAgZ3JvdXBlZDogWydncm91cGVkJywgYGdyb3VwZWQke2NhcGl0YWxpemUob3JpZW50YXRpb24pfWAsIGBncm91cGVkJHtjYXBpdGFsaXplKHZhcmlhbnQpfWAsIGBncm91cGVkJHtjYXBpdGFsaXplKHZhcmlhbnQpfSR7Y2FwaXRhbGl6ZShvcmllbnRhdGlvbil9YCwgYGdyb3VwZWQke2NhcGl0YWxpemUodmFyaWFudCl9JHtjYXBpdGFsaXplKGNvbG9yKX1gLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvbkdyb3VwVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBCdXR0b25Hcm91cFJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbkdyb3VwJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlclxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzXG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1syXVxufSwgb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHtcbiAgYm94U2hhZG93OiAnbm9uZSdcbn0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgd2lkdGg6ICcxMDAlJ1xufSwgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyAmJiB7XG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nXG59LCB7XG4gIFtgJiAuJHtidXR0b25Hcm91cENsYXNzZXMuZ3JvdXBlZH1gXTogX2V4dGVuZHMoe1xuICAgIG1pbldpZHRoOiA0MCxcbiAgICAnJjpub3QoOmZpcnN0LW9mLXR5cGUpJzogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gICAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAwLFxuICAgICAgYm9yZGVyQm90dG9tTGVmdFJhZGl1czogMFxuICAgIH0sIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYge1xuICAgICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IDAsXG4gICAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAwXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gICAgICBtYXJnaW5MZWZ0OiAtMVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHtcbiAgICAgIG1hcmdpblRvcDogLTFcbiAgICB9KSxcbiAgICAnJjpub3QoOmxhc3Qtb2YtdHlwZSknOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIHtcbiAgICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAwLFxuICAgICAgYm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6IDBcbiAgICB9LCBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHtcbiAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiAwLFxuICAgICAgYm9yZGVyQm90dG9tTGVmdFJhZGl1czogMFxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gICAgICBib3JkZXJSaWdodDogdGhlbWUudmFycyA/IGAxcHggc29saWQgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5jb21tb24ub25CYWNrZ3JvdW5kQ2hhbm5lbH0gLyAwLjIzKWAgOiBgMXB4IHNvbGlkICR7dGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gJ3JnYmEoMCwgMCwgMCwgMC4yMyknIDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMyknfWAsXG4gICAgICBbYCYuJHtidXR0b25Hcm91cENsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICAgICAgYm9yZGVyUmlnaHQ6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWR9YFxuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYge1xuICAgICAgYm9yZGVyQm90dG9tOiB0aGVtZS52YXJzID8gYDFweCBzb2xpZCByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLmNvbW1vbi5vbkJhY2tncm91bmRDaGFubmVsfSAvIDAuMjMpYCA6IGAxcHggc29saWQgJHt0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyAncmdiYSgwLCAwLCAwLCAwLjIzKScgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzKSd9YCxcbiAgICAgIFtgJi4ke2J1dHRvbkdyb3VwQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgICAgICBib3JkZXJCb3R0b206IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWR9YFxuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBib3JkZXJDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvIDAuNSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCAwLjUpXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gICAgICBib3JkZXJSaWdodENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYge1xuICAgICAgYm9yZGVyQm90dG9tQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmdyZXlbNDAwXX1gLFxuICAgICAgW2AmLiR7YnV0dG9uR3JvdXBDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgICAgIGJvcmRlclJpZ2h0OiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkfWBcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYge1xuICAgICAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZ3JleVs0MDBdfWAsXG4gICAgICBbYCYuJHtidXR0b25Hcm91cENsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICAgICAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkfWBcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBib3JkZXJDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uZGFya1xuICAgIH0sIHtcbiAgICAgICcmOmhvdmVyJzogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYge1xuICAgICAgICBib3JkZXJSaWdodENvbG9yOiAnY3VycmVudENvbG9yJ1xuICAgICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYge1xuICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogJ2N1cnJlbnRDb2xvcidcbiAgICAgIH0pXG4gICAgfSksXG4gICAgJyY6aG92ZXInOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBib3hTaGFkb3c6ICdub25lJ1xuICAgIH0pXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0pXG59KSk7XG5jb25zdCBCdXR0b25Hcm91cCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJ1dHRvbkdyb3VwKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlCdXR0b25Hcm91cCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBjb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRWxldmF0aW9uID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAgICAgb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCcsXG4gICAgICBzaXplID0gJ21lZGl1bScsXG4gICAgICB2YXJpYW50ID0gJ291dGxpbmVkJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgY29tcG9uZW50LFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGRpc2FibGVSaXBwbGUsXG4gICAgZnVsbFdpZHRoLFxuICAgIG9yaWVudGF0aW9uLFxuICAgIHNpemUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBjb250ZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5ncm91cGVkLFxuICAgIGNvbG9yLFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGRpc2FibGVSaXBwbGUsXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdmFyaWFudFxuICB9KSwgW2NvbG9yLCBkaXNhYmxlZCwgZGlzYWJsZUVsZXZhdGlvbiwgZGlzYWJsZUZvY3VzUmlwcGxlLCBkaXNhYmxlUmlwcGxlLCBmdWxsV2lkdGgsIHNpemUsIHZhcmlhbnQsIGNsYXNzZXMuZ3JvdXBlZF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQnV0dG9uR3JvdXBSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICByb2xlOiBcImdyb3VwXCIsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGNvbnRleHQsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEJ1dHRvbkdyb3VwLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG5vIGVsZXZhdGlvbiBpcyB1c2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVsZXZhdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBidXR0b24ga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJ1dHRvbiByaXBwbGUgZWZmZWN0IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBidXR0b25zIHdpbGwgdGFrZSB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgb3JpZW50YXRpb24gKGxheW91dCBmbG93IGRpcmVjdGlvbikuXG4gICAqIEBkZWZhdWx0ICdob3Jpem9udGFsJ1xuICAgKi9cbiAgb3JpZW50YXRpb246IFByb3BUeXBlcy5vbmVPZihbJ2hvcml6b250YWwnLCAndmVydGljYWwnXSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBgc21hbGxgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRlbnNlIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ291dGxpbmVkJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydjb250YWluZWQnLCAnb3V0bGluZWQnLCAndGV4dCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uR3JvdXA7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgVGhlbWVDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBUaGVtZUNvbnRleHQuZGlzcGxheU5hbWUgPSAnVGhlbWVDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IFRoZW1lQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVGhlbWVDb250ZXh0IGZyb20gJy4vVGhlbWVDb250ZXh0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBSZWFjdC51c2VEZWJ1Z1ZhbHVlKHRoZW1lKTtcbiAgfVxuICByZXR1cm4gdGhlbWU7XG59IiwiY29uc3QgaGFzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xuZXhwb3J0IGRlZmF1bHQgaGFzU3ltYm9sID8gU3ltYm9sLmZvcignbXVpLm5lc3RlZCcpIDogJ19fVEhFTUVfTkVTVEVEX18nOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGV4YWN0UHJvcCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IFRoZW1lQ29udGV4dCBmcm9tICcuLi91c2VUaGVtZS9UaGVtZUNvbnRleHQnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4uL3VzZVRoZW1lJztcbmltcG9ydCBuZXN0ZWQgZnJvbSAnLi9uZXN0ZWQnO1xuXG4vLyBUbyBzdXBwb3J0IGNvbXBvc2l0aW9uIG9mIHRoZW1lLlxuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIG1lcmdlT3V0ZXJMb2NhbFRoZW1lKG91dGVyVGhlbWUsIGxvY2FsVGhlbWUpIHtcbiAgaWYgKHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgbWVyZ2VkVGhlbWUgPSBsb2NhbFRoZW1lKG91dGVyVGhlbWUpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoIW1lcmdlZFRoZW1lKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IFlvdSBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHlvdXIgdGhlbWUgZnVuY3Rpb24sIGkuZS4nLCAnPFRoZW1lUHJvdmlkZXIgdGhlbWU9eygpID0+ICh7fSl9IC8+J10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VkVGhlbWU7XG4gIH1cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRlclRoZW1lLCBsb2NhbFRoZW1lKTtcbn1cblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCB0YWtlcyBhIGB0aGVtZWAgcHJvcC5cbiAqIEl0IG1ha2VzIHRoZSBgdGhlbWVgIGF2YWlsYWJsZSBkb3duIHRoZSBSZWFjdCB0cmVlIHRoYW5rcyB0byBSZWFjdCBjb250ZXh0LlxuICogVGhpcyBjb21wb25lbnQgc2hvdWxkIHByZWZlcmFibHkgYmUgdXNlZCBhdCAqKnRoZSByb290IG9mIHlvdXIgY29tcG9uZW50IHRyZWUqKi5cbiAqL1xuZnVuY3Rpb24gVGhlbWVQcm92aWRlcihwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgdGhlbWU6IGxvY2FsVGhlbWVcbiAgfSA9IHByb3BzO1xuICBjb25zdCBvdXRlclRoZW1lID0gdXNlVGhlbWUoKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAob3V0ZXJUaGVtZSA9PT0gbnVsbCAmJiB0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogWW91IGFyZSBwcm92aWRpbmcgYSB0aGVtZSBmdW5jdGlvbiBwcm9wIHRvIHRoZSBUaGVtZVByb3ZpZGVyIGNvbXBvbmVudDonLCAnPFRoZW1lUHJvdmlkZXIgdGhlbWU9e291dGVyVGhlbWUgPT4gb3V0ZXJUaGVtZX0gLz4nLCAnJywgJ0hvd2V2ZXIsIG5vIG91dGVyIHRoZW1lIGlzIHByZXNlbnQuJywgJ01ha2Ugc3VyZSBhIHRoZW1lIGlzIGFscmVhZHkgaW5qZWN0ZWQgaGlnaGVyIGluIHRoZSBSZWFjdCB0cmVlICcgKyAnb3IgcHJvdmlkZSBhIHRoZW1lIG9iamVjdC4nXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3Qgb3V0cHV0ID0gb3V0ZXJUaGVtZSA9PT0gbnVsbCA/IGxvY2FsVGhlbWUgOiBtZXJnZU91dGVyTG9jYWxUaGVtZShvdXRlclRoZW1lLCBsb2NhbFRoZW1lKTtcbiAgICBpZiAob3V0cHV0ICE9IG51bGwpIHtcbiAgICAgIG91dHB1dFtuZXN0ZWRdID0gb3V0ZXJUaGVtZSAhPT0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSwgW2xvY2FsVGhlbWUsIG91dGVyVGhlbWVdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRoZW1lQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiB0aGVtZSxcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFlvdXIgY29tcG9uZW50IHRyZWUuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBBIHRoZW1lIG9iamVjdC4gWW91IGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZXh0ZW5kIHRoZSBvdXRlciB0aGVtZS5cbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuZnVuY10pLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyA9IGV4YWN0UHJvcChUaGVtZVByb3ZpZGVyLnByb3BUeXBlcykgOiB2b2lkIDA7XG59XG5leHBvcnQgZGVmYXVsdCBUaGVtZVByb3ZpZGVyOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciBhcyBNdWlUaGVtZVByb3ZpZGVyLCB1c2VUaGVtZSBhcyB1c2VQcml2YXRlVGhlbWUgfSBmcm9tICdAbXVpL3ByaXZhdGUtdGhlbWluZyc7XG5pbXBvcnQgeyBleGFjdFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IFRoZW1lQ29udGV4dCBhcyBTdHlsZWRFbmdpbmVUaGVtZUNvbnRleHQgfSBmcm9tICdAbXVpL3N0eWxlZC1lbmdpbmUnO1xuaW1wb3J0IHVzZVRoZW1lV2l0aG91dERlZmF1bHQgZnJvbSAnLi4vdXNlVGhlbWVXaXRob3V0RGVmYXVsdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgRU1QVFlfVEhFTUUgPSB7fTtcbmZ1bmN0aW9uIHVzZVRoZW1lU2NvcGluZyh0aGVtZUlkLCB1cHBlclRoZW1lLCBsb2NhbFRoZW1lLCBpc1ByaXZhdGUgPSBmYWxzZSkge1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgcmVzb2x2ZWRUaGVtZSA9IHRoZW1lSWQgPyB1cHBlclRoZW1lW3RoZW1lSWRdIHx8IHVwcGVyVGhlbWUgOiB1cHBlclRoZW1lO1xuICAgIGlmICh0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgbWVyZ2VkVGhlbWUgPSBsb2NhbFRoZW1lKHJlc29sdmVkVGhlbWUpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhlbWVJZCA/IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCB7XG4gICAgICAgIFt0aGVtZUlkXTogbWVyZ2VkVGhlbWVcbiAgICAgIH0pIDogbWVyZ2VkVGhlbWU7XG4gICAgICAvLyBtdXN0IHJldHVybiBhIGZ1bmN0aW9uIGZvciB0aGUgcHJpdmF0ZSB0aGVtZSB0byBOT1QgbWVyZ2Ugd2l0aCB0aGUgdXBwZXIgdGhlbWUuXG4gICAgICAvLyBzZWUgdGhlIHRlc3QgY2FzZSBcInVzZSBwcm92aWRlZCB0aGVtZSBmcm9tIGEgY2FsbGJhY2tcIiBpbiBUaGVtZVByb3ZpZGVyLnRlc3QuanNcbiAgICAgIGlmIChpc1ByaXZhdGUpIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiB0aGVtZUlkID8gX2V4dGVuZHMoe30sIHVwcGVyVGhlbWUsIHtcbiAgICAgIFt0aGVtZUlkXTogbG9jYWxUaGVtZVxuICAgIH0pIDogX2V4dGVuZHMoe30sIHVwcGVyVGhlbWUsIGxvY2FsVGhlbWUpO1xuICB9LCBbdGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSwgaXNQcml2YXRlXSk7XG59XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgbWFrZXMgdGhlIGB0aGVtZWAgYXZhaWxhYmxlIGRvd24gdGhlIFJlYWN0IHRyZWUuXG4gKiBJdCBzaG91bGQgcHJlZmVyYWJseSBiZSB1c2VkIGF0ICoqdGhlIHJvb3Qgb2YgeW91ciBjb21wb25lbnQgdHJlZSoqLlxuICpcbiAqIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+IC8vIGV4aXN0aW5nIHVzZSBjYXNlXG4gKiA8VGhlbWVQcm92aWRlciB0aGVtZT17eyBpZDogdGhlbWUgfX0+IC8vIHRoZW1lIHNjb3BpbmdcbiAqL1xuZnVuY3Rpb24gVGhlbWVQcm92aWRlcihwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgdGhlbWU6IGxvY2FsVGhlbWUsXG4gICAgdGhlbWVJZFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHVwcGVyVGhlbWUgPSB1c2VUaGVtZVdpdGhvdXREZWZhdWx0KEVNUFRZX1RIRU1FKTtcbiAgY29uc3QgdXBwZXJQcml2YXRlVGhlbWUgPSB1c2VQcml2YXRlVGhlbWUoKSB8fCBFTVBUWV9USEVNRTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAodXBwZXJUaGVtZSA9PT0gbnVsbCAmJiB0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0aGVtZUlkICYmIHVwcGVyVGhlbWUgJiYgIXVwcGVyVGhlbWVbdGhlbWVJZF0gJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IFlvdSBhcmUgcHJvdmlkaW5nIGEgdGhlbWUgZnVuY3Rpb24gcHJvcCB0byB0aGUgVGhlbWVQcm92aWRlciBjb21wb25lbnQ6JywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXtvdXRlclRoZW1lID0+IG91dGVyVGhlbWV9IC8+JywgJycsICdIb3dldmVyLCBubyBvdXRlciB0aGVtZSBpcyBwcmVzZW50LicsICdNYWtlIHN1cmUgYSB0aGVtZSBpcyBhbHJlYWR5IGluamVjdGVkIGhpZ2hlciBpbiB0aGUgUmVhY3QgdHJlZSAnICsgJ29yIHByb3ZpZGUgYSB0aGVtZSBvYmplY3QuJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICBjb25zdCBlbmdpbmVUaGVtZSA9IHVzZVRoZW1lU2NvcGluZyh0aGVtZUlkLCB1cHBlclRoZW1lLCBsb2NhbFRoZW1lKTtcbiAgY29uc3QgcHJpdmF0ZVRoZW1lID0gdXNlVGhlbWVTY29waW5nKHRoZW1lSWQsIHVwcGVyUHJpdmF0ZVRoZW1lLCBsb2NhbFRoZW1lLCB0cnVlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE11aVRoZW1lUHJvdmlkZXIsIHtcbiAgICB0aGVtZTogcHJpdmF0ZVRoZW1lLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChTdHlsZWRFbmdpbmVUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBlbmdpbmVUaGVtZSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBZb3VyIGNvbXBvbmVudCB0cmVlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQSB0aGVtZSBvYmplY3QuIFlvdSBjYW4gcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGV4dGVuZCB0aGUgb3V0ZXIgdGhlbWUuXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIGRlc2lnbiBzeXN0ZW0ncyB1bmlxdWUgaWQgZm9yIGdldHRpbmcgdGhlIGNvcnJlc3BvbmRlZCB0aGVtZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBkZXNpZ24gc3lzdGVtcy5cbiAgICovXG4gIHRoZW1lSWQ6IFByb3BUeXBlcy5zdHJpbmdcbn0gOiB2b2lkIDA7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyA9IGV4YWN0UHJvcChUaGVtZVByb3ZpZGVyLnByb3BUeXBlcykgOiB2b2lkIDA7XG59XG5leHBvcnQgZGVmYXVsdCBUaGVtZVByb3ZpZGVyOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInRoZW1lXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgYXMgU3lzdGVtVGhlbWVQcm92aWRlciB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBUSEVNRV9JRCBmcm9tICcuL2lkZW50aWZpZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIoX3JlZikge1xuICBsZXQge1xuICAgICAgdGhlbWU6IHRoZW1lSW5wdXRcbiAgICB9ID0gX3JlZixcbiAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHNjb3BlZFRoZW1lID0gdGhlbWVJbnB1dFtUSEVNRV9JRF07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTeXN0ZW1UaGVtZVByb3ZpZGVyLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICB0aGVtZUlkOiBzY29wZWRUaGVtZSA/IFRIRU1FX0lEIDogdW5kZWZpbmVkLFxuICAgIHRoZW1lOiBzY29wZWRUaGVtZSB8fCB0aGVtZUlucHV0XG4gIH0pKTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogWW91ciBjb21wb25lbnQgdHJlZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEEgdGhlbWUgb2JqZWN0LiBZb3UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBleHRlbmQgdGhlIG91dGVyIHRoZW1lLlxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5mdW5jXSkuaXNSZXF1aXJlZFxufSA6IHZvaWQgMDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpU3ZnSWNvbicsIHNsb3QpO1xufVxuY29uc3Qgc3ZnSWNvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlTdmdJY29uJywgWydyb290JywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvckFjdGlvbicsICdjb2xvckVycm9yJywgJ2NvbG9yRGlzYWJsZWQnLCAnZm9udFNpemVJbmhlcml0JywgJ2ZvbnRTaXplU21hbGwnLCAnZm9udFNpemVNZWRpdW0nLCAnZm9udFNpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IHN2Z0ljb25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJmb250U2l6ZVwiLCBcImh0bWxDb2xvclwiLCBcImluaGVyaXRWaWV3Qm94XCIsIFwidGl0bGVBY2Nlc3NcIiwgXCJ2aWV3Qm94XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vc3ZnSWNvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBmb250U2l6ZSxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBjb2xvciAhPT0gJ2luaGVyaXQnICYmIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYGZvbnRTaXplJHtjYXBpdGFsaXplKGZvbnRTaXplKX1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IFN2Z0ljb25Sb290ID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlTdmdJY29uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYGZvbnRTaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuZm9udFNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSR0cmFuc2l0aW9ucywgX3RoZW1lJHRyYW5zaXRpb25zJGNyLCBfdGhlbWUkdHJhbnNpdGlvbnMyLCBfdGhlbWUkdHlwb2dyYXBoeSwgX3RoZW1lJHR5cG9ncmFwaHkkcHhULCBfdGhlbWUkdHlwb2dyYXBoeTIsIF90aGVtZSR0eXBvZ3JhcGh5MiRweCwgX3RoZW1lJHR5cG9ncmFwaHkzLCBfdGhlbWUkdHlwb2dyYXBoeTMkcHgsIF9wYWxldHRlJG93bmVyU3RhdGUkYywgX3BhbGV0dGUsIF9wYWxldHRlMiwgX3BhbGV0dGUzO1xuICByZXR1cm4ge1xuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICB3aWR0aDogJzFlbScsXG4gICAgaGVpZ2h0OiAnMWVtJyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAvLyB0aGUgPHN2Zz4gd2lsbCBkZWZpbmUgdGhlIHByb3BlcnR5IHRoYXQgaGFzIGBjdXJyZW50Q29sb3JgXG4gICAgLy8gZS5nLiBoZXJvaWNvbnMgdXNlcyBmaWxsPVwibm9uZVwiIGFuZCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgIGZpbGw6IG93bmVyU3RhdGUuaGFzU3ZnQXNDaGlsZCA/IHVuZGVmaW5lZCA6ICdjdXJyZW50Q29sb3InLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgdHJhbnNpdGlvbjogKF90aGVtZSR0cmFuc2l0aW9ucyA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMkY3IgPSBfdGhlbWUkdHJhbnNpdGlvbnMuY3JlYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHRyYW5zaXRpb25zJGNyLmNhbGwoX3RoZW1lJHRyYW5zaXRpb25zLCAnZmlsbCcsIHtcbiAgICAgIGR1cmF0aW9uOiAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMyID0gX3RoZW1lJHRyYW5zaXRpb25zMi5kdXJhdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9uczIuc2hvcnRlclxuICAgIH0pLFxuICAgIGZvbnRTaXplOiB7XG4gICAgICBpbmhlcml0OiAnaW5oZXJpdCcsXG4gICAgICBzbWFsbDogKChfdGhlbWUkdHlwb2dyYXBoeSA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5JHB4VCA9IF90aGVtZSR0eXBvZ3JhcGh5LnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeSRweFQuY2FsbChfdGhlbWUkdHlwb2dyYXBoeSwgMjApKSB8fCAnMS4yNXJlbScsXG4gICAgICBtZWRpdW06ICgoX3RoZW1lJHR5cG9ncmFwaHkyID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkyJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkyLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTIkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTIsIDI0KSkgfHwgJzEuNXJlbScsXG4gICAgICBsYXJnZTogKChfdGhlbWUkdHlwb2dyYXBoeTMgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeTMkcHggPSBfdGhlbWUkdHlwb2dyYXBoeTMucHhUb1JlbSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0eXBvZ3JhcGh5MyRweC5jYWxsKF90aGVtZSR0eXBvZ3JhcGh5MywgMzUpKSB8fCAnMi4xODc1cmVtJ1xuICAgIH1bb3duZXJTdGF0ZS5mb250U2l6ZV0sXG4gICAgLy8gVE9ETyB2NSBkZXByZWNhdGUsIHY2IHJlbW92ZSBmb3Igc3hcbiAgICBjb2xvcjogKF9wYWxldHRlJG93bmVyU3RhdGUkYyA9IChfcGFsZXR0ZSA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZSA9IF9wYWxldHRlW293bmVyU3RhdGUuY29sb3JdKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUubWFpbikgIT0gbnVsbCA/IF9wYWxldHRlJG93bmVyU3RhdGUkYyA6IHtcbiAgICAgIGFjdGlvbjogKF9wYWxldHRlMiA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTIgPSBfcGFsZXR0ZTIuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUyLmFjdGl2ZSxcbiAgICAgIGRpc2FibGVkOiAoX3BhbGV0dGUzID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgfHwgKF9wYWxldHRlMyA9IF9wYWxldHRlMy5hY3Rpb24pID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZTMuZGlzYWJsZWQsXG4gICAgICBpbmhlcml0OiB1bmRlZmluZWRcbiAgICB9W293bmVyU3RhdGUuY29sb3JdXG4gIH07XG59KTtcbmNvbnN0IFN2Z0ljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBTdmdJY29uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlTdmdJY29uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdpbmhlcml0JyxcbiAgICAgIGNvbXBvbmVudCA9ICdzdmcnLFxuICAgICAgZm9udFNpemUgPSAnbWVkaXVtJyxcbiAgICAgIGh0bWxDb2xvcixcbiAgICAgIGluaGVyaXRWaWV3Qm94ID0gZmFsc2UsXG4gICAgICB0aXRsZUFjY2VzcyxcbiAgICAgIHZpZXdCb3ggPSAnMCAwIDI0IDI0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBoYXNTdmdBc0NoaWxkID0gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi50eXBlID09PSAnc3ZnJztcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBmb250U2l6ZSxcbiAgICBpbnN0YW5jZUZvbnRTaXplOiBpblByb3BzLmZvbnRTaXplLFxuICAgIGluaGVyaXRWaWV3Qm94LFxuICAgIHZpZXdCb3gsXG4gICAgaGFzU3ZnQXNDaGlsZFxuICB9KTtcbiAgY29uc3QgbW9yZSA9IHt9O1xuICBpZiAoIWluaGVyaXRWaWV3Qm94KSB7XG4gICAgbW9yZS52aWV3Qm94ID0gdmlld0JveDtcbiAgfVxuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoU3ZnSWNvblJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY29sb3I6IGh0bWxDb2xvcixcbiAgICBcImFyaWEtaGlkZGVuXCI6IHRpdGxlQWNjZXNzID8gdW5kZWZpbmVkIDogdHJ1ZSxcbiAgICByb2xlOiB0aXRsZUFjY2VzcyA/ICdpbWcnIDogdW5kZWZpbmVkLFxuICAgIHJlZjogcmVmXG4gIH0sIG1vcmUsIG90aGVyLCBoYXNTdmdBc0NoaWxkICYmIGNoaWxkcmVuLnByb3BzLCB7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogW2hhc1N2Z0FzQ2hpbGQgPyBjaGlsZHJlbi5wcm9wcy5jaGlsZHJlbiA6IGNoaWxkcmVuLCB0aXRsZUFjY2VzcyA/IC8qI19fUFVSRV9fKi9fanN4KFwidGl0bGVcIiwge1xuICAgICAgY2hpbGRyZW46IHRpdGxlQWNjZXNzXG4gICAgfSkgOiBudWxsXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFN2Z0ljb24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogTm9kZSBwYXNzZWQgaW50byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIFlvdSBjYW4gdXNlIHRoZSBgaHRtbENvbG9yYCBwcm9wIHRvIGFwcGx5IGEgY29sb3IgYXR0cmlidXRlIHRvIHRoZSBTVkcgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2FjdGlvbicsICdkaXNhYmxlZCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgZm9udFNpemUgYXBwbGllZCB0byB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gMjRweCwgYnV0IGNhbiBiZSBjb25maWd1cmUgdG8gaW5oZXJpdCBmb250IHNpemUuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBmb250U2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2xhcmdlJywgJ21lZGl1bScsICdzbWFsbCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQXBwbGllcyBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBodG1sQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByb290IG5vZGUgd2lsbCBpbmhlcml0IHRoZSBjdXN0b20gYGNvbXBvbmVudGAncyB2aWV3Qm94IGFuZCB0aGUgYHZpZXdCb3hgXG4gICAqIHByb3Agd2lsbCBiZSBpZ25vcmVkLlxuICAgKiBVc2VmdWwgd2hlbiB5b3Ugd2FudCB0byByZWZlcmVuY2UgYSBjdXN0b20gYGNvbXBvbmVudGAgYW5kIGhhdmUgYFN2Z0ljb25gIHBhc3MgdGhhdFxuICAgKiBgY29tcG9uZW50YCdzIHZpZXdCb3ggdG8gdGhlIHJvb3Qgbm9kZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGluaGVyaXRWaWV3Qm94OiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaGFwZS1yZW5kZXJpbmcgYXR0cmlidXRlLiBUaGUgYmVoYXZpb3Igb2YgdGhlIGRpZmZlcmVudCBvcHRpb25zIGlzIGRlc2NyaWJlZCBvbiB0aGVcbiAgICogW01ETiBXZWIgRG9jc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zaGFwZS1yZW5kZXJpbmcpLlxuICAgKiBJZiB5b3UgYXJlIGhhdmluZyBpc3N1ZXMgd2l0aCBibHVycnkgaWNvbnMgeW91IHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGlzIHByb3AuXG4gICAqL1xuICBzaGFwZVJlbmRlcmluZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgaHVtYW4tcmVhZGFibGUgdGl0bGUgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgaXQuXG4gICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkctYWNjZXNzLyNFcXVpdmFsZW50XG4gICAqL1xuICB0aXRsZUFjY2VzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gcmVkZWZpbmUgd2hhdCB0aGUgY29vcmRpbmF0ZXMgd2l0aG91dCB1bml0cyBtZWFuIGluc2lkZSBhbiBTVkcgZWxlbWVudC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBTVkcgZWxlbWVudCBpcyA1MDAgKHdpZHRoKSBieSAyMDAgKGhlaWdodCksXG4gICAqIGFuZCB5b3UgcGFzcyB2aWV3Qm94PVwiMCAwIDUwIDIwXCIsXG4gICAqIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29vcmRpbmF0ZXMgaW5zaWRlIHRoZSBTVkcgd2lsbCBnbyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIgKDAsMClcbiAgICogdG8gYm90dG9tIHJpZ2h0ICg1MCwyMCkgYW5kIGVhY2ggdW5pdCB3aWxsIGJlIHdvcnRoIDEwcHguXG4gICAqIEBkZWZhdWx0ICcwIDAgMjQgMjQnXG4gICAqL1xuICB2aWV3Qm94OiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuU3ZnSWNvbi5tdWlOYW1lID0gJ1N2Z0ljb24nO1xuZXhwb3J0IGRlZmF1bHQgU3ZnSWNvbjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFN2Z0ljb24gZnJvbSAnLi4vU3ZnSWNvbic7XG5cbi8qKlxuICogUHJpdmF0ZSBtb2R1bGUgcmVzZXJ2ZWQgZm9yIEBtdWkgcGFja2FnZXMuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdmdJY29uKHBhdGgsIGRpc3BsYXlOYW1lKSB7XG4gIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFN2Z0ljb24sIF9leHRlbmRzKHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogYCR7ZGlzcGxheU5hbWV9SWNvbmAsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogcGF0aFxuICAgIH0pKTtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIE5lZWQgdG8gc2V0IGBkaXNwbGF5TmFtZWAgb24gdGhlIGlubmVyIGNvbXBvbmVudCBmb3IgUmVhY3QubWVtby5cbiAgICAvLyBSZWFjdCBwcmlvciB0byAxNi4xNCBpZ25vcmVzIGBkaXNwbGF5TmFtZWAgb24gdGhlIHdyYXBwZXIuXG4gICAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7ZGlzcGxheU5hbWV9SWNvbmA7XG4gIH1cbiAgQ29tcG9uZW50Lm11aU5hbWUgPSBTdmdJY29uLm11aU5hbWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyggLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoQ29tcG9uZW50KSk7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVib3VuY2UgYXMgZGVib3VuY2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGRlYm91bmNlOyIsImltcG9ydCB7IHVuc3RhYmxlX2lzTXVpRWxlbWVudCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGlzTXVpRWxlbWVudDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc011aUVsZW1lbnQoZWxlbWVudCwgbXVpTmFtZXMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJiBtdWlOYW1lcy5pbmRleE9mKGVsZW1lbnQudHlwZS5tdWlOYW1lKSAhPT0gLTE7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lckRvY3VtZW50OyIsImltcG9ydCB7IHVuc3RhYmxlX293bmVyV2luZG93IGFzIG93bmVyV2luZG93IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lcldpbmRvdzsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IGFzIHVzZUVuaGFuY2VkRWZmZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIvKipcbiAqIFNhZmUgY2hhaW5lZCBmdW5jdGlvbi5cbiAqXG4gKiBXaWxsIG9ubHkgY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGlmIG5lZWRlZCxcbiAqIG90aGVyd2lzZSB3aWxsIHBhc3MgYmFjayBleGlzdGluZyBmdW5jdGlvbnMgb3IgbnVsbC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKC4uLmZ1bmNzKSB7XG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoKGFjYywgZnVuYykgPT4ge1xuICAgIGlmIChmdW5jID09IG51bGwpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgYWNjLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9LCAoKSA9PiB7fSk7XG59IiwiLy8gQ29ycmVzcG9uZHMgdG8gMTAgZnJhbWVzIGF0IDYwIEh6LlxuLy8gQSBmZXcgYnl0ZXMgcGF5bG9hZCBvdmVyaGVhZCB3aGVuIGxvZGFzaC9kZWJvdW5jZSBpcyB+MyBrQiBhbmQgZGVib3VuY2UgfjMwMCBCLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCA9IDE2Nikge1xuICBsZXQgdGltZW91dDtcbiAgZnVuY3Rpb24gZGVib3VuY2VkKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBsYXRlciA9ICgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICB9XG4gIGRlYm91bmNlZC5jbGVhciA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH07XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSJdLCJuYW1lcyI6WyJHbG9iYWwiLCJ3IiwicHJvcHMiLCJjYWNoZSIsInN0eWxlcyIsInNlcmlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJUIiwiaSIsIl9yZWYiLCJzZXJpYWxpemVkTmFtZXMiLCJuYW1lIiwic2VyaWFsaXplZFN0eWxlcyIsIm5leHQiLCJzaG91bGRDYWNoZSIsImNvbXBhdCIsInJ1bGVzIiwiaW5zZXJ0Iiwic2hlZXQiLCJrZXkiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsIm5vbmNlIiwic2hlZXRSZWYiLCJjb25zdHJ1Y3RvciIsImNvbnRhaW5lciIsInNwZWVkeSIsImlzU3BlZWR5IiwicmVoeWRyYXRpbmciLCJub2RlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwidGFncyIsImxlbmd0aCIsImJlZm9yZSIsInNldEF0dHJpYnV0ZSIsImh5ZHJhdGUiLCJjdXJyZW50IiwiZmx1c2giLCJzaGVldFJlZkN1cnJlbnQiLCJlbGVtZW50IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiY3NzIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJrZXlmcmFtZXMiLCJpbnNlcnRhYmxlIiwiYXBwbHkiLCJhbmltIiwidG9TdHJpbmciLCJ0aGlzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImV4cG9ydHMiLCJfY3JlYXRlU3ZnSWNvbiIsIl9qc3hSdW50aW1lIiwiX2RlZmF1bHQiLCJkZWZhdWx0IiwianN4IiwiZCIsImdldEJ1dHRvbkdyb3VwVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsIkJ1dHRvbkdyb3VwUm9vdCIsInN0eWxlZCIsIm92ZXJyaWRlc1Jlc29sdmVyIiwib3duZXJTdGF0ZSIsImdyb3VwZWQiLCJjYXBpdGFsaXplIiwib3JpZW50YXRpb24iLCJ2YXJpYW50IiwiY29sb3IiLCJyb290IiwiZGlzYWJsZUVsZXZhdGlvbiIsImZ1bGxXaWR0aCIsInZlcnRpY2FsIiwidGhlbWUiLCJkaXNwbGF5IiwiYm9yZGVyUmFkaXVzIiwidmFycyIsInNoYXBlIiwiYm94U2hhZG93Iiwic2hhZG93cyIsIndpZHRoIiwiZmxleERpcmVjdGlvbiIsIm1pbldpZHRoIiwiYm9yZGVyVG9wTGVmdFJhZGl1cyIsImJvcmRlckJvdHRvbUxlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsIm1hcmdpbkxlZnQiLCJtYXJnaW5Ub3AiLCJib3JkZXJCb3R0b21SaWdodFJhZGl1cyIsImJvcmRlclJpZ2h0IiwicGFsZXR0ZSIsImNvbW1vbiIsIm9uQmFja2dyb3VuZENoYW5uZWwiLCJtb2RlIiwiZGlzYWJsZWQiLCJhY3Rpb24iLCJib3JkZXJCb3R0b20iLCJib3JkZXJDb2xvciIsIm1haW5DaGFubmVsIiwibWFpbiIsImJvcmRlclJpZ2h0Q29sb3IiLCJib3JkZXJCb3R0b21Db2xvciIsImdyZXkiLCJkYXJrIiwiaW5Qcm9wcyIsInJlZiIsInVzZVRoZW1lUHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImNvbXBvbmVudCIsImRpc2FibGVGb2N1c1JpcHBsZSIsImRpc2FibGVSaXBwbGUiLCJzaXplIiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiY29udGV4dCIsImFzIiwicm9sZSIsIkJ1dHRvbkdyb3VwQ29udGV4dCIsIlByb3ZpZGVyIiwidmFsdWUiLCJ1c2VUaGVtZSIsIlN5bWJvbCIsImZvciIsImxvY2FsVGhlbWUiLCJvdXRlclRoZW1lIiwib3V0cHV0IiwibWVyZ2VPdXRlckxvY2FsVGhlbWUiLCJuZXN0ZWQiLCJFTVBUWV9USEVNRSIsInVzZVRoZW1lU2NvcGluZyIsInRoZW1lSWQiLCJ1cHBlclRoZW1lIiwiaXNQcml2YXRlIiwicmVzb2x2ZWRUaGVtZSIsIm1lcmdlZFRoZW1lIiwicmVzdWx0IiwidXNlVGhlbWVXaXRob3V0RGVmYXVsdCIsInVwcGVyUHJpdmF0ZVRoZW1lIiwiZW5naW5lVGhlbWUiLCJwcml2YXRlVGhlbWUiLCJ0aGVtZUlucHV0Iiwic2NvcGVkVGhlbWUiLCJnZXRTdmdJY29uVXRpbGl0eUNsYXNzIiwiU3ZnSWNvblJvb3QiLCJmb250U2l6ZSIsIl90aGVtZSR0cmFuc2l0aW9ucyIsIl90aGVtZSR0cmFuc2l0aW9ucyRjciIsIl90aGVtZSR0cmFuc2l0aW9uczIiLCJfdGhlbWUkdHlwb2dyYXBoeSIsIl90aGVtZSR0eXBvZ3JhcGh5JHB4VCIsIl90aGVtZSR0eXBvZ3JhcGh5MiIsIl90aGVtZSR0eXBvZ3JhcGh5MiRweCIsIl90aGVtZSR0eXBvZ3JhcGh5MyIsIl90aGVtZSR0eXBvZ3JhcGh5MyRweCIsIl9wYWxldHRlJG93bmVyU3RhdGUkYyIsIl9wYWxldHRlIiwiX3BhbGV0dGUyIiwiX3BhbGV0dGUzIiwidXNlclNlbGVjdCIsImhlaWdodCIsImZpbGwiLCJoYXNTdmdBc0NoaWxkIiwiZmxleFNocmluayIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImNhbGwiLCJkdXJhdGlvbiIsInNob3J0ZXIiLCJpbmhlcml0Iiwic21hbGwiLCJ0eXBvZ3JhcGh5IiwicHhUb1JlbSIsIm1lZGl1bSIsImxhcmdlIiwiYWN0aXZlIiwiU3ZnSWNvbiIsImh0bWxDb2xvciIsImluaGVyaXRWaWV3Qm94IiwidGl0bGVBY2Nlc3MiLCJ2aWV3Qm94IiwidHlwZSIsImluc3RhbmNlRm9udFNpemUiLCJtb3JlIiwiZm9jdXNhYmxlIiwibXVpTmFtZSIsImNyZWF0ZVN2Z0ljb24iLCJwYXRoIiwiZGlzcGxheU5hbWUiLCJDb21wb25lbnQiLCJtdWlOYW1lcyIsImluZGV4T2YiLCJjcmVhdGVDaGFpbmVkRnVuY3Rpb24iLCJmdW5jcyIsInJlZHVjZSIsImFjYyIsImZ1bmMiLCJkZWJvdW5jZSIsIndhaXQiLCJ0aW1lb3V0IiwiZGVib3VuY2VkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImNsZWFyIiwib3duZXJXaW5kb3ciLCJkZWZhdWx0VmlldyIsIndpbmRvdyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3344.f9c384fc.js b/react_frontend/static/react_frontend/js/3344.f9c384fc.js new file mode 100644 index 000000000..7753cf6c2 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3344.f9c384fc.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3344],{3344:(e,a,r)=>{r.r(a),r.d(a,{getCarPose:()=>t});var t=function(e,a){var r,t,n,c,s=e.includes("ack"),u=1,l=a.substring(1,a.length-1).split(",").map((function(e){return parseFloat(e)}));switch(s&&(e=e.replace(" ack",""),u=5),e){case"default":default:t=1.25,c=77,r=-2.6,n=151;break;case"montmelo":t=2.1,c=77,r=-1.3,n=151;break;case"montreal":t=.685,c=77,r=-.48,n=151;break;case"ngb":t=1.5,c=77,r=-1.495,n=151}return[Math.round(l[0])*r/u+n,Math.round(l[1])*t/u+c]}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMzM0NC44NzExM2QwMS5qcyIsIm1hcHBpbmdzIjoiaUpBQU8sSUFBTUEsRUFBYSxTQUFDQyxFQUFTQyxHQUNsQyxJQUFJQyxFQUFRQyxFQUFRQyxFQUFTQyxFQUN6QkMsRUFBZU4sRUFBUU8sU0FBUyxPQUNoQ0MsRUFBZ0IsRUFFaEJDLEVBRE9SLEVBQVNTLFVBQVcsRUFBR1QsRUFBU1UsT0FBUyxHQUNyQ0MsTUFBTSxLQUFLQyxLQUFJLFNBQVVDLEdBQ3RDLE9BQU9DLFdBQVdELEVBQ3BCLElBT0EsT0FMSVIsSUFDRk4sRUFBVUEsRUFBUWdCLFFBQVEsT0FBTyxJQUNqQ1IsRUFBZ0IsR0FHVlIsR0FDTixJQUFLLFVBaUJMLFFBQ0VHLEVBQVMsS0FBTUUsRUFBVSxHQUM1QkgsR0FBVSxJQUFLRSxFQUFVLElBQ3RCLE1BaEJGLElBQUssV0FDSEQsRUFBUyxJQUFLRSxFQUFVLEdBQzNCSCxHQUFVLElBQUtFLEVBQVUsSUFDdEIsTUFDRixJQUFLLFdBRUhELEVBQVMsS0FBT0UsRUFBVSxHQUM3QkgsR0FBVSxJQUFNRSxFQUFVLElBQ3ZCLE1BQ0YsSUFBSyxNQUNIRCxFQUFTLElBQUtFLEVBQVUsR0FDM0JILEdBQVUsTUFBT0UsRUFBVSxJQVc1QixNQUFPLENBSENhLEtBQUtDLE1BQU1ULEVBQUksSUFBTVAsRUFBU00sRUFBZ0JKLEVBQzlDYSxLQUFLQyxNQUFNVCxFQUFJLElBQU1OLEVBQVNLLEVBQWdCSCxFQUd4RCxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvZm9sbG93X2xpbmUvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dDYXJQb3NpdGlvbkZvbGxvd0xpbmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGdldENhclBvc2UgPSAoY2lyY3VpdCwgcG9zaXRpb24pID0+IHtcclxuICB2YXIgc2NhbGVYLCBzY2FsZVksIG9mZnNldFgsIG9mZnNldFk7XHJcbiAgbGV0IGFja1VuaXZlcnNlID0gIGNpcmN1aXQuaW5jbHVkZXMoXCJhY2tcIilcclxuICBsZXQgYWNrTXVsdGlwbGllciA9IDE7XHJcbiAgbGV0IHBvc2UgPSBwb3NpdGlvbi5zdWJzdHJpbmcoIDEsIHBvc2l0aW9uLmxlbmd0aCAtIDEpO1xyXG4gIGxldCBwb3MgPSBwb3NlLnNwbGl0KFwiLFwiKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgIHJldHVybiBwYXJzZUZsb2F0KGl0ZW0pO1xyXG4gIH0pO1xyXG4gIFxyXG4gIGlmIChhY2tVbml2ZXJzZSkge1xyXG4gICAgY2lyY3VpdCA9IGNpcmN1aXQucmVwbGFjZShcIiBhY2tcIixcIlwiKVxyXG4gICAgYWNrTXVsdGlwbGllciA9IDVcclxuICB9XHJcblxyXG4gIHN3aXRjaCAoY2lyY3VpdCkge1xyXG4gICAgY2FzZSBcImRlZmF1bHRcIjpcclxuICAgICAgc2NhbGVZID0gMS4yNTsgb2Zmc2V0WSA9IDc3XHJcblx0XHRcdHNjYWxlWCA9IC0yLjY7IG9mZnNldFggPSAxNTFcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIFwibW9udG1lbG9cIjpcclxuICAgICAgc2NhbGVZID0gMi4xOyBvZmZzZXRZID0gNzdcclxuXHRcdFx0c2NhbGVYID0gLTEuMzsgb2Zmc2V0WCA9IDE1MVxyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJtb250cmVhbFwiOlxyXG5cdFx0XHQvLyBzY2FsZVkgPSAwLjY7IG9mZnNldFkgPSA3NlxyXG4gICAgICBzY2FsZVkgPSAwLjY4NTsgb2Zmc2V0WSA9IDc3XHJcblx0XHRcdHNjYWxlWCA9IC0wLjQ4OyBvZmZzZXRYID0gMTUxXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcIm5nYlwiOlxyXG4gICAgICBzY2FsZVkgPSAxLjU7IG9mZnNldFkgPSA3N1xyXG5cdFx0XHRzY2FsZVggPSAtMS40OTU7IG9mZnNldFggPSAxNTFcclxuICAgICAgYnJlYWs7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICBzY2FsZVkgPSAxLjI1OyBvZmZzZXRZID0gNzdcclxuXHRcdFx0c2NhbGVYID0gLTIuNjsgb2Zmc2V0WCA9IDE1MVxyXG4gICAgICBicmVhaztcclxuICB9XHJcblxyXG4gIHZhciB4ID0gTWF0aC5yb3VuZChwb3NbMF0pICogc2NhbGVYIC8gYWNrTXVsdGlwbGllciArIG9mZnNldFg7XHJcbiAgdmFyIHkgPSBNYXRoLnJvdW5kKHBvc1sxXSkgKiBzY2FsZVkgLyBhY2tNdWx0aXBsaWVyICsgb2Zmc2V0WTtcclxuXHJcbiAgcmV0dXJuIFt4LHldO1xyXG59OyJdLCJuYW1lcyI6WyJnZXRDYXJQb3NlIiwiY2lyY3VpdCIsInBvc2l0aW9uIiwic2NhbGVYIiwic2NhbGVZIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJhY2tVbml2ZXJzZSIsImluY2x1ZGVzIiwiYWNrTXVsdGlwbGllciIsInBvcyIsInN1YnN0cmluZyIsImxlbmd0aCIsInNwbGl0IiwibWFwIiwiaXRlbSIsInBhcnNlRmxvYXQiLCJyZXBsYWNlIiwiTWF0aCIsInJvdW5kIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/349.fb67d334.js b/react_frontend/static/react_frontend/js/349.fb67d334.js new file mode 100644 index 000000000..6e6c51c49 --- /dev/null +++ b/react_frontend/static/react_frontend/js/349.fb67d334.js @@ -0,0 +1,3 @@ +/*! For license information please see 349.fb67d334.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[349],{349:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMzQ5LmY1ZTdmNmY5LmpzIiwibWFwcGluZ3MiOiI7b0tBYUEsUUFSc0IsU0FBQ0EsR0FDckIsT0FDRUMsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsU0FBUSxDQUFBQyxTQUNSSCxFQUFNRyxVQUdYLGtCQ0ZhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFNUIsTUFBTTBCLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDQyxFQUFRakMsU0FBU00sRUFBRTJCLEVBQVFDLElBQUlmLEVBQUVjLEVBQVFFLEtBQUtoQixrQkNQeFdpQixFQUFPSCxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvYXV0b3BhcmtpbmcvcmVhY3QtY29tcG9uZW50cy9BdXRvcGFya2luZ1JSLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9BdXRvcGFya2luZ1JSLmNzc1wiO1xyXG5cclxuY29uc3QgQXV0b3BhcmtpbmdSUiA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBBdXRvcGFya2luZ1JSOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/349.fb67d334.js.LICENSE.txt b/react_frontend/static/react_frontend/js/349.fb67d334.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/349.fb67d334.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/3576.23b22782.js b/react_frontend/static/react_frontend/js/3576.23b22782.js new file mode 100644 index 000000000..24c384e96 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3576.23b22782.js @@ -0,0 +1,3 @@ +/*! For license information please see 3576.23b22782.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3576],{3576:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>c});var n=t(2485),o=t.n(n),s=t(6540),i=t(4848);const c=function(e){var r=(0,s.useRef)(),t=(0,s.useRef)(),n=(0,s.useRef)(),c=(0,s.useRef)(),l=o()({"flex-container":!0,"flex-container-row":e.row,"flex-container-column":!e.row}),a=o()({fa:!0,"fa-ellipsis-v":e.row,"fa-ellipsis-h":!e.row}),u=o()({"console-on":e.console,"flex-container-first":!e.console});s.useEffect((function(){return t.current.addEventListener("mousedown",f,!1),function(){t.current.removeEventListener("mousedown",f,!1)}}));var f=function(e){1===e.which&&(r.current.addEventListener("mousemove",p),window.addEventListener("mouseup",d,!0),c.current&&(c.current.style.display="block"))},d=function e(t){1===t.which&&(r.current.removeEventListener("mousemove",p),window.removeEventListener("mouseup",e,!0),c.current&&(c.current.style.display="none"),console.log(t))},p=function(t){if(t.currentTarget===r.current){var o=t.currentTarget.getBoundingClientRect(),s=t.clientX-o.left,i=t.clientY-o.top;console.log("Bounds: (".concat(o.left,", ").concat(o.top,") Client: (").concat(t.clientX,", ").concat(t.clientY,") Coordinates: (").concat(s,", ").concat(i,")")),e.row?n.current.style.width=s+"px":n.current.style.height=i+"px"}};return(0,i.jsxs)("div",{ref:r,className:l,children:[(0,i.jsx)("div",{ref:n,className:u,children:e.children[0]}),(0,i.jsx)("div",{ref:c,style:{position:"absolute",top:0,left:0,right:0,bottom:0,background:"rgba(0,0,0,0)",display:"none",zIndex:9999}}),(0,i.jsx)("div",{ref:t,className:"flex-container-divider",children:(0,i.jsx)("i",{className:a})}),(0,i.jsx)("div",{className:"flex-container-last",children:e.children.slice(1)})]})}},2485:(e,r)=>{var t;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],r=0;r{"use strict";var n=t(6540),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,c=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function a(e,r,t){var n,s={},a=null,u=null;for(n in void 0!==t&&(a=""+t),void 0!==r.key&&(a=""+r.key),void 0!==r.ref&&(u=r.ref),r)i.call(r,n)&&!l.hasOwnProperty(n)&&(s[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===s[n]&&(s[n]=r[n]);return{$$typeof:o,type:e,key:a,ref:u,props:s,_owner:c.current}}r.Fragment=s,r.jsx=a,r.jsxs=a},4848:(e,r,t)=>{"use strict";e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QU1oRCxFQUFFLEdBQUdvRSxFQUFFcEIsVUFBSyxJQUFTb0IsRUFBRS9DLE1BQU1tRCxFQUFFSixFQUFFL0MsS0FBYytDLEVBQUVULEVBQUVWLEtBQUttQixFQUFFRSxLQUFLUCxFQUFFL0IsZUFBZXNDLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRU0sYUFBYSxJQUFJSCxLQUFLRixFQUFFRCxFQUFFTSxrQkFBZSxJQUFTRixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ0ksU0FBU25CLEVBQUVvQixLQUFLUixFQUFFbkIsSUFBSWhELEVBQUVxQixJQUFJbUQsRUFBRTFGLE1BQU15RixFQUFFSyxPQUFPaEIsRUFBRWhFLFFBQVEsQ0FBQ3dELEVBQVF5QixTQUFTbkIsRUFBRU4sRUFBUTBCLElBQUlaLEVBQUVkLEVBQVEyQixLQUFLYiwrQkNQeFdmLEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL3dyYXBwZXJzL0ZsZXhDb250YWluZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3dyYXBwZXJzL0ZsZXhDb250YWluZXIuY3NzXCI7XHJcblxyXG5jb25zdCBGbGV4Q29udGFpbmVyID0gKHByb3BzKSA9PiB7XHJcbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKCk7XHJcbiAgY29uc3Qgc2VwYXJhdG9yUmVmID0gdXNlUmVmKCk7XHJcbiAgY29uc3QgZmlyc3RDaGlsZFJlZiA9IHVzZVJlZigpO1xyXG4gIGNvbnN0IGlmcmFtZUNvdmVyUmVmID0gdXNlUmVmKCk7XHJcblxyXG4gIHZhciBjb250YWluZXJDbGFzcyA9IGNsYXNzTmFtZXMoe1xyXG4gICAgXCJmbGV4LWNvbnRhaW5lclwiOiB0cnVlLFxyXG4gICAgXCJmbGV4LWNvbnRhaW5lci1yb3dcIjogcHJvcHMucm93LFxyXG4gICAgXCJmbGV4LWNvbnRhaW5lci1jb2x1bW5cIjogIXByb3BzLnJvdyxcclxuICB9KTtcclxuXHJcbiAgdmFyIHNlcGFyYXRvckNsYXNzID0gY2xhc3NOYW1lcyh7XHJcbiAgICBmYTogdHJ1ZSxcclxuICAgIFwiZmEtZWxsaXBzaXMtdlwiOiBwcm9wcy5yb3csXHJcbiAgICBcImZhLWVsbGlwc2lzLWhcIjogIXByb3BzLnJvdyxcclxuICB9KTtcclxuXHJcbiAgdmFyIGNvbnNvbGVDbGFzcyA9IGNsYXNzTmFtZXMoe1xyXG4gICAgXCJjb25zb2xlLW9uXCI6IHByb3BzLmNvbnNvbGUsXHJcbiAgICBcImZsZXgtY29udGFpbmVyLWZpcnN0XCI6ICFwcm9wcy5jb25zb2xlLFxyXG4gIH0pO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgc2VwYXJhdG9yUmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBvbk1vdXNlRG93biwgZmFsc2UpO1xyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgc2VwYXJhdG9yUmVmLmN1cnJlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBvbk1vdXNlRG93biwgZmFsc2UpO1xyXG4gICAgfTtcclxuICB9KTtcclxuXHJcbiAgY29uc3Qgb25Nb3VzZURvd24gPSAoZSkgPT4ge1xyXG4gICAgaWYgKGUud2hpY2ggPT09IDEpIHtcclxuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCBvbk1vdXNlTW92ZSk7XHJcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLCBvbk1vdXNlVXAsIHRydWUpO1xyXG4gICAgICBpZiAoaWZyYW1lQ292ZXJSZWYuY3VycmVudCkge1xyXG4gICAgICAgIGlmcmFtZUNvdmVyUmVmLmN1cnJlbnQuc3R5bGUuZGlzcGxheSA9IFwiYmxvY2tcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IG9uTW91c2VVcCA9IChlKSA9PiB7XHJcbiAgICBpZiAoZS53aGljaCA9PT0gMSkge1xyXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIG9uTW91c2VNb3ZlKTtcclxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIG9uTW91c2VVcCwgdHJ1ZSk7XHJcbiAgICAgIGlmIChpZnJhbWVDb3ZlclJlZi5jdXJyZW50KSB7XHJcbiAgICAgICAgaWZyYW1lQ292ZXJSZWYuY3VycmVudC5zdHlsZS5kaXNwbGF5ID0gXCJub25lXCI7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3Qgb25Nb3VzZU1vdmUgPSAoZSkgPT4ge1xyXG4gICAgaWYgKGUuY3VycmVudFRhcmdldCAhPT0gY29udGFpbmVyUmVmLmN1cnJlbnQpIHJldHVybjtcclxuICAgIGNvbnN0IGJvdW5kcyA9IGUuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHggPSBlLmNsaWVudFggLSBib3VuZHMubGVmdDtcclxuICAgIGNvbnN0IHkgPSBlLmNsaWVudFkgLSBib3VuZHMudG9wO1xyXG4gICAgY29uc29sZS5sb2coXHJcbiAgICAgIGBCb3VuZHM6ICgke2JvdW5kcy5sZWZ0fSwgJHtib3VuZHMudG9wfSkgQ2xpZW50OiAoJHtlLmNsaWVudFh9LCAke2UuY2xpZW50WX0pIENvb3JkaW5hdGVzOiAoJHt4fSwgJHt5fSlgXHJcbiAgICApO1xyXG5cclxuICAgIGlmIChwcm9wcy5yb3cpIHtcclxuICAgICAgZmlyc3RDaGlsZFJlZi5jdXJyZW50LnN0eWxlLndpZHRoID0geCArIFwicHhcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpcnN0Q2hpbGRSZWYuY3VycmVudC5zdHlsZS5oZWlnaHQgPSB5ICsgXCJweFwiO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHJlZj17Y29udGFpbmVyUmVmfSBjbGFzc05hbWU9e2NvbnRhaW5lckNsYXNzfT5cclxuICAgICAgPGRpdiByZWY9e2ZpcnN0Q2hpbGRSZWZ9IGNsYXNzTmFtZT17Y29uc29sZUNsYXNzfT5cclxuICAgICAgICB7cHJvcHMuY2hpbGRyZW5bMF19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgcmVmPXtpZnJhbWVDb3ZlclJlZn1cclxuICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcclxuICAgICAgICAgIHRvcDogMCxcclxuICAgICAgICAgIGxlZnQ6IDAsXHJcbiAgICAgICAgICByaWdodDogMCxcclxuICAgICAgICAgIGJvdHRvbTogMCxcclxuICAgICAgICAgIGJhY2tncm91bmQ6IFwicmdiYSgwLDAsMCwwKVwiLFxyXG4gICAgICAgICAgZGlzcGxheTogXCJub25lXCIsXHJcbiAgICAgICAgICB6SW5kZXg6IDk5OTksXHJcbiAgICAgICAgfX1cclxuICAgICAgPjwvZGl2PlxyXG4gICAgICA8ZGl2IHJlZj17c2VwYXJhdG9yUmVmfSBjbGFzc05hbWU9e1wiZmxleC1jb250YWluZXItZGl2aWRlclwifT5cclxuICAgICAgICA8aSBjbGFzc05hbWU9e3NlcGFyYXRvckNsYXNzfT48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17XCJmbGV4LWNvbnRhaW5lci1sYXN0XCJ9Pntwcm9wcy5jaGlsZHJlbi5zbGljZSgxKX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGbGV4Q29udGFpbmVyO1xyXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiY29udGFpbmVyUmVmIiwidXNlUmVmIiwic2VwYXJhdG9yUmVmIiwiZmlyc3RDaGlsZFJlZiIsImlmcmFtZUNvdmVyUmVmIiwiY29udGFpbmVyQ2xhc3MiLCJjbGFzc05hbWVzIiwicm93Iiwic2VwYXJhdG9yQ2xhc3MiLCJmYSIsImNvbnNvbGVDbGFzcyIsImNvbnNvbGUiLCJSZWFjdCIsImN1cnJlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwib25Nb3VzZURvd24iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZSIsIndoaWNoIiwib25Nb3VzZU1vdmUiLCJ3aW5kb3ciLCJvbk1vdXNlVXAiLCJzdHlsZSIsImRpc3BsYXkiLCJsb2ciLCJjdXJyZW50VGFyZ2V0IiwiYm91bmRzIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwieCIsImNsaWVudFgiLCJsZWZ0IiwieSIsImNsaWVudFkiLCJ0b3AiLCJjb25jYXQiLCJ3aWR0aCIsImhlaWdodCIsIl9qc3hzIiwicmVmIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJfanN4IiwicG9zaXRpb24iLCJyaWdodCIsImJvdHRvbSIsImJhY2tncm91bmQiLCJ6SW5kZXgiLCJzbGljZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiY2xhc3NlcyIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmciLCJhcmdUeXBlIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsImlubmVyIiwiYXBwbHkiLCJ0b1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsImluY2x1ZGVzIiwia2V5IiwiY2FsbCIsImpvaW4iLCJtb2R1bGUiLCJleHBvcnRzIiwiZGVmYXVsdCIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImgiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3576.23b22782.js.LICENSE.txt b/react_frontend/static/react_frontend/js/3576.23b22782.js.LICENSE.txt new file mode 100644 index 000000000..e2aeae5c5 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3576.23b22782.js.LICENSE.txt @@ -0,0 +1,15 @@ +/*! + Copyright (c) 2018 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/3721.49623697.js b/react_frontend/static/react_frontend/js/3721.49623697.js new file mode 100644 index 000000000..724ae51f7 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3721.49623697.js @@ -0,0 +1,3 @@ +/*! For license information please see 3721.49623697.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3721,7664,5627,7786,4471,855],{3135:(t,e,r)=>{r.r(e),r.d(e,{default:()=>g});var n=r(6540),o=r(8807),i=r(5556),a=r.n(i),c=r(3721),s=r(8516),u=r(7222),l=r(4848);function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function h(){h=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function l(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,a=Object.create(i.prototype),c=new q(n||[]);return o(a,"_invoke",{value:_(t,r,c)}),a}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var p="suspendedStart",m="suspendedYield",y="executing",g="completed",v={};function w(){}function b(){}function x(){}var E={};u(E,a,(function(){return this}));var L=Object.getPrototypeOf,S=L&&L(L(I([])));S&&S!==r&&n.call(S,a)&&(E=S);var j=x.prototype=w.prototype=Object.create(E);function C(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function r(o,i,a,c){var s=d(t[o],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==f(l)&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function _(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var s=M(c,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=d(e,r,n);if("normal"===u.type){if(o=n.done?g:m,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=g,n.method="throw",n.arg=u.arg)}}}function M(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,M(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=d(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function q(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function I(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:I(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function d(t,e,r,n,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void r(t)}c.done?e(s):Promise.resolve(s).then(n,o)}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],s=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){u=!0,o=t}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return m(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{r.r(e),r.d(e,{default:()=>h,theme_colors:()=>u});var n=r(6540),o=r(5556),i=r.n(o),a=r(4848);function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],s=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){u=!0,o=t}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{r.r(e),r.d(e,{defaultEditorSourceCode:()=>i,monacoEditorThemeList:()=>o,pylint_convention:()=>s,pylint_error:()=>a,pylint_fatal:()=>l,pylint_refactor:()=>u,pylint_warning:()=>c,resizeList:()=>n});var n=["min","max"],o=["vs-dark"],i="import WebGUI\nimport HAL\nimport Frequency\n# Enter sequential code!\n\nwhile True:\n # Enter iterative code!\n Frequency.tick()\n\n",a=["E0401","E1101"],c=["W0611"],s=["C0114","C0303","C0304","C0305","C0411"],u=[],l=[]},7222:(t,e,r)=>{r.r(e),r.d(e,{default:()=>c}),r(6540);var n=r(4481),o=r(1919),i=r(2078),a=r(4848);const c=function(t){var e=t.editorSettings,r=t.dispatch,c=t.editorRef,s=e.isModalOpen,u=(e.isCodeFormatEnable,e.isZoomingEnable,e.modalScreenState,new KeyboardEvent("keydown",{key:"s",ctrlKey:!0,bubbles:!0}));return(0,a.jsxs)(a.Fragment,{children:[s&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{className:"w-full h-full absolute left-0 right-0 z-[99] ",style:{background:"rgba(0, 0, 0, 0.02)",filter:"blur(2px)",backdropFilter:"blur(2px)"}}),(0,a.jsxs)("div",{className:"flex absolute w-[400px] h-[250px] left-[50%] top-[50%] bg-[#2D2D2D] rounded-xl -translate-x-[50%] -translate-y-[50%] z-[100]",style:{border:"1px solid #464646"},children:[(0,a.jsx)(o.default,{dispatch:r,editorSettings:e}),(0,a.jsx)(i.default,{editorSettings:e,dispatch:r})]})]}),(0,a.jsx)(n.default,{editorSettings:e,dispatch:r,handleFontZoom:function(t){var e=c.current.getOption(monaco.editor.EditorOption.fontSize);"up"===t?c.current.updateOptions({fontSize:Math.min(100,e+1)}):c.current.updateOptions({fontSize:Math.max(10,e-1)})},handleFormatCode:function(){c.current.getDomNode().dispatchEvent(u)}})]})}},4481:(t,e,r)=>{r.r(e),r.d(e,{default:()=>i}),r(6540);var n=r(4075),o=r(4848);const i=function(t){var e=t.editorSettings,r=t.dispatch,i=t.handleFontZoom,a=t.handleFormatCode,c=e.isModalOpen,s=e.isCodeFormatEnable,u=e.isZoomingEnable;return(0,o.jsxs)("div",{className:"absolute bottom-3 right-3 flex justify-between items-center gap-1 h-9 bg-[#2D2D2D] rounded-full border-[#464646] border-[1px] ".concat(s||u?"px-[4px]":"px-[2px] w-[36px]"," duration-300 select-none"),style:{zIndex:"10"},children:[u&&(0,o.jsxs)("div",{className:"flex items-center gap-1",children:[(0,o.jsxs)("div",{className:"flex justify-center items-center h-7 rounded-full cursor-pointer gap-0.5",children:[(0,o.jsx)("div",{className:"flex justify-center items-center w-[30px] h-7 bg-[#474747] rounded-tl-full rounded-bl-full duration-100 ",onClick:function(){return i("up")},title:"Zoom In",children:(0,o.jsx)(n.ZoomInIcon,{cssClass:""})}),(0,o.jsx)("div",{className:"flex justify-center items-center w-[30px] h-7 bg-[#474747] rounded-tr-full rounded-br-full duration-100 ",onClick:function(){return i("down")},title:"Zoom Out",children:(0,o.jsx)(n.ZoomOutIcon,{cssClass:""})})]}),(0,o.jsx)("div",{className:"h-6 w-[2px] bg-[#464646]"})]}),s&&(0,o.jsxs)("div",{className:"flex items-center gap-1",children:[(0,o.jsx)("div",{className:"flex justify-center items-center w-7 h-7 rounded-full hover:bg-[#474747] duration-100 cursor-pointer",onClick:function(){return a()},title:"Format Code",children:(0,o.jsx)(n.AlignIcon,{cssClass:""})}),(0,o.jsx)("div",{className:"h-6 w-[2px] bg-[#464646]"})]}),(0,o.jsx)("div",{className:"flex justify-center items-center w-7 h-7 rounded-full hover:bg-[#474747] duration-100 cursor-pointer",onClick:function(){return r({type:"changeSettingsModalState",payload:{isModalOpen:!c}})},title:"More Info",children:(0,o.jsx)(n.InfoIcon,{cssClass:""})})]})}},2078:(t,e,r)=>{r.r(e),r.d(e,{default:()=>c}),r(6540);var n=r(4075),o=r(4848),i=[{title:"Code Format",keys:["ctrl","s"]},{title:"Font Size",keys:["ctrl","wheel"]}],a=[{title:"Font Size",id:"isZoomingEnable"},{title:"Code Format",id:"isCodeFormatEnable"}];const c=function(t){var e=t.editorSettings,r=t.dispatch,c=e.isModalOpen,s=e.modalScreenState,u=e.isCodeFormatEnable,l=e.isZoomingEnable;return(0,o.jsxs)("div",{className:"flex flex-col w-[calc(400px-120px)] h-full select-none",children:[(0,o.jsx)("div",{className:"absolute top-1 right-1 flex justify-center items-center w-7 h-7 hover:bg-[#393939] rounded-full duration-100 cursor-pointer",onClick:function(){return r({type:"changeSettingsModalState",payload:{isModalOpen:!c}})},children:(0,o.jsx)(n.CloseIcon,{cssClass:""})}),(0,o.jsxs)("div",{className:"w-full h-full pt-10 items-center px-6",children:["shortcuts"===s&&(0,o.jsx)("div",{className:"w-full flex flex-col items-start gap-5",children:i.map((function(t,e){return(0,o.jsxs)("div",{className:"w-full flex items-start justify-between text-sm text-[#fcfcfc]",children:[(0,o.jsx)("div",{className:"",children:t.title}),(0,o.jsxs)("div",{className:"flex items-center gap-1",children:[(0,o.jsx)("span",{className:"bg-[#383838] px-2 xpy-[1px] rounded-md border-[1px] border-[#636363]",children:t.keys[0]}),"+",(0,o.jsx)("span",{className:"bg-[#383838] px-2 xpy-[1px] rounded-md border-[1px] border-[#636363]",children:t.keys[1]})]})]},e)}))}),"widgets"===s&&(0,o.jsx)("div",{className:"w-full flex flex-col justify-between gap-5",children:a.map((function(t,e){return(0,o.jsxs)("div",{className:"w-full flex items-start justify-between text-sm text-[#fcfcfc]",children:[(0,o.jsx)("div",{className:"",children:t.title}),(0,o.jsxs)("label",{className:"inline-flex items-center cursor-pointer",children:[(0,o.jsx)("input",{type:"checkbox",value:"isCodeFormatEnable"===t.id?"isCodeFormatEnable":"isZoomingEnable",className:"sr-only peer",checked:"isCodeFormatEnable"===t.id?u:l,onChange:function(t){return function(t){var e=t.target.value;r({type:e})}(t)}}),(0,o.jsx)("div",{className:"relative w-9 h-5 bg-[#383838] rounded-full peer peer-focus:ring-1 peer-focus:ring-[#636363] peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-gray-600 peer-checked:bg-[#FFA726]"})]})]},e)}))})]})]})}},1919:(t,e,r)=>{r.r(e),r.d(e,{default:()=>i}),r(6540);var n=r(4075),o=r(4848);const i=function(t){var e=t.editorSettings,r=t.dispatch,i=e.modalScreenState;return(0,o.jsxs)("div",{className:"flex flex-col items-center justify-start pt-10 gap-2 w-[120px] h-full bg-[#383838] rounded-xl select-none",children:[(0,o.jsxs)("div",{className:"flex items-center justify-center gap-1 w-[100px] h-7 rounded-full cursor-pointer ".concat("shortcuts"===i?"bg-[#FFA726]":""),onClick:function(){return r({type:"changeModalScreenState",payload:{screen:"shortcuts"}})},children:[(0,o.jsx)(n.KeyboardIcon,{cssClass:""}),(0,o.jsx)("span",{className:"text-[#fcfcfc] text-sm",children:"shortcuts"})]}),(0,o.jsxs)("div",{className:"flex items-center justify-center gap-1 w-[100px] h-7 rounded-full cursor-pointer ".concat("widgets"===i?"bg-[#FFA726]":""),onClick:function(){return r({type:"changeModalScreenState",payload:{screen:"widgets"}})},children:[(0,o.jsx)(n.WidgetsIcon,{cssClass:""}),(0,o.jsx)("span",{className:"text-[#fcfcfc] text-sm",children:"widgets"})]})]})}},5627:(t,e,r)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){o=function(){return e};var t,e={},r=Object.prototype,i=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},s=c.iterator||"@@iterator",u=c.asyncIterator||"@@asyncIterator",l=c.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var o=e&&e.prototype instanceof w?e:w,i=Object.create(o.prototype),c=new q(n||[]);return a(i,"_invoke",{value:_(t,r,c)}),i}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var p="suspendedStart",m="suspendedYield",y="executing",g="completed",v={};function w(){}function b(){}function x(){}var E={};f(E,s,(function(){return this}));var L=Object.getPrototypeOf,S=L&&L(L(I([])));S&&S!==r&&i.call(S,s)&&(E=S);var j=x.prototype=w.prototype=Object.create(E);function C(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function r(o,a,c,s){var u=d(t[o],t,a);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==n(f)&&i.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,c,s)}),(function(t){r("throw",t,c,s)})):e.resolve(f).then((function(t){l.value=t,c(l)}),(function(t){return r("throw",t,c,s)}))}s(u.arg)}var o;a(this,"_invoke",{value:function(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}})}function _(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var s=M(c,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=d(e,r,n);if("normal"===u.type){if(o=n.done?g:m,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=g,n.method="throw",n.arg=u.arg)}}}function M(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,M(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=d(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function q(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function I(e){if(e||""===e){var r=e[s];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o=0;--o){var a=this.tryEntries[o],c=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:I(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function i(t,e,r,n,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void r(t)}c.done?e(s):Promise.resolve(s).then(n,o)}r.r(e),r.d(e,{fetchFormatCode:()=>a,getEditorSettingsWidgetsData:()=>u,getMarkerSeverity:()=>c,setEditorSettingsWidgetsData:()=>s});var a=function(){var t,e=(t=o().mark((function t(e){var r,n,i,a,c;return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=e.baseUrl,n=e.monacoEditorSourceCode,i=e.setMonacoEditorSourceCode,t.prev=1,t.next=4,fetch("".concat(r,"/api/v1/format/"),{method:"POST",headers:{"Content-Type":"application/json","X-CSRFToken":context.csrf},body:JSON.stringify({code:n})});case 4:return a=t.sent,t.next=7,a.json();case 7:c=t.sent,a.ok?i(c.formatted_code):console.error("Error formatting code:",c.error),t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),console.log("error ",t.t0);case 14:case"end":return t.stop()}}),t,null,[[1,11]])})),function(){var e=this,r=arguments;return new Promise((function(n,o){var a=t.apply(e,r);function c(t){i(a,n,o,c,s,"next",t)}function s(t){i(a,n,o,c,s,"throw",t)}c(void 0)}))});return function(t){return e.apply(this,arguments)}}(),c=function(t){var e=t.type,r=t.monaco;switch(e){case"refactor":case"convention":return r.MarkerSeverity.Info;case"error":default:return r.MarkerSeverity.Error;case"warning":case"fatal":return r.MarkerSeverity.Warning}},s=function(t){var e=JSON.stringify(t);localStorage.setItem("editorSettingsWidgets",e)},u=function(){var t=localStorage.getItem("editorSettingsWidgets");return t?JSON.parse(t):null}},7786:(t,e,r)=>{r.r(e),r.d(e,{filterLineNumber:()=>i,monacoEditorGlyph:()=>n,renderGlyphs:()=>o});var n=function(t){var e=t.monaco,r=t.editor,n=t.setLineNumber;r.onMouseDown((function(t){var r=t.target;if(r&&r.type===e.editor.MouseTargetType.GUTTER_GLYPH_MARGIN){var o=r.position.lineNumber;n(o)}}))},o=function(t,e){var r=[];e&&(e.forEach((function(t,e){var n={range:new monaco.Range(t,1,t,1),options:{glyphMarginClassName:"glyph-indicator",glyphMarginHoverMessage:{value:""}}};r.push(n)})),t.current.set(r))},i=function(t){var e,r=t.lineNumberDecorations,n=t.lineNumber,o=t.maxEditorRows;return e=r.filter((function(t){return t<=o})),-1===n||(e.find((function(t){return t===n}))?e=e.filter((function(t){return t!==n})):e.push(n)),e}},4471:(t,e,r)=>{r.r(e),r.d(e,{monacoEditorScroll:()=>n});var n=function(t){var e=t.editor;e.getDomNode().addEventListener("wheel",(function(t){var r=e.getOption(monaco.editor.EditorOption.fontSize);t.ctrlKey&&(t.preventDefault(),t.deltaY<0?e.updateOptions({fontSize:Math.min(100,r+1)}):e.updateOptions({fontSize:Math.max(10,r-1)}))}))}},29:(t,e,r)=>{r.r(e),r.d(e,{getHalGuiMethods:()=>u,monacoEditorSnippet:()=>c,snippetKind:()=>s,snippetsBuilderV2:()=>l});var n=r(3721);function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function i(){i=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},s=c.iterator||"@@iterator",u=c.asyncIterator||"@@asyncIterator",l=c.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var o=e&&e.prototype instanceof w?e:w,i=Object.create(o.prototype),c=new q(n||[]);return a(i,"_invoke",{value:_(t,r,c)}),i}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var p="suspendedStart",m="suspendedYield",y="executing",g="completed",v={};function w(){}function b(){}function x(){}var E={};f(E,s,(function(){return this}));var L=Object.getPrototypeOf,S=L&&L(L(I([])));S&&S!==r&&n.call(S,s)&&(E=S);var j=x.prototype=w.prototype=Object.create(E);function C(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function r(i,a,c,s){var u=d(t[i],t,a);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==o(f)&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,c,s)}),(function(t){r("throw",t,c,s)})):e.resolve(f).then((function(t){l.value=t,c(l)}),(function(t){return r("throw",t,c,s)}))}s(u.arg)}var i;a(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function _(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var s=M(c,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=d(e,r,n);if("normal"===u.type){if(o=n.done?g:m,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=g,n.method="throw",n.arg=u.arg)}}}function M(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,M(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=d(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function q(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function I(e){if(e||""===e){var r=e[s];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,a=function r(){for(;++i=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:I(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function a(t,e,r,n,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void r(t)}c.done?e(s):Promise.resolve(s).then(n,o)}var c=function(t){var e=t.monaco;e.languages.register({id:"python"});var n,o,c=new(r(7007)),u=!0;e.languages.registerCompletionItemProvider("python",{triggerCharacters:[".","("],provideCompletionItems:(n=i().mark((function t(r,n){var o,a,f,h,d,p;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=!0,o=r.getWordUntilPosition(n),a=r.getWordUntilPosition({lineNumber:n.lineNumber,column:n.column-1}),f={startLineNumber:n.lineNumber,endLineNumber:n.lineNumber,startColumn:o.startColumn,endColumn:o.endColumn},h=""===a.word?l("basic_snippets",e,f,""):[],"WebGUI"!==a.word&&"HAL"!==a.word&&"Frequency"!==a.word){t.next=8;break}return d=l("hal_gui",e,f,a.word),t.abrupt("return",{suggestions:d});case 8:t.prev=8,window.RoboticsExerciseComponents.commsManager.code_autocomplete({code:r.getValue(),line:n.lineNumber,col:o.endColumn-1}),t.next=15;break;case 12:return t.prev=12,t.t0=t.catch(8),t.abrupt("return",h);case 15:if(p=function(t){var r=t.data;r&&(r.completions.forEach((function(t){h.push({label:t.label,kind:s({kind:t.type,monaco:e}),detail:t.detail,documentation:t.docstring,insertText:t.code,insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet,range:f})})),u=!1,c.emit("unlocked"))},window.RoboticsExerciseComponents.commsManager.suscribreOnce([window.RoboticsExerciseComponents.commsManager.events.CODE_AUTOCOMPLETE],p),!u){t.next=20;break}return t.next=20,new Promise((function(t){return c.once("unlocked",t)}));case 20:return t.abrupt("return",{suggestions:h});case 21:case"end":return t.stop()}}),t,null,[[8,12]])})),o=function(){var t=this,e=arguments;return new Promise((function(r,o){var i=n.apply(t,e);function c(t){a(i,r,o,c,s,"next",t)}function s(t){a(i,r,o,c,s,"throw",t)}c(void 0)}))},function(t,e){return o.apply(this,arguments)})})},s=function(t){var e=t.kind,r=t.monaco;switch(e){case"variable":default:return r.languages.CompletionItemKind.Variable;case"class":case"instance":return r.languages.CompletionItemKind.Class;case"param":return r.languages.CompletionItemKind.TypeParameter;case"path":return r.languages.CompletionItemKind.File;case"property":return r.languages.CompletionItemKind.Property;case"statement":case"function":return r.languages.CompletionItemKind.Function;case"module":return r.languages.CompletionItemKind.Module;case"method":return r.languages.CompletionItemKind.Method;case"snippet":return r.languages.CompletionItemKind.Snippet;case"keyword":return r.languages.CompletionItemKind.Keyword}},u=function(t){var e=window.location.pathname.split("/").filter(Boolean);return e=e[e.length-1],e="_".concat(e),n.guiAndHalAutoCompleteObj[e]?"WebGUI"===t?n.guiAndHalAutoCompleteObj[e].webgui:"HAL"===t?n.guiAndHalAutoCompleteObj[e].hal:"Frequency"===t?n.frequencyAutoCompleteObj:[]:[]},l=function(t,e,r,o){var i,a=[];return"basic_snippets"===t?i=n.basic_snippets:"hal_gui"===t&&(i=u(o)),i&&i.length?(i.forEach((function(t){t.label&&t.code&&a.push({label:t.label,kind:s({kind:t.type,monaco:e}),detail:t.detail,insertText:t.code,insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet,range:r})})),a):[]}},855:(t,e,r)=>{r.r(e),r.d(e,{extractClassesAndMembers:()=>i,extractPythonImports:()=>c,findClassNameByInstance:()=>a,getEditorFunctions:()=>o,getEditorVariables:()=>n});var n=function(t){var e=t.lines,r=t.monaco,n=t.range,o=new Set;return e.forEach((function(t){var e=t.match(/(\w+)\s*=/);e&&o.add(e[1])})),Array.from(o).map((function(t){return{label:t,kind:r.languages.CompletionItemKind.Variable,insertText:t,range:n}}))},o=function(t){var e=t.lines,r=t.monaco,n=t.range,o=new Set;return e.forEach((function(t){var e=t.match(/def\s+(\w+)\s*\(/);e&&o.add(e[1])})),Array.from(o).map((function(t){return{label:t,kind:r.languages.CompletionItemKind.Function,insertText:t,range:n}}))},i=function(t){var e=/class (\w+)\s*:/g,r=/def (\w+)\(/g,n=/(\w+)\s*=/,o={},i=null;return t.split("\n").forEach((function(t){var a=e.exec(t),c=t.match(/^\s*/)[0].length;if(a)i=a[1],o[i]={attributes:[],methods:[],spaceSize:c};else if(i){var s=r.exec(t);if(o[i].spaceSize{r.r(e),r.d(e,{AlignIcon:()=>a,CloseIcon:()=>s,InfoIcon:()=>c,KeyboardIcon:()=>u,WidgetsIcon:()=>l,ZoomInIcon:()=>i,ZoomOutIcon:()=>o});var n=r(4848),o=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M268.02-444q-15.02 0-25.52-10.29t-10.5-25.5q0-15.21 10.35-25.71T268-516h423.98q15.02 0 25.52 10.29t10.5 25.5q0 15.21-10.35 25.71T692-444H268.02Z"})})},i=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z"})})},a=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M144-144v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Z"})})},c=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M444-288h72v-240h-72v240Zm35.79-312q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm.49 504Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"})})},s=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#898989",children:(0,n.jsx)("path",{d:"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z"})})},u=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,n.jsx)("path",{d:"M168-240q-29.7 0-50.85-21.15Q96-282.3 96-312v-336q0-29.7 21.15-50.85Q138.3-720 168-720h624q29.7 0 50.85 21.15Q864-677.7 864-648v336q0 29.7-21.15 50.85Q821.7-240 792-240H168Zm0-72h624v-336H168v336Zm203.96-24h215.76q15.28 0 25.78-10.29 10.5-10.29 10.5-25.5t-10.34-25.71Q603.32-408 588.04-408H372.28q-15.28 0-25.78 10.29-10.5 10.29-10.5 25.5t10.34 25.71q10.34 10.5 25.62 10.5ZM168-312v-336 336Zm107.79-240q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm-408 96q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z"})})},l=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,n.jsx)("path",{d:"M610-458 457.39-611q-5.39-5.4-7.89-11.7-2.5-6.3-2.5-13.5t2.5-13.5Q452-656 457-661l153-153q5-5 12-8t14.2-3q7.2 0 13.5 3t11.3 8l152.61 153q5.39 5.4 7.89 11.7 2.5 6.3 2.5 13.5t-2.5 13.5Q819-616 814-611L661-458q-5 5-11.3 8-6.3 3-13.5 3t-14.2-3q-7-3-12-8ZM144-563.96v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm384 384v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H564.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm-384 0v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62ZM216-600h144v-144H216v144Zm420 66 101-102-101-102-102 102 102 102Zm-36 318h144v-144H600v144Zm-384 0h144v-144H216v144Zm144-384Zm174-36ZM360-360Zm240 0Z"})})}},3721:(t,e,r)=>{r.r(e),r.d(e,{MonacoEditor:()=>n.default,MonacoEditorInfoButtons:()=>i.default,MonacoEditorInfoDetails:()=>c.default,MonacoEditorInfoSidebar:()=>a.default,MonacoEditorLoader:()=>o.default,basic_snippets:()=>h.basic_snippets,defaultEditorSourceCode:()=>m.defaultEditorSourceCode,extractClassesAndMembers:()=>p.extractClassesAndMembers,extractPythonImports:()=>p.extractPythonImports,filterLineNumber:()=>l.filterLineNumber,findClassNameByInstance:()=>p.findClassNameByInstance,frequencyAutoCompleteObj:()=>d.frequencyAutoCompleteObj,getEditorFunctions:()=>p.getEditorFunctions,getEditorSettingsWidgetsData:()=>f.getEditorSettingsWidgetsData,getEditorVariables:()=>p.getEditorVariables,getMarkerSeverity:()=>f.getMarkerSeverity,guiAndHalAutoCompleteObj:()=>d.guiAndHalAutoCompleteObj,monacoEditorGlyph:()=>l.monacoEditorGlyph,monacoEditorScroll:()=>u.monacoEditorScroll,monacoEditorSnippet:()=>s.monacoEditorSnippet,monacoEditorThemeList:()=>m.monacoEditorThemeList,pylint_convention:()=>m.pylint_convention,pylint_error:()=>m.pylint_error,pylint_fatal:()=>m.pylint_fatal,pylint_refactor:()=>m.pylint_refactor,pylint_warning:()=>m.pylint_warning,renderGlyphs:()=>l.renderGlyphs,resizeList:()=>m.resizeList,setEditorSettingsWidgetsData:()=>f.setEditorSettingsWidgetsData});var n=r(3135),o=r(1696),i=r(4481),a=r(1919),c=r(2078),s=r(29),u=r(4471),l=r(7786),f=r(5627),h=r(6162),d=r(4055),p=r(855),m=r(7664)},8516:(t,e,r)=>{r.r(e),r.d(e,{useMonacoEditorCodeAnalysisEffect:()=>d,useMonacoEditorCodeFormatEffect:()=>p,useMonacoEditorLineNumberDecorationsEffect:()=>m,useMonacoEditorLoaderEffect:()=>h});var n=r(6540),o=r(3721),i=r(7664);function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function c(){c=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function f(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,r){return t[e]=r}}function h(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,a=Object.create(i.prototype),c=new q(n||[]);return o(a,"_invoke",{value:_(t,r,c)}),a}function d(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var p="suspendedStart",m="suspendedYield",y="executing",g="completed",v={};function w(){}function b(){}function x(){}var E={};f(E,s,(function(){return this}));var L=Object.getPrototypeOf,S=L&&L(L(I([])));S&&S!==r&&n.call(S,s)&&(E=S);var j=x.prototype=w.prototype=Object.create(E);function C(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function N(t,e){function r(o,i,c,s){var u=d(t[o],t,i);if("throw"!==u.type){var l=u.arg,f=l.value;return f&&"object"==a(f)&&n.call(f,"__await")?e.resolve(f.__await).then((function(t){r("next",t,c,s)}),(function(t){r("throw",t,c,s)})):e.resolve(f).then((function(t){l.value=t,c(l)}),(function(t){return r("throw",t,c,s)}))}s(u.arg)}var i;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return i=i?i.then(o,o):o()}})}function _(e,r,n){var o=p;return function(i,a){if(o===y)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var s=M(c,n);if(s){if(s===v)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=y;var u=d(e,r,n);if("normal"===u.type){if(o=n.done?g:m,u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=g,n.method="throw",n.arg=u.arg)}}}function M(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,M(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var i=d(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function q(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function I(e){if(e||""===e){var r=e[s];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:I(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}function s(t,e,r,n,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void r(t)}c.done?e(s):Promise.resolve(s).then(n,o)}function u(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){s(i,n,o,a,c,"next",t)}function c(t){s(i,n,o,a,c,"throw",t)}a(void 0)}))}}function l(t){return function(t){if(Array.isArray(t))return f(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return f(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?f(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);rt&&s(!0),t}))}}),[u])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMzcyMS4wNTc2OWJhNS5qcyIsIm1hcHBpbmdzIjoiOzRlQUNBQSxFQUFBLGtCQUFBQyxDQUFBLE1BQUFDLEVBQUFELEVBQUEsR0FBQUUsRUFBQUMsT0FBQUMsVUFBQUMsRUFBQUgsRUFBQUksZUFBQUMsRUFBQUosT0FBQUssZ0JBQUEsU0FBQVAsRUFBQUQsRUFBQUUsR0FBQUQsRUFBQUQsR0FBQUUsRUFBQU8sS0FBQSxFQUFBQyxFQUFBLG1CQUFBQyxPQUFBQSxPQUFBLEdBQUFDLEVBQUFGLEVBQUFHLFVBQUEsYUFBQUMsRUFBQUosRUFBQUssZUFBQSxrQkFBQUMsRUFBQU4sRUFBQU8sYUFBQSx5QkFBQUMsRUFBQWpCLEVBQUFELEVBQUFFLEdBQUEsT0FBQUMsT0FBQUssZUFBQVAsRUFBQUQsRUFBQSxDQUFBUyxNQUFBUCxFQUFBaUIsWUFBQSxFQUFBQyxjQUFBLEVBQUFDLFVBQUEsSUFBQXBCLEVBQUFELEVBQUEsS0FBQWtCLEVBQUEsYUFBQWpCLEdBQUFpQixFQUFBLFNBQUFqQixFQUFBRCxFQUFBRSxHQUFBLE9BQUFELEVBQUFELEdBQUFFLENBQUEsV0FBQW9CLEVBQUFyQixFQUFBRCxFQUFBRSxFQUFBRyxHQUFBLElBQUFLLEVBQUFWLEdBQUFBLEVBQUFJLHFCQUFBbUIsRUFBQXZCLEVBQUF1QixFQUFBWCxFQUFBVCxPQUFBcUIsT0FBQWQsRUFBQU4sV0FBQVUsRUFBQSxJQUFBVyxFQUFBcEIsR0FBQSxXQUFBRSxFQUFBSyxFQUFBLFdBQUFILE1BQUFpQixFQUFBekIsRUFBQUMsRUFBQVksS0FBQUYsQ0FBQSxVQUFBZSxFQUFBMUIsRUFBQUQsRUFBQUUsR0FBQSxXQUFBMEIsS0FBQSxTQUFBQyxJQUFBNUIsRUFBQTZCLEtBQUE5QixFQUFBRSxHQUFBLE9BQUFELEdBQUEsT0FBQTJCLEtBQUEsUUFBQUMsSUFBQTVCLEVBQUEsRUFBQUQsRUFBQXNCLEtBQUFBLEVBQUEsSUFBQVMsRUFBQSxpQkFBQUMsRUFBQSxpQkFBQUMsRUFBQSxZQUFBQyxFQUFBLFlBQUFDLEVBQUEsWUFBQVosSUFBQSxVQUFBYSxJQUFBLFVBQUFDLElBQUEsS0FBQUMsRUFBQSxHQUFBcEIsRUFBQW9CLEVBQUExQixHQUFBLDhCQUFBMkIsRUFBQXBDLE9BQUFxQyxlQUFBQyxFQUFBRixHQUFBQSxFQUFBQSxFQUFBRyxFQUFBLE1BQUFELEdBQUFBLElBQUF2QyxHQUFBRyxFQUFBeUIsS0FBQVcsRUFBQTdCLEtBQUEwQixFQUFBRyxHQUFBLElBQUFFLEVBQUFOLEVBQUFqQyxVQUFBbUIsRUFBQW5CLFVBQUFELE9BQUFxQixPQUFBYyxHQUFBLFNBQUFNLEVBQUEzQyxHQUFBLDBCQUFBNEMsU0FBQSxTQUFBN0MsR0FBQWtCLEVBQUFqQixFQUFBRCxHQUFBLFNBQUFDLEdBQUEsWUFBQTZDLFFBQUE5QyxFQUFBQyxFQUFBLGdCQUFBOEMsRUFBQTlDLEVBQUFELEdBQUEsU0FBQWdELEVBQUE5QyxFQUFBSyxFQUFBRyxFQUFBRSxHQUFBLElBQUFFLEVBQUFhLEVBQUExQixFQUFBQyxHQUFBRCxFQUFBTSxHQUFBLGFBQUFPLEVBQUFjLEtBQUEsS0FBQVosRUFBQUYsRUFBQWUsSUFBQUUsRUFBQWYsRUFBQVAsTUFBQSxPQUFBc0IsR0FBQSxVQUFBa0IsRUFBQWxCLElBQUExQixFQUFBeUIsS0FBQUMsRUFBQSxXQUFBL0IsRUFBQWtELFFBQUFuQixFQUFBb0IsU0FBQUMsTUFBQSxTQUFBbkQsR0FBQStDLEVBQUEsT0FBQS9DLEVBQUFTLEVBQUFFLEVBQUEsYUFBQVgsR0FBQStDLEVBQUEsUUFBQS9DLEVBQUFTLEVBQUFFLEVBQUEsSUFBQVosRUFBQWtELFFBQUFuQixHQUFBcUIsTUFBQSxTQUFBbkQsR0FBQWUsRUFBQVAsTUFBQVIsRUFBQVMsRUFBQU0sRUFBQSxhQUFBZixHQUFBLE9BQUErQyxFQUFBLFFBQUEvQyxFQUFBUyxFQUFBRSxFQUFBLElBQUFBLEVBQUFFLEVBQUFlLElBQUEsS0FBQTNCLEVBQUFLLEVBQUEsZ0JBQUFFLE1BQUEsU0FBQVIsRUFBQUksR0FBQSxTQUFBZ0QsSUFBQSxXQUFBckQsR0FBQSxTQUFBQSxFQUFBRSxHQUFBOEMsRUFBQS9DLEVBQUFJLEVBQUFMLEVBQUFFLEVBQUEsV0FBQUEsRUFBQUEsRUFBQUEsRUFBQWtELEtBQUFDLEVBQUFBLEdBQUFBLEdBQUEsYUFBQTNCLEVBQUExQixFQUFBRSxFQUFBRyxHQUFBLElBQUFFLEVBQUF3QixFQUFBLGdCQUFBckIsRUFBQUUsR0FBQSxHQUFBTCxJQUFBMEIsRUFBQSxNQUFBcUIsTUFBQSxtQ0FBQS9DLElBQUEyQixFQUFBLGNBQUF4QixFQUFBLE1BQUFFLEVBQUEsT0FBQUgsTUFBQVIsRUFBQXNELE1BQUEsT0FBQWxELEVBQUFtRCxPQUFBOUMsRUFBQUwsRUFBQXdCLElBQUFqQixJQUFBLEtBQUFFLEVBQUFULEVBQUFvRCxTQUFBLEdBQUEzQyxFQUFBLEtBQUFFLEVBQUEwQyxFQUFBNUMsRUFBQVQsR0FBQSxHQUFBVyxFQUFBLElBQUFBLElBQUFtQixFQUFBLGdCQUFBbkIsQ0FBQSxjQUFBWCxFQUFBbUQsT0FBQW5ELEVBQUFzRCxLQUFBdEQsRUFBQXVELE1BQUF2RCxFQUFBd0IsU0FBQSxhQUFBeEIsRUFBQW1ELE9BQUEsSUFBQWpELElBQUF3QixFQUFBLE1BQUF4QixFQUFBMkIsRUFBQTdCLEVBQUF3QixJQUFBeEIsRUFBQXdELGtCQUFBeEQsRUFBQXdCLElBQUEsZ0JBQUF4QixFQUFBbUQsUUFBQW5ELEVBQUF5RCxPQUFBLFNBQUF6RCxFQUFBd0IsS0FBQXRCLEVBQUEwQixFQUFBLElBQUFLLEVBQUFYLEVBQUEzQixFQUFBRSxFQUFBRyxHQUFBLGNBQUFpQyxFQUFBVixLQUFBLElBQUFyQixFQUFBRixFQUFBa0QsS0FBQXJCLEVBQUFGLEVBQUFNLEVBQUFULE1BQUFNLEVBQUEsZ0JBQUExQixNQUFBNkIsRUFBQVQsSUFBQTBCLEtBQUFsRCxFQUFBa0QsS0FBQSxXQUFBakIsRUFBQVYsT0FBQXJCLEVBQUEyQixFQUFBN0IsRUFBQW1ELE9BQUEsUUFBQW5ELEVBQUF3QixJQUFBUyxFQUFBVCxJQUFBLFlBQUE2QixFQUFBMUQsRUFBQUUsR0FBQSxJQUFBRyxFQUFBSCxFQUFBc0QsT0FBQWpELEVBQUFQLEVBQUFhLFNBQUFSLEdBQUEsR0FBQUUsSUFBQU4sRUFBQSxPQUFBQyxFQUFBdUQsU0FBQSxlQUFBcEQsR0FBQUwsRUFBQWEsU0FBQSxTQUFBWCxFQUFBc0QsT0FBQSxTQUFBdEQsRUFBQTJCLElBQUE1QixFQUFBeUQsRUFBQTFELEVBQUFFLEdBQUEsVUFBQUEsRUFBQXNELFNBQUEsV0FBQW5ELElBQUFILEVBQUFzRCxPQUFBLFFBQUF0RCxFQUFBMkIsSUFBQSxJQUFBa0MsVUFBQSxvQ0FBQTFELEVBQUEsYUFBQThCLEVBQUEsSUFBQXpCLEVBQUFpQixFQUFBcEIsRUFBQVAsRUFBQWEsU0FBQVgsRUFBQTJCLEtBQUEsYUFBQW5CLEVBQUFrQixLQUFBLE9BQUExQixFQUFBc0QsT0FBQSxRQUFBdEQsRUFBQTJCLElBQUFuQixFQUFBbUIsSUFBQTNCLEVBQUF1RCxTQUFBLEtBQUF0QixFQUFBLElBQUF2QixFQUFBRixFQUFBbUIsSUFBQSxPQUFBakIsRUFBQUEsRUFBQTJDLE1BQUFyRCxFQUFBRixFQUFBZ0UsWUFBQXBELEVBQUFILE1BQUFQLEVBQUErRCxLQUFBakUsRUFBQWtFLFFBQUEsV0FBQWhFLEVBQUFzRCxTQUFBdEQsRUFBQXNELE9BQUEsT0FBQXRELEVBQUEyQixJQUFBNUIsR0FBQUMsRUFBQXVELFNBQUEsS0FBQXRCLEdBQUF2QixHQUFBVixFQUFBc0QsT0FBQSxRQUFBdEQsRUFBQTJCLElBQUEsSUFBQWtDLFVBQUEsb0NBQUE3RCxFQUFBdUQsU0FBQSxLQUFBdEIsRUFBQSxVQUFBZ0MsRUFBQWxFLEdBQUEsSUFBQUQsRUFBQSxDQUFBb0UsT0FBQW5FLEVBQUEsU0FBQUEsSUFBQUQsRUFBQXFFLFNBQUFwRSxFQUFBLFNBQUFBLElBQUFELEVBQUFzRSxXQUFBckUsRUFBQSxHQUFBRCxFQUFBdUUsU0FBQXRFLEVBQUEsU0FBQXVFLFdBQUFDLEtBQUF6RSxFQUFBLFVBQUEwRSxFQUFBekUsR0FBQSxJQUFBRCxFQUFBQyxFQUFBMEUsWUFBQSxHQUFBM0UsRUFBQTRCLEtBQUEsZ0JBQUE1QixFQUFBNkIsSUFBQTVCLEVBQUEwRSxXQUFBM0UsQ0FBQSxVQUFBeUIsRUFBQXhCLEdBQUEsS0FBQXVFLFdBQUEsRUFBQUosT0FBQSxTQUFBbkUsRUFBQTRDLFFBQUFzQixFQUFBLFdBQUFTLE9BQUEsWUFBQWxDLEVBQUExQyxHQUFBLEdBQUFBLEdBQUEsS0FBQUEsRUFBQSxLQUFBRSxFQUFBRixFQUFBWSxHQUFBLEdBQUFWLEVBQUEsT0FBQUEsRUFBQTRCLEtBQUE5QixHQUFBLHNCQUFBQSxFQUFBaUUsS0FBQSxPQUFBakUsRUFBQSxJQUFBNkUsTUFBQTdFLEVBQUE4RSxRQUFBLEtBQUF2RSxHQUFBLEVBQUFHLEVBQUEsU0FBQXVELElBQUEsT0FBQTFELEVBQUFQLEVBQUE4RSxRQUFBLEdBQUF6RSxFQUFBeUIsS0FBQTlCLEVBQUFPLEdBQUEsT0FBQTBELEVBQUF4RCxNQUFBVCxFQUFBTyxHQUFBMEQsRUFBQVYsTUFBQSxFQUFBVSxFQUFBLE9BQUFBLEVBQUF4RCxNQUFBUixFQUFBZ0UsRUFBQVYsTUFBQSxFQUFBVSxDQUFBLFNBQUF2RCxFQUFBdUQsS0FBQXZELENBQUEsWUFBQXFELFVBQUFkLEVBQUFqRCxHQUFBLDJCQUFBb0MsRUFBQWhDLFVBQUFpQyxFQUFBOUIsRUFBQW9DLEVBQUEsZUFBQWxDLE1BQUE0QixFQUFBakIsY0FBQSxJQUFBYixFQUFBOEIsRUFBQSxlQUFBNUIsTUFBQTJCLEVBQUFoQixjQUFBLElBQUFnQixFQUFBMkMsWUFBQTdELEVBQUFtQixFQUFBckIsRUFBQSxxQkFBQWhCLEVBQUFnRixvQkFBQSxTQUFBL0UsR0FBQSxJQUFBRCxFQUFBLG1CQUFBQyxHQUFBQSxFQUFBZ0YsWUFBQSxRQUFBakYsSUFBQUEsSUFBQW9DLEdBQUEsdUJBQUFwQyxFQUFBK0UsYUFBQS9FLEVBQUFrRixNQUFBLEVBQUFsRixFQUFBbUYsS0FBQSxTQUFBbEYsR0FBQSxPQUFBRSxPQUFBaUYsZUFBQWpGLE9BQUFpRixlQUFBbkYsRUFBQW9DLElBQUFwQyxFQUFBb0YsVUFBQWhELEVBQUFuQixFQUFBakIsRUFBQWUsRUFBQSxzQkFBQWYsRUFBQUcsVUFBQUQsT0FBQXFCLE9BQUFtQixHQUFBMUMsQ0FBQSxFQUFBRCxFQUFBc0YsTUFBQSxTQUFBckYsR0FBQSxPQUFBa0QsUUFBQWxELEVBQUEsRUFBQTJDLEVBQUFHLEVBQUEzQyxXQUFBYyxFQUFBNkIsRUFBQTNDLFVBQUFVLEdBQUEsMEJBQUFkLEVBQUErQyxjQUFBQSxFQUFBL0MsRUFBQXVGLE1BQUEsU0FBQXRGLEVBQUFDLEVBQUFHLEVBQUFFLEVBQUFHLFFBQUEsSUFBQUEsSUFBQUEsRUFBQThFLFNBQUEsSUFBQTVFLEVBQUEsSUFBQW1DLEVBQUF6QixFQUFBckIsRUFBQUMsRUFBQUcsRUFBQUUsR0FBQUcsR0FBQSxPQUFBVixFQUFBZ0Ysb0JBQUE5RSxHQUFBVSxFQUFBQSxFQUFBcUQsT0FBQWIsTUFBQSxTQUFBbkQsR0FBQSxPQUFBQSxFQUFBc0QsS0FBQXRELEVBQUFRLE1BQUFHLEVBQUFxRCxNQUFBLEtBQUFyQixFQUFBRCxHQUFBekIsRUFBQXlCLEVBQUEzQixFQUFBLGFBQUFFLEVBQUF5QixFQUFBL0IsR0FBQSwwQkFBQU0sRUFBQXlCLEVBQUEscURBQUEzQyxFQUFBeUYsS0FBQSxTQUFBeEYsR0FBQSxJQUFBRCxFQUFBRyxPQUFBRixHQUFBQyxFQUFBLFdBQUFHLEtBQUFMLEVBQUFFLEVBQUF1RSxLQUFBcEUsR0FBQSxPQUFBSCxFQUFBd0YsVUFBQSxTQUFBekIsSUFBQSxLQUFBL0QsRUFBQTRFLFFBQUEsS0FBQTdFLEVBQUFDLEVBQUF5RixNQUFBLEdBQUExRixLQUFBRCxFQUFBLE9BQUFpRSxFQUFBeEQsTUFBQVIsRUFBQWdFLEVBQUFWLE1BQUEsRUFBQVUsQ0FBQSxRQUFBQSxFQUFBVixNQUFBLEVBQUFVLENBQUEsR0FBQWpFLEVBQUEwQyxPQUFBQSxFQUFBakIsRUFBQXJCLFVBQUEsQ0FBQTZFLFlBQUF4RCxFQUFBbUQsTUFBQSxTQUFBNUUsR0FBQSxRQUFBNEYsS0FBQSxPQUFBM0IsS0FBQSxPQUFBTixLQUFBLEtBQUFDLE1BQUEzRCxFQUFBLEtBQUFzRCxNQUFBLE9BQUFFLFNBQUEsVUFBQUQsT0FBQSxZQUFBM0IsSUFBQTVCLEVBQUEsS0FBQXVFLFdBQUEzQixRQUFBNkIsSUFBQTFFLEVBQUEsUUFBQUUsS0FBQSxXQUFBQSxFQUFBMkYsT0FBQSxJQUFBeEYsRUFBQXlCLEtBQUEsS0FBQTVCLEtBQUEyRSxPQUFBM0UsRUFBQTRGLE1BQUEsV0FBQTVGLEdBQUFELEVBQUEsRUFBQThGLEtBQUEsZ0JBQUF4QyxNQUFBLE1BQUF0RCxFQUFBLEtBQUF1RSxXQUFBLEdBQUFHLFdBQUEsYUFBQTFFLEVBQUEyQixLQUFBLE1BQUEzQixFQUFBNEIsSUFBQSxZQUFBbUUsSUFBQSxFQUFBbkMsa0JBQUEsU0FBQTdELEdBQUEsUUFBQXVELEtBQUEsTUFBQXZELEVBQUEsSUFBQUUsRUFBQSxjQUFBK0YsRUFBQTVGLEVBQUFFLEdBQUEsT0FBQUssRUFBQWdCLEtBQUEsUUFBQWhCLEVBQUFpQixJQUFBN0IsRUFBQUUsRUFBQStELEtBQUE1RCxFQUFBRSxJQUFBTCxFQUFBc0QsT0FBQSxPQUFBdEQsRUFBQTJCLElBQUE1QixLQUFBTSxDQUFBLFNBQUFBLEVBQUEsS0FBQWlFLFdBQUFNLE9BQUEsRUFBQXZFLEdBQUEsSUFBQUEsRUFBQSxLQUFBRyxFQUFBLEtBQUE4RCxXQUFBakUsR0FBQUssRUFBQUYsRUFBQWlFLFdBQUEsWUFBQWpFLEVBQUEwRCxPQUFBLE9BQUE2QixFQUFBLFVBQUF2RixFQUFBMEQsUUFBQSxLQUFBd0IsS0FBQSxLQUFBOUUsRUFBQVQsRUFBQXlCLEtBQUFwQixFQUFBLFlBQUFNLEVBQUFYLEVBQUF5QixLQUFBcEIsRUFBQSxpQkFBQUksR0FBQUUsRUFBQSxTQUFBNEUsS0FBQWxGLEVBQUEyRCxTQUFBLE9BQUE0QixFQUFBdkYsRUFBQTJELFVBQUEsV0FBQXVCLEtBQUFsRixFQUFBNEQsV0FBQSxPQUFBMkIsRUFBQXZGLEVBQUE0RCxXQUFBLFNBQUF4RCxHQUFBLFFBQUE4RSxLQUFBbEYsRUFBQTJELFNBQUEsT0FBQTRCLEVBQUF2RixFQUFBMkQsVUFBQSxZQUFBckQsRUFBQSxNQUFBc0MsTUFBQSxrREFBQXNDLEtBQUFsRixFQUFBNEQsV0FBQSxPQUFBMkIsRUFBQXZGLEVBQUE0RCxXQUFBLEtBQUFSLE9BQUEsU0FBQTdELEVBQUFELEdBQUEsUUFBQUUsRUFBQSxLQUFBc0UsV0FBQU0sT0FBQSxFQUFBNUUsR0FBQSxJQUFBQSxFQUFBLEtBQUFLLEVBQUEsS0FBQWlFLFdBQUF0RSxHQUFBLEdBQUFLLEVBQUE2RCxRQUFBLEtBQUF3QixNQUFBdkYsRUFBQXlCLEtBQUF2QixFQUFBLG9CQUFBcUYsS0FBQXJGLEVBQUErRCxXQUFBLEtBQUE1RCxFQUFBSCxFQUFBLE9BQUFHLElBQUEsVUFBQVQsR0FBQSxhQUFBQSxJQUFBUyxFQUFBMEQsUUFBQXBFLEdBQUFBLEdBQUFVLEVBQUE0RCxhQUFBNUQsRUFBQSxVQUFBRSxFQUFBRixFQUFBQSxFQUFBaUUsV0FBQSxVQUFBL0QsRUFBQWdCLEtBQUEzQixFQUFBVyxFQUFBaUIsSUFBQTdCLEVBQUFVLEdBQUEsS0FBQThDLE9BQUEsWUFBQVMsS0FBQXZELEVBQUE0RCxXQUFBbkMsR0FBQSxLQUFBK0QsU0FBQXRGLEVBQUEsRUFBQXNGLFNBQUEsU0FBQWpHLEVBQUFELEdBQUEsYUFBQUMsRUFBQTJCLEtBQUEsTUFBQTNCLEVBQUE0QixJQUFBLGdCQUFBNUIsRUFBQTJCLE1BQUEsYUFBQTNCLEVBQUEyQixLQUFBLEtBQUFxQyxLQUFBaEUsRUFBQTRCLElBQUEsV0FBQTVCLEVBQUEyQixNQUFBLEtBQUFvRSxLQUFBLEtBQUFuRSxJQUFBNUIsRUFBQTRCLElBQUEsS0FBQTJCLE9BQUEsY0FBQVMsS0FBQSxrQkFBQWhFLEVBQUEyQixNQUFBNUIsSUFBQSxLQUFBaUUsS0FBQWpFLEdBQUFtQyxDQUFBLEVBQUFnRSxPQUFBLFNBQUFsRyxHQUFBLFFBQUFELEVBQUEsS0FBQXdFLFdBQUFNLE9BQUEsRUFBQTlFLEdBQUEsSUFBQUEsRUFBQSxLQUFBRSxFQUFBLEtBQUFzRSxXQUFBeEUsR0FBQSxHQUFBRSxFQUFBb0UsYUFBQXJFLEVBQUEsWUFBQWlHLFNBQUFoRyxFQUFBeUUsV0FBQXpFLEVBQUFxRSxVQUFBRyxFQUFBeEUsR0FBQWlDLENBQUEsa0JBQUFsQyxHQUFBLFFBQUFELEVBQUEsS0FBQXdFLFdBQUFNLE9BQUEsRUFBQTlFLEdBQUEsSUFBQUEsRUFBQSxLQUFBRSxFQUFBLEtBQUFzRSxXQUFBeEUsR0FBQSxHQUFBRSxFQUFBa0UsU0FBQW5FLEVBQUEsS0FBQUksRUFBQUgsRUFBQXlFLFdBQUEsYUFBQXRFLEVBQUF1QixLQUFBLEtBQUFyQixFQUFBRixFQUFBd0IsSUFBQTZDLEVBQUF4RSxFQUFBLFFBQUFLLENBQUEsUUFBQStDLE1BQUEsMEJBQUE4QyxjQUFBLFNBQUFwRyxFQUFBRSxFQUFBRyxHQUFBLFlBQUFvRCxTQUFBLENBQUE1QyxTQUFBNkIsRUFBQTFDLEdBQUFnRSxXQUFBOUQsRUFBQWdFLFFBQUE3RCxHQUFBLGNBQUFtRCxTQUFBLEtBQUEzQixJQUFBNUIsR0FBQWtDLENBQUEsR0FBQW5DLENBQUEsVUFBQXFHLEVBQUFoRyxFQUFBSixFQUFBRCxFQUFBRSxFQUFBSyxFQUFBSyxFQUFBRSxHQUFBLFFBQUFKLEVBQUFMLEVBQUFPLEdBQUFFLEdBQUFFLEVBQUFOLEVBQUFELEtBQUEsT0FBQUosR0FBQSxZQUFBTCxFQUFBSyxFQUFBLENBQUFLLEVBQUE2QyxLQUFBdEQsRUFBQWUsR0FBQXdFLFFBQUF0QyxRQUFBbEMsR0FBQW9DLEtBQUFsRCxFQUFBSyxFQUFBLFVBQUErRixFQUFBcEcsRUFBQUYsR0FBQSxnQkFBQUUsR0FBQSxHQUFBcUcsTUFBQUMsUUFBQXRHLEdBQUEsT0FBQUEsQ0FBQSxDQUFBdUcsQ0FBQXZHLElBQUEsU0FBQUEsRUFBQThCLEdBQUEsSUFBQS9CLEVBQUEsTUFBQUMsRUFBQSx5QkFBQVMsUUFBQVQsRUFBQVMsT0FBQUUsV0FBQVgsRUFBQSx1QkFBQUQsRUFBQSxLQUFBRCxFQUFBSyxFQUFBSyxFQUFBTSxFQUFBSixFQUFBLEdBQUFxQixHQUFBLEVBQUExQixHQUFBLFNBQUFHLEdBQUFULEVBQUFBLEVBQUE2QixLQUFBNUIsSUFBQStELEtBQUEsSUFBQWpDLEVBQUEsSUFBQTdCLE9BQUFGLEtBQUFBLEVBQUEsT0FBQWdDLEdBQUEsY0FBQUEsR0FBQWpDLEVBQUFVLEVBQUFvQixLQUFBN0IsSUFBQXNELFFBQUEzQyxFQUFBNkQsS0FBQXpFLEVBQUFTLE9BQUFHLEVBQUFrRSxTQUFBOUMsR0FBQUMsR0FBQSxVQUFBL0IsR0FBQUssR0FBQSxFQUFBRixFQUFBSCxDQUFBLGlCQUFBK0IsR0FBQSxNQUFBaEMsRUFBQSxTQUFBZSxFQUFBZixFQUFBLFNBQUFFLE9BQUFhLEtBQUFBLEdBQUEsa0JBQUFULEVBQUEsTUFBQUYsQ0FBQSxTQUFBTyxDQUFBLEVBQUE4RixDQUFBeEcsRUFBQUYsSUFBQSxTQUFBRSxFQUFBVSxHQUFBLEdBQUFWLEVBQUEscUJBQUFBLEVBQUEsT0FBQXlHLEVBQUF6RyxFQUFBVSxHQUFBLElBQUFYLEVBQUEsR0FBQTJHLFNBQUE5RSxLQUFBNUIsR0FBQTRGLE1BQUEsdUJBQUE3RixHQUFBQyxFQUFBK0UsY0FBQWhGLEVBQUFDLEVBQUErRSxZQUFBQyxNQUFBLFFBQUFqRixHQUFBLFFBQUFBLEVBQUFzRyxNQUFBTSxLQUFBM0csR0FBQSxjQUFBRCxHQUFBLDJDQUFBNkcsS0FBQTdHLEdBQUEwRyxFQUFBekcsRUFBQVUsUUFBQSxHQUFBbUcsQ0FBQTdHLEVBQUFGLElBQUEscUJBQUErRCxVQUFBLDZJQUFBaUQsRUFBQSxVQUFBTCxFQUFBekcsRUFBQVUsSUFBQSxNQUFBQSxHQUFBQSxFQUFBVixFQUFBNEUsVUFBQWxFLEVBQUFWLEVBQUE0RSxRQUFBLFFBQUE5RSxFQUFBLEVBQUFLLEVBQUFrRyxNQUFBM0YsR0FBQVosRUFBQVksRUFBQVosSUFBQUssRUFBQUwsR0FBQUUsRUFBQUYsR0FBQSxPQUFBSyxDQUFBLENBbUJBLElBQU00RyxFQUFlLFNBQUhDLEdBTVosSUFMSkMsRUFBS0QsRUFBTEMsTUFDQUMsRUFBUUYsRUFBUkUsU0FDQUMsRUFBc0JILEVBQXRCRyx1QkFDQUMsRUFBeUJKLEVBQXpCSSwwQkFDQUMsRUFBNEJMLEVBQTVCSyw2QkFHTUMsR0FBWUMsRUFBQUEsRUFBQUEsUUFBTyxNQUNuQkMsR0FBWUQsRUFBQUEsRUFBQUEsUUFBTyxNQUNuQkUsR0FBMEJGLEVBQUFBLEVBQUFBLFFBQU8sTUFHckNHLEVBSUVULEVBSkZTLFVBQ0FDLEVBR0VWLEVBSEZVLGtCQUNBQyxFQUVFWCxFQUZGVyxjQUNBQyxFQUNFWixFQURGWSxlQUc4Q0MsRUFBQTFCLEdBQVoyQixFQUFBQSxFQUFBQSxXQUFVLEdBQUUsR0FBekNDLEVBQVVGLEVBQUEsR0FBRUcsRUFBYUgsRUFBQSxHQUNzQ0ksRUFBQTlCLEdBQVoyQixFQUFBQSxFQUFBQSxVQUFTLElBQUcsR0FBL0RJLEVBQXFCRCxFQUFBLEdBQUVFLEVBQXdCRixFQUFBLEdBQ0NHLEVBQUFqQyxHQUFmMkIsRUFBQUEsRUFBQUEsV0FBUyxHQUFNLEdBQWhETyxFQUFZRCxFQUFBLEdBQUVFLEVBQWVGLEVBQUEsR0FDa0JHLEVBQUFwQyxHQUFaMkIsRUFBQUEsRUFBQUEsV0FBVSxHQUFFLEdBQS9DVSxFQUFhRCxFQUFBLEdBQUVFLEVBQWdCRixFQUFBLElBSXRDRyxFQUFBQSxFQUFBQSxZQUFVLFdBQ1IsSUFBTUMsR0FBT0MsRUFBQUEsRUFBQUEsZ0NBRVRELEVBQ0YxQixFQUFTLENBQ1B4RixLQUFNLDZCQUNOb0gsUUFBUyxDQUNQQyxtQkFBb0JILEVBQUtHLG1CQUN6QkMsZ0JBQWlCSixFQUFLSSxvQkFJMUJDLEVBQUFBLEVBQUFBLDhCQUE2QixDQUMzQkYsbUJBQW9CbEIsRUFBZWtCLG1CQUNuQ0MsZ0JBQWlCbkIsRUFBZW1CLGlCQUd0QyxHQUFHLEtBRUhMLEVBQUFBLEVBQUFBLFlBQVUsWUFDUk0sRUFBQUEsRUFBQUEsOEJBQTZCLENBQzNCRixtQkFBb0JsQixFQUFla0IsbUJBQ25DQyxnQkFBaUJuQixFQUFlbUIsaUJBRXBDLEdBQUcsQ0FBQ25CLEVBQWVrQixtQkFBb0JsQixFQUFlbUIsbUJBR3RERSxFQUFBQSxFQUFBQSw2QkFBNEIsQ0FBRUMsT0FBQUEsRUFBQUEsR0FBUWpDLFNBQUFBLEVBQVVTLGtCQUFBQSxLQUdoRHlCLEVBQUFBLEVBQUFBLDRDQUEyQyxDQUN6QzVCLFVBQUFBLEVBQ0FDLHdCQUFBQSxFQUNBUSxjQUFBQSxFQUNBRCxXQUFBQSxFQUNBTSxhQUFBQSxFQUNBQyxnQkFBQUEsRUFDQXBCLHVCQUFBQSxFQUNBaUIseUJBQUFBLEVBQ0FELHNCQUFBQSxFQUNBTSxjQUFBQSxFQUNBQyxpQkFBQUEsS0FHRlcsRUFBQUEsRUFBQUEsbUNBQWtDLENBQ2hDL0IsVUFBQUEsRUFDQUUsVUFBQUEsRUFDQUwsdUJBQUFBLEtBSUZtQyxFQUFBQSxFQUFBQSxpQ0FBZ0MsQ0FDOUI5QixVQUFBQSxFQUNBTCx1QkFBQUEsRUFDQUMsMEJBQUFBLEVBQ0FtQixnQkFBQUEsSUFJRixJQUdNZ0IsRUFBb0IsZUEzRzVCcEosRUEyRzRCcUosR0EzRzVCckosRUEyRzRCTixJQUFBb0YsTUFBRyxTQUFBd0UsRUFBT0MsRUFBUUMsR0FBTSxPQUFBOUosSUFBQXVCLE1BQUEsU0FBQXdJLEdBQUEsY0FBQUEsRUFBQWxFLEtBQUFrRSxFQUFBN0YsTUFBQSxPQUVoRHVELEVBQVV1QyxRQUFVRixFQUNwQm5DLEVBQVVxQyxRQUFVSCxFQUVwQmpDLEVBQXdCb0MsUUFBVUgsRUFBT0ksNEJBQTRCLElBR3JFcEIsRUFBaUJsQixFQUFVcUMsUUFBUUUsV0FBV0MsaUJBRzlDQyxFQUFBQSxFQUFBQSxvQkFBbUIsQ0FBRVAsT0FBQUEsS0FHckJRLEVBQUFBLEVBQUFBLHFCQUFvQixDQUFFUCxPQUFBQSxLQUd0QlEsRUFBQUEsRUFBQUEsbUJBQWtCLENBQUVSLE9BQUFBLEVBQVFELE9BQUFBLEVBQVF6QixjQUFBQSxJQUFpQix3QkFBQTJCLEVBQUEvRCxPQUFBLEdBQUE0RCxFQUFBLElBNUh6RCxlQUFBMUosRUFBQSxLQUFBRCxFQUFBc0ssVUFBQSxXQUFBOUUsU0FBQSxTQUFBdEYsRUFBQUssR0FBQSxJQUFBSyxFQUFBUCxFQUFBa0ssTUFBQXRLLEVBQUFELEdBQUEsU0FBQXdLLEVBQUFuSyxHQUFBZ0csRUFBQXpGLEVBQUFWLEVBQUFLLEVBQUFpSyxFQUFBQyxFQUFBLE9BQUFwSyxFQUFBLFVBQUFvSyxFQUFBcEssR0FBQWdHLEVBQUF6RixFQUFBVixFQUFBSyxFQUFBaUssRUFBQUMsRUFBQSxRQUFBcEssRUFBQSxDQUFBbUssT0FBQSxRQTZIRyxnQkFsQnlCRSxFQUFBQyxHQUFBLE9BQUFqQixFQUFBYSxNQUFBLEtBQUFELFVBQUEsS0FvQjFCLE9BQ0VNLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsVUFBVSxnQkFBZUMsU0FDM0JsRCxHQUNDZ0QsRUFBQUEsRUFBQUEsS0FBQ0csRUFBQUEsbUJBQWtCLENBQUNDLE1BQU9uRCxLQUUzQm9ELEVBQUFBLEVBQUFBLE1BQUFDLEVBQUFBLFNBQUEsQ0FBQUosU0FBQSxFQUNFRixFQUFBQSxFQUFBQSxLQUFDTyxFQUFBQSxRQUFnQixDQUNmcEQsZUFBZ0JBLEVBQ2hCWCxTQUFVQSxFQUNWTSxVQUFXQSxLQUVia0QsRUFBQUEsRUFBQUEsS0FBQ1EsRUFBQUEsR0FBTSxDQUNMQyxPQUFPLE9BQ1BDLE1BQU0sT0FDTkMsZ0JBQWdCLFNBQ2hCUCxNQUFPbkQsRUFDUDJELGFBQWNuRSxFQUNkNUcsTUFBTzRHLEVBQ1BvRSxTQUFVLFNBQUNDLEdBQUksT0FBS25FLEVBQTZCbUUsRUFBSyxFQUN0REMsWUExQ29CLFNBQUMvQixFQUFRQyxHQUFZLEVBMkN6QytCLFFBQVNuQyxFQUVUb0MsUUFBUy9ELEVBQ1QrQyxVQUFVLFNBTXRCLEVBRUEsVUFFQTVELEVBQWE3RyxVQUFZLENBQ3ZCK0csTUFBTzJFLElBQUFBLE9BQWlCQyxXQUN4QjNFLFNBQVUwRSxJQUFBQSxLQUFlQyxXQUN6QjFFLHVCQUF3QnlFLElBQUFBLE9BQWlCQyxXQUN6Q3pFLDBCQUEyQndFLElBQUFBLEtBQWVDLFdBQzFDeEUsNkJBQThCdUUsSUFBQUEsS0FBZUMsd25DQ2xLeEMsSUFBTUMsRUFBZSxDQUMxQkMsR0FBSSxDQUNGQyxHQUFJLE9BQ0pDLEtBQU0sT0FDTkMsS0FBTSxRQUVSQyxRQUFTLENBQ1BILEdBQUksVUFDSkMsS0FBTSxVQUNOQyxLQUFNLFFBRVJFLFNBQVUsQ0FDUkosR0FBSSxPQUNKQyxLQUFNLE9BQ05DLEtBQU0sWUFJSkcsRUFBWSxDQUNoQixDQUNFakIsTUFBTyxNQUNQRCxPQUFRLE9BQ1JtQixhQUFjLEdBQ2RDLGVBQWdCLE9BRWxCLENBQ0VuQixNQUFPLE1BQ1BELE9BQVEsT0FDUm1CLGFBQWMsR0FDZEMsZUFBZ0IsT0FHbEIsQ0FDRW5CLE1BQU8sS0FDUEQsT0FBUSxLQUNSbUIsYUFBYyxPQUNkQyxlQUFnQixPQUVsQixDQUNFbkIsTUFBTyxNQUNQRCxPQUFRLE9BQ1JtQixhQUFjLEdBQ2RDLGVBQWdCLE9BR2xCLENBQ0VuQixNQUFPLE1BQ1BELE9BQVEsT0FDUm1CLGFBQWMsR0FDZEMsZUFBZ0IsUUFHbEIsQ0FDRW5CLE1BQU8sTUFDUEQsT0FBUSxPQUNSbUIsYUFBYyxPQUNkQyxlQUFnQixRQUdsQixDQUNFbkIsTUFBTyxNQUNQRCxPQUFRLE9BQ1JtQixhQUFjLEdBQ2RDLGVBQWdCLFFBRWxCLENBQ0VuQixNQUFPLEtBQ1BELE9BQVEsTUFDUm1CLGFBQWMsR0FDZEMsZUFBZ0IsSUFFbEIsQ0FDRW5CLE1BQU8sTUFDUEQsT0FBUSxPQUNSbUIsYUFBYyxHQUNkQyxlQUFnQixRQUVsQixDQUNFbkIsTUFBTyxLQUNQRCxPQUFRLE1BQ1JtQixhQUFjLEdBQ2RDLGVBQWdCLElBRWxCLENBQ0VuQixNQUFPLEtBQ1BELE9BQVEsTUFDUm1CLGFBQWMsR0FDZEMsZUFBZ0IsSUFFbEIsQ0FDRW5CLE1BQU8sTUFDUEQsT0FBUSxPQUNSbUIsYUFBYyxHQUNkQyxlQUFnQixLQUlkMUIsRUFBcUIsU0FBSDdELEdBQWtCLElBQVo4RCxFQUFLOUQsRUFBTDhELE1BQ3NCaEQsRUFBQTFCLEdBQWQyQixFQUFBQSxFQUFBQSxVQUFTLE1BQUssR0FBM0N5RSxFQUFVMUUsRUFBQSxHQUFFMkUsRUFBYTNFLEVBQUEsR0FDMEJJLEVBQUE5QixHQUFkMkIsRUFBQUEsRUFBQUEsVUFBUyxNQUFLLEdBQW5EMkUsRUFBY3hFLEVBQUEsR0FBRXlFLEVBQWlCekUsRUFBQSxHQU94QyxPQUxBUyxFQUFBQSxFQUFBQSxZQUFVLFdBQ1IsSUFBTTVJLEVBQUkrTCxFQUFhaEIsRUFBTThCLE1BQU0sS0FBS0MsS0FBSyxNQUM3Q0osRUFBYyxHQUFESyxPQUFJL00sRUFBRWlNLEtBQ25CVyxFQUFrQixHQUFERyxPQUFJL00sRUFBRW1NLE1BQ3pCLEdBQUcsQ0FBQ3BCLEtBRUZKLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBUyxzQ0FDVG9DLE1BQU8sQ0FBRUMsZ0JBQWlCLEdBQUZGLE9BQUtOLElBQWU1QixVQUU1Q0YsRUFBQUEsRUFBQUEsS0FBQSxPQUNFQyxVQUFTLDhEQUFnRUMsU0FFeEV5QixFQUFVWSxLQUFJLFNBQUNmLEVBQU0xTCxHQUFDLE9BQ3JCdUssRUFBQUEsRUFBQUEsTUFBQSxPQUNFSixVQUFVLHlEQUF3REMsU0FBQSxFQUdsRUYsRUFBQUEsRUFBQUEsS0FBQSxRQUNFQyxVQUFTLFlBQ1RvQyxNQUFPLENBQUVHLE1BQU8sR0FBRkosT0FBS0osSUFBbUI5QixTQUVyQ3BLLEVBQUksS0FFUGtLLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBUywwQkFDVG9DLE1BQU8sQ0FDTEMsZ0JBQWlCLEdBQUZGLE9BQUtKLEdBQ3BCdEIsTUFBTyxHQUFGMEIsT0FBS1osRUFBS2QsT0FDZkQsT0FBUSxPQUNSbUIsYUFBYyxHQUFGUSxPQUFLWixFQUFLSSxjQUN0QmEsV0FBWSxHQUFGTCxPQUFLWixFQUFLSyxxQkFmbkIvTCxFQWtCRCxPQUtoQixFQUVBLFVBRUFxSyxFQUFtQjNLLFVBQVksQ0FDN0I0SyxNQUFPYyxJQUFBQSxPQUFpQkMsZ09DckpuQixJQUFNdUIsRUFBYSxDQUFDLE1BQU8sT0FDckJDLEVBQXdCLENBQUMsV0FDekJDLEVBQTBCLDhJQWMxQkMsRUFBZSxDQUFDLFFBQVMsU0FDekJDLEVBQWlCLENBQUMsU0FDbEJDLEVBQW9CLENBQUMsUUFBUyxRQUFTLFFBQVMsUUFBUyxTQUN6REMsRUFBa0IsR0FDbEJDLEVBQWUscUdDMkQ1QixRQXpFeUIsU0FBSDNHLEdBQWdELElBQTFDYSxFQUFjYixFQUFkYSxlQUFnQlgsRUFBUUYsRUFBUkUsU0FBVU0sRUFBU1IsRUFBVFEsVUFDNUNvRyxFQUNOL0YsRUFETStGLFlBR0ZDLEdBRkpoRyxFQURtQmtCLG1CQUNuQmxCLEVBRHVDbUIsZ0JBQ3ZDbkIsRUFEd0RpRyxpQkFHdkMsSUFBSUMsY0FBYyxVQUFXLENBQzlDQyxJQUFLLElBQ0xDLFNBQVMsRUFDVEMsU0FBUyxLQXdCWCxPQUNFbkQsRUFBQUEsRUFBQUEsTUFBQUMsRUFBQUEsU0FBQSxDQUFBSixTQUFBLENBQ0dnRCxJQUNDN0MsRUFBQUEsRUFBQUEsTUFBQUMsRUFBQUEsU0FBQSxDQUFBSixTQUFBLEVBRUVGLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBVSxnREFDVm9DLE1BQU8sQ0FDTFAsV0FBWSxzQkFDWjJCLE9BQVEsWUFDUkMsZUFBZ0IsZ0JBSXBCckQsRUFBQUEsRUFBQUEsTUFBQSxPQUNFSixVQUFVLGdJQUNWb0MsTUFBTyxDQUFFc0IsT0FBUSxxQkFBc0J6RCxTQUFBLEVBR3ZDRixFQUFBQSxFQUFBQSxLQUFDNEQsRUFBQUEsUUFBdUIsQ0FDdEJwSCxTQUFVQSxFQUNWVyxlQUFnQkEsS0FHbEI2QyxFQUFBQSxFQUFBQSxLQUFDNkQsRUFBQUEsUUFBdUIsQ0FDdEIxRyxlQUFnQkEsRUFDaEJYLFNBQVVBLFdBTWxCd0QsRUFBQUEsRUFBQUEsS0FBQzhELEVBQUFBLFFBQXVCLENBQ3RCM0csZUFBZ0JBLEVBQ2hCWCxTQUFVQSxFQUNWdUgsZUFwRGlCLFNBQUNDLEdBQ3RCLElBQU1DLEVBQWtCbkgsRUFBVXFDLFFBQVErRSxVQUN4Q2pGLE9BQU9ELE9BQU9tRixhQUFhQyxVQUloQixPQUFUSixFQUNGbEgsRUFBVXFDLFFBQVFrRixjQUFjLENBQzlCRCxTQUFVRSxLQUFLQyxJQUFJLElBQUtOLEVBQWtCLEtBRzVDbkgsRUFBVXFDLFFBQVFrRixjQUFjLENBQzlCRCxTQUFVRSxLQUFLRSxJQUFJLEdBQUlQLEVBQWtCLElBRy9DLEVBc0NNUSxpQkF6RG1CLFdBQ3ZCM0gsRUFBVXFDLFFBQVF1RixhQUFhQyxjQUFjeEIsRUFDL0MsTUEyREYsZ0ZDTEEsUUFyRWdDLFNBQUg3RyxHQUt2QixJQUpKYSxFQUFjYixFQUFkYSxlQUNBWCxFQUFRRixFQUFSRSxTQUNBdUgsRUFBY3pILEVBQWR5SCxlQUNBVSxFQUFnQm5JLEVBQWhCbUksaUJBRVF2QixFQUFxRC9GLEVBQXJEK0YsWUFBYTdFLEVBQXdDbEIsRUFBeENrQixtQkFBb0JDLEVBQW9CbkIsRUFBcEJtQixnQkFDekMsT0FDRStCLEVBQUFBLEVBQUFBLE1BQUEsT0FDRUosVUFBUyxpSUFBQW1DLE9BQ1AvRCxHQUFzQkMsRUFBa0IsV0FBSCxvQkFBbUMsOEJBRTFFK0QsTUFBTyxDQUFDdUMsT0FBUSxNQUFNMUUsU0FBQSxDQUdyQjVCLElBQ0MrQixFQUFBQSxFQUFBQSxNQUFBLE9BQUtKLFVBQVUsMEJBQXlCQyxTQUFBLEVBQ3RDRyxFQUFBQSxFQUFBQSxNQUFBLE9BQUtKLFVBQVUsNEVBQTJFQyxTQUFBLEVBRXhGRixFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLFVBQVUsNEdBQ1Y0RSxRQUFTLGtCQUFNZCxFQUFlLEtBQUssRUFDbkNlLE1BQU0sVUFBUzVFLFVBRWZGLEVBQUFBLEVBQUFBLEtBQUMrRSxFQUFBQSxXQUFVLENBQUNDLFNBQVMsUUFHdkJoRixFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLFVBQVUsNEdBQ1Y0RSxRQUFTLGtCQUFNZCxFQUFlLE9BQU8sRUFDckNlLE1BQU0sV0FBVTVFLFVBRWhCRixFQUFBQSxFQUFBQSxLQUFDaUYsRUFBQUEsWUFBVyxDQUFDRCxTQUFTLFdBRzFCaEYsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLGdDQUlsQjVCLElBQ0NnQyxFQUFBQSxFQUFBQSxNQUFBLE9BQUtKLFVBQVUsMEJBQXlCQyxTQUFBLEVBQ3RDRixFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLFVBQVUsdUdBQ1Y0RSxRQUFTLGtCQUFNSixHQUFrQixFQUNqQ0ssTUFBTSxjQUFhNUUsVUFFbkJGLEVBQUFBLEVBQUFBLEtBQUNrRixFQUFBQSxVQUFTLENBQUNGLFNBQVMsUUFHdEJoRixFQUFBQSxFQUFBQSxLQUFBLE9BQUtDLFVBQVUsaUNBSW5CRCxFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLFVBQVUsdUdBQ1Y0RSxRQUFTLGtCQUNQckksRUFBUyxDQUNQeEYsS0FBTSwyQkFDTm9ILFFBQVMsQ0FBRThFLGFBQWNBLElBQ3pCLEVBRUo0QixNQUFNLFlBQVc1RSxVQUVqQkYsRUFBQUEsRUFBQUEsS0FBQ21GLEVBQUFBLFNBQVEsQ0FBQ0gsU0FBUyxTQUkzQixnRkNuRU1JLEVBQW1CLENBQ3ZCLENBQUVOLE1BQU8sY0FBZWpLLEtBQU0sQ0FBQyxPQUFRLE1BQ3ZDLENBQUVpSyxNQUFPLFlBQWFqSyxLQUFNLENBQUMsT0FBUSxXQUdqQ3dLLEVBQWlCLENBQ3JCLENBQUVQLE1BQU8sWUFBYVEsR0FBSSxtQkFDMUIsQ0FBRVIsTUFBTyxjQUFlUSxHQUFJLHVCQXNGOUIsUUFuRmdDLFNBQUhoSixHQUFxQyxJQUEvQmEsRUFBY2IsRUFBZGEsZUFBZ0JYLEVBQVFGLEVBQVJFLFNBQ3pDMEcsRUFDTi9GLEVBRE0rRixZQUFhRSxFQUNuQmpHLEVBRG1CaUcsaUJBQWtCL0UsRUFDckNsQixFQURxQ2tCLG1CQUFvQkMsRUFDekRuQixFQUR5RG1CLGdCQU8zRCxPQUNFK0IsRUFBQUEsRUFBQUEsTUFBQSxPQUFLSixVQUFVLDBEQUF5REMsU0FBQSxFQUV0RUYsRUFBQUEsRUFBQUEsS0FBQSxPQUNFQyxVQUFVLDhIQUNWNEUsUUFBUyxrQkFDUHJJLEVBQVMsQ0FDUHhGLEtBQU0sMkJBQ05vSCxRQUFTLENBQUU4RSxhQUFjQSxJQUN6QixFQUNIaEQsVUFFREYsRUFBQUEsRUFBQUEsS0FBQ3VGLEVBQUFBLFVBQVMsQ0FBQ1AsU0FBUyxRQUd0QjNFLEVBQUFBLEVBQUFBLE1BQUEsT0FBS0osVUFBUyx3Q0FBMENDLFNBQUEsQ0FFaEMsY0FBckJrRCxJQUNDcEQsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLHlDQUF3Q0MsU0FFcERrRixFQUFpQjdDLEtBQUksU0FBQ2lELEVBQVUxUCxHQUFDLE9BQ2hDdUssRUFBQUEsRUFBQUEsTUFBQSxPQUNFSixVQUFVLGlFQUFnRUMsU0FBQSxFQUcxRUYsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLEdBQUVDLFNBQUVzRixFQUFTVixTQUM1QnpFLEVBQUFBLEVBQUFBLE1BQUEsT0FBS0osVUFBVSwwQkFBeUJDLFNBQUEsRUFDdENGLEVBQUFBLEVBQUFBLEtBQUEsUUFBTUMsVUFBVSx1RUFBc0VDLFNBQ25Gc0YsRUFBUzNLLEtBQUssS0FDVixLQUVQbUYsRUFBQUEsRUFBQUEsS0FBQSxRQUFNQyxVQUFVLHVFQUFzRUMsU0FDbkZzRixFQUFTM0ssS0FBSyxVQVRkL0UsRUFZRCxNQUtVLFlBQXJCc04sSUFDQ3BELEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsVUFBVSw4Q0FBNkNDLFNBQ3pEbUYsRUFBZTlDLEtBQUksU0FBQ2tELEVBQVEzUCxHQUFDLE9BQzVCdUssRUFBQUEsRUFBQUEsTUFBQSxPQUNFSixVQUFVLGlFQUFnRUMsU0FBQSxFQUcxRUYsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLEdBQUVDLFNBQUV1RixFQUFPWCxTQUMxQnpFLEVBQUFBLEVBQUFBLE1BQUEsU0FBT0osVUFBVSwwQ0FBeUNDLFNBQUEsRUFDeERGLEVBQUFBLEVBQUFBLEtBQUEsU0FDRWhKLEtBQUssV0FDTG5CLE1BQ2dCLHVCQUFkNFAsRUFBT0gsR0FBMkIsdUNBSXBDckYsVUFBVSxlQUNWeUYsUUFDZ0IsdUJBQWRELEVBQU9ILEdBQ0hqSCxFQUNBQyxFQUVOdUMsU0FBVSxTQUFDekwsR0FBQyxPQWxFRixTQUFDQSxHQUMzQixJQUFNUyxFQUFRVCxFQUFFdVEsT0FBTzlQLE1BQ3ZCMkcsRUFBUyxDQUFFeEYsS0FBTW5CLEdBQ25CLENBK0RtQytQLENBQW9CeFEsRUFBRSxLQUV6QzRLLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsVUFBVSxpYkFuQlpuSyxFQXFCRCxXQU9wQixnRkNyREEsUUF0Q2dDLFNBQUh3RyxHQUFxQyxJQUEvQmEsRUFBY2IsRUFBZGEsZUFBZ0JYLEVBQVFGLEVBQVJFLFNBQ3pDNEcsRUFBcUJqRyxFQUFyQmlHLGlCQUNSLE9BQ0UvQyxFQUFBQSxFQUFBQSxNQUFBLE9BQUtKLFVBQVUsNkdBQTRHQyxTQUFBLEVBRXpIRyxFQUFBQSxFQUFBQSxNQUFBLE9BQ0VKLFVBQVMscUZBQUFtQyxPQUNjLGNBQXJCZ0IsRUFBbUMsZUFBSCxJQUVsQ3lCLFFBQVMsa0JBQ1BySSxFQUFTLENBQ1B4RixLQUFNLHlCQUNOb0gsUUFBUyxDQUFFeUgsT0FBUSxjQUNuQixFQUNIM0YsU0FBQSxFQUVERixFQUFBQSxFQUFBQSxLQUFDOEYsRUFBQUEsYUFBWSxDQUFDZCxTQUFTLE1BQ3ZCaEYsRUFBQUEsRUFBQUEsS0FBQSxRQUFNQyxVQUFVLHlCQUF3QkMsU0FBQyxrQkFHM0NHLEVBQUFBLEVBQUFBLE1BQUEsT0FDRUosVUFBUyxxRkFBQW1DLE9BQ2MsWUFBckJnQixFQUFpQyxlQUFILElBRWhDeUIsUUFBUyxrQkFDUHJJLEVBQVMsQ0FDUHhGLEtBQU0seUJBQ05vSCxRQUFTLENBQUV5SCxPQUFRLFlBQ25CLEVBQ0gzRixTQUFBLEVBRURGLEVBQUFBLEVBQUFBLEtBQUMrRixFQUFBQSxZQUFXLENBQUNmLFNBQVMsTUFDdEJoRixFQUFBQSxFQUFBQSxLQUFBLFFBQU1DLFVBQVUseUJBQXdCQyxTQUFDLGlCQUlqRCxxUUN0Q0EvSyxFQUFBLGtCQUFBQyxDQUFBLE1BQUFDLEVBQUFELEVBQUEsR0FBQUUsRUFBQUMsT0FBQUMsVUFBQUMsRUFBQUgsRUFBQUksZUFBQUMsRUFBQUosT0FBQUssZ0JBQUEsU0FBQVAsRUFBQUQsRUFBQUUsR0FBQUQsRUFBQUQsR0FBQUUsRUFBQU8sS0FBQSxFQUFBQyxFQUFBLG1CQUFBQyxPQUFBQSxPQUFBLEdBQUFDLEVBQUFGLEVBQUFHLFVBQUEsYUFBQUMsRUFBQUosRUFBQUssZUFBQSxrQkFBQUMsRUFBQU4sRUFBQU8sYUFBQSx5QkFBQUMsRUFBQWpCLEVBQUFELEVBQUFFLEdBQUEsT0FBQUMsT0FBQUssZUFBQVAsRUFBQUQsRUFBQSxDQUFBUyxNQUFBUCxFQUFBaUIsWUFBQSxFQUFBQyxjQUFBLEVBQUFDLFVBQUEsSUFBQXBCLEVBQUFELEVBQUEsS0FBQWtCLEVBQUEsYUFBQWpCLEdBQUFpQixFQUFBLFNBQUFqQixFQUFBRCxFQUFBRSxHQUFBLE9BQUFELEVBQUFELEdBQUFFLENBQUEsV0FBQW9CLEVBQUFyQixFQUFBRCxFQUFBRSxFQUFBRyxHQUFBLElBQUFLLEVBQUFWLEdBQUFBLEVBQUFJLHFCQUFBbUIsRUFBQXZCLEVBQUF1QixFQUFBWCxFQUFBVCxPQUFBcUIsT0FBQWQsRUFBQU4sV0FBQVUsRUFBQSxJQUFBVyxFQUFBcEIsR0FBQSxXQUFBRSxFQUFBSyxFQUFBLFdBQUFILE1BQUFpQixFQUFBekIsRUFBQUMsRUFBQVksS0FBQUYsQ0FBQSxVQUFBZSxFQUFBMUIsRUFBQUQsRUFBQUUsR0FBQSxXQUFBMEIsS0FBQSxTQUFBQyxJQUFBNUIsRUFBQTZCLEtBQUE5QixFQUFBRSxHQUFBLE9BQUFELEdBQUEsT0FBQTJCLEtBQUEsUUFBQUMsSUFBQTVCLEVBQUEsRUFBQUQsRUFBQXNCLEtBQUFBLEVBQUEsSUFBQVMsRUFBQSxpQkFBQUMsRUFBQSxpQkFBQUMsRUFBQSxZQUFBQyxFQUFBLFlBQUFDLEVBQUEsWUFBQVosSUFBQSxVQUFBYSxJQUFBLFVBQUFDLElBQUEsS0FBQUMsRUFBQSxHQUFBcEIsRUFBQW9CLEVBQUExQixHQUFBLDhCQUFBMkIsRUFBQXBDLE9BQUFxQyxlQUFBQyxFQUFBRixHQUFBQSxFQUFBQSxFQUFBRyxFQUFBLE1BQUFELEdBQUFBLElBQUF2QyxHQUFBRyxFQUFBeUIsS0FBQVcsRUFBQTdCLEtBQUEwQixFQUFBRyxHQUFBLElBQUFFLEVBQUFOLEVBQUFqQyxVQUFBbUIsRUFBQW5CLFVBQUFELE9BQUFxQixPQUFBYyxHQUFBLFNBQUFNLEVBQUEzQyxHQUFBLDBCQUFBNEMsU0FBQSxTQUFBN0MsR0FBQWtCLEVBQUFqQixFQUFBRCxHQUFBLFNBQUFDLEdBQUEsWUFBQTZDLFFBQUE5QyxFQUFBQyxFQUFBLGdCQUFBOEMsRUFBQTlDLEVBQUFELEdBQUEsU0FBQWdELEVBQUE5QyxFQUFBSyxFQUFBRyxFQUFBRSxHQUFBLElBQUFFLEVBQUFhLEVBQUExQixFQUFBQyxHQUFBRCxFQUFBTSxHQUFBLGFBQUFPLEVBQUFjLEtBQUEsS0FBQVosRUFBQUYsRUFBQWUsSUFBQUUsRUFBQWYsRUFBQVAsTUFBQSxPQUFBc0IsR0FBQSxVQUFBa0IsRUFBQWxCLElBQUExQixFQUFBeUIsS0FBQUMsRUFBQSxXQUFBL0IsRUFBQWtELFFBQUFuQixFQUFBb0IsU0FBQUMsTUFBQSxTQUFBbkQsR0FBQStDLEVBQUEsT0FBQS9DLEVBQUFTLEVBQUFFLEVBQUEsYUFBQVgsR0FBQStDLEVBQUEsUUFBQS9DLEVBQUFTLEVBQUFFLEVBQUEsSUFBQVosRUFBQWtELFFBQUFuQixHQUFBcUIsTUFBQSxTQUFBbkQsR0FBQWUsRUFBQVAsTUFBQVIsRUFBQVMsRUFBQU0sRUFBQSxhQUFBZixHQUFBLE9BQUErQyxFQUFBLFFBQUEvQyxFQUFBUyxFQUFBRSxFQUFBLElBQUFBLEVBQUFFLEVBQUFlLElBQUEsS0FBQTNCLEVBQUFLLEVBQUEsZ0JBQUFFLE1BQUEsU0FBQVIsRUFBQUksR0FBQSxTQUFBZ0QsSUFBQSxXQUFBckQsR0FBQSxTQUFBQSxFQUFBRSxHQUFBOEMsRUFBQS9DLEVBQUFJLEVBQUFMLEVBQUFFLEVBQUEsV0FBQUEsRUFBQUEsRUFBQUEsRUFBQWtELEtBQUFDLEVBQUFBLEdBQUFBLEdBQUEsYUFBQTNCLEVBQUExQixFQUFBRSxFQUFBRyxHQUFBLElBQUFFLEVBQUF3QixFQUFBLGdCQUFBckIsRUFBQUUsR0FBQSxHQUFBTCxJQUFBMEIsRUFBQSxNQUFBcUIsTUFBQSxtQ0FBQS9DLElBQUEyQixFQUFBLGNBQUF4QixFQUFBLE1BQUFFLEVBQUEsT0FBQUgsTUFBQVIsRUFBQXNELE1BQUEsT0FBQWxELEVBQUFtRCxPQUFBOUMsRUFBQUwsRUFBQXdCLElBQUFqQixJQUFBLEtBQUFFLEVBQUFULEVBQUFvRCxTQUFBLEdBQUEzQyxFQUFBLEtBQUFFLEVBQUEwQyxFQUFBNUMsRUFBQVQsR0FBQSxHQUFBVyxFQUFBLElBQUFBLElBQUFtQixFQUFBLGdCQUFBbkIsQ0FBQSxjQUFBWCxFQUFBbUQsT0FBQW5ELEVBQUFzRCxLQUFBdEQsRUFBQXVELE1BQUF2RCxFQUFBd0IsU0FBQSxhQUFBeEIsRUFBQW1ELE9BQUEsSUFBQWpELElBQUF3QixFQUFBLE1BQUF4QixFQUFBMkIsRUFBQTdCLEVBQUF3QixJQUFBeEIsRUFBQXdELGtCQUFBeEQsRUFBQXdCLElBQUEsZ0JBQUF4QixFQUFBbUQsUUFBQW5ELEVBQUF5RCxPQUFBLFNBQUF6RCxFQUFBd0IsS0FBQXRCLEVBQUEwQixFQUFBLElBQUFLLEVBQUFYLEVBQUEzQixFQUFBRSxFQUFBRyxHQUFBLGNBQUFpQyxFQUFBVixLQUFBLElBQUFyQixFQUFBRixFQUFBa0QsS0FBQXJCLEVBQUFGLEVBQUFNLEVBQUFULE1BQUFNLEVBQUEsZ0JBQUExQixNQUFBNkIsRUFBQVQsSUFBQTBCLEtBQUFsRCxFQUFBa0QsS0FBQSxXQUFBakIsRUFBQVYsT0FBQXJCLEVBQUEyQixFQUFBN0IsRUFBQW1ELE9BQUEsUUFBQW5ELEVBQUF3QixJQUFBUyxFQUFBVCxJQUFBLFlBQUE2QixFQUFBMUQsRUFBQUUsR0FBQSxJQUFBRyxFQUFBSCxFQUFBc0QsT0FBQWpELEVBQUFQLEVBQUFhLFNBQUFSLEdBQUEsR0FBQUUsSUFBQU4sRUFBQSxPQUFBQyxFQUFBdUQsU0FBQSxlQUFBcEQsR0FBQUwsRUFBQWEsU0FBQSxTQUFBWCxFQUFBc0QsT0FBQSxTQUFBdEQsRUFBQTJCLElBQUE1QixFQUFBeUQsRUFBQTFELEVBQUFFLEdBQUEsVUFBQUEsRUFBQXNELFNBQUEsV0FBQW5ELElBQUFILEVBQUFzRCxPQUFBLFFBQUF0RCxFQUFBMkIsSUFBQSxJQUFBa0MsVUFBQSxvQ0FBQTFELEVBQUEsYUFBQThCLEVBQUEsSUFBQXpCLEVBQUFpQixFQUFBcEIsRUFBQVAsRUFBQWEsU0FBQVgsRUFBQTJCLEtBQUEsYUFBQW5CLEVBQUFrQixLQUFBLE9BQUExQixFQUFBc0QsT0FBQSxRQUFBdEQsRUFBQTJCLElBQUFuQixFQUFBbUIsSUFBQTNCLEVBQUF1RCxTQUFBLEtBQUF0QixFQUFBLElBQUF2QixFQUFBRixFQUFBbUIsSUFBQSxPQUFBakIsRUFBQUEsRUFBQTJDLE1BQUFyRCxFQUFBRixFQUFBZ0UsWUFBQXBELEVBQUFILE1BQUFQLEVBQUErRCxLQUFBakUsRUFBQWtFLFFBQUEsV0FBQWhFLEVBQUFzRCxTQUFBdEQsRUFBQXNELE9BQUEsT0FBQXRELEVBQUEyQixJQUFBNUIsR0FBQUMsRUFBQXVELFNBQUEsS0FBQXRCLEdBQUF2QixHQUFBVixFQUFBc0QsT0FBQSxRQUFBdEQsRUFBQTJCLElBQUEsSUFBQWtDLFVBQUEsb0NBQUE3RCxFQUFBdUQsU0FBQSxLQUFBdEIsRUFBQSxVQUFBZ0MsRUFBQWxFLEdBQUEsSUFBQUQsRUFBQSxDQUFBb0UsT0FBQW5FLEVBQUEsU0FBQUEsSUFBQUQsRUFBQXFFLFNBQUFwRSxFQUFBLFNBQUFBLElBQUFELEVBQUFzRSxXQUFBckUsRUFBQSxHQUFBRCxFQUFBdUUsU0FBQXRFLEVBQUEsU0FBQXVFLFdBQUFDLEtBQUF6RSxFQUFBLFVBQUEwRSxFQUFBekUsR0FBQSxJQUFBRCxFQUFBQyxFQUFBMEUsWUFBQSxHQUFBM0UsRUFBQTRCLEtBQUEsZ0JBQUE1QixFQUFBNkIsSUFBQTVCLEVBQUEwRSxXQUFBM0UsQ0FBQSxVQUFBeUIsRUFBQXhCLEdBQUEsS0FBQXVFLFdBQUEsRUFBQUosT0FBQSxTQUFBbkUsRUFBQTRDLFFBQUFzQixFQUFBLFdBQUFTLE9BQUEsWUFBQWxDLEVBQUExQyxHQUFBLEdBQUFBLEdBQUEsS0FBQUEsRUFBQSxLQUFBRSxFQUFBRixFQUFBWSxHQUFBLEdBQUFWLEVBQUEsT0FBQUEsRUFBQTRCLEtBQUE5QixHQUFBLHNCQUFBQSxFQUFBaUUsS0FBQSxPQUFBakUsRUFBQSxJQUFBNkUsTUFBQTdFLEVBQUE4RSxRQUFBLEtBQUF2RSxHQUFBLEVBQUFHLEVBQUEsU0FBQXVELElBQUEsT0FBQTFELEVBQUFQLEVBQUE4RSxRQUFBLEdBQUF6RSxFQUFBeUIsS0FBQTlCLEVBQUFPLEdBQUEsT0FBQTBELEVBQUF4RCxNQUFBVCxFQUFBTyxHQUFBMEQsRUFBQVYsTUFBQSxFQUFBVSxFQUFBLE9BQUFBLEVBQUF4RCxNQUFBUixFQUFBZ0UsRUFBQVYsTUFBQSxFQUFBVSxDQUFBLFNBQUF2RCxFQUFBdUQsS0FBQXZELENBQUEsWUFBQXFELFVBQUFkLEVBQUFqRCxHQUFBLDJCQUFBb0MsRUFBQWhDLFVBQUFpQyxFQUFBOUIsRUFBQW9DLEVBQUEsZUFBQWxDLE1BQUE0QixFQUFBakIsY0FBQSxJQUFBYixFQUFBOEIsRUFBQSxlQUFBNUIsTUFBQTJCLEVBQUFoQixjQUFBLElBQUFnQixFQUFBMkMsWUFBQTdELEVBQUFtQixFQUFBckIsRUFBQSxxQkFBQWhCLEVBQUFnRixvQkFBQSxTQUFBL0UsR0FBQSxJQUFBRCxFQUFBLG1CQUFBQyxHQUFBQSxFQUFBZ0YsWUFBQSxRQUFBakYsSUFBQUEsSUFBQW9DLEdBQUEsdUJBQUFwQyxFQUFBK0UsYUFBQS9FLEVBQUFrRixNQUFBLEVBQUFsRixFQUFBbUYsS0FBQSxTQUFBbEYsR0FBQSxPQUFBRSxPQUFBaUYsZUFBQWpGLE9BQUFpRixlQUFBbkYsRUFBQW9DLElBQUFwQyxFQUFBb0YsVUFBQWhELEVBQUFuQixFQUFBakIsRUFBQWUsRUFBQSxzQkFBQWYsRUFBQUcsVUFBQUQsT0FBQXFCLE9BQUFtQixHQUFBMUMsQ0FBQSxFQUFBRCxFQUFBc0YsTUFBQSxTQUFBckYsR0FBQSxPQUFBa0QsUUFBQWxELEVBQUEsRUFBQTJDLEVBQUFHLEVBQUEzQyxXQUFBYyxFQUFBNkIsRUFBQTNDLFVBQUFVLEdBQUEsMEJBQUFkLEVBQUErQyxjQUFBQSxFQUFBL0MsRUFBQXVGLE1BQUEsU0FBQXRGLEVBQUFDLEVBQUFHLEVBQUFFLEVBQUFHLFFBQUEsSUFBQUEsSUFBQUEsRUFBQThFLFNBQUEsSUFBQTVFLEVBQUEsSUFBQW1DLEVBQUF6QixFQUFBckIsRUFBQUMsRUFBQUcsRUFBQUUsR0FBQUcsR0FBQSxPQUFBVixFQUFBZ0Ysb0JBQUE5RSxHQUFBVSxFQUFBQSxFQUFBcUQsT0FBQWIsTUFBQSxTQUFBbkQsR0FBQSxPQUFBQSxFQUFBc0QsS0FBQXRELEVBQUFRLE1BQUFHLEVBQUFxRCxNQUFBLEtBQUFyQixFQUFBRCxHQUFBekIsRUFBQXlCLEVBQUEzQixFQUFBLGFBQUFFLEVBQUF5QixFQUFBL0IsR0FBQSwwQkFBQU0sRUFBQXlCLEVBQUEscURBQUEzQyxFQUFBeUYsS0FBQSxTQUFBeEYsR0FBQSxJQUFBRCxFQUFBRyxPQUFBRixHQUFBQyxFQUFBLFdBQUFHLEtBQUFMLEVBQUFFLEVBQUF1RSxLQUFBcEUsR0FBQSxPQUFBSCxFQUFBd0YsVUFBQSxTQUFBekIsSUFBQSxLQUFBL0QsRUFBQTRFLFFBQUEsS0FBQTdFLEVBQUFDLEVBQUF5RixNQUFBLEdBQUExRixLQUFBRCxFQUFBLE9BQUFpRSxFQUFBeEQsTUFBQVIsRUFBQWdFLEVBQUFWLE1BQUEsRUFBQVUsQ0FBQSxRQUFBQSxFQUFBVixNQUFBLEVBQUFVLENBQUEsR0FBQWpFLEVBQUEwQyxPQUFBQSxFQUFBakIsRUFBQXJCLFVBQUEsQ0FBQTZFLFlBQUF4RCxFQUFBbUQsTUFBQSxTQUFBNUUsR0FBQSxRQUFBNEYsS0FBQSxPQUFBM0IsS0FBQSxPQUFBTixLQUFBLEtBQUFDLE1BQUEzRCxFQUFBLEtBQUFzRCxNQUFBLE9BQUFFLFNBQUEsVUFBQUQsT0FBQSxZQUFBM0IsSUFBQTVCLEVBQUEsS0FBQXVFLFdBQUEzQixRQUFBNkIsSUFBQTFFLEVBQUEsUUFBQUUsS0FBQSxXQUFBQSxFQUFBMkYsT0FBQSxJQUFBeEYsRUFBQXlCLEtBQUEsS0FBQTVCLEtBQUEyRSxPQUFBM0UsRUFBQTRGLE1BQUEsV0FBQTVGLEdBQUFELEVBQUEsRUFBQThGLEtBQUEsZ0JBQUF4QyxNQUFBLE1BQUF0RCxFQUFBLEtBQUF1RSxXQUFBLEdBQUFHLFdBQUEsYUFBQTFFLEVBQUEyQixLQUFBLE1BQUEzQixFQUFBNEIsSUFBQSxZQUFBbUUsSUFBQSxFQUFBbkMsa0JBQUEsU0FBQTdELEdBQUEsUUFBQXVELEtBQUEsTUFBQXZELEVBQUEsSUFBQUUsRUFBQSxjQUFBK0YsRUFBQTVGLEVBQUFFLEdBQUEsT0FBQUssRUFBQWdCLEtBQUEsUUFBQWhCLEVBQUFpQixJQUFBN0IsRUFBQUUsRUFBQStELEtBQUE1RCxFQUFBRSxJQUFBTCxFQUFBc0QsT0FBQSxPQUFBdEQsRUFBQTJCLElBQUE1QixLQUFBTSxDQUFBLFNBQUFBLEVBQUEsS0FBQWlFLFdBQUFNLE9BQUEsRUFBQXZFLEdBQUEsSUFBQUEsRUFBQSxLQUFBRyxFQUFBLEtBQUE4RCxXQUFBakUsR0FBQUssRUFBQUYsRUFBQWlFLFdBQUEsWUFBQWpFLEVBQUEwRCxPQUFBLE9BQUE2QixFQUFBLFVBQUF2RixFQUFBMEQsUUFBQSxLQUFBd0IsS0FBQSxLQUFBOUUsRUFBQVQsRUFBQXlCLEtBQUFwQixFQUFBLFlBQUFNLEVBQUFYLEVBQUF5QixLQUFBcEIsRUFBQSxpQkFBQUksR0FBQUUsRUFBQSxTQUFBNEUsS0FBQWxGLEVBQUEyRCxTQUFBLE9BQUE0QixFQUFBdkYsRUFBQTJELFVBQUEsV0FBQXVCLEtBQUFsRixFQUFBNEQsV0FBQSxPQUFBMkIsRUFBQXZGLEVBQUE0RCxXQUFBLFNBQUF4RCxHQUFBLFFBQUE4RSxLQUFBbEYsRUFBQTJELFNBQUEsT0FBQTRCLEVBQUF2RixFQUFBMkQsVUFBQSxZQUFBckQsRUFBQSxNQUFBc0MsTUFBQSxrREFBQXNDLEtBQUFsRixFQUFBNEQsV0FBQSxPQUFBMkIsRUFBQXZGLEVBQUE0RCxXQUFBLEtBQUFSLE9BQUEsU0FBQTdELEVBQUFELEdBQUEsUUFBQUUsRUFBQSxLQUFBc0UsV0FBQU0sT0FBQSxFQUFBNUUsR0FBQSxJQUFBQSxFQUFBLEtBQUFLLEVBQUEsS0FBQWlFLFdBQUF0RSxHQUFBLEdBQUFLLEVBQUE2RCxRQUFBLEtBQUF3QixNQUFBdkYsRUFBQXlCLEtBQUF2QixFQUFBLG9CQUFBcUYsS0FBQXJGLEVBQUErRCxXQUFBLEtBQUE1RCxFQUFBSCxFQUFBLE9BQUFHLElBQUEsVUFBQVQsR0FBQSxhQUFBQSxJQUFBUyxFQUFBMEQsUUFBQXBFLEdBQUFBLEdBQUFVLEVBQUE0RCxhQUFBNUQsRUFBQSxVQUFBRSxFQUFBRixFQUFBQSxFQUFBaUUsV0FBQSxVQUFBL0QsRUFBQWdCLEtBQUEzQixFQUFBVyxFQUFBaUIsSUFBQTdCLEVBQUFVLEdBQUEsS0FBQThDLE9BQUEsWUFBQVMsS0FBQXZELEVBQUE0RCxXQUFBbkMsR0FBQSxLQUFBK0QsU0FBQXRGLEVBQUEsRUFBQXNGLFNBQUEsU0FBQWpHLEVBQUFELEdBQUEsYUFBQUMsRUFBQTJCLEtBQUEsTUFBQTNCLEVBQUE0QixJQUFBLGdCQUFBNUIsRUFBQTJCLE1BQUEsYUFBQTNCLEVBQUEyQixLQUFBLEtBQUFxQyxLQUFBaEUsRUFBQTRCLElBQUEsV0FBQTVCLEVBQUEyQixNQUFBLEtBQUFvRSxLQUFBLEtBQUFuRSxJQUFBNUIsRUFBQTRCLElBQUEsS0FBQTJCLE9BQUEsY0FBQVMsS0FBQSxrQkFBQWhFLEVBQUEyQixNQUFBNUIsSUFBQSxLQUFBaUUsS0FBQWpFLEdBQUFtQyxDQUFBLEVBQUFnRSxPQUFBLFNBQUFsRyxHQUFBLFFBQUFELEVBQUEsS0FBQXdFLFdBQUFNLE9BQUEsRUFBQTlFLEdBQUEsSUFBQUEsRUFBQSxLQUFBRSxFQUFBLEtBQUFzRSxXQUFBeEUsR0FBQSxHQUFBRSxFQUFBb0UsYUFBQXJFLEVBQUEsWUFBQWlHLFNBQUFoRyxFQUFBeUUsV0FBQXpFLEVBQUFxRSxVQUFBRyxFQUFBeEUsR0FBQWlDLENBQUEsa0JBQUFsQyxHQUFBLFFBQUFELEVBQUEsS0FBQXdFLFdBQUFNLE9BQUEsRUFBQTlFLEdBQUEsSUFBQUEsRUFBQSxLQUFBRSxFQUFBLEtBQUFzRSxXQUFBeEUsR0FBQSxHQUFBRSxFQUFBa0UsU0FBQW5FLEVBQUEsS0FBQUksRUFBQUgsRUFBQXlFLFdBQUEsYUFBQXRFLEVBQUF1QixLQUFBLEtBQUFyQixFQUFBRixFQUFBd0IsSUFBQTZDLEVBQUF4RSxFQUFBLFFBQUFLLENBQUEsUUFBQStDLE1BQUEsMEJBQUE4QyxjQUFBLFNBQUFwRyxFQUFBRSxFQUFBRyxHQUFBLFlBQUFvRCxTQUFBLENBQUE1QyxTQUFBNkIsRUFBQTFDLEdBQUFnRSxXQUFBOUQsRUFBQWdFLFFBQUE3RCxHQUFBLGNBQUFtRCxTQUFBLEtBQUEzQixJQUFBNUIsR0FBQWtDLENBQUEsR0FBQW5DLENBQUEsVUFBQXFHLEVBQUFoRyxFQUFBSixFQUFBRCxFQUFBRSxFQUFBSyxFQUFBSyxFQUFBRSxHQUFBLFFBQUFKLEVBQUFMLEVBQUFPLEdBQUFFLEdBQUFFLEVBQUFOLEVBQUFELEtBQUEsT0FBQUosR0FBQSxZQUFBTCxFQUFBSyxFQUFBLENBQUFLLEVBQUE2QyxLQUFBdEQsRUFBQWUsR0FBQXdFLFFBQUF0QyxRQUFBbEMsR0FBQW9DLEtBQUFsRCxFQUFBSyxFQUFBLHFJQVFPLElBQU1xUSxFQUFlLGVBUjVCdlEsRUFRNEJxSixHQVI1QnJKLEVBUTRCTixJQUFBb0YsTUFBRyxTQUFBd0UsRUFBQXpDLEdBQUEsSUFBQTJKLEVBQUF4SixFQUFBQyxFQUFBd0osRUFBQWhJLEVBQUEsT0FBQS9JLElBQUF1QixNQUFBLFNBQUF3SSxHQUFBLGNBQUFBLEVBQUFsRSxLQUFBa0UsRUFBQTdGLE1BQUEsT0FHSixPQUZ6QjRNLEVBQU8zSixFQUFQMkosUUFDQXhKLEVBQXNCSCxFQUF0QkcsdUJBQ0FDLEVBQXlCSixFQUF6QkksMEJBQXlCd0MsRUFBQWxFLEtBQUEsRUFBQWtFLEVBQUE3RixLQUFBLEVBR0E4TSxNQUFNLEdBQUQvRCxPQUFJNkQsRUFBTyxtQkFBbUIsQ0FDeERyTixPQUFRLE9BQ1J3TixRQUFTLENBQ1AsZUFBZ0IsbUJBQ2hCLGNBQWVDLFFBQVFDLE1BR3pCQyxLQUFNQyxLQUFLQyxVQUFVLENBQ25CM0YsS0FBTXJFLE1BRVIsT0FWWSxPQUFSeUosRUFBUWhILEVBQUFuRyxLQUFBbUcsRUFBQTdGLEtBQUcsRUFZRTZNLEVBQVNRLE9BQU0sT0FBNUJ4SSxFQUFJZ0IsRUFBQW5HLEtBQ05tTixFQUFTUyxHQUNYakssRUFBMEJ3QixFQUFLMEksZ0JBRS9CQyxRQUFRQyxNQUFNLHlCQUEwQjVJLEVBQUs0SSxPQUM5QzVILEVBQUE3RixLQUFBLGlCQUFBNkYsRUFBQWxFLEtBQUEsR0FBQWtFLEVBQUE2SCxHQUFBN0gsRUFBQSxTQUVEMkgsUUFBUUcsSUFBSSxTQUFROUgsRUFBQTZILElBQVMseUJBQUE3SCxFQUFBL0QsT0FBQSxHQUFBNEQsRUFBQSxrQkFqQ2pDLGVBQUExSixFQUFBLEtBQUFELEVBQUFzSyxVQUFBLFdBQUE5RSxTQUFBLFNBQUF0RixFQUFBSyxHQUFBLElBQUFLLEVBQUFQLEVBQUFrSyxNQUFBdEssRUFBQUQsR0FBQSxTQUFBd0ssRUFBQW5LLEdBQUFnRyxFQUFBekYsRUFBQVYsRUFBQUssRUFBQWlLLEVBQUFDLEVBQUEsT0FBQXBLLEVBQUEsVUFBQW9LLEVBQUFwSyxHQUFBZ0csRUFBQXpGLEVBQUFWLEVBQUFLLEVBQUFpSyxFQUFBQyxFQUFBLFFBQUFwSyxFQUFBLENBQUFtSyxPQUFBLFFBbUNDLGdCQTNCMkJFLEdBQUEsT0FBQWhCLEVBQUFhLE1BQUEsS0FBQUQsVUFBQSxLQTZCZnVILEVBQW9CLFNBQUhDLEdBQXlCLElBQW5CbFEsRUFBSWtRLEVBQUpsUSxLQUFNaUksRUFBTWlJLEVBQU5qSSxPQUN4QyxPQUFRakksR0FDTixJQUFLLFdBQ0wsSUFBSyxhQUNILE9BQU9pSSxFQUFPa0ksZUFBZUMsS0FDL0IsSUFBSyxRQUtMLFFBQ0UsT0FBT25JLEVBQU9rSSxlQUFlek8sTUFKL0IsSUFBSyxVQUNMLElBQUssUUFDSCxPQUFPdUcsRUFBT2tJLGVBQWVFLFFBSW5DLEVBR2E5SSxFQUErQixTQUFDTCxHQUMzQyxJQUFNb0osRUFBY2QsS0FBS0MsVUFBVXZJLEdBQ25DcUosYUFBYUMsUUFBUSx3QkFBeUJGLEVBQ2hELEVBRWFuSixFQUErQixXQUMxQyxJQUFNRCxFQUFPcUosYUFBYUUsUUFBUSx5QkFFbEMsT0FBSXZKLEVBQWFzSSxLQUFLa0IsTUFBTXhKLEdBQ3JCLElBQ1Qsb0dDaEVPLElBQU11QixFQUFvQixTQUFIbkQsR0FBMEMsSUFBcEMyQyxFQUFNM0MsRUFBTjJDLE9BQVFELEVBQU0xQyxFQUFOMEMsT0FBUXpCLEVBQWFqQixFQUFiaUIsY0FDbER5QixFQUFPMkksYUFBWSxTQUFDQyxHQUNsQixJQUFNakMsRUFBU2lDLEVBQU1qQyxPQUdyQixHQUNFQSxHQUNBQSxFQUFPM08sT0FBU2lJLEVBQU9ELE9BQU82SSxnQkFBZ0JDLG9CQUM5QyxDQUNBLElBQU14SyxFQUFhcUksRUFBT29DLFNBQVN6SyxXQUVuQ0MsRUFBY0QsRUFDaEIsQ0FDRixHQUNGLEVBRWEwSyxFQUFlLFNBQzFCakwsRUFDQWtMLEdBRUEsSUFBTUMsRUFBWSxHQUNiRCxJQUVMQSxFQUF5QmhRLFNBQVEsU0FBQ3VKLEVBQU0xTCxHQUN0QyxJQUFNcVMsRUFBZ0IsQ0FDcEJDLE1BQU8sSUFBSW5KLE9BQU9vSixNQUFNN0csRUFBTSxFQUFHQSxFQUFNLEdBQ3ZDUCxRQUFTLENBQ1BxSCxxQkFBc0Isa0JBQ3RCQyx3QkFBeUIsQ0FDdkIxUyxNQUFPLE1BSWJxUyxFQUFVck8sS0FBS3NPLEVBQ2pCLElBR0FwTCxFQUF3Qm9DLFFBQVFxSixJQUFJTixHQUN0QyxFQUdhTyxFQUFtQixTQUFIM0osR0FJdkIsSUFDQW1KLEVBSkp4SyxFQUFxQnFCLEVBQXJCckIsc0JBQ0FILEVBQVV3QixFQUFWeEIsV0FDQVMsRUFBYWUsRUFBYmYsY0FTQSxPQUpBa0ssRUFBMkJ4SyxFQUFzQmdHLFFBQy9DLFNBQUNqQyxHQUFJLE9BQUtBLEdBQVF6RCxDQUFhLEtBR2IsSUFBaEJULElBR3VCMkssRUFBeUJTLE1BQ2xELFNBQUNsSCxHQUFJLE9BQUtBLElBQVNsRSxDQUFVLElBTTdCMkssRUFBMkJBLEVBQXlCeEUsUUFDbEQsU0FBQ2pDLEdBQUksT0FBS0EsSUFBU2xFLENBQVUsSUFFMUIySyxFQUF5QnBPLEtBQUt5RCxJQWJQMkssQ0FnQmhDLDJEQ3JFTyxJQUFNMUksRUFBcUIsU0FBSGpELEdBQW1CLElBQWIwQyxFQUFNMUMsRUFBTjBDLE9BQ25CQSxFQUFPMEYsYUFDZmlFLGlCQUFpQixTQUFTLFNBQUNmLEdBQ2pDLElBQU0zRCxFQUFrQmpGLEVBQU9rRixVQUM3QmpGLE9BQU9ELE9BQU9tRixhQUFhQyxVQUl6QndELEVBQU1yRSxVQUNScUUsRUFBTWdCLGlCQUVGaEIsRUFBTWlCLE9BQVMsRUFDakI3SixFQUFPcUYsY0FBYyxDQUNuQkQsU0FBVUUsS0FBS0MsSUFBSSxJQUFLTixFQUFrQixLQUc1Q2pGLEVBQU9xRixjQUFjLENBQ25CRCxTQUFVRSxLQUFLRSxJQUFJLEdBQUlQLEVBQWtCLEtBSWpELEdBQ0YsNFhDckJBOU8sRUFBQSxrQkFBQUMsQ0FBQSxNQUFBQyxFQUFBRCxFQUFBLEdBQUFFLEVBQUFDLE9BQUFDLFVBQUFDLEVBQUFILEVBQUFJLGVBQUFDLEVBQUFKLE9BQUFLLGdCQUFBLFNBQUFQLEVBQUFELEVBQUFFLEdBQUFELEVBQUFELEdBQUFFLEVBQUFPLEtBQUEsRUFBQUMsRUFBQSxtQkFBQUMsT0FBQUEsT0FBQSxHQUFBQyxFQUFBRixFQUFBRyxVQUFBLGFBQUFDLEVBQUFKLEVBQUFLLGVBQUEsa0JBQUFDLEVBQUFOLEVBQUFPLGFBQUEseUJBQUFDLEVBQUFqQixFQUFBRCxFQUFBRSxHQUFBLE9BQUFDLE9BQUFLLGVBQUFQLEVBQUFELEVBQUEsQ0FBQVMsTUFBQVAsRUFBQWlCLFlBQUEsRUFBQUMsY0FBQSxFQUFBQyxVQUFBLElBQUFwQixFQUFBRCxFQUFBLEtBQUFrQixFQUFBLGFBQUFqQixHQUFBaUIsRUFBQSxTQUFBakIsRUFBQUQsRUFBQUUsR0FBQSxPQUFBRCxFQUFBRCxHQUFBRSxDQUFBLFdBQUFvQixFQUFBckIsRUFBQUQsRUFBQUUsRUFBQUcsR0FBQSxJQUFBSyxFQUFBVixHQUFBQSxFQUFBSSxxQkFBQW1CLEVBQUF2QixFQUFBdUIsRUFBQVgsRUFBQVQsT0FBQXFCLE9BQUFkLEVBQUFOLFdBQUFVLEVBQUEsSUFBQVcsRUFBQXBCLEdBQUEsV0FBQUUsRUFBQUssRUFBQSxXQUFBSCxNQUFBaUIsRUFBQXpCLEVBQUFDLEVBQUFZLEtBQUFGLENBQUEsVUFBQWUsRUFBQTFCLEVBQUFELEVBQUFFLEdBQUEsV0FBQTBCLEtBQUEsU0FBQUMsSUFBQTVCLEVBQUE2QixLQUFBOUIsRUFBQUUsR0FBQSxPQUFBRCxHQUFBLE9BQUEyQixLQUFBLFFBQUFDLElBQUE1QixFQUFBLEVBQUFELEVBQUFzQixLQUFBQSxFQUFBLElBQUFTLEVBQUEsaUJBQUFDLEVBQUEsaUJBQUFDLEVBQUEsWUFBQUMsRUFBQSxZQUFBQyxFQUFBLFlBQUFaLElBQUEsVUFBQWEsSUFBQSxVQUFBQyxJQUFBLEtBQUFDLEVBQUEsR0FBQXBCLEVBQUFvQixFQUFBMUIsR0FBQSw4QkFBQTJCLEVBQUFwQyxPQUFBcUMsZUFBQUMsRUFBQUYsR0FBQUEsRUFBQUEsRUFBQUcsRUFBQSxNQUFBRCxHQUFBQSxJQUFBdkMsR0FBQUcsRUFBQXlCLEtBQUFXLEVBQUE3QixLQUFBMEIsRUFBQUcsR0FBQSxJQUFBRSxFQUFBTixFQUFBakMsVUFBQW1CLEVBQUFuQixVQUFBRCxPQUFBcUIsT0FBQWMsR0FBQSxTQUFBTSxFQUFBM0MsR0FBQSwwQkFBQTRDLFNBQUEsU0FBQTdDLEdBQUFrQixFQUFBakIsRUFBQUQsR0FBQSxTQUFBQyxHQUFBLFlBQUE2QyxRQUFBOUMsRUFBQUMsRUFBQSxnQkFBQThDLEVBQUE5QyxFQUFBRCxHQUFBLFNBQUFnRCxFQUFBOUMsRUFBQUssRUFBQUcsRUFBQUUsR0FBQSxJQUFBRSxFQUFBYSxFQUFBMUIsRUFBQUMsR0FBQUQsRUFBQU0sR0FBQSxhQUFBTyxFQUFBYyxLQUFBLEtBQUFaLEVBQUFGLEVBQUFlLElBQUFFLEVBQUFmLEVBQUFQLE1BQUEsT0FBQXNCLEdBQUEsVUFBQWtCLEVBQUFsQixJQUFBMUIsRUFBQXlCLEtBQUFDLEVBQUEsV0FBQS9CLEVBQUFrRCxRQUFBbkIsRUFBQW9CLFNBQUFDLE1BQUEsU0FBQW5ELEdBQUErQyxFQUFBLE9BQUEvQyxFQUFBUyxFQUFBRSxFQUFBLGFBQUFYLEdBQUErQyxFQUFBLFFBQUEvQyxFQUFBUyxFQUFBRSxFQUFBLElBQUFaLEVBQUFrRCxRQUFBbkIsR0FBQXFCLE1BQUEsU0FBQW5ELEdBQUFlLEVBQUFQLE1BQUFSLEVBQUFTLEVBQUFNLEVBQUEsYUFBQWYsR0FBQSxPQUFBK0MsRUFBQSxRQUFBL0MsRUFBQVMsRUFBQUUsRUFBQSxJQUFBQSxFQUFBRSxFQUFBZSxJQUFBLEtBQUEzQixFQUFBSyxFQUFBLGdCQUFBRSxNQUFBLFNBQUFSLEVBQUFJLEdBQUEsU0FBQWdELElBQUEsV0FBQXJELEdBQUEsU0FBQUEsRUFBQUUsR0FBQThDLEVBQUEvQyxFQUFBSSxFQUFBTCxFQUFBRSxFQUFBLFdBQUFBLEVBQUFBLEVBQUFBLEVBQUFrRCxLQUFBQyxFQUFBQSxHQUFBQSxHQUFBLGFBQUEzQixFQUFBMUIsRUFBQUUsRUFBQUcsR0FBQSxJQUFBRSxFQUFBd0IsRUFBQSxnQkFBQXJCLEVBQUFFLEdBQUEsR0FBQUwsSUFBQTBCLEVBQUEsTUFBQXFCLE1BQUEsbUNBQUEvQyxJQUFBMkIsRUFBQSxjQUFBeEIsRUFBQSxNQUFBRSxFQUFBLE9BQUFILE1BQUFSLEVBQUFzRCxNQUFBLE9BQUFsRCxFQUFBbUQsT0FBQTlDLEVBQUFMLEVBQUF3QixJQUFBakIsSUFBQSxLQUFBRSxFQUFBVCxFQUFBb0QsU0FBQSxHQUFBM0MsRUFBQSxLQUFBRSxFQUFBMEMsRUFBQTVDLEVBQUFULEdBQUEsR0FBQVcsRUFBQSxJQUFBQSxJQUFBbUIsRUFBQSxnQkFBQW5CLENBQUEsY0FBQVgsRUFBQW1ELE9BQUFuRCxFQUFBc0QsS0FBQXRELEVBQUF1RCxNQUFBdkQsRUFBQXdCLFNBQUEsYUFBQXhCLEVBQUFtRCxPQUFBLElBQUFqRCxJQUFBd0IsRUFBQSxNQUFBeEIsRUFBQTJCLEVBQUE3QixFQUFBd0IsSUFBQXhCLEVBQUF3RCxrQkFBQXhELEVBQUF3QixJQUFBLGdCQUFBeEIsRUFBQW1ELFFBQUFuRCxFQUFBeUQsT0FBQSxTQUFBekQsRUFBQXdCLEtBQUF0QixFQUFBMEIsRUFBQSxJQUFBSyxFQUFBWCxFQUFBM0IsRUFBQUUsRUFBQUcsR0FBQSxjQUFBaUMsRUFBQVYsS0FBQSxJQUFBckIsRUFBQUYsRUFBQWtELEtBQUFyQixFQUFBRixFQUFBTSxFQUFBVCxNQUFBTSxFQUFBLGdCQUFBMUIsTUFBQTZCLEVBQUFULElBQUEwQixLQUFBbEQsRUFBQWtELEtBQUEsV0FBQWpCLEVBQUFWLE9BQUFyQixFQUFBMkIsRUFBQTdCLEVBQUFtRCxPQUFBLFFBQUFuRCxFQUFBd0IsSUFBQVMsRUFBQVQsSUFBQSxZQUFBNkIsRUFBQTFELEVBQUFFLEdBQUEsSUFBQUcsRUFBQUgsRUFBQXNELE9BQUFqRCxFQUFBUCxFQUFBYSxTQUFBUixHQUFBLEdBQUFFLElBQUFOLEVBQUEsT0FBQUMsRUFBQXVELFNBQUEsZUFBQXBELEdBQUFMLEVBQUFhLFNBQUEsU0FBQVgsRUFBQXNELE9BQUEsU0FBQXRELEVBQUEyQixJQUFBNUIsRUFBQXlELEVBQUExRCxFQUFBRSxHQUFBLFVBQUFBLEVBQUFzRCxTQUFBLFdBQUFuRCxJQUFBSCxFQUFBc0QsT0FBQSxRQUFBdEQsRUFBQTJCLElBQUEsSUFBQWtDLFVBQUEsb0NBQUExRCxFQUFBLGFBQUE4QixFQUFBLElBQUF6QixFQUFBaUIsRUFBQXBCLEVBQUFQLEVBQUFhLFNBQUFYLEVBQUEyQixLQUFBLGFBQUFuQixFQUFBa0IsS0FBQSxPQUFBMUIsRUFBQXNELE9BQUEsUUFBQXRELEVBQUEyQixJQUFBbkIsRUFBQW1CLElBQUEzQixFQUFBdUQsU0FBQSxLQUFBdEIsRUFBQSxJQUFBdkIsRUFBQUYsRUFBQW1CLElBQUEsT0FBQWpCLEVBQUFBLEVBQUEyQyxNQUFBckQsRUFBQUYsRUFBQWdFLFlBQUFwRCxFQUFBSCxNQUFBUCxFQUFBK0QsS0FBQWpFLEVBQUFrRSxRQUFBLFdBQUFoRSxFQUFBc0QsU0FBQXRELEVBQUFzRCxPQUFBLE9BQUF0RCxFQUFBMkIsSUFBQTVCLEdBQUFDLEVBQUF1RCxTQUFBLEtBQUF0QixHQUFBdkIsR0FBQVYsRUFBQXNELE9BQUEsUUFBQXRELEVBQUEyQixJQUFBLElBQUFrQyxVQUFBLG9DQUFBN0QsRUFBQXVELFNBQUEsS0FBQXRCLEVBQUEsVUFBQWdDLEVBQUFsRSxHQUFBLElBQUFELEVBQUEsQ0FBQW9FLE9BQUFuRSxFQUFBLFNBQUFBLElBQUFELEVBQUFxRSxTQUFBcEUsRUFBQSxTQUFBQSxJQUFBRCxFQUFBc0UsV0FBQXJFLEVBQUEsR0FBQUQsRUFBQXVFLFNBQUF0RSxFQUFBLFNBQUF1RSxXQUFBQyxLQUFBekUsRUFBQSxVQUFBMEUsRUFBQXpFLEdBQUEsSUFBQUQsRUFBQUMsRUFBQTBFLFlBQUEsR0FBQTNFLEVBQUE0QixLQUFBLGdCQUFBNUIsRUFBQTZCLElBQUE1QixFQUFBMEUsV0FBQTNFLENBQUEsVUFBQXlCLEVBQUF4QixHQUFBLEtBQUF1RSxXQUFBLEVBQUFKLE9BQUEsU0FBQW5FLEVBQUE0QyxRQUFBc0IsRUFBQSxXQUFBUyxPQUFBLFlBQUFsQyxFQUFBMUMsR0FBQSxHQUFBQSxHQUFBLEtBQUFBLEVBQUEsS0FBQUUsRUFBQUYsRUFBQVksR0FBQSxHQUFBVixFQUFBLE9BQUFBLEVBQUE0QixLQUFBOUIsR0FBQSxzQkFBQUEsRUFBQWlFLEtBQUEsT0FBQWpFLEVBQUEsSUFBQTZFLE1BQUE3RSxFQUFBOEUsUUFBQSxLQUFBdkUsR0FBQSxFQUFBRyxFQUFBLFNBQUF1RCxJQUFBLE9BQUExRCxFQUFBUCxFQUFBOEUsUUFBQSxHQUFBekUsRUFBQXlCLEtBQUE5QixFQUFBTyxHQUFBLE9BQUEwRCxFQUFBeEQsTUFBQVQsRUFBQU8sR0FBQTBELEVBQUFWLE1BQUEsRUFBQVUsRUFBQSxPQUFBQSxFQUFBeEQsTUFBQVIsRUFBQWdFLEVBQUFWLE1BQUEsRUFBQVUsQ0FBQSxTQUFBdkQsRUFBQXVELEtBQUF2RCxDQUFBLFlBQUFxRCxVQUFBZCxFQUFBakQsR0FBQSwyQkFBQW9DLEVBQUFoQyxVQUFBaUMsRUFBQTlCLEVBQUFvQyxFQUFBLGVBQUFsQyxNQUFBNEIsRUFBQWpCLGNBQUEsSUFBQWIsRUFBQThCLEVBQUEsZUFBQTVCLE1BQUEyQixFQUFBaEIsY0FBQSxJQUFBZ0IsRUFBQTJDLFlBQUE3RCxFQUFBbUIsRUFBQXJCLEVBQUEscUJBQUFoQixFQUFBZ0Ysb0JBQUEsU0FBQS9FLEdBQUEsSUFBQUQsRUFBQSxtQkFBQUMsR0FBQUEsRUFBQWdGLFlBQUEsUUFBQWpGLElBQUFBLElBQUFvQyxHQUFBLHVCQUFBcEMsRUFBQStFLGFBQUEvRSxFQUFBa0YsTUFBQSxFQUFBbEYsRUFBQW1GLEtBQUEsU0FBQWxGLEdBQUEsT0FBQUUsT0FBQWlGLGVBQUFqRixPQUFBaUYsZUFBQW5GLEVBQUFvQyxJQUFBcEMsRUFBQW9GLFVBQUFoRCxFQUFBbkIsRUFBQWpCLEVBQUFlLEVBQUEsc0JBQUFmLEVBQUFHLFVBQUFELE9BQUFxQixPQUFBbUIsR0FBQTFDLENBQUEsRUFBQUQsRUFBQXNGLE1BQUEsU0FBQXJGLEdBQUEsT0FBQWtELFFBQUFsRCxFQUFBLEVBQUEyQyxFQUFBRyxFQUFBM0MsV0FBQWMsRUFBQTZCLEVBQUEzQyxVQUFBVSxHQUFBLDBCQUFBZCxFQUFBK0MsY0FBQUEsRUFBQS9DLEVBQUF1RixNQUFBLFNBQUF0RixFQUFBQyxFQUFBRyxFQUFBRSxFQUFBRyxRQUFBLElBQUFBLElBQUFBLEVBQUE4RSxTQUFBLElBQUE1RSxFQUFBLElBQUFtQyxFQUFBekIsRUFBQXJCLEVBQUFDLEVBQUFHLEVBQUFFLEdBQUFHLEdBQUEsT0FBQVYsRUFBQWdGLG9CQUFBOUUsR0FBQVUsRUFBQUEsRUFBQXFELE9BQUFiLE1BQUEsU0FBQW5ELEdBQUEsT0FBQUEsRUFBQXNELEtBQUF0RCxFQUFBUSxNQUFBRyxFQUFBcUQsTUFBQSxLQUFBckIsRUFBQUQsR0FBQXpCLEVBQUF5QixFQUFBM0IsRUFBQSxhQUFBRSxFQUFBeUIsRUFBQS9CLEdBQUEsMEJBQUFNLEVBQUF5QixFQUFBLHFEQUFBM0MsRUFBQXlGLEtBQUEsU0FBQXhGLEdBQUEsSUFBQUQsRUFBQUcsT0FBQUYsR0FBQUMsRUFBQSxXQUFBRyxLQUFBTCxFQUFBRSxFQUFBdUUsS0FBQXBFLEdBQUEsT0FBQUgsRUFBQXdGLFVBQUEsU0FBQXpCLElBQUEsS0FBQS9ELEVBQUE0RSxRQUFBLEtBQUE3RSxFQUFBQyxFQUFBeUYsTUFBQSxHQUFBMUYsS0FBQUQsRUFBQSxPQUFBaUUsRUFBQXhELE1BQUFSLEVBQUFnRSxFQUFBVixNQUFBLEVBQUFVLENBQUEsUUFBQUEsRUFBQVYsTUFBQSxFQUFBVSxDQUFBLEdBQUFqRSxFQUFBMEMsT0FBQUEsRUFBQWpCLEVBQUFyQixVQUFBLENBQUE2RSxZQUFBeEQsRUFBQW1ELE1BQUEsU0FBQTVFLEdBQUEsUUFBQTRGLEtBQUEsT0FBQTNCLEtBQUEsT0FBQU4sS0FBQSxLQUFBQyxNQUFBM0QsRUFBQSxLQUFBc0QsTUFBQSxPQUFBRSxTQUFBLFVBQUFELE9BQUEsWUFBQTNCLElBQUE1QixFQUFBLEtBQUF1RSxXQUFBM0IsUUFBQTZCLElBQUExRSxFQUFBLFFBQUFFLEtBQUEsV0FBQUEsRUFBQTJGLE9BQUEsSUFBQXhGLEVBQUF5QixLQUFBLEtBQUE1QixLQUFBMkUsT0FBQTNFLEVBQUE0RixNQUFBLFdBQUE1RixHQUFBRCxFQUFBLEVBQUE4RixLQUFBLGdCQUFBeEMsTUFBQSxNQUFBdEQsRUFBQSxLQUFBdUUsV0FBQSxHQUFBRyxXQUFBLGFBQUExRSxFQUFBMkIsS0FBQSxNQUFBM0IsRUFBQTRCLElBQUEsWUFBQW1FLElBQUEsRUFBQW5DLGtCQUFBLFNBQUE3RCxHQUFBLFFBQUF1RCxLQUFBLE1BQUF2RCxFQUFBLElBQUFFLEVBQUEsY0FBQStGLEVBQUE1RixFQUFBRSxHQUFBLE9BQUFLLEVBQUFnQixLQUFBLFFBQUFoQixFQUFBaUIsSUFBQTdCLEVBQUFFLEVBQUErRCxLQUFBNUQsRUFBQUUsSUFBQUwsRUFBQXNELE9BQUEsT0FBQXRELEVBQUEyQixJQUFBNUIsS0FBQU0sQ0FBQSxTQUFBQSxFQUFBLEtBQUFpRSxXQUFBTSxPQUFBLEVBQUF2RSxHQUFBLElBQUFBLEVBQUEsS0FBQUcsRUFBQSxLQUFBOEQsV0FBQWpFLEdBQUFLLEVBQUFGLEVBQUFpRSxXQUFBLFlBQUFqRSxFQUFBMEQsT0FBQSxPQUFBNkIsRUFBQSxVQUFBdkYsRUFBQTBELFFBQUEsS0FBQXdCLEtBQUEsS0FBQTlFLEVBQUFULEVBQUF5QixLQUFBcEIsRUFBQSxZQUFBTSxFQUFBWCxFQUFBeUIsS0FBQXBCLEVBQUEsaUJBQUFJLEdBQUFFLEVBQUEsU0FBQTRFLEtBQUFsRixFQUFBMkQsU0FBQSxPQUFBNEIsRUFBQXZGLEVBQUEyRCxVQUFBLFdBQUF1QixLQUFBbEYsRUFBQTRELFdBQUEsT0FBQTJCLEVBQUF2RixFQUFBNEQsV0FBQSxTQUFBeEQsR0FBQSxRQUFBOEUsS0FBQWxGLEVBQUEyRCxTQUFBLE9BQUE0QixFQUFBdkYsRUFBQTJELFVBQUEsWUFBQXJELEVBQUEsTUFBQXNDLE1BQUEsa0RBQUFzQyxLQUFBbEYsRUFBQTRELFdBQUEsT0FBQTJCLEVBQUF2RixFQUFBNEQsV0FBQSxLQUFBUixPQUFBLFNBQUE3RCxFQUFBRCxHQUFBLFFBQUFFLEVBQUEsS0FBQXNFLFdBQUFNLE9BQUEsRUFBQTVFLEdBQUEsSUFBQUEsRUFBQSxLQUFBSyxFQUFBLEtBQUFpRSxXQUFBdEUsR0FBQSxHQUFBSyxFQUFBNkQsUUFBQSxLQUFBd0IsTUFBQXZGLEVBQUF5QixLQUFBdkIsRUFBQSxvQkFBQXFGLEtBQUFyRixFQUFBK0QsV0FBQSxLQUFBNUQsRUFBQUgsRUFBQSxPQUFBRyxJQUFBLFVBQUFULEdBQUEsYUFBQUEsSUFBQVMsRUFBQTBELFFBQUFwRSxHQUFBQSxHQUFBVSxFQUFBNEQsYUFBQTVELEVBQUEsVUFBQUUsRUFBQUYsRUFBQUEsRUFBQWlFLFdBQUEsVUFBQS9ELEVBQUFnQixLQUFBM0IsRUFBQVcsRUFBQWlCLElBQUE3QixFQUFBVSxHQUFBLEtBQUE4QyxPQUFBLFlBQUFTLEtBQUF2RCxFQUFBNEQsV0FBQW5DLEdBQUEsS0FBQStELFNBQUF0RixFQUFBLEVBQUFzRixTQUFBLFNBQUFqRyxFQUFBRCxHQUFBLGFBQUFDLEVBQUEyQixLQUFBLE1BQUEzQixFQUFBNEIsSUFBQSxnQkFBQTVCLEVBQUEyQixNQUFBLGFBQUEzQixFQUFBMkIsS0FBQSxLQUFBcUMsS0FBQWhFLEVBQUE0QixJQUFBLFdBQUE1QixFQUFBMkIsTUFBQSxLQUFBb0UsS0FBQSxLQUFBbkUsSUFBQTVCLEVBQUE0QixJQUFBLEtBQUEyQixPQUFBLGNBQUFTLEtBQUEsa0JBQUFoRSxFQUFBMkIsTUFBQTVCLElBQUEsS0FBQWlFLEtBQUFqRSxHQUFBbUMsQ0FBQSxFQUFBZ0UsT0FBQSxTQUFBbEcsR0FBQSxRQUFBRCxFQUFBLEtBQUF3RSxXQUFBTSxPQUFBLEVBQUE5RSxHQUFBLElBQUFBLEVBQUEsS0FBQUUsRUFBQSxLQUFBc0UsV0FBQXhFLEdBQUEsR0FBQUUsRUFBQW9FLGFBQUFyRSxFQUFBLFlBQUFpRyxTQUFBaEcsRUFBQXlFLFdBQUF6RSxFQUFBcUUsVUFBQUcsRUFBQXhFLEdBQUFpQyxDQUFBLGtCQUFBbEMsR0FBQSxRQUFBRCxFQUFBLEtBQUF3RSxXQUFBTSxPQUFBLEVBQUE5RSxHQUFBLElBQUFBLEVBQUEsS0FBQUUsRUFBQSxLQUFBc0UsV0FBQXhFLEdBQUEsR0FBQUUsRUFBQWtFLFNBQUFuRSxFQUFBLEtBQUFJLEVBQUFILEVBQUF5RSxXQUFBLGFBQUF0RSxFQUFBdUIsS0FBQSxLQUFBckIsRUFBQUYsRUFBQXdCLElBQUE2QyxFQUFBeEUsRUFBQSxRQUFBSyxDQUFBLFFBQUErQyxNQUFBLDBCQUFBOEMsY0FBQSxTQUFBcEcsRUFBQUUsRUFBQUcsR0FBQSxZQUFBb0QsU0FBQSxDQUFBNUMsU0FBQTZCLEVBQUExQyxHQUFBZ0UsV0FBQTlELEVBQUFnRSxRQUFBN0QsR0FBQSxjQUFBbUQsU0FBQSxLQUFBM0IsSUFBQTVCLEdBQUFrQyxDQUFBLEdBQUFuQyxDQUFBLFVBQUFxRyxFQUFBaEcsRUFBQUosRUFBQUQsRUFBQUUsRUFBQUssRUFBQUssRUFBQUUsR0FBQSxRQUFBSixFQUFBTCxFQUFBTyxHQUFBRSxHQUFBRSxFQUFBTixFQUFBRCxLQUFBLE9BQUFKLEdBQUEsWUFBQUwsRUFBQUssRUFBQSxDQUFBSyxFQUFBNkMsS0FBQXRELEVBQUFlLEdBQUF3RSxRQUFBdEMsUUFBQWxDLEdBQUFvQyxLQUFBbEQsRUFBQUssRUFBQSxDQUVPLElBQU02SixFQUFzQixTQUFIbEQsR0FBbUIsSUFBYjJDLEVBQU0zQyxFQUFOMkMsT0FDcENBLEVBQU82SixVQUFVQyxTQUFTLENBQUV6RCxHQUFJLFdBRWhDLElBTEY3UCxFQWEwQnVULEVBTmxCQyxFQUFNLElBRlNDLEVBQVEsT0FHekJDLEdBQU8sRUFHWGxLLEVBQU82SixVQUFVTSwrQkFBK0IsU0FBVSxDQUN4REMsa0JBQW1CLENBQUMsSUFBSyxLQUN6QkMsd0JBYko3VCxFQWEwQk4sSUFBQW9GLE1BQUUsU0FBQXdFLEVBQU93SyxFQUFPeEIsR0FBUSxJQUFBeUIsRUFBQUMsRUFBQXJCLEVBQUFzQixFQUFBQyxFQUFBQyxFQUFBLE9BQUF6VSxJQUFBdUIsTUFBQSxTQUFBd0ksR0FBQSxjQUFBQSxFQUFBbEUsS0FBQWtFLEVBQUE3RixNQUFBLE9BdUI1QyxHQXRCQThQLEdBQU8sRUFFSEssRUFBT0QsRUFBTU0scUJBQXFCOUIsR0FDbEMwQixFQUFXRixFQUFNTSxxQkFBcUIsQ0FDeEN2TSxXQUFZeUssRUFBU3pLLFdBQ3JCd00sT0FBUS9CLEVBQVMrQixPQUFTLElBR3hCMUIsRUFBUSxDQUNWMkIsZ0JBQWlCaEMsRUFBU3pLLFdBQzFCME0sY0FBZWpDLEVBQVN6SyxXQUN4QjJNLFlBQWFULEVBQUtTLFlBQ2xCQyxVQUFXVixFQUFLVSxXQUtaUixFQURnQixLQUFsQkQsRUFBU0QsS0FDSVcsRUFBa0IsaUJBQWtCbEwsRUFBUW1KLEVBQU8sSUFFbkQsR0FJSyxXQUFsQnFCLEVBQVNELE1BQXVDLFFBQWxCQyxFQUFTRCxNQUFvQyxjQUFsQkMsRUFBU0QsS0FBb0IsQ0FBQXRLLEVBQUE3RixLQUFBLFFBTXZGLE9BTEtzUSxFQUFjUSxFQUNsQixVQUNBbEwsRUFDQW1KLEVBQ0FxQixFQUFTRCxNQUNWdEssRUFBQWhHLE9BQUEsU0FFTSxDQUFFeVEsWUFBQUEsSUFBYSxPQUFBekssRUFBQWxFLEtBQUEsRUFNdEJvUCxPQUFPQywyQkFBMkJDLGFBQWFDLGtCQUFrQixDQUMvRHpKLEtBQU15SSxFQUFNaUIsV0FDWmhKLEtBQU11RyxFQUFTekssV0FDZm1OLElBQUtqQixFQUFLVSxVQUFZLElBQ3JCaEwsRUFBQTdGLEtBQUEsd0JBQUE2RixFQUFBbEUsS0FBQSxHQUFBa0UsRUFBQTZILEdBQUE3SCxFQUFBLFNBQUFBLEVBQUFoRyxPQUFBLFNBRUl3USxHQUFRLFFBaUNmLEdBOUJJRSxFQUFXLFNBQUNjLEdBQ2hCLElBQU14TSxFQUFPd00sRUFBUXhNLEtBRWhCQSxJQUVtQkEsRUFBS3lNLFlBRWIxUyxTQUFRLFNBQUMyUyxHQUN2QmxCLEVBQVM3UCxLQUFLLENBQ1pnUixNQUFPRCxFQUFRQyxNQUNmQyxLQUFNQyxFQUFZLENBQUVELEtBQU1GLEVBQVE1VCxLQUFNaUksT0FBQUEsSUFDeEMrTCxPQUFRSixFQUFRSSxPQUNoQkMsY0FBZUwsRUFBUU0sVUFDdkJDLFdBQVlQLEVBQVE5SixLQUNwQnNLLGdCQUNFbk0sRUFBTzZKLFVBQVV1Qyw2QkFBNkJDLGdCQUNoRGxELE1BQU9BLEdBRVgsSUFFQWUsR0FBTyxFQUNQRixFQUFJc0MsS0FBSyxZQUNYLEVBRUFuQixPQUFPQywyQkFBMkJDLGFBQWFrQixjQUM3QyxDQUNFcEIsT0FBT0MsMkJBQTJCQyxhQUFhbUIsT0FDNUNDLG1CQUVMOUIsSUFHRVQsRUFBTSxDQUFGakssRUFBQTdGLEtBQUEsZ0JBQUE2RixFQUFBN0YsS0FBQSxHQUFRLElBQUl1QixTQUFRLFNBQUN0QyxHQUFPLE9BQUsyUSxFQUFJMEMsS0FBSyxXQUFZclQsRUFBUSxJQUFDLGVBQUE0RyxFQUFBaEcsT0FBQSxTQUVoRSxDQUFFeVEsWUFBYUQsSUFBVSx5QkFBQXhLLEVBQUEvRCxPQUFBLEdBQUE0RCxFQUFBLGtCQWpGWmlLLEVBYjFCLGVBQUEzVCxFQUFBLEtBQUFELEVBQUFzSyxVQUFBLFdBQUE5RSxTQUFBLFNBQUF0RixFQUFBSyxHQUFBLElBQUFLLEVBQUFQLEVBQUFrSyxNQUFBdEssRUFBQUQsR0FBQSxTQUFBd0ssRUFBQW5LLEdBQUFnRyxFQUFBekYsRUFBQVYsRUFBQUssRUFBQWlLLEVBQUFDLEVBQUEsT0FBQXBLLEVBQUEsVUFBQW9LLEVBQUFwSyxHQUFBZ0csRUFBQXpGLEVBQUFWLEVBQUFLLEVBQUFpSyxFQUFBQyxFQUFBLFFBQUFwSyxFQUFBLENBQUFtSyxPQUFBLE9BK0ZLLFNBQUFFLEVBQUFDLEdBQUEsT0FBQWlKLEVBQUFySixNQUFBLEtBQUFELFVBQUEsSUFFTCxFQUdhcUwsRUFBYyxTQUFIak0sR0FBeUIsSUFBbkJnTSxFQUFJaE0sRUFBSmdNLEtBQU03TCxFQUFNSCxFQUFORyxPQUNsQyxPQUFRNkwsR0FDTixJQUFLLFdBd0JMLFFBQ0UsT0FBTzdMLEVBQU82SixVQUFVOEMsbUJBQW1CQyxTQXZCN0MsSUFBSyxRQVVMLElBQUssV0FDSCxPQUFPNU0sRUFBTzZKLFVBQVU4QyxtQkFBbUJFLE1BVDdDLElBQUssUUFDSCxPQUFPN00sRUFBTzZKLFVBQVU4QyxtQkFBbUJHLGNBQzdDLElBQUssT0FDSCxPQUFPOU0sRUFBTzZKLFVBQVU4QyxtQkFBbUJJLEtBQzdDLElBQUssV0FDSCxPQUFPL00sRUFBTzZKLFVBQVU4QyxtQkFBbUJLLFNBQzdDLElBQUssWUFZTCxJQUFLLFdBQ0gsT0FBT2hOLEVBQU82SixVQUFVOEMsbUJBQW1CTSxTQVQ3QyxJQUFLLFNBQ0gsT0FBT2pOLEVBQU82SixVQUFVOEMsbUJBQW1CTyxPQUM3QyxJQUFLLFNBQ0gsT0FBT2xOLEVBQU82SixVQUFVOEMsbUJBQW1CUSxPQUM3QyxJQUFLLFVBQ0gsT0FBT25OLEVBQU82SixVQUFVOEMsbUJBQW1CUyxRQUM3QyxJQUFLLFVBQ0gsT0FBT3BOLEVBQU82SixVQUFVOEMsbUJBQW1CVSxRQU1qRCxFQUdhQyxFQUFtQixTQUFDQyxHQUMvQixJQUNJQyxFQURhckMsT0FBT3NDLFNBQVNDLFNBQ0x6SyxNQUFNLEtBQUt1QixPQUFPbUosU0FLOUMsT0FKQUgsRUFBZUEsRUFBYUEsRUFBYXZTLE9BQVMsR0FDbER1UyxFQUFlLElBQUhySyxPQUFPcUssR0FHZEksRUFBQUEseUJBQXlCSixHQUlYLFdBQWZELEVBQ0tLLEVBQUFBLHlCQUF5QkosR0FBY0ssT0FDdEIsUUFBZk4sRUFDRkssRUFBQUEseUJBQXlCSixHQUFjTSxJQUN0QixjQUFmUCxFQUNGUSxFQUFBQSx5QkFHRixHQVhFLEVBWVgsRUFFYTdDLEVBQW9CLFNBQUM4QyxFQUFhaE8sRUFBUW1KLEVBQU9vRSxHQUM1RCxJQUNJVSxFQURFeEQsRUFBVyxHQVdqQixNQVBvQixtQkFBaEJ1RCxFQUNGQyxFQUFpQkMsRUFBQUEsZUFDUSxZQUFoQkYsSUFFVEMsRUFBaUJYLEVBQWlCQyxJQUcvQlUsR0FBbUJBLEVBQWVoVCxRQUV2Q2dULEVBQWVqVixTQUFRLFNBQUMyUyxHQUNsQkEsRUFBUUMsT0FBU0QsRUFBUTlKLE1BQzNCNEksRUFBUzdQLEtBQUssQ0FDWmdSLE1BQU9ELEVBQVFDLE1BQ2ZDLEtBQU1DLEVBQVksQ0FBRUQsS0FBTUYsRUFBUTVULEtBQU1pSSxPQUFBQSxJQUN4QytMLE9BQVFKLEVBQVFJLE9BQ2hCRyxXQUFZUCxFQUFROUosS0FDcEJzSyxnQkFDRW5NLEVBQU82SixVQUFVdUMsNkJBQTZCQyxnQkFDaERsRCxNQUFPQSxHQUdiLElBRU9zQixHQWhCK0MsRUFpQnhELDJLQ3ZMTyxJQUFNMEQsRUFBcUIsU0FBSDlRLEdBQWlDLElBQTNCK1EsRUFBSy9RLEVBQUwrUSxNQUFPcE8sRUFBTTNDLEVBQU4yQyxPQUFRbUosRUFBSzlMLEVBQUw4TCxNQUM1Q2tGLEVBQWUsSUFBSUMsSUFTekIsT0FQQUYsRUFBTXBWLFNBQVEsU0FBQ3VKLEdBQ2IsSUFBTWdNLEVBQVVoTSxFQUFLaU0sTUFBTSxhQUN2QkQsR0FDRkYsRUFBYUksSUFBSUYsRUFBUSxHQUU3QixJQUVPN1IsTUFBTU0sS0FBS3FSLEdBQWMvSyxLQUFJLFNBQUNvTCxHQUFRLE1BQU0sQ0FDakQ5QyxNQUFPOEMsRUFDUDdDLEtBQU03TCxFQUFPNkosVUFBVThDLG1CQUFtQkMsU0FDMUNWLFdBQVl3QyxFQUNadkYsTUFBT0EsRUFDUixHQUNILEVBR2F3RixFQUFxQixTQUFIOU8sR0FBaUMsSUFBM0J1TyxFQUFLdk8sRUFBTHVPLE1BQU9wTyxFQUFNSCxFQUFORyxPQUFRbUosRUFBS3RKLEVBQUxzSixNQUM1Q3lGLEVBQWUsSUFBSU4sSUFRekIsT0FQQUYsRUFBTXBWLFNBQVEsU0FBQ3VKLEdBQ2IsSUFBTWdNLEVBQVVoTSxFQUFLaU0sTUFBTSxvQkFDdkJELEdBQ0ZLLEVBQWFILElBQUlGLEVBQVEsR0FFN0IsSUFFTzdSLE1BQU1NLEtBQUs0UixHQUFjdEwsS0FBSSxTQUFDdUwsR0FBSSxNQUFNLENBQzdDakQsTUFBT2lELEVBQ1BoRCxLQUFNN0wsRUFBTzZKLFVBQVU4QyxtQkFBbUJNLFNBQzFDZixXQUFZMkMsRUFDWjFGLE1BQU9BLEVBQ1IsR0FDSCxFQUdhMkYsRUFBMkIsU0FBQ2pOLEdBQ3ZDLElBQU1rTixFQUFlLG1CQUNmQyxFQUFnQixlQUNoQkMsRUFBbUIsWUFFbkJDLEVBQVUsQ0FBQyxFQUNiQyxFQUFlLEtBc0RuQixPQXBEY3ROLEVBQUtvQixNQUFNLE1BRW5CakssU0FBUSxTQUFDdUosR0FDYixJQUFJNk0sRUFBYUwsRUFBYU0sS0FBSzlNLEdBQy9CK00sRUFBYS9NLEVBQUtpTSxNQUFNLFFBQVEsR0FBR3ZULE9BRXZDLEdBQUltVSxFQUNGRCxFQUFlQyxFQUFXLEdBQzFCRixFQUFRQyxHQUFnQixDQUN0QkksV0FBWSxHQUNaQyxRQUFTLEdBQ1RDLFVBQVdILFFBRVIsR0FBSUgsRUFBYyxDQUN2QixJQUFJTyxFQUFjVixFQUFjSyxLQUFLOU0sR0FJckMsR0FIZ0IyTSxFQUFRQyxHQUFjTSxVQUd0QkgsRUFFZCxHQUFJSSxFQUNGUixFQUFRQyxHQUFjSyxRQUFRNVUsS0FBSzhVLEVBQVksUUFDMUMsQ0FJTCxJQUFJQyxFQUFXcE4sRUFDZm9OLEVBQVNDLE9BQ1QsSUFBTUMsRUFBYUYsRUFBU0csUUFBUSxLQVFwQyxHQUFpQixRQUxqQkgsR0FDa0IsSUFBaEJFLEVBQ0lGLEVBQVNJLFVBQVUsRUFBR0YsRUFBYSxHQUFHRCxPQUN0QyxNQUVpQixPQUl2QixJQUZjLCtCQUNTM1MsS0FBSzBTLEdBQ2IsT0FHZixJQUFJSyxFQUFpQmYsRUFBaUJJLEtBQUtNLEdBRXZDSyxHQUNGZCxFQUFRQyxHQUFjSSxXQUFXM1UsS0FBS29WLEVBQWUsR0FBR0osT0FFNUQsQ0FFSixDQUNGLElBQ09WLENBQ1QsRUFDYWUsRUFBMEIsU0FBQ3BPLEVBQU1xTyxHQUM1QyxJQUNNMUIsRUFEa0IsSUFBSTJCLE9BQU8sR0FBRGhOLE9BQUkrTSxFQUFZLHVCQUNwQmIsS0FBS3hOLEdBQ25DLE9BQU8yTSxFQUFRQSxFQUFNLEdBQUssSUFDNUIsRUFJYTRCLEVBQXVCLFNBQUN2TyxHQU9uQyxJQU5BLElBSUkyTSxFQUpFNkIsRUFDSiw0REFFRUMsRUFBVSxHQUc4QixRQUFwQzlCLEVBQVE2QixFQUFZaEIsS0FBS3hOLEtBQWlCLENBQ2hELElBQU0wTCxFQUFhaUIsRUFBTSxHQUNuQitCLEVBQVEvQixFQUFNLEdBQUtBLEVBQU0sR0FBS2pCLEVBQ3BDK0MsRUFBUTFWLEtBQUssQ0FBRTJTLFdBQUFBLEVBQVlnRCxNQUFBQSxHQUM3QixDQUVBLE9BQU9ELENBQ1QsdUtDMUhhdEssRUFBYyxTQUFIM0ksR0FBYyxPQUFBQSxFQUFSMEksVUFDNUJoRixFQUFBQSxFQUFBQSxLQUFBLE9BQ0V5UCxNQUFNLDZCQUNOaFAsT0FBTyxPQUNQaVAsUUFBUSxpQkFDUmhQLE1BQU0sT0FDTmlQLEtBQUssVUFBU3pQLFVBRWRGLEVBQUFBLEVBQUFBLEtBQUEsUUFBTXJJLEVBQUUsc0pBQ0osRUFFS29OLEVBQWEsU0FBSGpHLEdBQWMsT0FBQUEsRUFBUmtHLFVBQzNCaEYsRUFBQUEsRUFBQUEsS0FBQSxPQUNFeVAsTUFBTSw2QkFDTmhQLE9BQU8sT0FDUGlQLFFBQVEsaUJBQ1JoUCxNQUFNLE9BQ05pUCxLQUFLLFVBQVN6UCxVQUVkRixFQUFBQSxFQUFBQSxLQUFBLFFBQU1ySSxFQUFFLCtEQUNKLEVBRUt1TixFQUFZLFNBQUhnQyxHQUFjLE9BQUFBLEVBQVJsQyxVQUMxQmhGLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXlQLE1BQU0sNkJBQ05oUCxPQUFPLE9BQ1BpUCxRQUFRLGlCQUNSaFAsTUFBTSxPQUNOaVAsS0FBSyxVQUFTelAsVUFFZEYsRUFBQUEsRUFBQUEsS0FBQSxRQUFNckksRUFBRSxzSEFDSixFQUdLd04sRUFBVyxTQUFIeUssR0FBYyxPQUFBQSxFQUFSNUssVUFDekJoRixFQUFBQSxFQUFBQSxLQUFBLE9BQ0V5UCxNQUFNLDZCQUNOaFAsT0FBTyxPQUNQaVAsUUFBUSxpQkFDUmhQLE1BQU0sT0FDTmlQLEtBQUssVUFBU3pQLFVBRWRGLEVBQUFBLEVBQUFBLEtBQUEsUUFBTXJJLEVBQUUsOGZBQ0osRUFHSzROLEVBQVksU0FBSHNLLEdBQWMsT0FBQUEsRUFBUjdLLFVBQzFCaEYsRUFBQUEsRUFBQUEsS0FBQSxPQUNFeVAsTUFBTSw2QkFDTmhQLE9BQU8sT0FDUGlQLFFBQVEsaUJBQ1JoUCxNQUFNLE9BQ05pUCxLQUFLLFVBQVN6UCxVQUVkRixFQUFBQSxFQUFBQSxLQUFBLFFBQU1ySSxFQUFFLHVHQUNKLEVBR0ttTyxFQUFlLFNBQUhnSyxHQUFjLE9BQUFBLEVBQVI5SyxVQUM3QmhGLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXlQLE1BQU0sNkJBQ05oUCxPQUFPLE9BQ1BpUCxRQUFRLGlCQUNSaFAsTUFBTSxPQUNOaVAsS0FBSyxVQUFTelAsVUFFZEYsRUFBQUEsRUFBQUEsS0FBQSxRQUFNckksRUFBRSx3cURBQ0osRUFHS29PLEVBQWMsU0FBSGdLLEdBQWMsT0FBQUEsRUFBUi9LLFVBQzVCaEYsRUFBQUEsRUFBQUEsS0FBQSxPQUNFeVAsTUFBTSw2QkFDTmhQLE9BQU8sT0FDUGlQLFFBQVEsaUJBQ1JoUCxNQUFNLE9BQ05pUCxLQUFLLFVBQVN6UCxVQUVkRixFQUFBQSxFQUFBQSxLQUFBLFFBQU1ySSxFQUFFLHFnQ0FDSixpMkRDOUVSeEMsRUFBQSxrQkFBQUMsQ0FBQSxNQUFBQyxFQUFBRCxFQUFBLEdBQUFFLEVBQUFDLE9BQUFDLFVBQUFDLEVBQUFILEVBQUFJLGVBQUFDLEVBQUFKLE9BQUFLLGdCQUFBLFNBQUFQLEVBQUFELEVBQUFFLEdBQUFELEVBQUFELEdBQUFFLEVBQUFPLEtBQUEsRUFBQUMsRUFBQSxtQkFBQUMsT0FBQUEsT0FBQSxHQUFBQyxFQUFBRixFQUFBRyxVQUFBLGFBQUFDLEVBQUFKLEVBQUFLLGVBQUEsa0JBQUFDLEVBQUFOLEVBQUFPLGFBQUEseUJBQUFDLEVBQUFqQixFQUFBRCxFQUFBRSxHQUFBLE9BQUFDLE9BQUFLLGVBQUFQLEVBQUFELEVBQUEsQ0FBQVMsTUFBQVAsRUFBQWlCLFlBQUEsRUFBQUMsY0FBQSxFQUFBQyxVQUFBLElBQUFwQixFQUFBRCxFQUFBLEtBQUFrQixFQUFBLGFBQUFqQixHQUFBaUIsRUFBQSxTQUFBakIsRUFBQUQsRUFBQUUsR0FBQSxPQUFBRCxFQUFBRCxHQUFBRSxDQUFBLFdBQUFvQixFQUFBckIsRUFBQUQsRUFBQUUsRUFBQUcsR0FBQSxJQUFBSyxFQUFBVixHQUFBQSxFQUFBSSxxQkFBQW1CLEVBQUF2QixFQUFBdUIsRUFBQVgsRUFBQVQsT0FBQXFCLE9BQUFkLEVBQUFOLFdBQUFVLEVBQUEsSUFBQVcsRUFBQXBCLEdBQUEsV0FBQUUsRUFBQUssRUFBQSxXQUFBSCxNQUFBaUIsRUFBQXpCLEVBQUFDLEVBQUFZLEtBQUFGLENBQUEsVUFBQWUsRUFBQTFCLEVBQUFELEVBQUFFLEdBQUEsV0FBQTBCLEtBQUEsU0FBQUMsSUFBQTVCLEVBQUE2QixLQUFBOUIsRUFBQUUsR0FBQSxPQUFBRCxHQUFBLE9BQUEyQixLQUFBLFFBQUFDLElBQUE1QixFQUFBLEVBQUFELEVBQUFzQixLQUFBQSxFQUFBLElBQUFTLEVBQUEsaUJBQUFDLEVBQUEsaUJBQUFDLEVBQUEsWUFBQUMsRUFBQSxZQUFBQyxFQUFBLFlBQUFaLElBQUEsVUFBQWEsSUFBQSxVQUFBQyxJQUFBLEtBQUFDLEVBQUEsR0FBQXBCLEVBQUFvQixFQUFBMUIsR0FBQSw4QkFBQTJCLEVBQUFwQyxPQUFBcUMsZUFBQUMsRUFBQUYsR0FBQUEsRUFBQUEsRUFBQUcsRUFBQSxNQUFBRCxHQUFBQSxJQUFBdkMsR0FBQUcsRUFBQXlCLEtBQUFXLEVBQUE3QixLQUFBMEIsRUFBQUcsR0FBQSxJQUFBRSxFQUFBTixFQUFBakMsVUFBQW1CLEVBQUFuQixVQUFBRCxPQUFBcUIsT0FBQWMsR0FBQSxTQUFBTSxFQUFBM0MsR0FBQSwwQkFBQTRDLFNBQUEsU0FBQTdDLEdBQUFrQixFQUFBakIsRUFBQUQsR0FBQSxTQUFBQyxHQUFBLFlBQUE2QyxRQUFBOUMsRUFBQUMsRUFBQSxnQkFBQThDLEVBQUE5QyxFQUFBRCxHQUFBLFNBQUFnRCxFQUFBOUMsRUFBQUssRUFBQUcsRUFBQUUsR0FBQSxJQUFBRSxFQUFBYSxFQUFBMUIsRUFBQUMsR0FBQUQsRUFBQU0sR0FBQSxhQUFBTyxFQUFBYyxLQUFBLEtBQUFaLEVBQUFGLEVBQUFlLElBQUFFLEVBQUFmLEVBQUFQLE1BQUEsT0FBQXNCLEdBQUEsVUFBQWtCLEVBQUFsQixJQUFBMUIsRUFBQXlCLEtBQUFDLEVBQUEsV0FBQS9CLEVBQUFrRCxRQUFBbkIsRUFBQW9CLFNBQUFDLE1BQUEsU0FBQW5ELEdBQUErQyxFQUFBLE9BQUEvQyxFQUFBUyxFQUFBRSxFQUFBLGFBQUFYLEdBQUErQyxFQUFBLFFBQUEvQyxFQUFBUyxFQUFBRSxFQUFBLElBQUFaLEVBQUFrRCxRQUFBbkIsR0FBQXFCLE1BQUEsU0FBQW5ELEdBQUFlLEVBQUFQLE1BQUFSLEVBQUFTLEVBQUFNLEVBQUEsYUFBQWYsR0FBQSxPQUFBK0MsRUFBQSxRQUFBL0MsRUFBQVMsRUFBQUUsRUFBQSxJQUFBQSxFQUFBRSxFQUFBZSxJQUFBLEtBQUEzQixFQUFBSyxFQUFBLGdCQUFBRSxNQUFBLFNBQUFSLEVBQUFJLEdBQUEsU0FBQWdELElBQUEsV0FBQXJELEdBQUEsU0FBQUEsRUFBQUUsR0FBQThDLEVBQUEvQyxFQUFBSSxFQUFBTCxFQUFBRSxFQUFBLFdBQUFBLEVBQUFBLEVBQUFBLEVBQUFrRCxLQUFBQyxFQUFBQSxHQUFBQSxHQUFBLGFBQUEzQixFQUFBMUIsRUFBQUUsRUFBQUcsR0FBQSxJQUFBRSxFQUFBd0IsRUFBQSxnQkFBQXJCLEVBQUFFLEdBQUEsR0FBQUwsSUFBQTBCLEVBQUEsTUFBQXFCLE1BQUEsbUNBQUEvQyxJQUFBMkIsRUFBQSxjQUFBeEIsRUFBQSxNQUFBRSxFQUFBLE9BQUFILE1BQUFSLEVBQUFzRCxNQUFBLE9BQUFsRCxFQUFBbUQsT0FBQTlDLEVBQUFMLEVBQUF3QixJQUFBakIsSUFBQSxLQUFBRSxFQUFBVCxFQUFBb0QsU0FBQSxHQUFBM0MsRUFBQSxLQUFBRSxFQUFBMEMsRUFBQTVDLEVBQUFULEdBQUEsR0FBQVcsRUFBQSxJQUFBQSxJQUFBbUIsRUFBQSxnQkFBQW5CLENBQUEsY0FBQVgsRUFBQW1ELE9BQUFuRCxFQUFBc0QsS0FBQXRELEVBQUF1RCxNQUFBdkQsRUFBQXdCLFNBQUEsYUFBQXhCLEVBQUFtRCxPQUFBLElBQUFqRCxJQUFBd0IsRUFBQSxNQUFBeEIsRUFBQTJCLEVBQUE3QixFQUFBd0IsSUFBQXhCLEVBQUF3RCxrQkFBQXhELEVBQUF3QixJQUFBLGdCQUFBeEIsRUFBQW1ELFFBQUFuRCxFQUFBeUQsT0FBQSxTQUFBekQsRUFBQXdCLEtBQUF0QixFQUFBMEIsRUFBQSxJQUFBSyxFQUFBWCxFQUFBM0IsRUFBQUUsRUFBQUcsR0FBQSxjQUFBaUMsRUFBQVYsS0FBQSxJQUFBckIsRUFBQUYsRUFBQWtELEtBQUFyQixFQUFBRixFQUFBTSxFQUFBVCxNQUFBTSxFQUFBLGdCQUFBMUIsTUFBQTZCLEVBQUFULElBQUEwQixLQUFBbEQsRUFBQWtELEtBQUEsV0FBQWpCLEVBQUFWLE9BQUFyQixFQUFBMkIsRUFBQTdCLEVBQUFtRCxPQUFBLFFBQUFuRCxFQUFBd0IsSUFBQVMsRUFBQVQsSUFBQSxZQUFBNkIsRUFBQTFELEVBQUFFLEdBQUEsSUFBQUcsRUFBQUgsRUFBQXNELE9BQUFqRCxFQUFBUCxFQUFBYSxTQUFBUixHQUFBLEdBQUFFLElBQUFOLEVBQUEsT0FBQUMsRUFBQXVELFNBQUEsZUFBQXBELEdBQUFMLEVBQUFhLFNBQUEsU0FBQVgsRUFBQXNELE9BQUEsU0FBQXRELEVBQUEyQixJQUFBNUIsRUFBQXlELEVBQUExRCxFQUFBRSxHQUFBLFVBQUFBLEVBQUFzRCxTQUFBLFdBQUFuRCxJQUFBSCxFQUFBc0QsT0FBQSxRQUFBdEQsRUFBQTJCLElBQUEsSUFBQWtDLFVBQUEsb0NBQUExRCxFQUFBLGFBQUE4QixFQUFBLElBQUF6QixFQUFBaUIsRUFBQXBCLEVBQUFQLEVBQUFhLFNBQUFYLEVBQUEyQixLQUFBLGFBQUFuQixFQUFBa0IsS0FBQSxPQUFBMUIsRUFBQXNELE9BQUEsUUFBQXRELEVBQUEyQixJQUFBbkIsRUFBQW1CLElBQUEzQixFQUFBdUQsU0FBQSxLQUFBdEIsRUFBQSxJQUFBdkIsRUFBQUYsRUFBQW1CLElBQUEsT0FBQWpCLEVBQUFBLEVBQUEyQyxNQUFBckQsRUFBQUYsRUFBQWdFLFlBQUFwRCxFQUFBSCxNQUFBUCxFQUFBK0QsS0FBQWpFLEVBQUFrRSxRQUFBLFdBQUFoRSxFQUFBc0QsU0FBQXRELEVBQUFzRCxPQUFBLE9BQUF0RCxFQUFBMkIsSUFBQTVCLEdBQUFDLEVBQUF1RCxTQUFBLEtBQUF0QixHQUFBdkIsR0FBQVYsRUFBQXNELE9BQUEsUUFBQXRELEVBQUEyQixJQUFBLElBQUFrQyxVQUFBLG9DQUFBN0QsRUFBQXVELFNBQUEsS0FBQXRCLEVBQUEsVUFBQWdDLEVBQUFsRSxHQUFBLElBQUFELEVBQUEsQ0FBQW9FLE9BQUFuRSxFQUFBLFNBQUFBLElBQUFELEVBQUFxRSxTQUFBcEUsRUFBQSxTQUFBQSxJQUFBRCxFQUFBc0UsV0FBQXJFLEVBQUEsR0FBQUQsRUFBQXVFLFNBQUF0RSxFQUFBLFNBQUF1RSxXQUFBQyxLQUFBekUsRUFBQSxVQUFBMEUsRUFBQXpFLEdBQUEsSUFBQUQsRUFBQUMsRUFBQTBFLFlBQUEsR0FBQTNFLEVBQUE0QixLQUFBLGdCQUFBNUIsRUFBQTZCLElBQUE1QixFQUFBMEUsV0FBQTNFLENBQUEsVUFBQXlCLEVBQUF4QixHQUFBLEtBQUF1RSxXQUFBLEVBQUFKLE9BQUEsU0FBQW5FLEVBQUE0QyxRQUFBc0IsRUFBQSxXQUFBUyxPQUFBLFlBQUFsQyxFQUFBMUMsR0FBQSxHQUFBQSxHQUFBLEtBQUFBLEVBQUEsS0FBQUUsRUFBQUYsRUFBQVksR0FBQSxHQUFBVixFQUFBLE9BQUFBLEVBQUE0QixLQUFBOUIsR0FBQSxzQkFBQUEsRUFBQWlFLEtBQUEsT0FBQWpFLEVBQUEsSUFBQTZFLE1BQUE3RSxFQUFBOEUsUUFBQSxLQUFBdkUsR0FBQSxFQUFBRyxFQUFBLFNBQUF1RCxJQUFBLE9BQUExRCxFQUFBUCxFQUFBOEUsUUFBQSxHQUFBekUsRUFBQXlCLEtBQUE5QixFQUFBTyxHQUFBLE9BQUEwRCxFQUFBeEQsTUFBQVQsRUFBQU8sR0FBQTBELEVBQUFWLE1BQUEsRUFBQVUsRUFBQSxPQUFBQSxFQUFBeEQsTUFBQVIsRUFBQWdFLEVBQUFWLE1BQUEsRUFBQVUsQ0FBQSxTQUFBdkQsRUFBQXVELEtBQUF2RCxDQUFBLFlBQUFxRCxVQUFBZCxFQUFBakQsR0FBQSwyQkFBQW9DLEVBQUFoQyxVQUFBaUMsRUFBQTlCLEVBQUFvQyxFQUFBLGVBQUFsQyxNQUFBNEIsRUFBQWpCLGNBQUEsSUFBQWIsRUFBQThCLEVBQUEsZUFBQTVCLE1BQUEyQixFQUFBaEIsY0FBQSxJQUFBZ0IsRUFBQTJDLFlBQUE3RCxFQUFBbUIsRUFBQXJCLEVBQUEscUJBQUFoQixFQUFBZ0Ysb0JBQUEsU0FBQS9FLEdBQUEsSUFBQUQsRUFBQSxtQkFBQUMsR0FBQUEsRUFBQWdGLFlBQUEsUUFBQWpGLElBQUFBLElBQUFvQyxHQUFBLHVCQUFBcEMsRUFBQStFLGFBQUEvRSxFQUFBa0YsTUFBQSxFQUFBbEYsRUFBQW1GLEtBQUEsU0FBQWxGLEdBQUEsT0FBQUUsT0FBQWlGLGVBQUFqRixPQUFBaUYsZUFBQW5GLEVBQUFvQyxJQUFBcEMsRUFBQW9GLFVBQUFoRCxFQUFBbkIsRUFBQWpCLEVBQUFlLEVBQUEsc0JBQUFmLEVBQUFHLFVBQUFELE9BQUFxQixPQUFBbUIsR0FBQTFDLENBQUEsRUFBQUQsRUFBQXNGLE1BQUEsU0FBQXJGLEdBQUEsT0FBQWtELFFBQUFsRCxFQUFBLEVBQUEyQyxFQUFBRyxFQUFBM0MsV0FBQWMsRUFBQTZCLEVBQUEzQyxVQUFBVSxHQUFBLDBCQUFBZCxFQUFBK0MsY0FBQUEsRUFBQS9DLEVBQUF1RixNQUFBLFNBQUF0RixFQUFBQyxFQUFBRyxFQUFBRSxFQUFBRyxRQUFBLElBQUFBLElBQUFBLEVBQUE4RSxTQUFBLElBQUE1RSxFQUFBLElBQUFtQyxFQUFBekIsRUFBQXJCLEVBQUFDLEVBQUFHLEVBQUFFLEdBQUFHLEdBQUEsT0FBQVYsRUFBQWdGLG9CQUFBOUUsR0FBQVUsRUFBQUEsRUFBQXFELE9BQUFiLE1BQUEsU0FBQW5ELEdBQUEsT0FBQUEsRUFBQXNELEtBQUF0RCxFQUFBUSxNQUFBRyxFQUFBcUQsTUFBQSxLQUFBckIsRUFBQUQsR0FBQXpCLEVBQUF5QixFQUFBM0IsRUFBQSxhQUFBRSxFQUFBeUIsRUFBQS9CLEdBQUEsMEJBQUFNLEVBQUF5QixFQUFBLHFEQUFBM0MsRUFBQXlGLEtBQUEsU0FBQXhGLEdBQUEsSUFBQUQsRUFBQUcsT0FBQUYsR0FBQUMsRUFBQSxXQUFBRyxLQUFBTCxFQUFBRSxFQUFBdUUsS0FBQXBFLEdBQUEsT0FBQUgsRUFBQXdGLFVBQUEsU0FBQXpCLElBQUEsS0FBQS9ELEVBQUE0RSxRQUFBLEtBQUE3RSxFQUFBQyxFQUFBeUYsTUFBQSxHQUFBMUYsS0FBQUQsRUFBQSxPQUFBaUUsRUFBQXhELE1BQUFSLEVBQUFnRSxFQUFBVixNQUFBLEVBQUFVLENBQUEsUUFBQUEsRUFBQVYsTUFBQSxFQUFBVSxDQUFBLEdBQUFqRSxFQUFBMEMsT0FBQUEsRUFBQWpCLEVBQUFyQixVQUFBLENBQUE2RSxZQUFBeEQsRUFBQW1ELE1BQUEsU0FBQTVFLEdBQUEsUUFBQTRGLEtBQUEsT0FBQTNCLEtBQUEsT0FBQU4sS0FBQSxLQUFBQyxNQUFBM0QsRUFBQSxLQUFBc0QsTUFBQSxPQUFBRSxTQUFBLFVBQUFELE9BQUEsWUFBQTNCLElBQUE1QixFQUFBLEtBQUF1RSxXQUFBM0IsUUFBQTZCLElBQUExRSxFQUFBLFFBQUFFLEtBQUEsV0FBQUEsRUFBQTJGLE9BQUEsSUFBQXhGLEVBQUF5QixLQUFBLEtBQUE1QixLQUFBMkUsT0FBQTNFLEVBQUE0RixNQUFBLFdBQUE1RixHQUFBRCxFQUFBLEVBQUE4RixLQUFBLGdCQUFBeEMsTUFBQSxNQUFBdEQsRUFBQSxLQUFBdUUsV0FBQSxHQUFBRyxXQUFBLGFBQUExRSxFQUFBMkIsS0FBQSxNQUFBM0IsRUFBQTRCLElBQUEsWUFBQW1FLElBQUEsRUFBQW5DLGtCQUFBLFNBQUE3RCxHQUFBLFFBQUF1RCxLQUFBLE1BQUF2RCxFQUFBLElBQUFFLEVBQUEsY0FBQStGLEVBQUE1RixFQUFBRSxHQUFBLE9BQUFLLEVBQUFnQixLQUFBLFFBQUFoQixFQUFBaUIsSUFBQTdCLEVBQUFFLEVBQUErRCxLQUFBNUQsRUFBQUUsSUFBQUwsRUFBQXNELE9BQUEsT0FBQXRELEVBQUEyQixJQUFBNUIsS0FBQU0sQ0FBQSxTQUFBQSxFQUFBLEtBQUFpRSxXQUFBTSxPQUFBLEVBQUF2RSxHQUFBLElBQUFBLEVBQUEsS0FBQUcsRUFBQSxLQUFBOEQsV0FBQWpFLEdBQUFLLEVBQUFGLEVBQUFpRSxXQUFBLFlBQUFqRSxFQUFBMEQsT0FBQSxPQUFBNkIsRUFBQSxVQUFBdkYsRUFBQTBELFFBQUEsS0FBQXdCLEtBQUEsS0FBQTlFLEVBQUFULEVBQUF5QixLQUFBcEIsRUFBQSxZQUFBTSxFQUFBWCxFQUFBeUIsS0FBQXBCLEVBQUEsaUJBQUFJLEdBQUFFLEVBQUEsU0FBQTRFLEtBQUFsRixFQUFBMkQsU0FBQSxPQUFBNEIsRUFBQXZGLEVBQUEyRCxVQUFBLFdBQUF1QixLQUFBbEYsRUFBQTRELFdBQUEsT0FBQTJCLEVBQUF2RixFQUFBNEQsV0FBQSxTQUFBeEQsR0FBQSxRQUFBOEUsS0FBQWxGLEVBQUEyRCxTQUFBLE9BQUE0QixFQUFBdkYsRUFBQTJELFVBQUEsWUFBQXJELEVBQUEsTUFBQXNDLE1BQUEsa0RBQUFzQyxLQUFBbEYsRUFBQTRELFdBQUEsT0FBQTJCLEVBQUF2RixFQUFBNEQsV0FBQSxLQUFBUixPQUFBLFNBQUE3RCxFQUFBRCxHQUFBLFFBQUFFLEVBQUEsS0FBQXNFLFdBQUFNLE9BQUEsRUFBQTVFLEdBQUEsSUFBQUEsRUFBQSxLQUFBSyxFQUFBLEtBQUFpRSxXQUFBdEUsR0FBQSxHQUFBSyxFQUFBNkQsUUFBQSxLQUFBd0IsTUFBQXZGLEVBQUF5QixLQUFBdkIsRUFBQSxvQkFBQXFGLEtBQUFyRixFQUFBK0QsV0FBQSxLQUFBNUQsRUFBQUgsRUFBQSxPQUFBRyxJQUFBLFVBQUFULEdBQUEsYUFBQUEsSUFBQVMsRUFBQTBELFFBQUFwRSxHQUFBQSxHQUFBVSxFQUFBNEQsYUFBQTVELEVBQUEsVUFBQUUsRUFBQUYsRUFBQUEsRUFBQWlFLFdBQUEsVUFBQS9ELEVBQUFnQixLQUFBM0IsRUFBQVcsRUFBQWlCLElBQUE3QixFQUFBVSxHQUFBLEtBQUE4QyxPQUFBLFlBQUFTLEtBQUF2RCxFQUFBNEQsV0FBQW5DLEdBQUEsS0FBQStELFNBQUF0RixFQUFBLEVBQUFzRixTQUFBLFNBQUFqRyxFQUFBRCxHQUFBLGFBQUFDLEVBQUEyQixLQUFBLE1BQUEzQixFQUFBNEIsSUFBQSxnQkFBQTVCLEVBQUEyQixNQUFBLGFBQUEzQixFQUFBMkIsS0FBQSxLQUFBcUMsS0FBQWhFLEVBQUE0QixJQUFBLFdBQUE1QixFQUFBMkIsTUFBQSxLQUFBb0UsS0FBQSxLQUFBbkUsSUFBQTVCLEVBQUE0QixJQUFBLEtBQUEyQixPQUFBLGNBQUFTLEtBQUEsa0JBQUFoRSxFQUFBMkIsTUFBQTVCLElBQUEsS0FBQWlFLEtBQUFqRSxHQUFBbUMsQ0FBQSxFQUFBZ0UsT0FBQSxTQUFBbEcsR0FBQSxRQUFBRCxFQUFBLEtBQUF3RSxXQUFBTSxPQUFBLEVBQUE5RSxHQUFBLElBQUFBLEVBQUEsS0FBQUUsRUFBQSxLQUFBc0UsV0FBQXhFLEdBQUEsR0FBQUUsRUFBQW9FLGFBQUFyRSxFQUFBLFlBQUFpRyxTQUFBaEcsRUFBQXlFLFdBQUF6RSxFQUFBcUUsVUFBQUcsRUFBQXhFLEdBQUFpQyxDQUFBLGtCQUFBbEMsR0FBQSxRQUFBRCxFQUFBLEtBQUF3RSxXQUFBTSxPQUFBLEVBQUE5RSxHQUFBLElBQUFBLEVBQUEsS0FBQUUsRUFBQSxLQUFBc0UsV0FBQXhFLEdBQUEsR0FBQUUsRUFBQWtFLFNBQUFuRSxFQUFBLEtBQUFJLEVBQUFILEVBQUF5RSxXQUFBLGFBQUF0RSxFQUFBdUIsS0FBQSxLQUFBckIsRUFBQUYsRUFBQXdCLElBQUE2QyxFQUFBeEUsRUFBQSxRQUFBSyxDQUFBLFFBQUErQyxNQUFBLDBCQUFBOEMsY0FBQSxTQUFBcEcsRUFBQUUsRUFBQUcsR0FBQSxZQUFBb0QsU0FBQSxDQUFBNUMsU0FBQTZCLEVBQUExQyxHQUFBZ0UsV0FBQTlELEVBQUFnRSxRQUFBN0QsR0FBQSxjQUFBbUQsU0FBQSxLQUFBM0IsSUFBQTVCLEdBQUFrQyxDQUFBLEdBQUFuQyxDQUFBLFVBQUFxRyxFQUFBaEcsRUFBQUosRUFBQUQsRUFBQUUsRUFBQUssRUFBQUssRUFBQUUsR0FBQSxRQUFBSixFQUFBTCxFQUFBTyxHQUFBRSxHQUFBRSxFQUFBTixFQUFBRCxLQUFBLE9BQUFKLEdBQUEsWUFBQUwsRUFBQUssRUFBQSxDQUFBSyxFQUFBNkMsS0FBQXRELEVBQUFlLEdBQUF3RSxRQUFBdEMsUUFBQWxDLEdBQUFvQyxLQUFBbEQsRUFBQUssRUFBQSxVQUFBcWEsRUFBQXZhLEdBQUEsc0JBQUFKLEVBQUEsS0FBQUQsRUFBQXNLLFVBQUEsV0FBQTlFLFNBQUEsU0FBQXRGLEVBQUFLLEdBQUEsSUFBQUssRUFBQVAsRUFBQWtLLE1BQUF0SyxFQUFBRCxHQUFBLFNBQUF3SyxFQUFBbkssR0FBQWdHLEVBQUF6RixFQUFBVixFQUFBSyxFQUFBaUssRUFBQUMsRUFBQSxPQUFBcEssRUFBQSxVQUFBb0ssRUFBQXBLLEdBQUFnRyxFQUFBekYsRUFBQVYsRUFBQUssRUFBQWlLLEVBQUFDLEVBQUEsUUFBQXBLLEVBQUEsQ0FBQW1LLE9BQUEsZ0JBQUFxUSxFQUFBM2EsR0FBQSxnQkFBQUEsR0FBQSxHQUFBcUcsTUFBQUMsUUFBQXRHLEdBQUEsT0FBQXlHLEVBQUF6RyxFQUFBLENBQUE0YSxDQUFBNWEsSUFBQSxTQUFBQSxHQUFBLHVCQUFBUyxRQUFBLE1BQUFULEVBQUFTLE9BQUFFLFdBQUEsTUFBQVgsRUFBQSxxQkFBQXFHLE1BQUFNLEtBQUEzRyxFQUFBLENBQUE2YSxDQUFBN2EsSUFBQSxTQUFBQSxFQUFBVSxHQUFBLEdBQUFWLEVBQUEscUJBQUFBLEVBQUEsT0FBQXlHLEVBQUF6RyxFQUFBVSxHQUFBLElBQUFYLEVBQUEsR0FBQTJHLFNBQUE5RSxLQUFBNUIsR0FBQTRGLE1BQUEsdUJBQUE3RixHQUFBQyxFQUFBK0UsY0FBQWhGLEVBQUFDLEVBQUErRSxZQUFBQyxNQUFBLFFBQUFqRixHQUFBLFFBQUFBLEVBQUFzRyxNQUFBTSxLQUFBM0csR0FBQSxjQUFBRCxHQUFBLDJDQUFBNkcsS0FBQTdHLEdBQUEwRyxFQUFBekcsRUFBQVUsUUFBQSxHQUFBbUcsQ0FBQTdHLElBQUEscUJBQUE2RCxVQUFBLHdJQUFBaVgsRUFBQSxVQUFBclUsRUFBQXpHLEVBQUFVLElBQUEsTUFBQUEsR0FBQUEsRUFBQVYsRUFBQTRFLFVBQUFsRSxFQUFBVixFQUFBNEUsUUFBQSxRQUFBOUUsRUFBQSxFQUFBSyxFQUFBa0csTUFBQTNGLEdBQUFaLEVBQUFZLEVBQUFaLElBQUFLLEVBQUFMLEdBQUFFLEVBQUFGLEdBQUEsT0FBQUssQ0FBQSxDQWNPLElBQU0rSSxFQUE4QixTQUFIbEMsR0FJbEMsSUFISm1DLEVBQU1uQyxFQUFObUMsT0FDQWpDLEVBQVFGLEVBQVJFLFNBQ0FTLEVBQWlCWCxFQUFqQlcsbUJBRUFnQixFQUFBQSxFQUFBQSxZQUFVLFdBRVIsSUFBTW9TLEVBQWM5SSxhQUFhRSxRQUFRLGdCQUVwQzRJLEVBR0g3VCxFQUFTLENBQ1B4RixLQUFNLDBCQUNOb0gsUUFBUyxDQUFFZ0MsTUFBT2lRLEtBSnBCOUksYUFBYUMsUUFBUSxlQUFnQnZLLEdBU3ZDd0IsRUFDRzZSLE9BQ0E5WCxNQUFLLFdBQ0orWCxZQUFXLFdBQ1QvVCxFQUFTLENBQUV4RixLQUFNLG9CQUFxQm9ILFFBQVMsQ0FBRW9TLFNBQVMsSUFDNUQsR0FBRyxJQUNMLElBQUUsT0FDSyxTQUFDQyxHQUNONUosUUFBUUcsSUFBSXlKLEVBQ2QsR0FDSixHQUFHLEdBQ0wsRUFHYTlSLEVBQW9DLFNBQUhHLEdBSXhDLElBSEpsQyxFQUFTa0MsRUFBVGxDLFVBQ0FFLEVBQVNnQyxFQUFUaEMsVUFDQUwsRUFBc0JxQyxFQUF0QnJDLHdCQUVBd0IsRUFBQUEsRUFBQUEsWUFBVSxXQUNSLEdBQUtuQixFQUFVcUMsU0FBWXZDLEVBQVV1QyxRQUFyQyxDQUVBLElBQU11UixFQUFhLElBQUlDLGdCQWF2QixPQVhBdkcsT0FBT0MsMkJBQTJCQyxhQUFhc0csY0FBYyxDQUMzRDlQLEtBQU1yRSxFQUNOb1UsZUFBZ0IsR0FBRnpPLE9BQUE2TixFQUNUcE4sRUFBQUEsY0FBWW9OLEVBQ1puTixFQUFBQSxnQkFBY21OLEVBQ2RsTixFQUFBQSxtQkFBaUJrTixFQUNqQmpOLEVBQUFBLGlCQUFlaU4sRUFDZmhOLEVBQUFBLGlCQUlBLGtCQUFNeU4sRUFBV0ksT0FBTyxDQWZxQixDQWdCdEQsR0FBRyxDQUFDclUsSUFFSixJQUFNbU4sRUFBVyxTQUFDYyxHQUNoQixHQUFLNU4sRUFBVXFDLFNBQVl2QyxFQUFVdUMsUUFBckMsQ0FFQSxJQUFNdVIsRUFBYSxJQUFJQyxnQkFFakJJLEVBQVUsZUFBQTdKLEVBQUE4SSxFQUFBN2EsSUFBQW9GLE1BQUcsU0FBQXdFLElBQUEsSUFBQWIsRUFBQXFMLEVBQUF5SCxFQUFBLE9BQUE3YixJQUFBdUIsTUFBQSxTQUFBd0ksR0FBQSxjQUFBQSxFQUFBbEUsS0FBQWtFLEVBQUE3RixNQUFBLE9BQ1EsR0FBbkI2RSxFQUFPd00sRUFBUXhNLEtBRVYsQ0FBRmdCLEVBQUE3RixLQUFBLGVBQUE2RixFQUFBaEcsT0FBQSxpQkFFSHFRLEVBQVF6TSxFQUFVcUMsUUFBUUUsV0FFMUIyUixFQUFjOVMsRUFBSytTLGNBQWMxTyxLQUFJLFNBQUMyTyxFQUFRcGIsR0FDbEQsTUFBTyxDQUNMaVUsZ0JBQWlCbUgsRUFBTzFQLEtBQ3hCeUksWUFBYWlILEVBQU9wSCxPQUNwQkUsY0FDcUIsT0FBbkJrSCxFQUFPQyxRQUFtQkQsRUFBT3BILE9BQVNvSCxFQUFPQyxRQUNuRGpILFVBQ3VCLE9BQXJCZ0gsRUFBT2hILFVBQ0hYLEVBQU02SCxpQkFBaUJGLEVBQU8xUCxNQUM5QjBQLEVBQU9oSCxVQUNiUSxRQUFTd0csRUFBT3hHLFFBQ2hCMkcsVUFBVXBLLEVBQUFBLEVBQUFBLG1CQUFrQixDQUMxQmpRLEtBQU1rYSxFQUFPbGEsS0FDYmlJLE9BQVFyQyxFQUFVdUMsVUFHeEIsSUFDQXZDLEVBQVV1QyxRQUFRSCxPQUFPc1MsZ0JBQWdCL0gsRUFBTyxRQUFTeUgsR0FBYSx3QkFBQTlSLEVBQUEvRCxPQUFBLEdBQUE0RCxFQUFBLEtBQ3ZFLGtCQXpCZSxPQUFBbUksRUFBQXZILE1BQUEsS0FBQUQsVUFBQSxLQTZCaEIsT0FGQXFSLElBRU8sa0JBQU1MLEVBQVdJLE9BQU8sQ0FqQ3FCLENBa0N0RCxHQUVBN1MsRUFBQUEsRUFBQUEsWUFBVSxXQU1SLE9BTEFtTSxPQUFPQywyQkFBMkJDLGFBQWFpSCxVQUM3QyxDQUFDbkgsT0FBT0MsMkJBQTJCQyxhQUFhbUIsT0FBTytGLGVBQ3ZENUgsR0FHSyxXQUNMUSxPQUFPQywyQkFBMkJDLGFBQWFtSCxZQUM3QyxDQUFDckgsT0FBT0MsMkJBQTJCQyxhQUFhbUIsT0FBTytGLGVBQ3ZENUgsRUFFSixDQUNGLEdBQUcsR0FDTCxFQUdhaEwsRUFBa0MsU0FBSGdSLEdBS3RDLElBSko5UyxFQUFTOFMsRUFBVDlTLFVBQ0FMLEVBQXNCbVQsRUFBdEJuVCx1QkFDQUMsRUFBeUJrVCxFQUF6QmxULDBCQUNBbUIsRUFBZStSLEVBQWYvUixpQkFHQUksRUFBQUEsRUFBQUEsWUFBVSxXQUNSLEdBQUtuQixFQUFVcUMsUUFBZixDQUVBLElBQU11UyxFQUFhLGVBQUE3QixFQUFBRyxFQUFBN2EsSUFBQW9GLE1BQUcsU0FBQW9YLEVBQU8vSixHQUFLLE9BQUF6UyxJQUFBdUIsTUFBQSxTQUFBa2IsR0FBQSxjQUFBQSxFQUFBNVcsS0FBQTRXLEVBQUF2WSxNQUFBLFFBRTVCdU8sRUFBTXJFLFNBQTBCLE1BQWRxRSxFQUFNdEUsS0FBNkIsTUFBZHNFLEVBQU10RSxNQUMvQ3NFLEVBQU1nQixpQkFFTndCLE9BQU9DLDJCQUEyQkMsYUFBYXVILFlBQVksQ0FDekQvUSxLQUFNckUsS0FFVCx3QkFBQW1WLEVBQUF6VyxPQUFBLEdBQUF3VyxFQUFBLEtBQ0YsZ0JBVGtCN1IsR0FBQSxPQUFBK1AsRUFBQWxRLE1BQUEsS0FBQUQsVUFBQSxLQWNuQixPQUhBNUMsRUFBVXFDLFFBQVF1RixhQUFhaUUsaUJBQWlCLFVBQVcrSSxHQUdwRCxXQUNMNVUsRUFBVXFDLFFBQ1B1RixhQUNBb04sb0JBQW9CLFVBQVdKLEVBQ3BDLENBcEI4QixDQXFCaEMsR0FBRyxDQUFDNVUsRUFBV0wsSUFFZixJQUFNbU4sRUFBVyxTQUFDYyxHQUNoQixHQUFLNU4sRUFBVXFDLFFBQWYsQ0FFQSxJQUFNakIsRUFBT3dNLEVBQVF4TSxLQUNyQjJJLFFBQVFHLElBQUk5SSxHQUVQQSxJQUVMeEIsRUFBMEJ3QixFQUFLMEksZ0JBQy9CL0ksR0FBZ0IsR0FSYyxDQVNoQyxHQUVBSSxFQUFBQSxFQUFBQSxZQUFVLFdBTVIsT0FMQW1NLE9BQU9DLDJCQUEyQkMsYUFBYWlILFVBQzdDLENBQUNuSCxPQUFPQywyQkFBMkJDLGFBQWFtQixPQUFPc0csYUFDdkRuSSxHQUdLLFdBQ0xRLE9BQU9DLDJCQUEyQkMsYUFBYW1ILFlBQzdDLENBQUNySCxPQUFPQywyQkFBMkJDLGFBQWFtQixPQUFPc0csYUFDdkRuSSxFQUVKLENBQ0YsR0FBRyxHQUNMLEVBRWFsTCxFQUE2QyxTQUFIb1IsR0FZakQsSUFYSmhULEVBQVNnVCxFQUFUaFQsVUFDQUMsRUFBdUIrUyxFQUF2Qi9TLHdCQUNBUSxFQUFhdVMsRUFBYnZTLGNBQ0FELEVBQVV3UyxFQUFWeFMsV0FDQU0sRUFBWWtTLEVBQVpsUyxhQUNBQyxFQUFlaVMsRUFBZmpTLGdCQUNBcEIsRUFBc0JxVCxFQUF0QnJULHVCQUNBaUIsRUFBd0JvUyxFQUF4QnBTLHlCQUNBRCxFQUFxQnFTLEVBQXJCclMsc0JBQ0FNLEVBQWErUixFQUFiL1IsY0FDQUMsRUFBZ0I4UixFQUFoQjlSLGtCQUVBQyxFQUFBQSxFQUFBQSxZQUFVLFdBQ1IsS0FDbUIsSUFBaEJYLEdBQXNCTSxJQUN0QmIsRUFBd0JvQyxTQUN4QnJDLEVBQVVxQyxRQUhiLENBT0EsSUFBSThJLEdBQTJCUSxFQUFBQSxFQUFBQSxrQkFBaUIsQ0FDOUNoTCxzQkFBQUEsRUFDQUgsV0FBQUEsRUFDQVMsY0FBQUEsSUFHRkwsRUFBeUJ1SyxHQUV6QjFLLEdBQWUsR0FDZk0sR0FBZ0IsSUFHaEJtSyxFQUFBQSxFQUFBQSxjQUFhakwsRUFBeUJrTCxFQWQ5QixDQWVWLEdBQUcsQ0FBQzNLLEVBQVlNLEtBRWhCSyxFQUFBQSxFQUFBQSxZQUFVLFdBQ1IsR0FBSW5CLEVBQVVxQyxRQUFTLENBQ3JCLElBQ002UyxFQURRbFYsRUFBVXFDLFFBQVFFLFdBQ1JDLGVBRXhCdEIsR0FBaUIsU0FBQ2hELEdBSWhCLE9BSElBLEVBQU9nWCxHQUNUblUsR0FBZ0IsR0FFWG1VLENBQ1QsR0FDRixDQUNGLEdBQUcsQ0FBQ3ZWLEdBQ04iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9Nb25hY29FZGl0b3IuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvTW9uYWNvRWRpdG9yTG9hZGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9lZGl0b3ItaW5mby9Nb25hY29FZGl0b3JJbmZvLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2VkaXRvci1pbmZvL01vbmFjb0VkaXRvckluZm9CdXR0b25zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2VkaXRvci1pbmZvL01vbmFjb0VkaXRvckluZm9EZXRhaWxzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2VkaXRvci1pbmZvL01vbmFjb0VkaXRvckluZm9TaWRlYmFyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2hlbHBlci9oZWxwZXJzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2hlbHBlci9tb25hY29FZGl0b3JHbHlwaC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9oZWxwZXIvbW9uYWNvRWRpdG9yU2Nyb2xsLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2hlbHBlci9tb25hY29FZGl0b3JTbmlwcGV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2hlbHBlci90ZXh0X2V4dHJhY3Rvcl9oZWxwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvaWNvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvaG9va3MvdXNlTW9uYWNvRWRpdG9yRWZmZWN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRWRpdG9yLCB7IGxvYWRlciB9IGZyb20gXCJAbW9uYWNvLWVkaXRvci9yZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgTW9uYWNvRWRpdG9yTG9hZGVyLFxyXG4gIG1vbmFjb0VkaXRvclNuaXBwZXQsXHJcbiAgbW9uYWNvRWRpdG9yR2x5cGgsXHJcbiAgbW9uYWNvRWRpdG9yU2Nyb2xsLFxyXG4gIHNldEVkaXRvclNldHRpbmdzV2lkZ2V0c0RhdGEsXHJcbiAgZ2V0RWRpdG9yU2V0dGluZ3NXaWRnZXRzRGF0YSxcclxufSBmcm9tIFwiLi9pbmRleFwiO1xyXG5pbXBvcnQge1xyXG4gIHVzZU1vbmFjb0VkaXRvckxvYWRlckVmZmVjdCxcclxuICB1c2VNb25hY29FZGl0b3JDb2RlQW5hbHlzaXNFZmZlY3QsXHJcbiAgdXNlTW9uYWNvRWRpdG9yQ29kZUZvcm1hdEVmZmVjdCxcclxuICB1c2VNb25hY29FZGl0b3JMaW5lTnVtYmVyRGVjb3JhdGlvbnNFZmZlY3QsXHJcbn0gZnJvbSBcIi4uLy4uLy4uL2hvb2tzL3VzZU1vbmFjb0VkaXRvckVmZmVjdFwiO1xyXG5pbXBvcnQgXCIuLy4uLy4uLy4uL3N0eWxlcy9lZGl0b3JzL01vbmFjb0VkaXRvci5jc3NcIjtcclxuaW1wb3J0IE1vbmFjb0VkaXRvckluZm8gZnJvbSBcIi4vZWRpdG9yLWluZm8vTW9uYWNvRWRpdG9ySW5mb1wiO1xyXG5cclxuY29uc3QgTW9uYWNvRWRpdG9yID0gKHtcclxuICBzdGF0ZSxcclxuICBkaXNwYXRjaCxcclxuICBtb25hY29FZGl0b3JTb3VyY2VDb2RlLFxyXG4gIHNldE1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgaGFuZGxlTW9uYWNvRWRpdG9yQ29kZUNoYW5nZSxcclxufSkgPT4ge1xyXG4gIC8vIFVTRSBSZWZcclxuICBjb25zdCBtb25hY29SZWYgPSB1c2VSZWYobnVsbCk7XHJcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmKG51bGwpO1xyXG4gIGNvbnN0IGxpbmVOdW1iZXJEZWNvcmF0aW9uUmVmID0gdXNlUmVmKG51bGwpO1xyXG4gIC8vIFJkdWNlciBzdGF0ZVxyXG4gIGNvbnN0IHtcclxuICAgIGlzTG9hZGluZyxcclxuICAgIG1vbmFjb0VkaXRvclRoZW1lLFxyXG4gICAgZWRpdG9yT3B0aW9ucyxcclxuICAgIGVkaXRvclNldHRpbmdzLFxyXG4gIH0gPSBzdGF0ZTtcclxuICAvLyBVU0UgU1RBVEVcclxuICBjb25zdCBbbGluZU51bWJlciwgc2V0TGluZU51bWJlcl0gPSB1c2VTdGF0ZSgtMSk7XHJcbiAgY29uc3QgW2xpbmVOdW1iZXJEZWNvcmF0aW9ucywgc2V0TGluZU51bWJlckRlY29yYXRpb25zXSA9IHVzZVN0YXRlKFtdKTtcclxuICBjb25zdCBbdXBkYXRlR2x5cGhzLCBzZXRVcGRhdGVHbHlwaHNdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gIGNvbnN0IFttYXhFZGl0b3JSb3dzLCBzZXRNYXhFZGl0b3JSb3dzXSA9IHVzZVN0YXRlKC0xKTtcclxuXHJcbiAgLy8gVVNFIEVmZmVjdHNcclxuICAvL2xvY2Fsc3RvcmFnZVxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gZ2V0RWRpdG9yU2V0dGluZ3NXaWRnZXRzRGF0YSgpO1xyXG5cclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICB0eXBlOiBcInVkcGF0ZUVkaXRvclN0dGluZ3NXaWRnZXRzXCIsXHJcbiAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgaXNDb2RlRm9ybWF0RW5hYmxlOiBkYXRhLmlzQ29kZUZvcm1hdEVuYWJsZSxcclxuICAgICAgICAgIGlzWm9vbWluZ0VuYWJsZTogZGF0YS5pc1pvb21pbmdFbmFibGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRFZGl0b3JTZXR0aW5nc1dpZGdldHNEYXRhKHtcclxuICAgICAgICBpc0NvZGVGb3JtYXRFbmFibGU6IGVkaXRvclNldHRpbmdzLmlzQ29kZUZvcm1hdEVuYWJsZSxcclxuICAgICAgICBpc1pvb21pbmdFbmFibGU6IGVkaXRvclNldHRpbmdzLmlzWm9vbWluZ0VuYWJsZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSwgW10pO1xyXG4gIC8vIGNhbGxlZCB3aGVuIHdpZGdldHMgY2hhbmdlZFxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBzZXRFZGl0b3JTZXR0aW5nc1dpZGdldHNEYXRhKHtcclxuICAgICAgaXNDb2RlRm9ybWF0RW5hYmxlOiBlZGl0b3JTZXR0aW5ncy5pc0NvZGVGb3JtYXRFbmFibGUsXHJcbiAgICAgIGlzWm9vbWluZ0VuYWJsZTogZWRpdG9yU2V0dGluZ3MuaXNab29taW5nRW5hYmxlLFxyXG4gICAgfSk7XHJcbiAgfSwgW2VkaXRvclNldHRpbmdzLmlzQ29kZUZvcm1hdEVuYWJsZSwgZWRpdG9yU2V0dGluZ3MuaXNab29taW5nRW5hYmxlXSk7XHJcblxyXG4gIC8vIGVkaXRvciBsb2FkaW5nXHJcbiAgdXNlTW9uYWNvRWRpdG9yTG9hZGVyRWZmZWN0KHsgbG9hZGVyLCBkaXNwYXRjaCwgbW9uYWNvRWRpdG9yVGhlbWUgfSk7XHJcblxyXG4gIC8vIFVzZUVmZmVjdCBmb3IgTGluZSBOdW1iZXIgRGVjb3JhdGlvbnNcclxuICB1c2VNb25hY29FZGl0b3JMaW5lTnVtYmVyRGVjb3JhdGlvbnNFZmZlY3Qoe1xyXG4gICAgZWRpdG9yUmVmLFxyXG4gICAgbGluZU51bWJlckRlY29yYXRpb25SZWYsXHJcbiAgICBzZXRMaW5lTnVtYmVyLFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHVwZGF0ZUdseXBocyxcclxuICAgIHNldFVwZGF0ZUdseXBocyxcclxuICAgIG1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgICBzZXRMaW5lTnVtYmVyRGVjb3JhdGlvbnMsXHJcbiAgICBsaW5lTnVtYmVyRGVjb3JhdGlvbnMsXHJcbiAgICBtYXhFZGl0b3JSb3dzLFxyXG4gICAgc2V0TWF4RWRpdG9yUm93cyxcclxuICB9KTtcclxuICAvLyBjb2RlIGFuYWx5c2lzIChweWxpbnQpXHJcbiAgdXNlTW9uYWNvRWRpdG9yQ29kZUFuYWx5c2lzRWZmZWN0KHtcclxuICAgIG1vbmFjb1JlZixcclxuICAgIGVkaXRvclJlZixcclxuICAgIG1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgfSk7XHJcblxyXG4gIC8vIENvZGUgZm9ybWF0IChibGFjaylcclxuICB1c2VNb25hY29FZGl0b3JDb2RlRm9ybWF0RWZmZWN0KHtcclxuICAgIGVkaXRvclJlZixcclxuICAgIG1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgICBzZXRNb25hY29FZGl0b3JTb3VyY2VDb2RlLFxyXG4gICAgc2V0VXBkYXRlR2x5cGhzLFxyXG4gIH0pO1xyXG5cclxuICAvLyBFZGl0b3IgZnVuY3NcclxuICBjb25zdCBoYW5kbGVFZGl0b3JXaWxsTW91bnQgPSAoZWRpdG9yLCBtb25hY28pID0+IHt9O1xyXG5cclxuICAvLyBUcmlnZ2VyIGZvcm1hdHRpbmcgb24gZG9jdW1lbnQgbG9hZFxyXG4gIGNvbnN0IGhhbmRsZUVkaXRvckRpZE1vdW50ID0gYXN5bmMgKGVkaXRvciwgbW9uYWNvKSA9PiB7XHJcbiAgICAvLyBzdG9yZSBgdXNlUmVmYFxyXG4gICAgbW9uYWNvUmVmLmN1cnJlbnQgPSBtb25hY287XHJcbiAgICBlZGl0b3JSZWYuY3VycmVudCA9IGVkaXRvcjtcclxuICAgIC8vIEdseXBocyByZWZcclxuICAgIGxpbmVOdW1iZXJEZWNvcmF0aW9uUmVmLmN1cnJlbnQgPSBlZGl0b3IuY3JlYXRlRGVjb3JhdGlvbnNDb2xsZWN0aW9uKFtdKTtcclxuXHJcbiAgICAvLyB1cGRhdGUgbWF4RWRpdG9yIFJvd3NcclxuICAgIHNldE1heEVkaXRvclJvd3MoZWRpdG9yUmVmLmN1cnJlbnQuZ2V0TW9kZWwoKS5nZXRMaW5lQ291bnQoKSk7XHJcblxyXG4gICAgLy8gZm9udHNpemUvem9vbSAoY3RybCt3aGVlbClcclxuICAgIG1vbmFjb0VkaXRvclNjcm9sbCh7IGVkaXRvciB9KTtcclxuXHJcbiAgICAvLyBlZGl0b3Igc25pcHBldHNcclxuICAgIG1vbmFjb0VkaXRvclNuaXBwZXQoeyBtb25hY28gfSk7XHJcblxyXG4gICAgLy8gR2x5cGhzXHJcbiAgICBtb25hY29FZGl0b3JHbHlwaCh7IG1vbmFjbywgZWRpdG9yLCBzZXRMaW5lTnVtYmVyIH0pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGxcIj5cclxuICAgICAge2lzTG9hZGluZyA/IChcclxuICAgICAgICA8TW9uYWNvRWRpdG9yTG9hZGVyIHRoZW1lPXttb25hY29FZGl0b3JUaGVtZX0gLz5cclxuICAgICAgKSA6IChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgPE1vbmFjb0VkaXRvckluZm9cclxuICAgICAgICAgICAgZWRpdG9yU2V0dGluZ3M9e2VkaXRvclNldHRpbmdzfVxyXG4gICAgICAgICAgICBkaXNwYXRjaD17ZGlzcGF0Y2h9XHJcbiAgICAgICAgICAgIGVkaXRvclJlZj17ZWRpdG9yUmVmfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxFZGl0b3JcclxuICAgICAgICAgICAgaGVpZ2h0PVwiMTAwJVwiXHJcbiAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXHJcbiAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZT1cInB5dGhvblwiXHJcbiAgICAgICAgICAgIHRoZW1lPXttb25hY29FZGl0b3JUaGVtZX1cclxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXttb25hY29FZGl0b3JTb3VyY2VDb2RlfVxyXG4gICAgICAgICAgICB2YWx1ZT17bW9uYWNvRWRpdG9yU291cmNlQ29kZX1cclxuICAgICAgICAgICAgb25DaGFuZ2U9eyhjb2RlKSA9PiBoYW5kbGVNb25hY29FZGl0b3JDb2RlQ2hhbmdlKGNvZGUpfVxyXG4gICAgICAgICAgICBiZWZvcmVNb3VudD17aGFuZGxlRWRpdG9yV2lsbE1vdW50fVxyXG4gICAgICAgICAgICBvbk1vdW50PXtoYW5kbGVFZGl0b3JEaWRNb3VudH1cclxuICAgICAgICAgICAgLy8gRWRpdG9yIE9wdGlvbnNcclxuICAgICAgICAgICAgb3B0aW9ucz17ZWRpdG9yT3B0aW9uc31cclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9yO1xyXG5cclxuTW9uYWNvRWRpdG9yLnByb3RvdHlwZSA9IHtcclxuICBzdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxyXG4gIGRpc3BhdGNoOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxyXG4gIG1vbmFjb0VkaXRvclNvdXJjZUNvZGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcclxuICBzZXRNb25hY29FZGl0b3JTb3VyY2VDb2RlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxyXG4gIGhhbmRsZU1vbmFjb0VkaXRvckNvZGVDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXHJcbn07XHJcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuXHJcbi8vIG1vbmFjbyBlZGl0b3IgbG9hZGVyXHJcbmV4cG9ydCBjb25zdCB0aGVtZV9jb2xvcnMgPSB7XHJcbiAgdnM6IHtcclxuICAgIGJnOiBcIiNmZmZcIixcclxuICAgIHRleHQ6IFwiIzMzM1wiLFxyXG4gICAgbGluZTogXCIjY2NjXCIsXHJcbiAgfSxcclxuICB2c19kYXJrOiB7XHJcbiAgICBiZzogXCIjMUUxRTFFXCIsIC8vcmdiKDMwLDMwLDMwKVxyXG4gICAgdGV4dDogXCIjZmVmZWZlXCIsXHJcbiAgICBsaW5lOiBcIiMxMTFcIixcclxuICB9LFxyXG4gIGhjX2JsYWNrOiB7XHJcbiAgICBiZzogXCIjMDAwXCIsXHJcbiAgICB0ZXh0OiBcIiNmZmZcIixcclxuICAgIGxpbmU6IFwiIzFFMUUxRVwiLFxyXG4gIH0sXHJcbn07XHJcblxyXG5jb25zdCBsaW5lVGhlbWUgPSBbXHJcbiAge1xyXG4gICAgd2lkdGg6IGAxNSVgLFxyXG4gICAgaGVpZ2h0OiBgMTZweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGBgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGAwcHhgLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2lkdGg6IGAyMCVgLFxyXG4gICAgaGVpZ2h0OiBgMTZweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGBgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGAwcHhgLFxyXG4gIH0sXHJcblxyXG4gIHtcclxuICAgIHdpZHRoOiBgMCVgLFxyXG4gICAgaGVpZ2h0OiBgMCVgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgMTZweGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYDBweGAsXHJcbiAgfSxcclxuICB7XHJcbiAgICB3aWR0aDogYDEyJWAsXHJcbiAgICBoZWlnaHQ6IGAxMnB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYDBweGAsXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2lkdGg6IGAyNCVgLFxyXG4gICAgaGVpZ2h0OiBgMTRweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGBgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGA0MHB4YCxcclxuICB9LFxyXG5cclxuICB7XHJcbiAgICB3aWR0aDogYDMwJWAsXHJcbiAgICBoZWlnaHQ6IGAxNHB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYDEycHhgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGA0MHB4YCxcclxuICB9LFxyXG5cclxuICB7XHJcbiAgICB3aWR0aDogYDEzJWAsXHJcbiAgICBoZWlnaHQ6IGAxNHB4YCxcclxuICAgIG1hcmdpbkJvdHRvbTogYGAsXHJcbiAgICBsaW5lTWFyaW5nTGVmdDogYDQwcHhgLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2lkdGg6IGAwJWAsXHJcbiAgICBoZWlnaHQ6IGAwcHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgYCxcclxuICB9LFxyXG4gIHtcclxuICAgIHdpZHRoOiBgNTAlYCxcclxuICAgIGhlaWdodDogYDEycHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgNDBweGAsXHJcbiAgfSxcclxuICB7XHJcbiAgICB3aWR0aDogYDAlYCxcclxuICAgIGhlaWdodDogYDBweGAsXHJcbiAgICBtYXJnaW5Cb3R0b206IGBgLFxyXG4gICAgbGluZU1hcmluZ0xlZnQ6IGBgLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2lkdGg6IGAwJWAsXHJcbiAgICBoZWlnaHQ6IGAwcHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgYCxcclxuICB9LFxyXG4gIHtcclxuICAgIHdpZHRoOiBgMjAlYCxcclxuICAgIGhlaWdodDogYDEwcHhgLFxyXG4gICAgbWFyZ2luQm90dG9tOiBgYCxcclxuICAgIGxpbmVNYXJpbmdMZWZ0OiBgYCxcclxuICB9LFxyXG5dO1xyXG5cclxuY29uc3QgTW9uYWNvRWRpdG9yTG9hZGVyID0gKHsgdGhlbWUgfSkgPT4ge1xyXG4gIGNvbnN0IFtiYWNrZ3JvdW5kLCBzZXRCYWNrZ3JvdW5kXSA9IHVzZVN0YXRlKG51bGwpO1xyXG4gIGNvbnN0IFtsaW5lQmFja2dyb3VuZCwgc2V0TGluZUJhY2tncm91bmRdID0gdXNlU3RhdGUobnVsbCk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCB0ID0gdGhlbWVfY29sb3JzW3RoZW1lLnNwbGl0KFwiLVwiKS5qb2luKFwiX1wiKV07XHJcbiAgICBzZXRCYWNrZ3JvdW5kKGAke3QuYmd9YCk7XHJcbiAgICBzZXRMaW5lQmFja2dyb3VuZChgJHt0LmxpbmV9YCk7XHJcbiAgfSwgW3RoZW1lXSk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3NOYW1lPXtgdy1mdWxsIGgtZnVsbCBweC00IHB5LTIgc2VsZWN0LW5vbmVgfVxyXG4gICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGAke2JhY2tncm91bmR9YCB9fVxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCB4cC00IGFuaW1hdGUtcHVsc2Ugdy1mdWxsIGgtZnVsbCBgfVxyXG4gICAgICA+XHJcbiAgICAgICAge2xpbmVUaGVtZS5tYXAoKGxpbmUsIGkpID0+IChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBnYXAtNCAgdy1mdWxsIGgtWzIwcHhdXCJcclxuICAgICAgICAgICAga2V5PXtpfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YHRleHQtYmFzZWB9XHJcbiAgICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6IGAke2xpbmVCYWNrZ3JvdW5kfWAgfX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtpICsgMX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgdy0yLzMgaC0zIHJvdW5kZWQtZnVsbCBgfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGAke2xpbmVCYWNrZ3JvdW5kfWAsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogYCR7bGluZS53aWR0aH1gLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBgMTBweGAsXHJcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IGAke2xpbmUubWFyZ2luQm90dG9tfWAsXHJcbiAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBgJHtsaW5lLmxpbmVNYXJpbmdMZWZ0fWAsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1vbmFjb0VkaXRvckxvYWRlcjtcclxuXHJcbk1vbmFjb0VkaXRvckxvYWRlci5wcm90b3R5cGUgPSB7XHJcbiAgdGhlbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IHJlc2l6ZUxpc3QgPSBbXCJtaW5cIiwgXCJtYXhcIl07XHJcbmV4cG9ydCBjb25zdCBtb25hY29FZGl0b3JUaGVtZUxpc3QgPSBbXCJ2cy1kYXJrXCJdO1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdEVkaXRvclNvdXJjZUNvZGUgPSBgaW1wb3J0IFdlYkdVSVxyXG5pbXBvcnQgSEFMXHJcbmltcG9ydCBGcmVxdWVuY3lcclxuIyBFbnRlciBzZXF1ZW50aWFsIGNvZGUhXHJcblxyXG53aGlsZSBUcnVlOlxyXG4gICAgIyBFbnRlciBpdGVyYXRpdmUgY29kZSFcclxuICAgIEZyZXF1ZW5jeS50aWNrKClcclxuXHJcbmA7XHJcblxyXG4vLyBLbm93IGFib3V0IHB5bGludCBFcnJvcnMgd2l0aCB0eXBlXHJcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2NvZGV6ZXJyby9mN2Y2OTY3MDJlZTdlYTEyNzgyZDlhZjNmOWJiNGY0Y1xyXG4vLyBweWxpbnQgZGlzYWJsZSBlcnJvclxyXG5leHBvcnQgY29uc3QgcHlsaW50X2Vycm9yID0gW1wiRTA0MDFcIiwgXCJFMTEwMVwiXTtcclxuZXhwb3J0IGNvbnN0IHB5bGludF93YXJuaW5nID0gW1wiVzA2MTFcIl07XHJcbmV4cG9ydCBjb25zdCBweWxpbnRfY29udmVudGlvbiA9IFtcIkMwMTE0XCIsIFwiQzAzMDNcIiwgXCJDMDMwNFwiLCBcIkMwMzA1XCIsIFwiQzA0MTFcIl07XHJcbmV4cG9ydCBjb25zdCBweWxpbnRfcmVmYWN0b3IgPSBbXTtcclxuZXhwb3J0IGNvbnN0IHB5bGludF9mYXRhbCA9IFtdOyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBNb25hY29FZGl0b3JJbmZvQnV0dG9ucyBmcm9tIFwiLi9Nb25hY29FZGl0b3JJbmZvQnV0dG9uc1wiO1xyXG5pbXBvcnQgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIgZnJvbSBcIi4vTW9uYWNvRWRpdG9ySW5mb1NpZGViYXJcIjtcclxuaW1wb3J0IE1vbmFjb0VkaXRvckluZm9EZXRhaWxzIGZyb20gXCIuL01vbmFjb0VkaXRvckluZm9EZXRhaWxzXCI7XHJcblxyXG5jb25zdCBNb25hY29FZGl0b3JJbmZvID0gKHsgZWRpdG9yU2V0dGluZ3MsIGRpc3BhdGNoLCBlZGl0b3JSZWYgfSkgPT4ge1xyXG4gIGNvbnN0IHsgaXNNb2RhbE9wZW4sIGlzQ29kZUZvcm1hdEVuYWJsZSwgaXNab29taW5nRW5hYmxlLCBtb2RhbFNjcmVlblN0YXRlIH0gPVxyXG4gICAgZWRpdG9yU2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0IGN0cmxTRXZlbnQgPSBuZXcgS2V5Ym9hcmRFdmVudChcImtleWRvd25cIiwge1xyXG4gICAga2V5OiBcInNcIixcclxuICAgIGN0cmxLZXk6IHRydWUsXHJcbiAgICBidWJibGVzOiB0cnVlLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBoYW5kbGVGb3JtYXRDb2RlID0gKCkgPT4ge1xyXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQuZ2V0RG9tTm9kZSgpLmRpc3BhdGNoRXZlbnQoY3RybFNFdmVudCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlRm9udFpvb20gPSAoem9vbSkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEZvbnRTaXplID0gZWRpdG9yUmVmLmN1cnJlbnQuZ2V0T3B0aW9uKFxyXG4gICAgICBtb25hY28uZWRpdG9yLkVkaXRvck9wdGlvbi5mb250U2l6ZVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBmb250IHNpemUgYmV0d2VlbiAxMCBhbmQgMTAwXHJcbiAgICBpZiAoem9vbSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50LnVwZGF0ZU9wdGlvbnMoe1xyXG4gICAgICAgIGZvbnRTaXplOiBNYXRoLm1pbigxMDAsIGN1cnJlbnRGb250U2l6ZSArIDEpLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50LnVwZGF0ZU9wdGlvbnMoe1xyXG4gICAgICAgIGZvbnRTaXplOiBNYXRoLm1heCgxMCwgY3VycmVudEZvbnRTaXplIC0gMSksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8PlxyXG4gICAgICB7aXNNb2RhbE9wZW4gJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICB7LyogYmx1ciBsYXllciAqL31cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBhYnNvbHV0ZSBsZWZ0LTAgcmlnaHQtMCB6LVs5OV0gXCJcclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgMC4wMilcIixcclxuICAgICAgICAgICAgICBmaWx0ZXI6IFwiYmx1cigycHgpXCIsXHJcbiAgICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXI6IFwiYmx1cigycHgpXCIsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICB7LyogbW9kYWwgKi99XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggYWJzb2x1dGUgdy1bNDAwcHhdIGgtWzI1MHB4XSBsZWZ0LVs1MCVdIHRvcC1bNTAlXSBiZy1bIzJEMkQyRF0gIHJvdW5kZWQteGwgLXRyYW5zbGF0ZS14LVs1MCVdIC10cmFuc2xhdGUteS1bNTAlXSB6LVsxMDBdXCJcclxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyOiBcIjFweCBzb2xpZCAjNDY0NjQ2XCIgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgey8qIHNpemViYXIgKi99XHJcbiAgICAgICAgICAgIDxNb25hY29FZGl0b3JJbmZvU2lkZWJhclxyXG4gICAgICAgICAgICAgIGRpc3BhdGNoPXtkaXNwYXRjaH1cclxuICAgICAgICAgICAgICBlZGl0b3JTZXR0aW5ncz17ZWRpdG9yU2V0dGluZ3N9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIHsvKiBtYWluICovfVxyXG4gICAgICAgICAgICA8TW9uYWNvRWRpdG9ySW5mb0RldGFpbHNcclxuICAgICAgICAgICAgICBlZGl0b3JTZXR0aW5ncz17ZWRpdG9yU2V0dGluZ3N9XHJcbiAgICAgICAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBidXR0b25zICovfVxyXG4gICAgICA8TW9uYWNvRWRpdG9ySW5mb0J1dHRvbnNcclxuICAgICAgICBlZGl0b3JTZXR0aW5ncz17ZWRpdG9yU2V0dGluZ3N9XHJcbiAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxyXG4gICAgICAgIGhhbmRsZUZvbnRab29tPXtoYW5kbGVGb250Wm9vbX1cclxuICAgICAgICBoYW5kbGVGb3JtYXRDb2RlPXtoYW5kbGVGb3JtYXRDb2RlfVxyXG4gICAgICAvPlxyXG4gICAgPC8+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1vbmFjb0VkaXRvckluZm87XHJcblxyXG4vKlxyXG5cclxuXHJcblxyXG5iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAyKTtcclxuZmlsdGVyOiBibHVyKDNweCk7XHJcbmJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xyXG5cclxuXHJcbiovXHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQWxpZ25JY29uLCBJbmZvSWNvbiwgWm9vbUluSWNvbiwgWm9vbU91dEljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcclxuXHJcbmNvbnN0IE1vbmFjb0VkaXRvckluZm9CdXR0b25zID0gKHtcclxuICBlZGl0b3JTZXR0aW5ncyxcclxuICBkaXNwYXRjaCxcclxuICBoYW5kbGVGb250Wm9vbSxcclxuICBoYW5kbGVGb3JtYXRDb2RlLFxyXG59KSA9PiB7XHJcbiAgY29uc3QgeyBpc01vZGFsT3BlbiwgaXNDb2RlRm9ybWF0RW5hYmxlLCBpc1pvb21pbmdFbmFibGUgfSA9IGVkaXRvclNldHRpbmdzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIGJvdHRvbS0zIHJpZ2h0LTMgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0xIGgtOSBiZy1bIzJEMkQyRF0gcm91bmRlZC1mdWxsIGJvcmRlci1bIzQ2NDY0Nl0gYm9yZGVyLVsxcHhdICR7XHJcbiAgICAgICAgaXNDb2RlRm9ybWF0RW5hYmxlIHx8IGlzWm9vbWluZ0VuYWJsZSA/IGBweC1bNHB4XWAgOiBgcHgtWzJweF0gdy1bMzZweF1gXHJcbiAgICAgIH0gZHVyYXRpb24tMzAwICBzZWxlY3Qtbm9uZWB9XHJcbiAgICAgIHN0eWxlPXt7ekluZGV4OiBcIjEwXCJ9fVxyXG4gICAgPlxyXG4gICAgICB7LyogZm9udCBzaXplICovfVxyXG4gICAgICB7aXNab29taW5nRW5hYmxlICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyICBoLTcgcm91bmRlZC1mdWxsIGN1cnNvci1wb2ludGVyIGdhcC0wLjVcIj5cclxuICAgICAgICAgICAgey8qIHpvb20gaW4gKi99XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciAgdy1bMzBweF0gaC03IGJnLVsjNDc0NzQ3XSByb3VuZGVkLXRsLWZ1bGwgcm91bmRlZC1ibC1mdWxsIGR1cmF0aW9uLTEwMCBcIlxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUZvbnRab29tKFwidXBcIil9XHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJab29tIEluXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxab29tSW5JY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHsvKiB6b29tIG91dCAqL31cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyICB3LVszMHB4XSBoLTcgYmctWyM0NzQ3NDddIHJvdW5kZWQtdHItZnVsbCByb3VuZGVkLWJyLWZ1bGwgZHVyYXRpb24tMTAwIFwiXHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRm9udFpvb20oXCJkb3duXCIpfVxyXG4gICAgICAgICAgICAgIHRpdGxlPVwiWm9vbSBPdXRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFpvb21PdXRJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IHctWzJweF0gYmctWyM0NjQ2NDZdXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBjb2RlIGZvcm1hdCBpY29uICovfVxyXG4gICAgICB7aXNDb2RlRm9ybWF0RW5hYmxlICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHctNyBoLTcgcm91bmRlZC1mdWxsIGhvdmVyOmJnLVsjNDc0NzQ3XSBkdXJhdGlvbi0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGb3JtYXRDb2RlKCl9XHJcbiAgICAgICAgICAgIHRpdGxlPVwiRm9ybWF0IENvZGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QWxpZ25JY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IHctWzJweF0gYmctWyM0NjQ2NDZdXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBxdWVzdGlvbiBtYXJrICovfVxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy03IGgtNyByb3VuZGVkLWZ1bGwgaG92ZXI6YmctWyM0NzQ3NDddIGR1cmF0aW9uLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjaGFuZ2VTZXR0aW5nc01vZGFsU3RhdGVcIixcclxuICAgICAgICAgICAgcGF5bG9hZDogeyBpc01vZGFsT3BlbjogIWlzTW9kYWxPcGVuIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aXRsZT1cIk1vcmUgSW5mb1wiXHJcbiAgICAgID5cclxuICAgICAgICA8SW5mb0ljb24gY3NzQ2xhc3M9XCJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb25hY29FZGl0b3JJbmZvQnV0dG9ucztcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBDbG9zZUljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcclxuXHJcbmNvbnN0IHNob3J0Y3V0c0RldGFpbHMgPSBbXHJcbiAgeyB0aXRsZTogXCJDb2RlIEZvcm1hdFwiLCBrZXlzOiBbXCJjdHJsXCIsIFwic1wiXSB9LFxyXG4gIHsgdGl0bGU6IFwiRm9udCBTaXplXCIsIGtleXM6IFtcImN0cmxcIiwgXCJ3aGVlbFwiXSB9LFxyXG5dO1xyXG5cclxuY29uc3Qgd2lkZ2V0c0RldGFpbHMgPSBbXHJcbiAgeyB0aXRsZTogXCJGb250IFNpemVcIiwgaWQ6IFwiaXNab29taW5nRW5hYmxlXCIgfSxcclxuICB7IHRpdGxlOiBcIkNvZGUgRm9ybWF0XCIsIGlkOiBcImlzQ29kZUZvcm1hdEVuYWJsZVwiIH0sXHJcbl07XHJcblxyXG5jb25zdCBNb25hY29FZGl0b3JJbmZvRGV0YWlscyA9ICh7IGVkaXRvclNldHRpbmdzLCBkaXNwYXRjaCB9KSA9PiB7XHJcbiAgY29uc3QgeyBpc01vZGFsT3BlbiwgbW9kYWxTY3JlZW5TdGF0ZSwgaXNDb2RlRm9ybWF0RW5hYmxlLCBpc1pvb21pbmdFbmFibGUgfSA9XHJcbiAgICBlZGl0b3JTZXR0aW5ncztcclxuXHJcbiAgY29uc3QgaGFuZ2xlQ2hhbmdlV2lkZ2V0cyA9IChlKSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgZGlzcGF0Y2goeyB0eXBlOiB2YWx1ZSB9KTtcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggIGZsZXgtY29sIHctW2NhbGMoNDAwcHgtMTIwcHgpXSBoLWZ1bGwgc2VsZWN0LW5vbmVcIj5cclxuICAgICAgey8qIGNsb3NlIGJ1dHRvbiAqL31cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xIHJpZ2h0LTEgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy03IGgtNyBob3ZlcjpiZy1bIzM5MzkzOV0gcm91bmRlZC1mdWxsIGR1cmF0aW9uLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjaGFuZ2VTZXR0aW5nc01vZGFsU3RhdGVcIixcclxuICAgICAgICAgICAgcGF5bG9hZDogeyBpc01vZGFsT3BlbjogIWlzTW9kYWxPcGVuIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxDbG9zZUljb24gY3NzQ2xhc3M9XCJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIEJPRFkgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy1mdWxsIGgtZnVsbCBwdC0xMCBpdGVtcy1jZW50ZXIgcHgtNmB9PlxyXG4gICAgICAgIHsvKiBzaG9ydGN1dHMgKi99XHJcbiAgICAgICAge21vZGFsU2NyZWVuU3RhdGUgPT09IFwic2hvcnRjdXRzXCIgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtNVwiPlxyXG4gICAgICAgICAgICB7LyogICovfVxyXG4gICAgICAgICAgICB7c2hvcnRjdXRzRGV0YWlscy5tYXAoKHNob3J0Y3V0LCBpKSA9PiAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIHRleHQtc20gdGV4dC1bI2ZjZmNmY11cIlxyXG4gICAgICAgICAgICAgICAga2V5PXtpfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+e3Nob3J0Y3V0LnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZy1bIzM4MzgzOF0gcHgtMiB4cHktWzFweF0gcm91bmRlZC1tZCBib3JkZXItWzFweF0gYm9yZGVyLVsjNjM2MzYzXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG9ydGN1dC5rZXlzWzBdfVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICtcclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmctWyMzODM4MzhdIHB4LTIgeHB5LVsxcHhdIHJvdW5kZWQtbWQgYm9yZGVyLVsxcHhdIGJvcmRlci1bIzYzNjM2M11cIj5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvcnRjdXQua2V5c1sxXX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7Lyogd2lkZ2V0cyAqL31cclxuICAgICAgICB7bW9kYWxTY3JlZW5TdGF0ZSA9PT0gXCJ3aWRnZXRzXCIgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gIGdhcC01XCI+XHJcbiAgICAgICAgICAgIHt3aWRnZXRzRGV0YWlscy5tYXAoKHdpZGdldCwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIHRleHQtWyNmY2ZjZmNdXCJcclxuICAgICAgICAgICAgICAgIGtleT17aX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIlwiPnt3aWRnZXQudGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmlkID09PSBcImlzQ29kZUZvcm1hdEVuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYGlzQ29kZUZvcm1hdEVuYWJsZWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgaXNab29taW5nRW5hYmxlYFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzci1vbmx5IHBlZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmlkID09PSBcImlzQ29kZUZvcm1hdEVuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXNDb2RlRm9ybWF0RW5hYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNab29taW5nRW5hYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZ2xlQ2hhbmdlV2lkZ2V0cyhlKX1cclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LTkgaC01IGJnLVsjMzgzODM4XSByb3VuZGVkLWZ1bGwgcGVlciBwZWVyLWZvY3VzOnJpbmctMSBwZWVyLWZvY3VzOnJpbmctWyM2MzYzNjNdIHBlZXItY2hlY2tlZDphZnRlcjp0cmFuc2xhdGUteC1mdWxsIHJ0bDpwZWVyLWNoZWNrZWQ6YWZ0ZXI6LXRyYW5zbGF0ZS14LWZ1bGwgcGVlci1jaGVja2VkOmFmdGVyOmJvcmRlci13aGl0ZSBhZnRlcjpjb250ZW50LVsnJ10gYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6dG9wLTAuNSBhZnRlcjpzdGFydC1bMnB4XSBhZnRlcjpiZy13aGl0ZSBhZnRlcjpib3JkZXItZ3JheS0zMDAgYWZ0ZXI6Ym9yZGVyIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpoLTQgYWZ0ZXI6dy00IGFmdGVyOnRyYW5zaXRpb24tYWxsIGRhcms6Ym9yZGVyLWdyYXktNjAwIHBlZXItY2hlY2tlZDpiZy1bI0ZGQTcyNl1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9ySW5mb0RldGFpbHM7XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgS2V5Ym9hcmRJY29uLCBXaWRnZXRzSWNvbiB9IGZyb20gXCIuLi9pY29uc1wiO1xyXG5cclxuY29uc3QgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIgPSAoeyBlZGl0b3JTZXR0aW5ncywgZGlzcGF0Y2ggfSkgPT4ge1xyXG4gIGNvbnN0IHsgbW9kYWxTY3JlZW5TdGF0ZSB9ID0gZWRpdG9yU2V0dGluZ3M7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBwdC0xMCBnYXAtMiB3LVsxMjBweF0gaC1mdWxsIGJnLVsjMzgzODM4XSByb3VuZGVkLXhsICBzZWxlY3Qtbm9uZVwiPlxyXG4gICAgICB7Lyogc2hvcnRjdXRzICovfVxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgIGdhcC0xIHctWzEwMHB4XSBoLTcgcm91bmRlZC1mdWxsIGN1cnNvci1wb2ludGVyICR7XHJcbiAgICAgICAgICBtb2RhbFNjcmVlblN0YXRlID09PSBcInNob3J0Y3V0c1wiID8gYGJnLVsjRkZBNzI2XWAgOiBgYFxyXG4gICAgICAgIH1gfVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiY2hhbmdlTW9kYWxTY3JlZW5TdGF0ZVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7IHNjcmVlbjogXCJzaG9ydGN1dHNcIiB9LFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8S2V5Ym9hcmRJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsjZmNmY2ZjXSB0ZXh0LXNtXCI+c2hvcnRjdXRzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIHdpZGdldHMgKi99XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciAgZ2FwLTEgdy1bMTAwcHhdIGgtNyByb3VuZGVkLWZ1bGwgY3Vyc29yLXBvaW50ZXIgJHtcclxuICAgICAgICAgIG1vZGFsU2NyZWVuU3RhdGUgPT09IFwid2lkZ2V0c1wiID8gYGJnLVsjRkZBNzI2XWAgOiBgYFxyXG4gICAgICAgIH1gfVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiY2hhbmdlTW9kYWxTY3JlZW5TdGF0ZVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7IHNjcmVlbjogXCJ3aWRnZXRzXCIgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFdpZGdldHNJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsjZmNmY2ZjXSB0ZXh0LXNtXCI+d2lkZ2V0czwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXI7XHJcbiIsImltcG9ydCB7XHJcbiAgcHlsaW50X2Vycm9yLFxyXG4gIHB5bGludF93YXJuaW5nLFxyXG4gIHB5bGludF9jb252ZW50aW9uLFxyXG4gIHB5bGludF9yZWZhY3RvcixcclxuICBweWxpbnRfZmF0YWwsXHJcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xyXG5cclxuLy8gcG9zdCBhbmQgcmVzcG9uc2UgY29kZSBmb3JtYXRcclxuZXhwb3J0IGNvbnN0IGZldGNoRm9ybWF0Q29kZSA9IGFzeW5jICh7XHJcbiAgYmFzZVVybCxcclxuICBtb25hY29FZGl0b3JTb3VyY2VDb2RlLFxyXG4gIHNldE1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbn0pID0+IHtcclxuICB0cnkge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS9hcGkvdjEvZm9ybWF0L2AsIHtcclxuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgIFwiWC1DU1JGVG9rZW5cIjogY29udGV4dC5jc3JmLFxyXG4gICAgICB9LFxyXG5cclxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgIGNvZGU6IG1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgICAgIH0pLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcclxuICAgIGlmIChyZXNwb25zZS5vaykge1xyXG4gICAgICBzZXRNb25hY29FZGl0b3JTb3VyY2VDb2RlKGRhdGEuZm9ybWF0dGVkX2NvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGZvcm1hdHRpbmcgY29kZTpcIiwgZGF0YS5lcnJvcik7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgXCIsIGVycm9yKTtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TWFya2VyU2V2ZXJpdHkgPSAoeyB0eXBlLCBtb25hY28gfSkgPT4ge1xyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSBcInJlZmFjdG9yXCI6XHJcbiAgICBjYXNlIFwiY29udmVudGlvblwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLk1hcmtlclNldmVyaXR5LkluZm87XHJcbiAgICBjYXNlIFwiZXJyb3JcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5NYXJrZXJTZXZlcml0eS5FcnJvcjtcclxuICAgIGNhc2UgXCJ3YXJuaW5nXCI6XHJcbiAgICBjYXNlIFwiZmF0YWxcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5NYXJrZXJTZXZlcml0eS5XYXJuaW5nO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgcmV0dXJuIG1vbmFjby5NYXJrZXJTZXZlcml0eS5FcnJvcjtcclxuICB9XHJcbn07XHJcblxyXG4vLyBsb2NhbCBzdG9yYWdlIGRhdGFcclxuZXhwb3J0IGNvbnN0IHNldEVkaXRvclNldHRpbmdzV2lkZ2V0c0RhdGEgPSAoZGF0YSkgPT4ge1xyXG4gIGNvbnN0IGRhdGFfc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJlZGl0b3JTZXR0aW5nc1dpZGdldHNcIiwgZGF0YV9zdHJpbmcpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldEVkaXRvclNldHRpbmdzV2lkZ2V0c0RhdGEgPSAoKSA9PiB7XHJcbiAgY29uc3QgZGF0YSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiZWRpdG9yU2V0dGluZ3NXaWRnZXRzXCIpO1xyXG5cclxuICBpZiAoZGF0YSkgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgcmV0dXJuIG51bGw7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCBtb25hY29FZGl0b3JHbHlwaCA9ICh7IG1vbmFjbywgZWRpdG9yLCBzZXRMaW5lTnVtYmVyIH0pID0+IHtcclxuICBlZGl0b3Iub25Nb3VzZURvd24oKGV2ZW50KSA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWNrIGhhcHBlbmVkIGluIHRoZSBnbHlwaCBtYXJnaW5cclxuICAgIGlmIChcclxuICAgICAgdGFyZ2V0ICYmXHJcbiAgICAgIHRhcmdldC50eXBlID09PSBtb25hY28uZWRpdG9yLk1vdXNlVGFyZ2V0VHlwZS5HVVRURVJfR0xZUEhfTUFSR0lOXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgbGluZU51bWJlciA9IHRhcmdldC5wb3NpdGlvbi5saW5lTnVtYmVyO1xyXG5cclxuICAgICAgc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKTtcclxuICAgIH1cclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZW5kZXJHbHlwaHMgPSAoXHJcbiAgbGluZU51bWJlckRlY29yYXRpb25SZWYsXHJcbiAgYWxsTGluZU51bWJlckRlY29yYXRpb25zXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbEdseXBocyA9IFtdO1xyXG4gIGlmICghYWxsTGluZU51bWJlckRlY29yYXRpb25zKSByZXR1cm47XHJcblxyXG4gIGFsbExpbmVOdW1iZXJEZWNvcmF0aW9ucy5mb3JFYWNoKChsaW5lLCBpKSA9PiB7XHJcbiAgICBjb25zdCBuZXdEZWNvcmF0aW9uID0ge1xyXG4gICAgICByYW5nZTogbmV3IG1vbmFjby5SYW5nZShsaW5lLCAxLCBsaW5lLCAxKSxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIGdseXBoTWFyZ2luQ2xhc3NOYW1lOiBcImdseXBoLWluZGljYXRvclwiLFxyXG4gICAgICAgIGdseXBoTWFyZ2luSG92ZXJNZXNzYWdlOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYGAsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBhbGxHbHlwaHMucHVzaChuZXdEZWNvcmF0aW9uKTtcclxuICB9KTtcclxuXHJcbiAgLy8gQWRkIHRoZSBuZXcgZGVjb3JhdGlvbiB0byB0aGUgZGVjb3JhdGlvbnMgY29sbGVjdGlvblxyXG4gIGxpbmVOdW1iZXJEZWNvcmF0aW9uUmVmLmN1cnJlbnQuc2V0KGFsbEdseXBocyk7XHJcbn07XHJcblxyXG4vLyBmaWx0ZXIgbGluZSBudW1iZXJcclxuZXhwb3J0IGNvbnN0IGZpbHRlckxpbmVOdW1iZXIgPSAoe1xyXG4gIGxpbmVOdW1iZXJEZWNvcmF0aW9ucyxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG1heEVkaXRvclJvd3MsXHJcbn0pID0+IHtcclxuICBsZXQgYWxsTGluZU51bWJlckRlY29yYXRpb25zO1xyXG5cclxuICAvLyBGaWx0ZXIgYWxsIG5vIGV4aXN0aW5nIHJvd3NcclxuICBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMgPSBsaW5lTnVtYmVyRGVjb3JhdGlvbnMuZmlsdGVyKFxyXG4gICAgKGxpbmUpID0+IGxpbmUgPD0gbWF4RWRpdG9yUm93c1xyXG4gICk7XHJcblxyXG4gIGlmIChsaW5lTnVtYmVyID09PSAtMSkgcmV0dXJuIGFsbExpbmVOdW1iZXJEZWNvcmF0aW9ucztcclxuXHJcbiAgLy8gY2hlY2sgbGluZSBudW1iZXIgZXhpc3RpbmdcclxuICBjb25zdCBsaW5lTnVtYmVyRXhpc3RpbmcgPSBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMuZmluZChcclxuICAgIChsaW5lKSA9PiBsaW5lID09PSBsaW5lTnVtYmVyXHJcbiAgKTtcclxuXHJcbiAgLy8gY2hlY2sgaWYgbGluZU51bWJlciBhbHJlYWR5IGV4aXN0LCB0aGVuIHJlbW92ZSBmcm9tIGxpc3QgYW5kIHJlbmRlciBnbHlwaHNcclxuICAvLyBvdGhlcndpc2UgYWRkIHRvIGxpc3QgYW5kIHJlbmRlciBnbHlwaHNcclxuICBpZiAobGluZU51bWJlckV4aXN0aW5nKSB7XHJcbiAgICBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMgPSBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMuZmlsdGVyKFxyXG4gICAgICAobGluZSkgPT4gbGluZSAhPT0gbGluZU51bWJlclxyXG4gICAgKTtcclxuICB9IGVsc2UgYWxsTGluZU51bWJlckRlY29yYXRpb25zLnB1c2gobGluZU51bWJlcik7XHJcblxyXG4gIHJldHVybiBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnM7XHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCBtb25hY29FZGl0b3JTY3JvbGwgPSAoeyBlZGl0b3IgfSkgPT4ge1xyXG4gIGNvbnN0IGRvbU5vZGUgPSBlZGl0b3IuZ2V0RG9tTm9kZSgpO1xyXG4gIGRvbU5vZGUuYWRkRXZlbnRMaXN0ZW5lcihcIndoZWVsXCIsIChldmVudCkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEZvbnRTaXplID0gZWRpdG9yLmdldE9wdGlvbihcclxuICAgICAgbW9uYWNvLmVkaXRvci5FZGl0b3JPcHRpb24uZm9udFNpemVcclxuICAgICk7XHJcblxyXG4gICAgLy8gZm9udCBzaXplIGJldHdlZW4gMTAgYW5kIDEwMFxyXG4gICAgaWYgKGV2ZW50LmN0cmxLZXkpIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XHJcbiAgICAgICAgZWRpdG9yLnVwZGF0ZU9wdGlvbnMoe1xyXG4gICAgICAgICAgZm9udFNpemU6IE1hdGgubWluKDEwMCwgY3VycmVudEZvbnRTaXplICsgMSksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZWRpdG9yLnVwZGF0ZU9wdGlvbnMoe1xyXG4gICAgICAgICAgZm9udFNpemU6IE1hdGgubWF4KDEwLCBjdXJyZW50Rm9udFNpemUgLSAxKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59O1xyXG4iLCJpbXBvcnQgeyBiYXNpY19zbmlwcGV0cywgZ3VpQW5kSGFsQXV0b0NvbXBsZXRlT2JqLCBmcmVxdWVuY3lBdXRvQ29tcGxldGVPYmogfSBmcm9tIFwiLi8uLi9pbmRleFwiO1xyXG5cclxuLy8gTWFpbiBFZGl0b3IgU25pcHBldHNcclxuZXhwb3J0IGNvbnN0IG1vbmFjb0VkaXRvclNuaXBwZXQgPSAoeyBtb25hY28gfSkgPT4ge1xyXG4gIG1vbmFjby5sYW5ndWFnZXMucmVnaXN0ZXIoeyBpZDogXCJweXRob25cIiB9KTtcclxuXHJcbiAgY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZShcImV2ZW50c1wiKTtcclxuXHJcbiAgY29uc3QgYnVzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGxldCBsb2NrID0gdHJ1ZTtcclxuXHJcbiAgLy8gUmVnaXN0ZXIgYSBjb21wbGV0aW9uIGl0ZW0gcHJvdmlkZXIgZm9yIHRoZSBuZXcgbGFuZ3VhZ2VcclxuICBtb25hY28ubGFuZ3VhZ2VzLnJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlcihcInB5dGhvblwiLCB7XHJcbiAgICB0cmlnZ2VyQ2hhcmFjdGVyczogW1wiLlwiLCBcIihcIl0sXHJcbiAgICBwcm92aWRlQ29tcGxldGlvbkl0ZW1zOiBhc3luYyAobW9kZWwsIHBvc2l0aW9uKSA9PiB7XHJcbiAgICAgIGxvY2sgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHdvcmQgPSBtb2RlbC5nZXRXb3JkVW50aWxQb3NpdGlvbihwb3NpdGlvbik7XHJcbiAgICAgIHZhciBwcmV2V29yZCA9IG1vZGVsLmdldFdvcmRVbnRpbFBvc2l0aW9uKHtcclxuICAgICAgICBsaW5lTnVtYmVyOiBwb3NpdGlvbi5saW5lTnVtYmVyLFxyXG4gICAgICAgIGNvbHVtbjogcG9zaXRpb24uY29sdW1uIC0gMSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB2YXIgcmFuZ2UgPSB7XHJcbiAgICAgICAgc3RhcnRMaW5lTnVtYmVyOiBwb3NpdGlvbi5saW5lTnVtYmVyLFxyXG4gICAgICAgIGVuZExpbmVOdW1iZXI6IHBvc2l0aW9uLmxpbmVOdW1iZXIsXHJcbiAgICAgICAgc3RhcnRDb2x1bW46IHdvcmQuc3RhcnRDb2x1bW4sXHJcbiAgICAgICAgZW5kQ29sdW1uOiB3b3JkLmVuZENvbHVtbixcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vIEFkZCBiYXNpYyBzbmlwcGV0cyBvbmx5IGlmIG5vdCBwcmV2V29yZFxyXG4gICAgICBpZiAocHJldldvcmQud29yZCA9PT0gXCJcIikge1xyXG4gICAgICAgIHZhciBzbmlwcGV0cyA9IHNuaXBwZXRzQnVpbGRlclYyKFwiYmFzaWNfc25pcHBldHNcIiwgbW9uYWNvLCByYW5nZSwgXCJcIik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmFyIHNuaXBwZXRzID0gW107XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNuaXBwZXRzIGZvciBIQUwgYW5kIEdVSVxyXG4gICAgICBpZiAocHJldldvcmQud29yZCA9PT0gXCJXZWJHVUlcIiB8fCBwcmV2V29yZC53b3JkID09PSBcIkhBTFwiIHx8IHByZXZXb3JkLndvcmQgPT09IFwiRnJlcXVlbmN5XCIpIHtcclxuICAgICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHNuaXBwZXRzQnVpbGRlclYyKFxyXG4gICAgICAgICAgXCJoYWxfZ3VpXCIsXHJcbiAgICAgICAgICBtb25hY28sXHJcbiAgICAgICAgICByYW5nZSxcclxuICAgICAgICAgIHByZXZXb3JkLndvcmRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICByZXR1cm4geyBzdWdnZXN0aW9ucyB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgUm9ib3RpY3MgQmFja2VuZCBpcyBjb25uZWN0ZWRcclxuICAgICAgLy8gQ2FsbCB0aGUgUkFNIGZvciBhdXRvY29tcGxldGlvblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuY29kZV9hdXRvY29tcGxldGUoe1xyXG4gICAgICAgICAgY29kZTogbW9kZWwuZ2V0VmFsdWUoKSxcclxuICAgICAgICAgIGxpbmU6IHBvc2l0aW9uLmxpbmVOdW1iZXIsXHJcbiAgICAgICAgICBjb2w6IHdvcmQuZW5kQ29sdW1uIC0gMSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gc25pcHBldHM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gbWVzc2FnZS5kYXRhO1xyXG5cclxuICAgICAgICBpZiAoIWRhdGEpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3QgbmV3X2NvbXBsZXRpb25zID0gZGF0YS5jb21wbGV0aW9ucztcclxuXHJcbiAgICAgICAgbmV3X2NvbXBsZXRpb25zLmZvckVhY2goKHNuaXBwZXQpID0+IHtcclxuICAgICAgICAgIHNuaXBwZXRzLnB1c2goe1xyXG4gICAgICAgICAgICBsYWJlbDogc25pcHBldC5sYWJlbCxcclxuICAgICAgICAgICAga2luZDogc25pcHBldEtpbmQoeyBraW5kOiBzbmlwcGV0LnR5cGUsIG1vbmFjbyB9KSxcclxuICAgICAgICAgICAgZGV0YWlsOiBzbmlwcGV0LmRldGFpbCxcclxuICAgICAgICAgICAgZG9jdW1lbnRhdGlvbjogc25pcHBldC5kb2NzdHJpbmcsXHJcbiAgICAgICAgICAgIGluc2VydFRleHQ6IHNuaXBwZXQuY29kZSxcclxuICAgICAgICAgICAgaW5zZXJ0VGV4dFJ1bGVzOlxyXG4gICAgICAgICAgICAgIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgICAgIHJhbmdlOiByYW5nZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgYnVzLmVtaXQoXCJ1bmxvY2tlZFwiKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3VzY3JpYnJlT25jZShcclxuICAgICAgICBbXHJcbiAgICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50c1xyXG4gICAgICAgICAgICAuQ09ERV9BVVRPQ09NUExFVEUsXHJcbiAgICAgICAgXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKGxvY2spIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBidXMub25jZShcInVubG9ja2VkXCIsIHJlc29sdmUpKTtcclxuXHJcbiAgICAgIHJldHVybiB7IHN1Z2dlc3Rpb25zOiBzbmlwcGV0cyB9O1xyXG4gICAgfSxcclxuICB9KTtcclxufTtcclxuXHJcbi8vIFNuaXBwZXRzIEJ1aWxkZXJcclxuZXhwb3J0IGNvbnN0IHNuaXBwZXRLaW5kID0gKHsga2luZCwgbW9uYWNvIH0pID0+IHtcclxuICBzd2l0Y2ggKGtpbmQpIHtcclxuICAgIGNhc2UgXCJ2YXJpYWJsZVwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuVmFyaWFibGU7XHJcbiAgICBjYXNlIFwiY2xhc3NcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkNsYXNzO1xyXG4gICAgY2FzZSBcInBhcmFtXCI6XHJcbiAgICAgIHJldHVybiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5UeXBlUGFyYW1ldGVyO1xyXG4gICAgY2FzZSBcInBhdGhcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkZpbGU7XHJcbiAgICBjYXNlIFwicHJvcGVydHlcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLlByb3BlcnR5O1xyXG4gICAgY2FzZSBcInN0YXRlbWVudFwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuRnVuY3Rpb247XHJcbiAgICBjYXNlIFwiaW5zdGFuY2VcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkNsYXNzO1xyXG4gICAgY2FzZSBcIm1vZHVsZVwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuTW9kdWxlO1xyXG4gICAgY2FzZSBcIm1ldGhvZFwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuTWV0aG9kO1xyXG4gICAgY2FzZSBcInNuaXBwZXRcIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLlNuaXBwZXQ7XHJcbiAgICBjYXNlIFwia2V5d29yZFwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuS2V5d29yZDtcclxuICAgIGNhc2UgXCJmdW5jdGlvblwiOlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuRnVuY3Rpb247XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICByZXR1cm4gbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuVmFyaWFibGU7XHJcbiAgfVxyXG59O1xyXG5cclxuLy8gaGFsICYgZ3VpIGF1dG8gY29tcGxldGVcclxuZXhwb3J0IGNvbnN0IGdldEhhbEd1aU1ldGhvZHMgPSAoaW1wb3J0TmFtZSkgPT4ge1xyXG4gIGNvbnN0IHBhdGhOYW1lID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gIGxldCBleGVyY2lzZU5hbWUgPSBwYXRoTmFtZS5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pO1xyXG4gIGV4ZXJjaXNlTmFtZSA9IGV4ZXJjaXNlTmFtZVtleGVyY2lzZU5hbWUubGVuZ3RoIC0gMV07XHJcbiAgZXhlcmNpc2VOYW1lID0gYF8ke2V4ZXJjaXNlTmFtZX1gO1xyXG5cclxuICAvLyBpZiBubyBvYmplY3QgZm91bmQgYnkgZXhlcmNpc2UgbmFtZVxyXG4gIGlmICghZ3VpQW5kSGFsQXV0b0NvbXBsZXRlT2JqW2V4ZXJjaXNlTmFtZV0pIHtcclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIGlmIChpbXBvcnROYW1lID09PSBcIldlYkdVSVwiKSB7XHJcbiAgICByZXR1cm4gZ3VpQW5kSGFsQXV0b0NvbXBsZXRlT2JqW2V4ZXJjaXNlTmFtZV0ud2ViZ3VpO1xyXG4gIH0gZWxzZSBpZiAoaW1wb3J0TmFtZSA9PT0gXCJIQUxcIikge1xyXG4gICAgcmV0dXJuIGd1aUFuZEhhbEF1dG9Db21wbGV0ZU9ialtleGVyY2lzZU5hbWVdLmhhbDtcclxuICB9IGVsc2UgaWYgKGltcG9ydE5hbWUgPT09IFwiRnJlcXVlbmN5XCIpIHtcclxuICAgIHJldHVybiBmcmVxdWVuY3lBdXRvQ29tcGxldGVPYmo7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gW107XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgc25pcHBldHNCdWlsZGVyVjIgPSAoc25pcHBldE5hbWUsIG1vbmFjbywgcmFuZ2UsIGltcG9ydE5hbWUpID0+IHtcclxuICBjb25zdCBzbmlwcGV0cyA9IFtdO1xyXG4gIGxldCBpbXBvcnRTbmlwcGV0cztcclxuXHJcbiAgLy8gYmFzaWNfc25pcHBldHNcclxuICBpZiAoc25pcHBldE5hbWUgPT09IFwiYmFzaWNfc25pcHBldHNcIikge1xyXG4gICAgaW1wb3J0U25pcHBldHMgPSBiYXNpY19zbmlwcGV0cztcclxuICB9IGVsc2UgaWYgKHNuaXBwZXROYW1lID09PSBcImhhbF9ndWlcIikge1xyXG4gICAgLy8gaGFsX2d1aVxyXG4gICAgaW1wb3J0U25pcHBldHMgPSBnZXRIYWxHdWlNZXRob2RzKGltcG9ydE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFpbXBvcnRTbmlwcGV0cyB8fCAhaW1wb3J0U25pcHBldHMubGVuZ3RoKSByZXR1cm4gW107XHJcblxyXG4gIGltcG9ydFNuaXBwZXRzLmZvckVhY2goKHNuaXBwZXQpID0+IHtcclxuICAgIGlmIChzbmlwcGV0LmxhYmVsICYmIHNuaXBwZXQuY29kZSkge1xyXG4gICAgICBzbmlwcGV0cy5wdXNoKHtcclxuICAgICAgICBsYWJlbDogc25pcHBldC5sYWJlbCxcclxuICAgICAgICBraW5kOiBzbmlwcGV0S2luZCh7IGtpbmQ6IHNuaXBwZXQudHlwZSwgbW9uYWNvIH0pLFxyXG4gICAgICAgIGRldGFpbDogc25pcHBldC5kZXRhaWwsXHJcbiAgICAgICAgaW5zZXJ0VGV4dDogc25pcHBldC5jb2RlLFxyXG4gICAgICAgIGluc2VydFRleHRSdWxlczpcclxuICAgICAgICAgIG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZS5JbnNlcnRBc1NuaXBwZXQsXHJcbiAgICAgICAgcmFuZ2U6IHJhbmdlLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHNuaXBwZXRzO1xyXG59O1xyXG4iLCIvLyBFeHRyYWN0IFZhcmlhYmxlc1xyXG5leHBvcnQgY29uc3QgZ2V0RWRpdG9yVmFyaWFibGVzID0gKHsgbGluZXMsIG1vbmFjbywgcmFuZ2UgfSkgPT4ge1xyXG4gIGNvbnN0IHZhcmlhYmxlc1NldCA9IG5ldyBTZXQoKTtcclxuXHJcbiAgbGluZXMuZm9yRWFjaCgobGluZSkgPT4ge1xyXG4gICAgY29uc3QgbWF0Y2hlcyA9IGxpbmUubWF0Y2goLyhcXHcrKVxccyo9Lyk7XHJcbiAgICBpZiAobWF0Y2hlcykge1xyXG4gICAgICB2YXJpYWJsZXNTZXQuYWRkKG1hdGNoZXNbMV0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gQXJyYXkuZnJvbSh2YXJpYWJsZXNTZXQpLm1hcCgodmFyaWFibGUpID0+ICh7XHJcbiAgICBsYWJlbDogdmFyaWFibGUsXHJcbiAgICBraW5kOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtS2luZC5WYXJpYWJsZSxcclxuICAgIGluc2VydFRleHQ6IHZhcmlhYmxlLFxyXG4gICAgcmFuZ2U6IHJhbmdlLFxyXG4gIH0pKTtcclxufTtcclxuXHJcbi8vIEV4dHJhY3QgZnVuY3Rpb25zXHJcbmV4cG9ydCBjb25zdCBnZXRFZGl0b3JGdW5jdGlvbnMgPSAoeyBsaW5lcywgbW9uYWNvLCByYW5nZSB9KSA9PiB7XHJcbiAgY29uc3QgZnVuY3Rpb25zU2V0ID0gbmV3IFNldCgpO1xyXG4gIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcclxuICAgIGNvbnN0IG1hdGNoZXMgPSBsaW5lLm1hdGNoKC9kZWZcXHMrKFxcdyspXFxzKlxcKC8pO1xyXG4gICAgaWYgKG1hdGNoZXMpIHtcclxuICAgICAgZnVuY3Rpb25zU2V0LmFkZChtYXRjaGVzWzFdKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIEFycmF5LmZyb20oZnVuY3Rpb25zU2V0KS5tYXAoKGZ1bmMpID0+ICh7XHJcbiAgICBsYWJlbDogZnVuYyxcclxuICAgIGtpbmQ6IG1vbmFjby5sYW5ndWFnZXMuQ29tcGxldGlvbkl0ZW1LaW5kLkZ1bmN0aW9uLFxyXG4gICAgaW5zZXJ0VGV4dDogZnVuYyxcclxuICAgIHJhbmdlOiByYW5nZSxcclxuICB9KSk7XHJcbn07XHJcblxyXG4vLyBDbGFzcyBPYmplY3RcclxuZXhwb3J0IGNvbnN0IGV4dHJhY3RDbGFzc2VzQW5kTWVtYmVycyA9IChjb2RlKSA9PiB7XHJcbiAgY29uc3QgY2xhc3NQYXR0ZXJuID0gL2NsYXNzIChcXHcrKVxccyo6L2c7XHJcbiAgY29uc3QgbWV0aG9kUGF0dGVybiA9IC9kZWYgKFxcdyspXFwoL2c7XHJcbiAgY29uc3QgYXR0cmlidXRlUGF0dGVybiA9IC8oXFx3KylcXHMqPS87XHJcblxyXG4gIGNvbnN0IGNsYXNzZXMgPSB7fTtcclxuICBsZXQgY3VycmVudENsYXNzID0gbnVsbDtcclxuXHJcbiAgY29uc3QgbGluZXMgPSBjb2RlLnNwbGl0KFwiXFxuXCIpO1xyXG5cclxuICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XHJcbiAgICBsZXQgY2xhc3NNYXRjaCA9IGNsYXNzUGF0dGVybi5leGVjKGxpbmUpO1xyXG4gICAgbGV0IGxlZnRfc3BhY2UgPSBsaW5lLm1hdGNoKC9eXFxzKi8pWzBdLmxlbmd0aDtcclxuXHJcbiAgICBpZiAoY2xhc3NNYXRjaCkge1xyXG4gICAgICBjdXJyZW50Q2xhc3MgPSBjbGFzc01hdGNoWzFdO1xyXG4gICAgICBjbGFzc2VzW2N1cnJlbnRDbGFzc10gPSB7XHJcbiAgICAgICAgYXR0cmlidXRlczogW10sXHJcbiAgICAgICAgbWV0aG9kczogW10sXHJcbiAgICAgICAgc3BhY2VTaXplOiBsZWZ0X3NwYWNlLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmIChjdXJyZW50Q2xhc3MpIHtcclxuICAgICAgbGV0IG1ldGhvZE1hdGNoID0gbWV0aG9kUGF0dGVybi5leGVjKGxpbmUpO1xyXG4gICAgICBsZXQgc3BhY2VTaXplID0gY2xhc3Nlc1tjdXJyZW50Q2xhc3NdLnNwYWNlU2l6ZTtcclxuXHJcbiAgICAgIC8vIGlmIGxpbmUgaGFzIG1vcmUgbGVmdCBzcGFjZSBhbmQgY3VycmVudCBjbGFzc1xyXG4gICAgICBpZiAoc3BhY2VTaXplIDwgbGVmdF9zcGFjZSkge1xyXG4gICAgICAgIC8vIG1ldGhvZCBtYXRjaFxyXG4gICAgICAgIGlmIChtZXRob2RNYXRjaCkge1xyXG4gICAgICAgICAgY2xhc3Nlc1tjdXJyZW50Q2xhc3NdLm1ldGhvZHMucHVzaChtZXRob2RNYXRjaFsxXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIHZhcmlhYmxlIG1hdGNoXHJcblxyXG4gICAgICAgICAgLy8gdHJpbSB0aGUgdmFyaWFibGVcclxuICAgICAgICAgIGxldCB0bXBfbGluZSA9IGxpbmU7XHJcbiAgICAgICAgICB0bXBfbGluZS50cmltKCk7XHJcbiAgICAgICAgICBjb25zdCBlcXVhbEluZGV4ID0gdG1wX2xpbmUuaW5kZXhPZihcIj1cIik7XHJcblxyXG4gICAgICAgICAgLy8gRXh0cmFjdCB0aGUgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IHRvIHRoZSBlcXVhbCBzaWduXHJcbiAgICAgICAgICB0bXBfbGluZSA9XHJcbiAgICAgICAgICAgIGVxdWFsSW5kZXggIT09IC0xXHJcbiAgICAgICAgICAgICAgPyB0bXBfbGluZS5zdWJzdHJpbmcoMCwgZXF1YWxJbmRleCArIDEpLnRyaW0oKVxyXG4gICAgICAgICAgICAgIDogbnVsbDtcclxuXHJcbiAgICAgICAgICBpZiAodG1wX2xpbmUgPT09IG51bGwpIHJldHVybjtcclxuICAgICAgICAgIC8vIGNoZWNrIHZhbGlkIHJlZ2V4IHZhcmlhYmxlXHJcbiAgICAgICAgICBjb25zdCByZWdleCA9IC9eW2EtekEtWl9dW2EtekEtWjAtOV9dKlxccyo9JC87XHJcbiAgICAgICAgICBjb25zdCB0ZXN0TGluZSA9IHJlZ2V4LnRlc3QodG1wX2xpbmUpO1xyXG4gICAgICAgICAgaWYgKCF0ZXN0TGluZSkgcmV0dXJuO1xyXG5cclxuICAgICAgICAgIC8vIGV4ZWNcclxuICAgICAgICAgIGxldCBhdHRyaWJ1dGVNYXRjaCA9IGF0dHJpYnV0ZVBhdHRlcm4uZXhlYyh0bXBfbGluZSk7XHJcblxyXG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZU1hdGNoKSB7XHJcbiAgICAgICAgICAgIGNsYXNzZXNbY3VycmVudENsYXNzXS5hdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlTWF0Y2hbMV0udHJpbSgpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gY2xhc3NlcztcclxufTtcclxuZXhwb3J0IGNvbnN0IGZpbmRDbGFzc05hbWVCeUluc3RhbmNlID0gKGNvZGUsIGluc3RhbmNlTmFtZSkgPT4ge1xyXG4gIGNvbnN0IGluc3RhbmNlUGF0dGVybiA9IG5ldyBSZWdFeHAoYCR7aW5zdGFuY2VOYW1lfVxcXFxzKj1cXFxccyooXFxcXHcrKVxcXFwoYCk7XHJcbiAgY29uc3QgbWF0Y2ggPSBpbnN0YW5jZVBhdHRlcm4uZXhlYyhjb2RlKTtcclxuICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XHJcbn07XHJcblxyXG4vLyBpbXBvcnQgZGF0YSBleHRyYWN0b3JcclxuXHJcbmV4cG9ydCBjb25zdCBleHRyYWN0UHl0aG9uSW1wb3J0cyA9IChjb2RlKSA9PiB7XHJcbiAgY29uc3QgaW1wb3J0UmVnZXggPVxyXG4gICAgL1xcYmltcG9ydFxccysoW2EtekEtWl9dW1xcd10qKSg/Olxccythc1xccysoW2EtekEtWl9dW1xcd10qKSk/L2c7XHJcblxyXG4gIGxldCBpbXBvcnRzID0gW107XHJcbiAgbGV0IG1hdGNoO1xyXG5cclxuICB3aGlsZSAoKG1hdGNoID0gaW1wb3J0UmVnZXguZXhlYyhjb2RlKSkgIT09IG51bGwpIHtcclxuICAgIGNvbnN0IGltcG9ydE5hbWUgPSBtYXRjaFsxXTtcclxuICAgIGNvbnN0IGFsaWFzID0gbWF0Y2hbMl0gPyBtYXRjaFsyXSA6IGltcG9ydE5hbWU7XHJcbiAgICBpbXBvcnRzLnB1c2goeyBpbXBvcnROYW1lLCBhbGlhcyB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBpbXBvcnRzO1xyXG59O1xyXG4iLCJleHBvcnQgY29uc3QgWm9vbU91dEljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNEQUE1MjBcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNMjY4LjAyLTQ0NHEtMTUuMDIgMC0yNS41Mi0xMC4yOXQtMTAuNS0yNS41cTAtMTUuMjEgMTAuMzUtMjUuNzFUMjY4LTUxNmg0MjMuOThxMTUuMDIgMCAyNS41MiAxMC4yOXQxMC41IDI1LjVxMCAxNS4yMS0xMC4zNSAyNS43MVQ2OTItNDQ0SDI2OC4wMlpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5leHBvcnQgY29uc3QgWm9vbUluSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk00NDQtNDQ0SDI0MHYtNzJoMjA0di0yMDRoNzJ2MjA0aDIwNHY3Mkg1MTZ2MjA0aC03MnYtMjA0WlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbmV4cG9ydCBjb25zdCBBbGlnbkljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNEQUE1MjBcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNMTQ0LTE0NHYtNzJoNjcydjcySDE0NFptMC0xNTB2LTcyaDQ4MHY3MkgxNDRabTAtMTUwdi03Mmg2NzJ2NzJIMTQ0Wm0wLTE1MHYtNzJoNDgwdjcySDE0NFptMC0xNTB2LTcyaDY3MnY3MkgxNDRaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBJbmZvSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk00NDQtMjg4aDcydi0yNDBoLTcydjI0MFptMzUuNzktMzEycTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0uNDkgNTA0UTQwMS05NiAzMzEtMTI2dC0xMjIuNS04Mi41UTE1Ni0yNjEgMTI2LTMzMC45NnQtMzAtMTQ5LjVROTYtNTYwIDEyNi02MjkuNXEzMC02OS41IDgyLjUtMTIyVDMzMC45Ni04MzRxNjkuOTYtMzAgMTQ5LjUtMzB0MTQ5LjA0IDMwcTY5LjUgMzAgMTIyIDgyLjVUODM0LTYyOS4yOHEzMCA2OS43MyAzMCAxNDlRODY0LTQwMSA4MzQtMzMxdC04Mi41IDEyMi41UTY5OS0xNTYgNjI5LjI4LTEyNnEtNjkuNzMgMzAtMTQ5IDMwWm0tLjI4LTcycTEzMCAwIDIyMS05MXQ5MS0yMjFxMC0xMzAtOTEtMjIxdC0yMjEtOTFxLTEzMCAwLTIyMSA5MXQtOTEgMjIxcTAgMTMwIDkxIDIyMXQyMjEgOTFabTAtMzEyWlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgQ2xvc2VJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjODk4OTg5XCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwibTI5MS0yNDAtNTEtNTEgMTg5LTE4OS0xODktMTg5IDUxLTUxIDE4OSAxODkgMTg5LTE4OSA1MSA1MS0xODkgMTg5IDE4OSAxODktNTEgNTEtMTg5LTE4OS0xODkgMTg5WlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgS2V5Ym9hcmRJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjZmNmY2ZjXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTE2OC0yNDBxLTI5LjcgMC01MC44NS0yMS4xNVE5Ni0yODIuMyA5Ni0zMTJ2LTMzNnEwLTI5LjcgMjEuMTUtNTAuODVRMTM4LjMtNzIwIDE2OC03MjBoNjI0cTI5LjcgMCA1MC44NSAyMS4xNVE4NjQtNjc3LjcgODY0LTY0OHYzMzZxMCAyOS43LTIxLjE1IDUwLjg1UTgyMS43LTI0MCA3OTItMjQwSDE2OFptMC03Mmg2MjR2LTMzNkgxNjh2MzM2Wm0yMDMuOTYtMjRoMjE1Ljc2cTE1LjI4IDAgMjUuNzgtMTAuMjkgMTAuNS0xMC4yOSAxMC41LTI1LjV0LTEwLjM0LTI1LjcxUTYwMy4zMi00MDggNTg4LjA0LTQwOEgzNzIuMjhxLTE1LjI4IDAtMjUuNzggMTAuMjktMTAuNSAxMC4yOS0xMC41IDI1LjV0MTAuMzQgMjUuNzFxMTAuMzQgMTAuNSAyNS42MiAxMC41Wk0xNjgtMzEydi0zMzYgMzM2Wm0xMDcuNzktMjQwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptLTQwOCA5NnExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBXaWRnZXRzSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI2ZjZmNmY1wiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk02MTAtNDU4IDQ1Ny4zOS02MTFxLTUuMzktNS40LTcuODktMTEuNy0yLjUtNi4zLTIuNS0xMy41dDIuNS0xMy41UTQ1Mi02NTYgNDU3LTY2MWwxNTMtMTUzcTUtNSAxMi04dDE0LjItM3E3LjIgMCAxMy41IDN0MTEuMyA4bDE1Mi42MSAxNTNxNS4zOSA1LjQgNy44OSAxMS43IDIuNSA2LjMgMi41IDEzLjV0LTIuNSAxMy41UTgxOS02MTYgODE0LTYxMUw2NjEtNDU4cS01IDUtMTEuMyA4LTYuMyAzLTEzLjUgM3QtMTQuMi0zcS03LTMtMTItOFpNMTQ0LTU2My45NnYtMjE1Ljc2cTAtMTUuMjggMTAuMzQtMjUuNzggMTAuMzQtMTAuNSAyNS42Mi0xMC41aDIxNS43NnExNS4yOCAwIDI1Ljc4IDEwLjM0IDEwLjUgMTAuMzQgMTAuNSAyNS42MnYyMTUuNzZxMCAxNS4yOC0xMC4zNCAyNS43OC0xMC4zNCAxMC41LTI1LjYyIDEwLjVIMTgwLjI4cS0xNS4yOCAwLTI1Ljc4LTEwLjM0LTEwLjUtMTAuMzQtMTAuNS0yNS42MlptMzg0IDM4NHYtMjE1Ljc2cTAtMTUuMjggMTAuMzQtMjUuNzggMTAuMzQtMTAuNSAyNS42Mi0xMC41aDIxNS43NnExNS4yOCAwIDI1Ljc4IDEwLjM0IDEwLjUgMTAuMzQgMTAuNSAyNS42MnYyMTUuNzZxMCAxNS4yOC0xMC4zNCAyNS43OC0xMC4zNCAxMC41LTI1LjYyIDEwLjVINTY0LjI4cS0xNS4yOCAwLTI1Ljc4LTEwLjM0LTEwLjUtMTAuMzQtMTAuNS0yNS42MlptLTM4NCAwdi0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUgxODAuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWk0yMTYtNjAwaDE0NHYtMTQ0SDIxNnYxNDRabTQyMCA2NiAxMDEtMTAyLTEwMS0xMDItMTAyIDEwMiAxMDIgMTAyWm0tMzYgMzE4aDE0NHYtMTQ0SDYwMHYxNDRabS0zODQgMGgxNDR2LTE0NEgyMTZ2MTQ0Wm0xNDQtMzg0Wm0xNzQtMzZaTTM2MC0zNjBabTI0MCAwWlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge1xyXG4gIGZpbHRlckxpbmVOdW1iZXIsXHJcbiAgZ2V0TWFya2VyU2V2ZXJpdHksXHJcbiAgcmVuZGVyR2x5cGhzLFxyXG59IGZyb20gXCIuLi9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvclwiO1xyXG5cclxuaW1wb3J0IHtcclxuICBweWxpbnRfZXJyb3IsXHJcbiAgcHlsaW50X3dhcm5pbmcsXHJcbiAgcHlsaW50X2NvbnZlbnRpb24sXHJcbiAgcHlsaW50X3JlZmFjdG9yLFxyXG4gIHB5bGludF9mYXRhbCxcclxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvY29uc3RhbnRzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgdXNlTW9uYWNvRWRpdG9yTG9hZGVyRWZmZWN0ID0gKHtcclxuICBsb2FkZXIsXHJcbiAgZGlzcGF0Y2gsXHJcbiAgbW9uYWNvRWRpdG9yVGhlbWUsXHJcbn0pID0+IHtcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgLy8gZ2V0IGxvY2FsIHN0b3JhZ2UgdGhlbWUgZGF0YVxyXG4gICAgY29uc3QgbG9jYWxfdGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImVkaXRvci10aGVtZVwiKTtcclxuXHJcbiAgICBpZiAoIWxvY2FsX3RoZW1lKSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiZWRpdG9yLXRoZW1lXCIsIG1vbmFjb0VkaXRvclRoZW1lKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICB0eXBlOiBcInVwZGF0ZU1vbmFjb0VkaXRvclRoZW1lXCIsXHJcbiAgICAgICAgcGF5bG9hZDogeyB0aGVtZTogbG9jYWxfdGhlbWUgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9cclxuICAgIGxvYWRlclxyXG4gICAgICAuaW5pdCgpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGRpc3BhdGNoKHsgdHlwZTogXCJ1cGRhdGVFZGl0b3JTdGF0ZVwiLCBwYXlsb2FkOiB7IGxvYWRpbmc6IGZhbHNlIH0gfSk7XHJcbiAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgfSk7XHJcbiAgfSwgW10pO1xyXG59O1xyXG5cclxuLy8gQ29kZSBBbmFseXNpcyAod2l0aCBweWxpbnQpXHJcbmV4cG9ydCBjb25zdCB1c2VNb25hY29FZGl0b3JDb2RlQW5hbHlzaXNFZmZlY3QgPSAoe1xyXG4gIG1vbmFjb1JlZixcclxuICBlZGl0b3JSZWYsXHJcbiAgbW9uYWNvRWRpdG9yU291cmNlQ29kZSxcclxufSkgPT4ge1xyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAoIWVkaXRvclJlZi5jdXJyZW50IHx8ICFtb25hY29SZWYuY3VycmVudCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5jb2RlX2FuYWx5c2lzKHtcclxuICAgICAgY29kZTogbW9uYWNvRWRpdG9yU291cmNlQ29kZSxcclxuICAgICAgZGlzYWJsZV9lcnJvcnM6IFtcclxuICAgICAgICAuLi5weWxpbnRfZXJyb3IsXHJcbiAgICAgICAgLi4ucHlsaW50X3dhcm5pbmcsXHJcbiAgICAgICAgLi4ucHlsaW50X2NvbnZlbnRpb24sXHJcbiAgICAgICAgLi4ucHlsaW50X3JlZmFjdG9yLFxyXG4gICAgICAgIC4uLnB5bGludF9mYXRhbCxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KCk7XHJcbiAgfSwgW21vbmFjb0VkaXRvclNvdXJjZUNvZGVdKTtcclxuXHJcbiAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgaWYgKCFlZGl0b3JSZWYuY3VycmVudCB8fCAhbW9uYWNvUmVmLmN1cnJlbnQpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xyXG5cclxuICAgIGNvbnN0IGRyYXdNYXJrZXIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSBtZXNzYWdlLmRhdGE7XHJcblxyXG4gICAgICBpZiAoIWRhdGEpIHJldHVybjtcclxuXHJcbiAgICAgIGNvbnN0IG1vZGVsID0gZWRpdG9yUmVmLmN1cnJlbnQuZ2V0TW9kZWwoKTtcclxuICAgICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgICAgY29uc3QgcHlsaW50X2RhdGEgPSBkYXRhLnB5bGludF9vdXRwdXQubWFwKChweWxpbnQsIGkpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgc3RhcnRMaW5lTnVtYmVyOiBweWxpbnQubGluZSxcclxuICAgICAgICAgIHN0YXJ0Q29sdW1uOiBweWxpbnQuY29sdW1uLFxyXG4gICAgICAgICAgZW5kTGluZU51bWJlcjpcclxuICAgICAgICAgICAgcHlsaW50LmVuZExpbmUgPT09IG51bGwgPyBweWxpbnQuY29sdW1uIDogcHlsaW50LmVuZExpbmUsXHJcbiAgICAgICAgICBlbmRDb2x1bW46XHJcbiAgICAgICAgICAgIHB5bGludC5lbmRDb2x1bW4gPT09IG51bGxcclxuICAgICAgICAgICAgICA/IG1vZGVsLmdldExpbmVNYXhDb2x1bW4ocHlsaW50LmxpbmUpXHJcbiAgICAgICAgICAgICAgOiBweWxpbnQuZW5kQ29sdW1uLFxyXG4gICAgICAgICAgbWVzc2FnZTogcHlsaW50Lm1lc3NhZ2UsXHJcbiAgICAgICAgICBzZXZlcml0eTogZ2V0TWFya2VyU2V2ZXJpdHkoe1xyXG4gICAgICAgICAgICB0eXBlOiBweWxpbnQudHlwZSxcclxuICAgICAgICAgICAgbW9uYWNvOiBtb25hY29SZWYuY3VycmVudCxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICBtb25hY29SZWYuY3VycmVudC5lZGl0b3Iuc2V0TW9kZWxNYXJrZXJzKG1vZGVsLCBcIm93bmVyXCIsIHB5bGludF9kYXRhKTtcclxuICAgIH07XHJcblxyXG4gICAgZHJhd01hcmtlcigpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KCk7XHJcbiAgfTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuQ09ERV9BTkFMWVNJU10sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLkNPREVfQU5BTFlTSVNdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxufTtcclxuXHJcbi8vIENvZGUgRm9ybWF0ICh3aXRoIGJsYWNrKVxyXG5leHBvcnQgY29uc3QgdXNlTW9uYWNvRWRpdG9yQ29kZUZvcm1hdEVmZmVjdCA9ICh7XHJcbiAgZWRpdG9yUmVmLFxyXG4gIG1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgc2V0TW9uYWNvRWRpdG9yU291cmNlQ29kZSxcclxuICBzZXRVcGRhdGVHbHlwaHMsXHJcbn0pID0+IHtcclxuICAvLyBVc2UgRWZmZWN0IGZvciBCbGFjayAoY29kZSBwcmV0dGlmeS9iZWF1dGlmeSlcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKCFlZGl0b3JSZWYuY3VycmVudCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSBhc3luYyAoZXZlbnQpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgQ3RybCtTIGlzIHByZXNzZWRcclxuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgKGV2ZW50LmtleSA9PT0gXCJzXCIgfHwgZXZlbnQua2V5ID09PSBcIlNcIikpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmNvZGVfZm9ybWF0KHtcclxuICAgICAgICAgIGNvZGU6IG1vbmFjb0VkaXRvclNvdXJjZUNvZGUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQuZ2V0RG9tTm9kZSgpLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIGhhbmRsZUtleURvd24pO1xyXG5cclxuICAgIC8vIENsZWFuIHVwIGV2ZW50XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBlZGl0b3JSZWYuY3VycmVudFxyXG4gICAgICAgIC5nZXREb21Ob2RlKClcclxuICAgICAgICAucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgaGFuZGxlS2V5RG93bik7XHJcbiAgICB9O1xyXG4gIH0sIFtlZGl0b3JSZWYsIG1vbmFjb0VkaXRvclNvdXJjZUNvZGVdKTtcclxuXHJcbiAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgaWYgKCFlZGl0b3JSZWYuY3VycmVudCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBtZXNzYWdlLmRhdGE7XHJcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHJcbiAgICBpZiAoIWRhdGEpIHJldHVybjtcclxuXHJcbiAgICBzZXRNb25hY29FZGl0b3JTb3VyY2VDb2RlKGRhdGEuZm9ybWF0dGVkX2NvZGUpO1xyXG4gICAgc2V0VXBkYXRlR2x5cGhzKHRydWUpO1xyXG4gIH07XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLkNPREVfRk9STUFUXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuQ09ERV9GT1JNQVRdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1c2VNb25hY29FZGl0b3JMaW5lTnVtYmVyRGVjb3JhdGlvbnNFZmZlY3QgPSAoe1xyXG4gIGVkaXRvclJlZixcclxuICBsaW5lTnVtYmVyRGVjb3JhdGlvblJlZixcclxuICBzZXRMaW5lTnVtYmVyLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgdXBkYXRlR2x5cGhzLFxyXG4gIHNldFVwZGF0ZUdseXBocyxcclxuICBtb25hY29FZGl0b3JTb3VyY2VDb2RlLFxyXG4gIHNldExpbmVOdW1iZXJEZWNvcmF0aW9ucyxcclxuICBsaW5lTnVtYmVyRGVjb3JhdGlvbnMsXHJcbiAgbWF4RWRpdG9yUm93cyxcclxuICBzZXRNYXhFZGl0b3JSb3dzLFxyXG59KSA9PiB7XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChcclxuICAgICAgKGxpbmVOdW1iZXIgPT09IC0xICYmICF1cGRhdGVHbHlwaHMpIHx8XHJcbiAgICAgICFsaW5lTnVtYmVyRGVjb3JhdGlvblJlZi5jdXJyZW50IHx8XHJcbiAgICAgICFlZGl0b3JSZWYuY3VycmVudFxyXG4gICAgKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IGFsbExpbmVOdW1iZXJEZWNvcmF0aW9ucyA9IGZpbHRlckxpbmVOdW1iZXIoe1xyXG4gICAgICBsaW5lTnVtYmVyRGVjb3JhdGlvbnMsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICAgIG1heEVkaXRvclJvd3MsXHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXRMaW5lTnVtYmVyRGVjb3JhdGlvbnMoYWxsTGluZU51bWJlckRlY29yYXRpb25zKTtcclxuICAgIC8vIHJlc2V0IGxpbmVOdW1iZXJcclxuICAgIHNldExpbmVOdW1iZXIoLTEpO1xyXG4gICAgc2V0VXBkYXRlR2x5cGhzKGZhbHNlKTtcclxuXHJcbiAgICAvLyByZW5kZXIgR2x5cGhzXHJcbiAgICByZW5kZXJHbHlwaHMobGluZU51bWJlckRlY29yYXRpb25SZWYsIGFsbExpbmVOdW1iZXJEZWNvcmF0aW9ucyk7XHJcbiAgfSwgW2xpbmVOdW1iZXIsIHVwZGF0ZUdseXBoc10pO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKGVkaXRvclJlZi5jdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsID0gZWRpdG9yUmVmLmN1cnJlbnQuZ2V0TW9kZWwoKTtcclxuICAgICAgY29uc3QgbGluZUNvdW50ID0gbW9kZWwuZ2V0TGluZUNvdW50KCk7XHJcblxyXG4gICAgICBzZXRNYXhFZGl0b3JSb3dzKChwcmV2KSA9PiB7XHJcbiAgICAgICAgaWYgKHByZXYgPiBsaW5lQ291bnQpIHtcclxuICAgICAgICAgIHNldFVwZGF0ZUdseXBocyh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxpbmVDb3VudDtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSwgW21vbmFjb0VkaXRvclNvdXJjZUNvZGVdKTtcclxufTtcclxuIl0sIm5hbWVzIjpbIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJlIiwidCIsInIiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJuIiwiaGFzT3duUHJvcGVydHkiLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImkiLCJTeW1ib2wiLCJhIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIndyYXAiLCJHZW5lcmF0b3IiLCJjcmVhdGUiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwidHlwZSIsImFyZyIsImNhbGwiLCJoIiwibCIsImYiLCJzIiwieSIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJwIiwiZCIsImdldFByb3RvdHlwZU9mIiwidiIsInZhbHVlcyIsImciLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJpbnZva2UiLCJfdHlwZW9mIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfc2xpY2VkVG9BcnJheSIsIkFycmF5IiwiaXNBcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJmcm9tIiwidGVzdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJNb25hY29FZGl0b3IiLCJfcmVmIiwic3RhdGUiLCJkaXNwYXRjaCIsIm1vbmFjb0VkaXRvclNvdXJjZUNvZGUiLCJzZXRNb25hY29FZGl0b3JTb3VyY2VDb2RlIiwiaGFuZGxlTW9uYWNvRWRpdG9yQ29kZUNoYW5nZSIsIm1vbmFjb1JlZiIsInVzZVJlZiIsImVkaXRvclJlZiIsImxpbmVOdW1iZXJEZWNvcmF0aW9uUmVmIiwiaXNMb2FkaW5nIiwibW9uYWNvRWRpdG9yVGhlbWUiLCJlZGl0b3JPcHRpb25zIiwiZWRpdG9yU2V0dGluZ3MiLCJfdXNlU3RhdGUyIiwidXNlU3RhdGUiLCJsaW5lTnVtYmVyIiwic2V0TGluZU51bWJlciIsIl91c2VTdGF0ZTQiLCJsaW5lTnVtYmVyRGVjb3JhdGlvbnMiLCJzZXRMaW5lTnVtYmVyRGVjb3JhdGlvbnMiLCJfdXNlU3RhdGU2IiwidXBkYXRlR2x5cGhzIiwic2V0VXBkYXRlR2x5cGhzIiwiX3VzZVN0YXRlOCIsIm1heEVkaXRvclJvd3MiLCJzZXRNYXhFZGl0b3JSb3dzIiwidXNlRWZmZWN0IiwiZGF0YSIsImdldEVkaXRvclNldHRpbmdzV2lkZ2V0c0RhdGEiLCJwYXlsb2FkIiwiaXNDb2RlRm9ybWF0RW5hYmxlIiwiaXNab29taW5nRW5hYmxlIiwic2V0RWRpdG9yU2V0dGluZ3NXaWRnZXRzRGF0YSIsInVzZU1vbmFjb0VkaXRvckxvYWRlckVmZmVjdCIsImxvYWRlciIsInVzZU1vbmFjb0VkaXRvckxpbmVOdW1iZXJEZWNvcmF0aW9uc0VmZmVjdCIsInVzZU1vbmFjb0VkaXRvckNvZGVBbmFseXNpc0VmZmVjdCIsInVzZU1vbmFjb0VkaXRvckNvZGVGb3JtYXRFZmZlY3QiLCJoYW5kbGVFZGl0b3JEaWRNb3VudCIsIl9yZWYyIiwiX2NhbGxlZSIsImVkaXRvciIsIm1vbmFjbyIsIl9jb250ZXh0IiwiY3VycmVudCIsImNyZWF0ZURlY29yYXRpb25zQ29sbGVjdGlvbiIsImdldE1vZGVsIiwiZ2V0TGluZUNvdW50IiwibW9uYWNvRWRpdG9yU2Nyb2xsIiwibW9uYWNvRWRpdG9yU25pcHBldCIsIm1vbmFjb0VkaXRvckdseXBoIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl94IiwiX3gyIiwiX2pzeCIsImNsYXNzTmFtZSIsImNoaWxkcmVuIiwiTW9uYWNvRWRpdG9yTG9hZGVyIiwidGhlbWUiLCJfanN4cyIsIl9GcmFnbWVudCIsIk1vbmFjb0VkaXRvckluZm8iLCJFZGl0b3IiLCJoZWlnaHQiLCJ3aWR0aCIsImRlZmF1bHRMYW5ndWFnZSIsImRlZmF1bHRWYWx1ZSIsIm9uQ2hhbmdlIiwiY29kZSIsImJlZm9yZU1vdW50Iiwib25Nb3VudCIsIm9wdGlvbnMiLCJQcm9wVHlwZXMiLCJpc1JlcXVpcmVkIiwidGhlbWVfY29sb3JzIiwidnMiLCJiZyIsInRleHQiLCJsaW5lIiwidnNfZGFyayIsImhjX2JsYWNrIiwibGluZVRoZW1lIiwibWFyZ2luQm90dG9tIiwibGluZU1hcmluZ0xlZnQiLCJiYWNrZ3JvdW5kIiwic2V0QmFja2dyb3VuZCIsImxpbmVCYWNrZ3JvdW5kIiwic2V0TGluZUJhY2tncm91bmQiLCJzcGxpdCIsImpvaW4iLCJjb25jYXQiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsIm1hcCIsImNvbG9yIiwibWFyZ2luTGVmdCIsInJlc2l6ZUxpc3QiLCJtb25hY29FZGl0b3JUaGVtZUxpc3QiLCJkZWZhdWx0RWRpdG9yU291cmNlQ29kZSIsInB5bGludF9lcnJvciIsInB5bGludF93YXJuaW5nIiwicHlsaW50X2NvbnZlbnRpb24iLCJweWxpbnRfcmVmYWN0b3IiLCJweWxpbnRfZmF0YWwiLCJpc01vZGFsT3BlbiIsImN0cmxTRXZlbnQiLCJtb2RhbFNjcmVlblN0YXRlIiwiS2V5Ym9hcmRFdmVudCIsImtleSIsImN0cmxLZXkiLCJidWJibGVzIiwiZmlsdGVyIiwiYmFja2Ryb3BGaWx0ZXIiLCJib3JkZXIiLCJNb25hY29FZGl0b3JJbmZvU2lkZWJhciIsIk1vbmFjb0VkaXRvckluZm9EZXRhaWxzIiwiTW9uYWNvRWRpdG9ySW5mb0J1dHRvbnMiLCJoYW5kbGVGb250Wm9vbSIsInpvb20iLCJjdXJyZW50Rm9udFNpemUiLCJnZXRPcHRpb24iLCJFZGl0b3JPcHRpb24iLCJmb250U2l6ZSIsInVwZGF0ZU9wdGlvbnMiLCJNYXRoIiwibWluIiwibWF4IiwiaGFuZGxlRm9ybWF0Q29kZSIsImdldERvbU5vZGUiLCJkaXNwYXRjaEV2ZW50IiwiekluZGV4Iiwib25DbGljayIsInRpdGxlIiwiWm9vbUluSWNvbiIsImNzc0NsYXNzIiwiWm9vbU91dEljb24iLCJBbGlnbkljb24iLCJJbmZvSWNvbiIsInNob3J0Y3V0c0RldGFpbHMiLCJ3aWRnZXRzRGV0YWlscyIsImlkIiwiQ2xvc2VJY29uIiwic2hvcnRjdXQiLCJ3aWRnZXQiLCJjaGVja2VkIiwidGFyZ2V0IiwiaGFuZ2xlQ2hhbmdlV2lkZ2V0cyIsInNjcmVlbiIsIktleWJvYXJkSWNvbiIsIldpZGdldHNJY29uIiwiZmV0Y2hGb3JtYXRDb2RlIiwiYmFzZVVybCIsInJlc3BvbnNlIiwiZmV0Y2giLCJoZWFkZXJzIiwiY29udGV4dCIsImNzcmYiLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb24iLCJvayIsImZvcm1hdHRlZF9jb2RlIiwiY29uc29sZSIsImVycm9yIiwidDAiLCJsb2ciLCJnZXRNYXJrZXJTZXZlcml0eSIsIl9yZWYzIiwiTWFya2VyU2V2ZXJpdHkiLCJJbmZvIiwiV2FybmluZyIsImRhdGFfc3RyaW5nIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImdldEl0ZW0iLCJwYXJzZSIsIm9uTW91c2VEb3duIiwiZXZlbnQiLCJNb3VzZVRhcmdldFR5cGUiLCJHVVRURVJfR0xZUEhfTUFSR0lOIiwicG9zaXRpb24iLCJyZW5kZXJHbHlwaHMiLCJhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMiLCJhbGxHbHlwaHMiLCJuZXdEZWNvcmF0aW9uIiwicmFuZ2UiLCJSYW5nZSIsImdseXBoTWFyZ2luQ2xhc3NOYW1lIiwiZ2x5cGhNYXJnaW5Ib3Zlck1lc3NhZ2UiLCJzZXQiLCJmaWx0ZXJMaW5lTnVtYmVyIiwiZmluZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJwcmV2ZW50RGVmYXVsdCIsImRlbHRhWSIsImxhbmd1YWdlcyIsInJlZ2lzdGVyIiwiX3Byb3ZpZGVDb21wbGV0aW9uSXRlbXMiLCJidXMiLCJyZXF1aXJlIiwibG9jayIsInJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlciIsInRyaWdnZXJDaGFyYWN0ZXJzIiwicHJvdmlkZUNvbXBsZXRpb25JdGVtcyIsIm1vZGVsIiwid29yZCIsInByZXZXb3JkIiwic25pcHBldHMiLCJzdWdnZXN0aW9ucyIsImNhbGxiYWNrIiwiZ2V0V29yZFVudGlsUG9zaXRpb24iLCJjb2x1bW4iLCJzdGFydExpbmVOdW1iZXIiLCJlbmRMaW5lTnVtYmVyIiwic3RhcnRDb2x1bW4iLCJlbmRDb2x1bW4iLCJzbmlwcGV0c0J1aWxkZXJWMiIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwiY29kZV9hdXRvY29tcGxldGUiLCJnZXRWYWx1ZSIsImNvbCIsIm1lc3NhZ2UiLCJjb21wbGV0aW9ucyIsInNuaXBwZXQiLCJsYWJlbCIsImtpbmQiLCJzbmlwcGV0S2luZCIsImRldGFpbCIsImRvY3VtZW50YXRpb24iLCJkb2NzdHJpbmciLCJpbnNlcnRUZXh0IiwiaW5zZXJ0VGV4dFJ1bGVzIiwiQ29tcGxldGlvbkl0ZW1JbnNlcnRUZXh0UnVsZSIsIkluc2VydEFzU25pcHBldCIsImVtaXQiLCJzdXNjcmlicmVPbmNlIiwiZXZlbnRzIiwiQ09ERV9BVVRPQ09NUExFVEUiLCJvbmNlIiwiQ29tcGxldGlvbkl0ZW1LaW5kIiwiVmFyaWFibGUiLCJDbGFzcyIsIlR5cGVQYXJhbWV0ZXIiLCJGaWxlIiwiUHJvcGVydHkiLCJGdW5jdGlvbiIsIk1vZHVsZSIsIk1ldGhvZCIsIlNuaXBwZXQiLCJLZXl3b3JkIiwiZ2V0SGFsR3VpTWV0aG9kcyIsImltcG9ydE5hbWUiLCJleGVyY2lzZU5hbWUiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwiQm9vbGVhbiIsImd1aUFuZEhhbEF1dG9Db21wbGV0ZU9iaiIsIndlYmd1aSIsImhhbCIsImZyZXF1ZW5jeUF1dG9Db21wbGV0ZU9iaiIsInNuaXBwZXROYW1lIiwiaW1wb3J0U25pcHBldHMiLCJiYXNpY19zbmlwcGV0cyIsImdldEVkaXRvclZhcmlhYmxlcyIsImxpbmVzIiwidmFyaWFibGVzU2V0IiwiU2V0IiwibWF0Y2hlcyIsIm1hdGNoIiwiYWRkIiwidmFyaWFibGUiLCJnZXRFZGl0b3JGdW5jdGlvbnMiLCJmdW5jdGlvbnNTZXQiLCJmdW5jIiwiZXh0cmFjdENsYXNzZXNBbmRNZW1iZXJzIiwiY2xhc3NQYXR0ZXJuIiwibWV0aG9kUGF0dGVybiIsImF0dHJpYnV0ZVBhdHRlcm4iLCJjbGFzc2VzIiwiY3VycmVudENsYXNzIiwiY2xhc3NNYXRjaCIsImV4ZWMiLCJsZWZ0X3NwYWNlIiwiYXR0cmlidXRlcyIsIm1ldGhvZHMiLCJzcGFjZVNpemUiLCJtZXRob2RNYXRjaCIsInRtcF9saW5lIiwidHJpbSIsImVxdWFsSW5kZXgiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwiYXR0cmlidXRlTWF0Y2giLCJmaW5kQ2xhc3NOYW1lQnlJbnN0YW5jZSIsImluc3RhbmNlTmFtZSIsIlJlZ0V4cCIsImV4dHJhY3RQeXRob25JbXBvcnRzIiwiaW1wb3J0UmVnZXgiLCJpbXBvcnRzIiwiYWxpYXMiLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwiX3JlZjQiLCJfcmVmNSIsIl9yZWY2IiwiX3JlZjciLCJfYXN5bmNUb0dlbmVyYXRvciIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJsb2NhbF90aGVtZSIsImluaXQiLCJzZXRUaW1lb3V0IiwibG9hZGluZyIsImVyciIsImNvbnRyb2xsZXIiLCJBYm9ydENvbnRyb2xsZXIiLCJjb2RlX2FuYWx5c2lzIiwiZGlzYWJsZV9lcnJvcnMiLCJhYm9ydCIsImRyYXdNYXJrZXIiLCJweWxpbnRfZGF0YSIsInB5bGludF9vdXRwdXQiLCJweWxpbnQiLCJlbmRMaW5lIiwiZ2V0TGluZU1heENvbHVtbiIsInNldmVyaXR5Iiwic2V0TW9kZWxNYXJrZXJzIiwic3Vic2NyaWJlIiwiQ09ERV9BTkFMWVNJUyIsInVuc3Vic2NyaWJlIiwiaGFuZGxlS2V5RG93biIsIl9jYWxsZWUyIiwiX2NvbnRleHQyIiwiY29kZV9mb3JtYXQiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiQ09ERV9GT1JNQVQiLCJsaW5lQ291bnQiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3721.49623697.js.LICENSE.txt b/react_frontend/static/react_frontend/js/3721.49623697.js.LICENSE.txt new file mode 100644 index 000000000..ae386fb79 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3721.49623697.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/react_frontend/static/react_frontend/js/3774.66290313.js b/react_frontend/static/react_frontend/js/3774.66290313.js new file mode 100644 index 000000000..7982005b7 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3774.66290313.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3774],{3774:(e,t,a)=>{a.r(t),a.d(t,{draw:()=>u,reset_all:()=>v});var n,o,r,c,g=[],i=[];function d(e){return decodeURIComponent(escape(e))}var l=new Image,m=new Image;function u(e){n=JSON.parse(e.img1),r=d(n.img),null!==e.img1&&void 0!==e.img1&&(n=JSON.parse(e.img1),(r=d(n.img)).length>10&&(l.src="data:image1/jpeg;base64,"+r)),null!==e.img2&&void 0!==e.img2&&(o=JSON.parse(e.img2),(c=d(o.img)).length>10&&(m.src="data:image2/jpeg;base64,"+c));var t=JSON.parse(e.pts);""!=t&&function(e){for(var t=[],a=0;a{r.r(n),r.d(n,{addToTrail:()=>a,updatePath:()=>o,updateTrail:()=>e});var e=function(t,n,r,e){for(var o="M ",a=0;a0&&n(o)},o=function(t,n,r,e){for(var o="M ",a=0;a0&&n(o)},a=function(t,n,r){r.includes([t,n])||r.push([t,n])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvMzc5OC5jNGI3YTFiYy5qcyIsIm1hcHBpbmdzIjoib0xBQU8sSUFBTUEsRUFBYyxTQUFDQyxFQUFPQyxFQUFpQkMsRUFBUUMsR0FHMUQsSUFGQSxJQUFJQyxFQUFVLEtBRUxDLEVBQVEsRUFBR0EsRUFBUUwsRUFBTU0sT0FBUUQsSUFBUyxDQUNqRCxJQUFNRSxFQUFVUCxFQUFNSyxHQUNsQkcsRUFBT0QsRUFBUSxHQUFLTCxFQUNwQk8sRUFBT0YsRUFBUSxHQUFLSixFQUNWLElBQVZFLElBQ0ZELEdBQVdLLEVBQUtDLFdBQVksSUFBTUYsRUFBSUUsWUFFeENOLEdBQVcsTUFBUUssRUFBS0MsV0FBYSxJQUFNRixFQUFJRSxVQUNqRCxDQUVJVixFQUFNTSxPQUFTLEdBQ2pCTCxFQUFnQkcsRUFFcEIsRUFFYU8sRUFBYSxTQUFDWCxFQUFPQyxFQUFpQkMsRUFBUUMsR0FHekQsSUFGQSxJQUFJQyxFQUFVLEtBRUxDLEVBQVEsRUFBR0EsRUFBUUwsRUFBTU0sT0FBUUQsSUFBUyxDQUNqRCxJQUFNRSxFQUFVUCxFQUFNSyxHQUNsQkcsRUFBT0QsRUFBUSxHQUFLTCxFQUNwQk8sRUFBT0YsRUFBUSxHQUFLSixFQUNWLElBQVZFLElBQ0ZELEdBQVdLLEVBQUtDLFdBQVksSUFBTUYsRUFBSUUsWUFFeENOLEdBQVcsTUFBUUssRUFBS0MsV0FBYSxJQUFNRixFQUFJRSxVQUNqRCxDQUVJVixFQUFNTSxPQUFTLEdBQ2pCTCxFQUFnQkcsRUFFcEIsRUFFYVEsRUFBYSxTQUFDQyxFQUFHQyxFQUFHZCxHQUMxQkEsRUFBTWUsU0FBUyxDQUFDRixFQUFHQyxLQUN0QmQsRUFBTWdCLEtBQUssQ0FBQ0gsRUFBR0MsR0FFbkIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2FtYXpvbl93YXJlaG91c2UvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL0FtYXpvbldhcmVob3VzZUhlbHBlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdXBkYXRlVHJhaWwgPSAodHJhaWwsIHNldFBhdGhDYWxsYmFjaywgaGVpZ2h0LCB3aWR0aCkgPT4ge1xyXG4gIHZhciBuZXdQYXRoID0gXCJNIFwiO1xyXG5cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhaWwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdHJhaWxbaW5kZXhdO1xyXG4gICAgdmFyIHRvcCAgPSBlbGVtZW50WzBdICogaGVpZ2h0O1xyXG4gICAgdmFyIGxlZnQgPSBlbGVtZW50WzFdICogd2lkdGg7XHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgbmV3UGF0aCArPSBsZWZ0LnRvU3RyaW5nKCkrIFwiLFwiICsgdG9wLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBuZXdQYXRoICs9IFwiIEwgXCIgKyBsZWZ0LnRvU3RyaW5nKCkgKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRyYWlsLmxlbmd0aCA+IDApIHtcclxuICAgIHNldFBhdGhDYWxsYmFjayhuZXdQYXRoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHVwZGF0ZVBhdGggPSAodHJhaWwsIHNldFBhdGhDYWxsYmFjaywgaGVpZ2h0LCB3aWR0aCkgPT4ge1xyXG4gIHZhciBuZXdQYXRoID0gXCJNIFwiO1xyXG5cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhaWwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdHJhaWxbaW5kZXhdO1xyXG4gICAgdmFyIHRvcCAgPSBlbGVtZW50WzFdICogaGVpZ2h0O1xyXG4gICAgdmFyIGxlZnQgPSBlbGVtZW50WzBdICogd2lkdGg7XHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgbmV3UGF0aCArPSBsZWZ0LnRvU3RyaW5nKCkrIFwiLFwiICsgdG9wLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBuZXdQYXRoICs9IFwiIEwgXCIgKyBsZWZ0LnRvU3RyaW5nKCkgKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRyYWlsLmxlbmd0aCA+IDApIHtcclxuICAgIHNldFBhdGhDYWxsYmFjayhuZXdQYXRoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFRvVHJhaWwgPSAoeCwgeSwgdHJhaWwpID0+IHtcclxuICBpZiAoIXRyYWlsLmluY2x1ZGVzKFt4LCB5XSkpIHtcclxuICAgIHRyYWlsLnB1c2goW3gsIHldKTtcclxuICB9XHJcbn0iXSwibmFtZXMiOlsidXBkYXRlVHJhaWwiLCJ0cmFpbCIsInNldFBhdGhDYWxsYmFjayIsImhlaWdodCIsIndpZHRoIiwibmV3UGF0aCIsImluZGV4IiwibGVuZ3RoIiwiZWxlbWVudCIsInRvcCIsImxlZnQiLCJ0b1N0cmluZyIsInVwZGF0ZVBhdGgiLCJhZGRUb1RyYWlsIiwieCIsInkiLCJpbmNsdWRlcyIsInB1c2giXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3898.b7d238e3.js b/react_frontend/static/react_frontend/js/3898.b7d238e3.js new file mode 100644 index 000000000..0ac804810 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3898.b7d238e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3898],{3898:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/3915.018529c2.js b/react_frontend/static/react_frontend/js/3915.018529c2.js new file mode 100644 index 000000000..2b8aaab58 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3915.018529c2.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3915],{7419:(e,n,t)=>{t.d(n,{A:()=>h});var o=t(8587),r=t(8168),i=t(6540),a=t(53),s=t(5659),l=t(7577),c=t(4409),d=t(973),u=t(8413),p=t(1609);function f(e){return(0,p.A)("MuiBackdrop",e)}(0,u.A)("MuiBackdrop",["root","invisible"]);var v=t(4848);const m=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],b=(0,l.Ay)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:t}=e;return[n.root,t.invisible&&n.invisible]}})((({ownerState:e})=>(0,r.A)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},e.invisible&&{backgroundColor:"transparent"}))),h=i.forwardRef((function(e,n){var t,i,l;const u=(0,c.A)({props:e,name:"MuiBackdrop"}),{children:p,className:h,component:A="div",components:E={},componentsProps:y={},invisible:g=!1,open:k,slotProps:x={},slots:R={},TransitionComponent:w=d.A,transitionDuration:T}=u,P=(0,o.A)(u,m),S=(0,r.A)({},u,{component:A,invisible:g}),C=(e=>{const{classes:n,invisible:t}=e,o={root:["root",t&&"invisible"]};return(0,s.A)(o,f,n)})(S),N=null!=(t=x.root)?t:y.root;return(0,v.jsx)(w,(0,r.A)({in:k,timeout:T},P,{children:(0,v.jsx)(b,(0,r.A)({"aria-hidden":!0},N,{as:null!=(i=null!=(l=R.root)?l:E.Root)?i:A,className:(0,a.A)(C.root,h,null==N?void 0:N.className),ownerState:(0,r.A)({},S,null==N?void 0:N.ownerState),classes:C,ref:n,children:p}))}))}))},973:(e,n,t)=>{t.d(n,{A:()=>f});var o=t(8168),r=t(8587),i=t(6540),a=t(7353),s=t(4675),l=t(5186),c=t(6852),d=t(4848);const u=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],p={entering:{opacity:1},entered:{opacity:1}},f=i.forwardRef((function(e,n){const t=(0,s.A)(),f={enter:t.transitions.duration.enteringScreen,exit:t.transitions.duration.leavingScreen},{addEndListener:v,appear:m=!0,children:b,easing:h,in:A,onEnter:E,onEntered:y,onEntering:g,onExit:k,onExited:x,onExiting:R,style:w,timeout:T=f,TransitionComponent:P=a.Ay}=e,S=(0,r.A)(e,u),C=i.useRef(null),N=(0,c.A)(C,b.ref,n),F=e=>n=>{if(e){const t=C.current;void 0===n?e(t):e(t,n)}},M=F(g),I=F(((e,n)=>{(0,l.q)(e);const o=(0,l.c)({style:w,timeout:T,easing:h},{mode:"enter"});e.style.webkitTransition=t.transitions.create("opacity",o),e.style.transition=t.transitions.create("opacity",o),E&&E(e,n)})),B=F(y),L=F(R),O=F((e=>{const n=(0,l.c)({style:w,timeout:T,easing:h},{mode:"exit"});e.style.webkitTransition=t.transitions.create("opacity",n),e.style.transition=t.transitions.create("opacity",n),k&&k(e)})),D=F(x);return(0,d.jsx)(P,(0,o.A)({appear:m,in:A,nodeRef:C,onEnter:I,onEntered:B,onEntering:M,onExit:O,onExited:D,onExiting:L,addEndListener:e=>{v&&v(C.current,e)},timeout:T},S,{children:(e,n)=>i.cloneElement(b,(0,o.A)({style:(0,o.A)({opacity:0,visibility:"exited"!==e||A?void 0:"hidden"},p[e],w,b.props.style),ref:N},n))}))}))},3466:(e,n,t)=>{t.d(n,{A:()=>q});var o=t(8587),r=t(8168),i=t(6540),a=t(53),s=t(1523),l=t(2325),c=t(1547),d=t(1210),u=t(5659),p=t(3493),f=t(4877),v=t(2539);function m(e,n){n?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function b(e){return parseInt((0,f.A)(e).getComputedStyle(e).paddingRight,10)||0}function h(e,n,t,o,r){const i=[n,t,...o];[].forEach.call(e.children,(e=>{const n=-1===i.indexOf(e),t=!function(e){const n=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),t="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return n||t}(e);n&&t&&m(e,r)}))}function A(e,n){let t=-1;return e.some(((e,o)=>!!n(e)&&(t=o,!0))),t}var E=t(4848);const y=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function g(e){const n=[],t=[];return Array.from(e.querySelectorAll(y)).forEach(((e,o)=>{const r=function(e){const n=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(n)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:n}(e);-1!==r&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const n=n=>e.ownerDocument.querySelector(`input[type="radio"]${n}`);let t=n(`[name="${e.name}"]:checked`);return t||(t=n(`[name="${e.name}"]`)),t!==e}(e))}(e)&&(0===r?n.push(e):t.push({documentOrder:o,tabIndex:r,node:e}))})),t.sort(((e,n)=>e.tabIndex===n.tabIndex?e.documentOrder-n.documentOrder:e.tabIndex-n.tabIndex)).map((e=>e.node)).concat(n)}function k(){return!0}const x=function(e){const{children:n,disableAutoFocus:t=!1,disableEnforceFocus:o=!1,disableRestoreFocus:r=!1,getTabbable:a=g,isEnabled:c=k,open:d}=e,u=i.useRef(!1),p=i.useRef(null),f=i.useRef(null),v=i.useRef(null),m=i.useRef(null),b=i.useRef(!1),h=i.useRef(null),A=(0,s.A)(n.ref,h),y=i.useRef(null);i.useEffect((()=>{d&&h.current&&(b.current=!t)}),[t,d]),i.useEffect((()=>{if(!d||!h.current)return;const e=(0,l.A)(h.current);return h.current.contains(e.activeElement)||(h.current.hasAttribute("tabIndex")||h.current.setAttribute("tabIndex","-1"),b.current&&h.current.focus()),()=>{r||(v.current&&v.current.focus&&(u.current=!0,v.current.focus()),v.current=null)}}),[d]),i.useEffect((()=>{if(!d||!h.current)return;const e=(0,l.A)(h.current),n=n=>{const{current:t}=h;if(null!==t)if(e.hasFocus()&&!o&&c()&&!u.current){if(!t.contains(e.activeElement)){if(n&&m.current!==n.target||e.activeElement!==m.current)m.current=null;else if(null!==m.current)return;if(!b.current)return;let o=[];if(e.activeElement!==p.current&&e.activeElement!==f.current||(o=a(h.current)),o.length>0){var r,i;const e=Boolean((null==(r=y.current)?void 0:r.shiftKey)&&"Tab"===(null==(i=y.current)?void 0:i.key)),n=o[0],t=o[o.length-1];"string"!=typeof n&&"string"!=typeof t&&(e?t.focus():n.focus())}else t.focus()}}else u.current=!1},t=n=>{y.current=n,!o&&c()&&"Tab"===n.key&&e.activeElement===h.current&&n.shiftKey&&(u.current=!0,f.current&&f.current.focus())};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const r=setInterval((()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n(null)}),50);return()=>{clearInterval(r),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}}),[t,o,r,c,d,a]);const x=e=>{null===v.current&&(v.current=e.relatedTarget),b.current=!0};return(0,E.jsxs)(i.Fragment,{children:[(0,E.jsx)("div",{tabIndex:d?0:-1,onFocus:x,ref:p,"data-testid":"sentinelStart"}),i.cloneElement(n,{ref:A,onFocus:e=>{null===v.current&&(v.current=e.relatedTarget),b.current=!0,m.current=e.target;const t=n.props.onFocus;t&&t(e)}}),(0,E.jsx)("div",{tabIndex:d?0:-1,onFocus:x,ref:f,"data-testid":"sentinelEnd"})]})};var R=t(8413),w=t(1609);function T(e){return(0,w.A)("MuiModal",e)}(0,R.A)("MuiModal",["root","hidden","backdrop"]);var P=t(9977),S=t(3636);const C=["children","closeAfterTransition","container","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","manager","onBackdropClick","onClose","onKeyDown","open","onTransitionEnter","onTransitionExited","slotProps","slots"],N=new class{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,n){let t=this.modals.indexOf(e);if(-1!==t)return t;t=this.modals.length,this.modals.push(e),e.modalRef&&m(e.modalRef,!1);const o=function(e){const n=[];return[].forEach.call(e.children,(e=>{"true"===e.getAttribute("aria-hidden")&&n.push(e)})),n}(n);h(n,e.mount,e.modalRef,o,!0);const r=A(this.containers,(e=>e.container===n));return-1!==r?(this.containers[r].modals.push(e),t):(this.containers.push({modals:[e],container:n,restore:null,hiddenSiblings:o}),t)}mount(e,n){const t=A(this.containers,(n=>-1!==n.modals.indexOf(e))),o=this.containers[t];o.restore||(o.restore=function(e,n){const t=[],o=e.container;if(!n.disableScrollLock){if(function(e){const n=(0,l.A)(e);return n.body===e?(0,f.A)(e).innerWidth>n.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(o)){const e=(0,v.A)((0,l.A)(o));t.push({value:o.style.paddingRight,property:"padding-right",el:o}),o.style.paddingRight=`${b(o)+e}px`;const n=(0,l.A)(o).querySelectorAll(".mui-fixed");[].forEach.call(n,(n=>{t.push({value:n.style.paddingRight,property:"padding-right",el:n}),n.style.paddingRight=`${b(n)+e}px`}))}let e;if(o.parentNode instanceof DocumentFragment)e=(0,l.A)(o).body;else{const n=o.parentElement,t=(0,f.A)(o);e="HTML"===(null==n?void 0:n.nodeName)&&"scroll"===t.getComputedStyle(n).overflowY?n:o}t.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{t.forEach((({value:e,el:n,property:t})=>{e?n.style.setProperty(t,e):n.style.removeProperty(t)}))}}(o,n))}remove(e,n=!0){const t=this.modals.indexOf(e);if(-1===t)return t;const o=A(this.containers,(n=>-1!==n.modals.indexOf(e))),r=this.containers[o];if(r.modals.splice(r.modals.indexOf(e),1),this.modals.splice(t,1),0===r.modals.length)r.restore&&r.restore(),e.modalRef&&m(e.modalRef,n),h(r.container,e.mount,e.modalRef,r.hiddenSiblings,!1),this.containers.splice(o,1);else{const e=r.modals[r.modals.length-1];e.modalRef&&m(e.modalRef,!1)}return t}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}},F=i.forwardRef((function(e,n){var t,a;const{children:f,closeAfterTransition:v=!1,container:b,disableAutoFocus:h=!1,disableEnforceFocus:A=!1,disableEscapeKeyDown:y=!1,disablePortal:g=!1,disableRestoreFocus:k=!1,disableScrollLock:R=!1,hideBackdrop:w=!1,keepMounted:F=!1,manager:M=N,onBackdropClick:I,onClose:B,onKeyDown:L,open:O,onTransitionEnter:D,onTransitionExited:j,slotProps:K={},slots:q={}}=e,$=(0,o.A)(e,C),U=M,[W,H]=i.useState(!O),Y=i.useRef({}),z=i.useRef(null),X=i.useRef(null),V=(0,s.A)(X,n),_=function(e){return!!e&&e.props.hasOwnProperty("in")}(f),G=null==(t=e["aria-hidden"])||t,J=()=>(Y.current.modalRef=X.current,Y.current.mountNode=z.current,Y.current),Q=()=>{U.mount(J(),{disableScrollLock:R}),X.current&&(X.current.scrollTop=0)},Z=(0,c.A)((()=>{const e=function(e){return"function"==typeof e?e():e}(b)||(0,l.A)(z.current).body;U.add(J(),e),X.current&&Q()})),ee=i.useCallback((()=>U.isTopModal(J())),[U]),ne=(0,c.A)((e=>{z.current=e,e&&X.current&&(O&&ee()?Q():m(X.current,G))})),te=i.useCallback((()=>{U.remove(J(),G)}),[U,G]);i.useEffect((()=>()=>{te()}),[te]),i.useEffect((()=>{O?Z():_&&v||te()}),[O,te,_,v,Z]);const oe=(0,r.A)({},e,{closeAfterTransition:v,disableAutoFocus:h,disableEnforceFocus:A,disableEscapeKeyDown:y,disablePortal:g,disableRestoreFocus:k,disableScrollLock:R,exited:W,hideBackdrop:w,keepMounted:F}),re=(e=>{const{open:n,exited:t}=e,o={root:["root",!n&&t&&"hidden"],backdrop:["backdrop"]};return(0,u.A)(o,(0,S.W)(T))})(oe),ie={};void 0===f.props.tabIndex&&(ie.tabIndex="-1"),_&&(ie.onEnter=(0,d.A)((()=>{H(!1),D&&D()}),f.props.onEnter),ie.onExited=(0,d.A)((()=>{H(!0),j&&j(),v&&te()}),f.props.onExited));const ae=null!=(a=q.root)?a:"div",se=(0,P.A)({elementType:ae,externalSlotProps:K.root,externalForwardedProps:$,additionalProps:{ref:V,role:"presentation",onKeyDown:e=>{L&&L(e),"Escape"===e.key&&ee()&&(y||(e.stopPropagation(),B&&B(e,"escapeKeyDown")))}},className:re.root,ownerState:oe}),le=q.backdrop,ce=(0,P.A)({elementType:le,externalSlotProps:K.backdrop,additionalProps:{"aria-hidden":!0,onClick:e=>{e.target===e.currentTarget&&(I&&I(e),B&&B(e,"backdropClick"))},open:O},className:re.backdrop,ownerState:oe});return F||O||_&&!W?(0,E.jsx)(p.A,{ref:ne,container:b,disablePortal:g,children:(0,E.jsxs)(ae,(0,r.A)({},se,{children:[!w&&le?(0,E.jsx)(le,(0,r.A)({},ce)):null,(0,E.jsx)(x,{disableEnforceFocus:A,disableAutoFocus:h,disableRestoreFocus:k,isEnabled:ee,open:O,children:i.cloneElement(f,ie)})]}))}):null}));var M=t(5489),I=t(5419),B=t(7577),L=t(4409),O=t(7419);const D=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","open","slotProps","slots","theme"],j=(0,B.Ay)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:t}=e;return[n.root,!t.open&&t.exited&&n.hidden]}})((({theme:e,ownerState:n})=>(0,r.A)({position:"fixed",zIndex:(e.vars||e).zIndex.modal,right:0,bottom:0,top:0,left:0},!n.open&&n.exited&&{visibility:"hidden"}))),K=(0,B.Ay)(O.A,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,n)=>n.backdrop})({zIndex:-1}),q=i.forwardRef((function(e,n){var t,s,l,c,d,u;const p=(0,L.A)({name:"MuiModal",props:e}),{BackdropComponent:f=K,BackdropProps:v,classes:m,className:b,closeAfterTransition:h=!1,children:A,container:y,component:g,components:k={},componentsProps:x={},disableAutoFocus:R=!1,disableEnforceFocus:w=!1,disableEscapeKeyDown:T=!1,disablePortal:P=!1,disableRestoreFocus:S=!1,disableScrollLock:C=!1,hideBackdrop:N=!1,keepMounted:B=!1,onBackdropClick:O,onClose:q,open:$,slotProps:U,slots:W,theme:H}=p,Y=(0,o.A)(p,D),[z,X]=i.useState(!0),V={container:y,closeAfterTransition:h,disableAutoFocus:R,disableEnforceFocus:w,disableEscapeKeyDown:T,disablePortal:P,disableRestoreFocus:S,disableScrollLock:C,hideBackdrop:N,keepMounted:B,onBackdropClick:O,onClose:q,open:$},_=(0,r.A)({},p,V,{exited:z}),G=null!=(t=null!=(s=null==W?void 0:W.root)?s:k.Root)?t:j,J=null!=(l=null!=(c=null==W?void 0:W.backdrop)?c:k.Backdrop)?l:f,Q=null!=(d=null==U?void 0:U.root)?d:x.root,Z=null!=(u=null==U?void 0:U.backdrop)?u:x.backdrop;return(0,E.jsx)(F,(0,r.A)({slots:{root:G,backdrop:J},slotProps:{root:()=>(0,r.A)({},(0,M.A)(Q,_),!(0,I.A)(G)&&{as:g,theme:H},{className:(0,a.A)(b,null==Q?void 0:Q.className,null==m?void 0:m.root,!_.open&&_.exited&&(null==m?void 0:m.hidden))}),backdrop:()=>(0,r.A)({},v,(0,M.A)(Z,_),{className:(0,a.A)(null==Z?void 0:Z.className,null==v?void 0:v.className,null==m?void 0:m.backdrop)})},onTransitionEnter:()=>X(!1),onTransitionExited:()=>X(!0),ref:n},Y,V,{children:A}))}))},538:(e,n,t)=>{t.d(n,{A:()=>A});var o=t(8587),r=t(8168),i=t(6540),a=t(53),s=t(5659),l=t(4279),c=t(7577);const d=e=>{let n;return n=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(n/100).toFixed(2)};var u=t(4409),p=t(8413),f=t(1609);function v(e){return(0,f.A)("MuiPaper",e)}(0,p.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var m=t(4848);const b=["className","component","elevation","square","variant"],h=(0,c.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,n)=>{const{ownerState:t}=e;return[n.root,n[t.variant],!t.square&&n.rounded,"elevation"===t.variant&&n[`elevation${t.elevation}`]]}})((({theme:e,ownerState:n})=>{var t;return(0,r.A)({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!n.square&&{borderRadius:e.shape.borderRadius},"outlined"===n.variant&&{border:`1px solid ${(e.vars||e).palette.divider}`},"elevation"===n.variant&&(0,r.A)({boxShadow:(e.vars||e).shadows[n.elevation]},!e.vars&&"dark"===e.palette.mode&&{backgroundImage:`linear-gradient(${(0,l.X4)("#fff",d(n.elevation))}, ${(0,l.X4)("#fff",d(n.elevation))})`},e.vars&&{backgroundImage:null==(t=e.vars.overlays)?void 0:t[n.elevation]}))})),A=i.forwardRef((function(e,n){const t=(0,u.A)({props:e,name:"MuiPaper"}),{className:i,component:l="div",elevation:c=1,square:d=!1,variant:p="elevation"}=t,f=(0,o.A)(t,b),A=(0,r.A)({},t,{component:l,elevation:c,square:d,variant:p}),E=(e=>{const{square:n,elevation:t,variant:o,classes:r}=e,i={root:["root",o,!n&&"rounded","elevation"===o&&`elevation${t}`]};return(0,s.A)(i,v,r)})(A);return(0,m.jsx)(h,(0,r.A)({as:l,ownerState:A,className:(0,a.A)(E.root,i),ref:n},f))}))},1210:(e,n,t)=>{function o(...e){return e.reduce(((e,n)=>null==n?e:function(...t){e.apply(this,t),n.apply(this,t)}),(()=>{}))}t.d(n,{A:()=>o})},2539:(e,n,t)=>{function o(e){const n=e.documentElement.clientWidth;return Math.abs(window.innerWidth-n)}t.d(n,{A:()=>o})},4877:(e,n,t)=>{t.d(n,{A:()=>r});var o=t(2325);function r(e){return(0,o.A)(e).defaultView||window}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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clAsRUFBWTFCLEdBRWxDLE9BRFksT0FBY0EsR0FDZmtSLGFBQWVELE1BQzVCLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0JhY2tkcm9wL2JhY2tkcm9wQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0JhY2tkcm9wL0JhY2tkcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRmFkZS9GYWRlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS9Nb2RhbC9Nb2RhbE1hbmFnZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL0ZvY3VzVHJhcC9Gb2N1c1RyYXAuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL01vZGFsL21vZGFsQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvTW9kYWwvTW9kYWwuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Nb2RhbC9Nb2RhbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9nZXRPdmVybGF5QWxwaGEuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9QYXBlci9wYXBlckNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9QYXBlci9QYXBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZ2V0U2Nyb2xsYmFyU2l6ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lcldpbmRvdy9vd25lcldpbmRvdy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFja2Ryb3BVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUJhY2tkcm9wJywgc2xvdCk7XG59XG5jb25zdCBiYWNrZHJvcENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCYWNrZHJvcCcsIFsncm9vdCcsICdpbnZpc2libGUnXSk7XG5leHBvcnQgZGVmYXVsdCBiYWNrZHJvcENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJjb21wb25lbnRzXCIsIFwiY29tcG9uZW50c1Byb3BzXCIsIFwiaW52aXNpYmxlXCIsIFwib3BlblwiLCBcInNsb3RQcm9wc1wiLCBcInNsb3RzXCIsIFwiVHJhbnNpdGlvbkNvbXBvbmVudFwiLCBcInRyYW5zaXRpb25EdXJhdGlvblwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgRmFkZSBmcm9tICcuLi9GYWRlJztcbmltcG9ydCB7IGdldEJhY2tkcm9wVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9iYWNrZHJvcENsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGludmlzaWJsZVxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgaW52aXNpYmxlICYmICdpbnZpc2libGUnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJhY2tkcm9wVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBCYWNrZHJvcFJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUJhY2tkcm9wJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuaW52aXNpYmxlICYmIHN0eWxlcy5pbnZpc2libGVdO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHBvc2l0aW9uOiAnZml4ZWQnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIHJpZ2h0OiAwLFxuICBib3R0b206IDAsXG4gIHRvcDogMCxcbiAgbGVmdDogMCxcbiAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjUpJyxcbiAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICd0cmFuc3BhcmVudCdcbn0sIG93bmVyU3RhdGUuaW52aXNpYmxlICYmIHtcbiAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG59KSk7XG5jb25zdCBCYWNrZHJvcCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJhY2tkcm9wKGluUHJvcHMsIHJlZikge1xuICB2YXIgX3Nsb3RQcm9wcyRyb290LCBfcmVmLCBfc2xvdHMkcm9vdDtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQmFja2Ryb3AnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgY29tcG9uZW50cyA9IHt9LFxuICAgICAgY29tcG9uZW50c1Byb3BzID0ge30sXG4gICAgICBpbnZpc2libGUgPSBmYWxzZSxcbiAgICAgIG9wZW4sXG4gICAgICBzbG90UHJvcHMgPSB7fSxcbiAgICAgIHNsb3RzID0ge30sXG4gICAgICBUcmFuc2l0aW9uQ29tcG9uZW50ID0gRmFkZSxcbiAgICAgIHRyYW5zaXRpb25EdXJhdGlvblxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGludmlzaWJsZVxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCByb290U2xvdFByb3BzID0gKF9zbG90UHJvcHMkcm9vdCA9IHNsb3RQcm9wcy5yb290KSAhPSBudWxsID8gX3Nsb3RQcm9wcyRyb290IDogY29tcG9uZW50c1Byb3BzLnJvb3Q7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgaW46IG9wZW4sXG4gICAgdGltZW91dDogdHJhbnNpdGlvbkR1cmF0aW9uXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEJhY2tkcm9wUm9vdCwgX2V4dGVuZHMoe1xuICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlXG4gICAgfSwgcm9vdFNsb3RQcm9wcywge1xuICAgICAgYXM6IChfcmVmID0gKF9zbG90cyRyb290ID0gc2xvdHMucm9vdCkgIT0gbnVsbCA/IF9zbG90cyRyb290IDogY29tcG9uZW50cy5Sb290KSAhPSBudWxsID8gX3JlZiA6IGNvbXBvbmVudCxcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSwgcm9vdFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogcm9vdFNsb3RQcm9wcy5jbGFzc05hbWUpLFxuICAgICAgb3duZXJTdGF0ZTogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUsIHJvb3RTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHJvb3RTbG90UHJvcHMub3duZXJTdGF0ZSksXG4gICAgICBjbGFzc2VzOiBjbGFzc2VzLFxuICAgICAgcmVmOiByZWYsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCYWNrZHJvcC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYHNsb3RzYCBwcm9wLlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgYHNsb3RzYCBwcm9wIGluc3RlYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIFJvb3Q6IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBleHRyYSBwcm9wcyBmb3IgdGhlIHNsb3QgY29tcG9uZW50cy5cbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcHJvcHMgb3IgYWRkIG5ldyBvbmVzLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgc2xvdFByb3BzYCBwcm9wLlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgYHNsb3RQcm9wc2AgcHJvcCBpbnN0ZWFkLCBhcyBgY29tcG9uZW50c1Byb3BzYCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbXBvbmVudHNQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICByb290OiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYmFja2Ryb3AgaXMgaW52aXNpYmxlLlxuICAgKiBJdCBjYW4gYmUgdXNlZCB3aGVuIHJlbmRlcmluZyBhIHBvcG92ZXIgb3IgYSBjdXN0b20gc2VsZWN0IGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGludmlzaWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2hvd24uXG4gICAqL1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIGV4dHJhIHByb3BzIGZvciB0aGUgc2xvdCBjb21wb25lbnRzLlxuICAgKiBZb3UgY2FuIG92ZXJyaWRlIHRoZSBleGlzdGluZyBwcm9wcyBvciBhZGQgbmV3IG9uZXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBjb21wb25lbnRzUHJvcHNgIHByb3AsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdFByb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHJvb3Q6IFByb3BUeXBlcy5vYmplY3RcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgY29tcG9uZW50c2AgcHJvcCwgd2hpY2ggd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICByb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSB0cmFuc2l0aW9uLlxuICAgKiBbRm9sbG93IHRoaXMgZ3VpZGVdKC9tYXRlcmlhbC11aS90cmFuc2l0aW9ucy8jdHJhbnNpdGlvbmNvbXBvbmVudC1wcm9wKSB0byBsZWFybiBtb3JlIGFib3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCBGYWRlXG4gICAqL1xuICBUcmFuc2l0aW9uQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gZm9yIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnMsIG9yIGluZGl2aWR1YWxseSB3aXRoIGFuIG9iamVjdC5cbiAgICovXG4gIHRyYW5zaXRpb25EdXJhdGlvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBhcHBlYXI6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZW50ZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZXhpdDogUHJvcFR5cGVzLm51bWJlclxuICB9KV0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQmFja2Ryb3A7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWRkRW5kTGlzdGVuZXJcIiwgXCJhcHBlYXJcIiwgXCJjaGlsZHJlblwiLCBcImVhc2luZ1wiLCBcImluXCIsIFwib25FbnRlclwiLCBcIm9uRW50ZXJlZFwiLCBcIm9uRW50ZXJpbmdcIiwgXCJvbkV4aXRcIiwgXCJvbkV4aXRlZFwiLCBcIm9uRXhpdGluZ1wiLCBcInN0eWxlXCIsIFwidGltZW91dFwiLCBcIlRyYW5zaXRpb25Db21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuaW1wb3J0IHsgZWxlbWVudEFjY2VwdGluZ1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZSc7XG5pbXBvcnQgeyByZWZsb3csIGdldFRyYW5zaXRpb25Qcm9wcyB9IGZyb20gJy4uL3RyYW5zaXRpb25zL3V0aWxzJztcbmltcG9ydCB1c2VGb3JrUmVmIGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZW50ZXJpbmc6IHtcbiAgICBvcGFjaXR5OiAxXG4gIH0sXG4gIGVudGVyZWQ6IHtcbiAgICBvcGFjaXR5OiAxXG4gIH1cbn07XG5cbi8qKlxuICogVGhlIEZhZGUgdHJhbnNpdGlvbiBpcyB1c2VkIGJ5IHRoZSBbTW9kYWxdKC9tYXRlcmlhbC11aS9yZWFjdC1tb2RhbC8pIGNvbXBvbmVudC5cbiAqIEl0IHVzZXMgW3JlYWN0LXRyYW5zaXRpb24tZ3JvdXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXApIGludGVybmFsbHkuXG4gKi9cbmNvbnN0IEZhZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBGYWRlKHByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBkZWZhdWx0VGltZW91dCA9IHtcbiAgICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlblxuICB9O1xuICBjb25zdCB7XG4gICAgICBhZGRFbmRMaXN0ZW5lcixcbiAgICAgIGFwcGVhciA9IHRydWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGVhc2luZyxcbiAgICAgIGluOiBpblByb3AsXG4gICAgICBvbkVudGVyLFxuICAgICAgb25FbnRlcmVkLFxuICAgICAgb25FbnRlcmluZyxcbiAgICAgIG9uRXhpdCxcbiAgICAgIG9uRXhpdGVkLFxuICAgICAgb25FeGl0aW5nLFxuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0ID0gZGVmYXVsdFRpbWVvdXQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudCA9IFRyYW5zaXRpb25cbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgZW5hYmxlU3RyaWN0TW9kZUNvbXBhdCA9IHRydWU7XG4gIGNvbnN0IG5vZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYobm9kZVJlZiwgY2hpbGRyZW4ucmVmLCByZWYpO1xuICBjb25zdCBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrID0gY2FsbGJhY2sgPT4gbWF5YmVJc0FwcGVhcmluZyA9PiB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZVJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBvbkVudGVyWHh4IGFuZCBvbkV4aXRYeHggY2FsbGJhY2tzIGhhdmUgYSBkaWZmZXJlbnQgYXJndW1lbnRzLmxlbmd0aCB2YWx1ZS5cbiAgICAgIGlmIChtYXliZUlzQXBwZWFyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FsbGJhY2sobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhub2RlLCBtYXliZUlzQXBwZWFyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkVudGVyaW5nKTtcbiAgY29uc3QgaGFuZGxlRW50ZXIgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKChub2RlLCBpc0FwcGVhcmluZykgPT4ge1xuICAgIHJlZmxvdyhub2RlKTsgLy8gU28gdGhlIGFuaW1hdGlvbiBhbHdheXMgc3RhcnQgZnJvbSB0aGUgc3RhcnQuXG5cbiAgICBjb25zdCB0cmFuc2l0aW9uUHJvcHMgPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2VudGVyJ1xuICAgIH0pO1xuICAgIG5vZGUuc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnb3BhY2l0eScsIHRyYW5zaXRpb25Qcm9wcyk7XG4gICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBpZiAob25FbnRlcikge1xuICAgICAgb25FbnRlcihub2RlLCBpc0FwcGVhcmluZyk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRW50ZXJlZCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sob25FbnRlcmVkKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sob25FeGl0aW5nKTtcbiAgY29uc3QgaGFuZGxlRXhpdCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgY29uc3QgdHJhbnNpdGlvblByb3BzID0gZ2V0VHJhbnNpdGlvblByb3BzKHtcbiAgICAgIHN0eWxlLFxuICAgICAgdGltZW91dCxcbiAgICAgIGVhc2luZ1xuICAgIH0sIHtcbiAgICAgIG1vZGU6ICdleGl0J1xuICAgIH0pO1xuICAgIG5vZGUuc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnb3BhY2l0eScsIHRyYW5zaXRpb25Qcm9wcyk7XG4gICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBpZiAob25FeGl0KSB7XG4gICAgICBvbkV4aXQobm9kZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkV4aXRlZCk7XG4gIGNvbnN0IGhhbmRsZUFkZEVuZExpc3RlbmVyID0gbmV4dCA9PiB7XG4gICAgaWYgKGFkZEVuZExpc3RlbmVyKSB7XG4gICAgICAvLyBPbGQgY2FsbCBzaWduYXR1cmUgYmVmb3JlIGByZWFjdC10cmFuc2l0aW9uLWdyb3VwYCBpbXBsZW1lbnRlZCBgbm9kZVJlZmBcbiAgICAgIGFkZEVuZExpc3RlbmVyKG5vZGVSZWYuY3VycmVudCwgbmV4dCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkNvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgIGFwcGVhcjogYXBwZWFyLFxuICAgIGluOiBpblByb3AsXG4gICAgbm9kZVJlZjogZW5hYmxlU3RyaWN0TW9kZUNvbXBhdCA/IG5vZGVSZWYgOiB1bmRlZmluZWQsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBhZGRFbmRMaXN0ZW5lcjogaGFuZGxlQWRkRW5kTGlzdGVuZXIsXG4gICAgdGltZW91dDogdGltZW91dFxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAoc3RhdGUsIGNoaWxkUHJvcHMpID0+IHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBfZXh0ZW5kcyh7XG4gICAgICAgIHN0eWxlOiBfZXh0ZW5kcyh7XG4gICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZSA9PT0gJ2V4aXRlZCcgJiYgIWluUHJvcCA/ICdoaWRkZW4nIDogdW5kZWZpbmVkXG4gICAgICAgIH0sIHN0eWxlc1tzdGF0ZV0sIHN0eWxlLCBjaGlsZHJlbi5wcm9wcy5zdHlsZSksXG4gICAgICAgIHJlZjogaGFuZGxlUmVmXG4gICAgICB9LCBjaGlsZFByb3BzKSk7XG4gICAgfVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEZhZGUucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIHRyYW5zaXRpb24gZW5kIHRyaWdnZXIuIENhbGxlZCB3aXRoIHRoZSB0cmFuc2l0aW9uaW5nIERPTVxuICAgKiBub2RlIGFuZCBhIGRvbmUgY2FsbGJhY2suIEFsbG93cyBmb3IgbW9yZSBmaW5lIGdyYWluZWQgdHJhbnNpdGlvbiBlbmRcbiAgICogbG9naWMuIE5vdGU6IFRpbWVvdXRzIGFyZSBzdGlsbCB1c2VkIGFzIGEgZmFsbGJhY2sgaWYgcHJvdmlkZWQuXG4gICAqL1xuICBhZGRFbmRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBlbnRlciB0cmFuc2l0aW9uIHdoZW4gaXQgZmlyc3QgbW91bnRzIGlmIGBpbmAgaXMgYWxzbyBgdHJ1ZWAuXG4gICAqIFNldCB0aGlzIHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGlzIGJlaGF2aW9yLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhcHBlYXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQSBzaW5nbGUgY2hpbGQgY29udGVudCBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IGVsZW1lbnRBY2NlcHRpbmdSZWYuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbi5cbiAgICogWW91IG1heSBzcGVjaWZ5IGEgc2luZ2xlIGVhc2luZyBvciBhIG9iamVjdCBjb250YWluaW5nIGVudGVyIGFuZCBleGl0IHZhbHVlcy5cbiAgICovXG4gIGVhc2luZzogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBlbnRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGl0OiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgd2lsbCB0cmFuc2l0aW9uIGluLlxuICAgKi9cbiAgaW46IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FbnRlcmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FeGl0aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGZvciB0aGUgdHJhbnNpdGlvbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zLCBvciBpbmRpdmlkdWFsbHkgd2l0aCBhbiBvYmplY3QuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAqICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlbixcbiAgICogfVxuICAgKi9cbiAgdGltZW91dDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBhcHBlYXI6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZW50ZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZXhpdDogUHJvcFR5cGVzLm51bWJlclxuICB9KV0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRmFkZTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9vd25lcldpbmRvdyBhcyBvd25lcldpbmRvdywgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50LCB1bnN0YWJsZV9nZXRTY3JvbGxiYXJTaXplIGFzIGdldFNjcm9sbGJhclNpemUgfSBmcm9tICdAbXVpL3V0aWxzJztcbi8vIElzIGEgdmVydGljYWwgc2Nyb2xsYmFyIGRpc3BsYXllZD9cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dpbmcoY29udGFpbmVyKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQoY29udGFpbmVyKTtcbiAgaWYgKGRvYy5ib2R5ID09PSBjb250YWluZXIpIHtcbiAgICByZXR1cm4gb3duZXJXaW5kb3coY29udGFpbmVyKS5pbm5lcldpZHRoID4gZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuICByZXR1cm4gY29udGFpbmVyLnNjcm9sbEhlaWdodCA+IGNvbnRhaW5lci5jbGllbnRIZWlnaHQ7XG59XG5leHBvcnQgZnVuY3Rpb24gYXJpYUhpZGRlbihlbGVtZW50LCBzaG93KSB7XG4gIGlmIChzaG93KSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgfSBlbHNlIHtcbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0UGFkZGluZ1JpZ2h0KGVsZW1lbnQpIHtcbiAgcmV0dXJuIHBhcnNlSW50KG93bmVyV2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucGFkZGluZ1JpZ2h0LCAxMCkgfHwgMDtcbn1cbmZ1bmN0aW9uIGlzQXJpYUhpZGRlbkZvcmJpZGRlbk9uRWxlbWVudChlbGVtZW50KSB7XG4gIC8vIFRoZSBmb3JiaWRkZW4gSFRNTCB0YWdzIGFyZSB0aGUgb25lcyBmcm9tIEFSSUEgc3BlY2lmaWNhdGlvbiB0aGF0XG4gIC8vIGNhbiBiZSBjaGlsZHJlbiBvZiBib2R5IGFuZCBjYW4ndCBoYXZlIGFyaWEtaGlkZGVuIGF0dHJpYnV0ZS5cbiAgLy8gY2YuIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sLWFyaWEvI2RvY2NvbmZvcm1hbmNlXG4gIGNvbnN0IGZvcmJpZGRlblRhZ05hbWVzID0gWydURU1QTEFURScsICdTQ1JJUFQnLCAnU1RZTEUnLCAnTElOSycsICdNQVAnLCAnTUVUQScsICdOT1NDUklQVCcsICdQSUNUVVJFJywgJ0NPTCcsICdDT0xHUk9VUCcsICdQQVJBTScsICdTTE9UJywgJ1NPVVJDRScsICdUUkFDSyddO1xuICBjb25zdCBpc0ZvcmJpZGRlblRhZ05hbWUgPSBmb3JiaWRkZW5UYWdOYW1lcy5pbmRleE9mKGVsZW1lbnQudGFnTmFtZSkgIT09IC0xO1xuICBjb25zdCBpc0lucHV0SGlkZGVuID0gZWxlbWVudC50YWdOYW1lID09PSAnSU5QVVQnICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCd0eXBlJykgPT09ICdoaWRkZW4nO1xuICByZXR1cm4gaXNGb3JiaWRkZW5UYWdOYW1lIHx8IGlzSW5wdXRIaWRkZW47XG59XG5mdW5jdGlvbiBhcmlhSGlkZGVuU2libGluZ3MoY29udGFpbmVyLCBtb3VudEVsZW1lbnQsIGN1cnJlbnRFbGVtZW50LCBlbGVtZW50c1RvRXhjbHVkZSwgc2hvdykge1xuICBjb25zdCBibGFja2xpc3QgPSBbbW91bnRFbGVtZW50LCBjdXJyZW50RWxlbWVudCwgLi4uZWxlbWVudHNUb0V4Y2x1ZGVdO1xuICBbXS5mb3JFYWNoLmNhbGwoY29udGFpbmVyLmNoaWxkcmVuLCBlbGVtZW50ID0+IHtcbiAgICBjb25zdCBpc05vdEV4Y2x1ZGVkRWxlbWVudCA9IGJsYWNrbGlzdC5pbmRleE9mKGVsZW1lbnQpID09PSAtMTtcbiAgICBjb25zdCBpc05vdEZvcmJpZGRlbkVsZW1lbnQgPSAhaXNBcmlhSGlkZGVuRm9yYmlkZGVuT25FbGVtZW50KGVsZW1lbnQpO1xuICAgIGlmIChpc05vdEV4Y2x1ZGVkRWxlbWVudCAmJiBpc05vdEZvcmJpZGRlbkVsZW1lbnQpIHtcbiAgICAgIGFyaWFIaWRkZW4oZWxlbWVudCwgc2hvdyk7XG4gICAgfVxuICB9KTtcbn1cbmZ1bmN0aW9uIGZpbmRJbmRleE9mKGl0ZW1zLCBjYWxsYmFjaykge1xuICBsZXQgaWR4ID0gLTE7XG4gIGl0ZW1zLnNvbWUoKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgaWYgKGNhbGxiYWNrKGl0ZW0pKSB7XG4gICAgICBpZHggPSBpbmRleDtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xuICByZXR1cm4gaWR4O1xufVxuZnVuY3Rpb24gaGFuZGxlQ29udGFpbmVyKGNvbnRhaW5lckluZm8sIHByb3BzKSB7XG4gIGNvbnN0IHJlc3RvcmVTdHlsZSA9IFtdO1xuICBjb25zdCBjb250YWluZXIgPSBjb250YWluZXJJbmZvLmNvbnRhaW5lcjtcbiAgaWYgKCFwcm9wcy5kaXNhYmxlU2Nyb2xsTG9jaykge1xuICAgIGlmIChpc092ZXJmbG93aW5nKGNvbnRhaW5lcikpIHtcbiAgICAgIC8vIENvbXB1dGUgdGhlIHNpemUgYmVmb3JlIGFwcGx5aW5nIG92ZXJmbG93IGhpZGRlbiB0byBhdm9pZCBhbnkgc2Nyb2xsIGp1bXBzLlxuICAgICAgY29uc3Qgc2Nyb2xsYmFyU2l6ZSA9IGdldFNjcm9sbGJhclNpemUob3duZXJEb2N1bWVudChjb250YWluZXIpKTtcbiAgICAgIHJlc3RvcmVTdHlsZS5wdXNoKHtcbiAgICAgICAgdmFsdWU6IGNvbnRhaW5lci5zdHlsZS5wYWRkaW5nUmlnaHQsXG4gICAgICAgIHByb3BlcnR5OiAncGFkZGluZy1yaWdodCcsXG4gICAgICAgIGVsOiBjb250YWluZXJcbiAgICAgIH0pO1xuICAgICAgLy8gVXNlIGNvbXB1dGVkIHN0eWxlLCBoZXJlIHRvIGdldCB0aGUgcmVhbCBwYWRkaW5nIHRvIGFkZCBvdXIgc2Nyb2xsYmFyIHdpZHRoLlxuICAgICAgY29udGFpbmVyLnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke2dldFBhZGRpbmdSaWdodChjb250YWluZXIpICsgc2Nyb2xsYmFyU2l6ZX1weGA7XG5cbiAgICAgIC8vIC5tdWktZml4ZWQgaXMgYSBnbG9iYWwgaGVscGVyLlxuICAgICAgY29uc3QgZml4ZWRFbGVtZW50cyA9IG93bmVyRG9jdW1lbnQoY29udGFpbmVyKS5xdWVyeVNlbGVjdG9yQWxsKCcubXVpLWZpeGVkJyk7XG4gICAgICBbXS5mb3JFYWNoLmNhbGwoZml4ZWRFbGVtZW50cywgZWxlbWVudCA9PiB7XG4gICAgICAgIHJlc3RvcmVTdHlsZS5wdXNoKHtcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQsXG4gICAgICAgICAgcHJvcGVydHk6ICdwYWRkaW5nLXJpZ2h0JyxcbiAgICAgICAgICBlbDogZWxlbWVudFxuICAgICAgICB9KTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHtnZXRQYWRkaW5nUmlnaHQoZWxlbWVudCkgKyBzY3JvbGxiYXJTaXplfXB4YDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgc2Nyb2xsQ29udGFpbmVyO1xuICAgIGlmIChjb250YWluZXIucGFyZW50Tm9kZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICAgIHNjcm9sbENvbnRhaW5lciA9IG93bmVyRG9jdW1lbnQoY29udGFpbmVyKS5ib2R5O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJbXByb3ZlIEdhdHNieSBzdXBwb3J0XG4gICAgICAvLyBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL2Nzcy9mb3JjZS12ZXJ0aWNhbC1zY3JvbGxiYXIvXG4gICAgICBjb25zdCBwYXJlbnQgPSBjb250YWluZXIucGFyZW50RWxlbWVudDtcbiAgICAgIGNvbnN0IGNvbnRhaW5lcldpbmRvdyA9IG93bmVyV2luZG93KGNvbnRhaW5lcik7XG4gICAgICBzY3JvbGxDb250YWluZXIgPSAocGFyZW50ID09IG51bGwgPyB2b2lkIDAgOiBwYXJlbnQubm9kZU5hbWUpID09PSAnSFRNTCcgJiYgY29udGFpbmVyV2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KS5vdmVyZmxvd1kgPT09ICdzY3JvbGwnID8gcGFyZW50IDogY29udGFpbmVyO1xuICAgIH1cblxuICAgIC8vIEJsb2NrIHRoZSBzY3JvbGwgZXZlbiBpZiBubyBzY3JvbGxiYXIgaXMgdmlzaWJsZSB0byBhY2NvdW50IGZvciBtb2JpbGUga2V5Ym9hcmRcbiAgICAvLyBzY3JlZW5zaXplIHNocmluay5cbiAgICByZXN0b3JlU3R5bGUucHVzaCh7XG4gICAgICB2YWx1ZTogc2Nyb2xsQ29udGFpbmVyLnN0eWxlLm92ZXJmbG93LFxuICAgICAgcHJvcGVydHk6ICdvdmVyZmxvdycsXG4gICAgICBlbDogc2Nyb2xsQ29udGFpbmVyXG4gICAgfSwge1xuICAgICAgdmFsdWU6IHNjcm9sbENvbnRhaW5lci5zdHlsZS5vdmVyZmxvd1gsXG4gICAgICBwcm9wZXJ0eTogJ292ZXJmbG93LXgnLFxuICAgICAgZWw6IHNjcm9sbENvbnRhaW5lclxuICAgIH0sIHtcbiAgICAgIHZhbHVlOiBzY3JvbGxDb250YWluZXIuc3R5bGUub3ZlcmZsb3dZLFxuICAgICAgcHJvcGVydHk6ICdvdmVyZmxvdy15JyxcbiAgICAgIGVsOiBzY3JvbGxDb250YWluZXJcbiAgICB9KTtcbiAgICBzY3JvbGxDb250YWluZXIuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgfVxuICBjb25zdCByZXN0b3JlID0gKCkgPT4ge1xuICAgIHJlc3RvcmVTdHlsZS5mb3JFYWNoKCh7XG4gICAgICB2YWx1ZSxcbiAgICAgIGVsLFxuICAgICAgcHJvcGVydHlcbiAgICB9KSA9PiB7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsLnN0eWxlLnJlbW92ZVByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgcmV0dXJuIHJlc3RvcmU7XG59XG5mdW5jdGlvbiBnZXRIaWRkZW5TaWJsaW5ncyhjb250YWluZXIpIHtcbiAgY29uc3QgaGlkZGVuU2libGluZ3MgPSBbXTtcbiAgW10uZm9yRWFjaC5jYWxsKGNvbnRhaW5lci5jaGlsZHJlbiwgZWxlbWVudCA9PiB7XG4gICAgaWYgKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicpID09PSAndHJ1ZScpIHtcbiAgICAgIGhpZGRlblNpYmxpbmdzLnB1c2goZWxlbWVudCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGhpZGRlblNpYmxpbmdzO1xufVxuLyoqXG4gKiBAaWdub3JlIC0gZG8gbm90IGRvY3VtZW50LlxuICpcbiAqIFByb3BlciBzdGF0ZSBtYW5hZ2VtZW50IGZvciBjb250YWluZXJzIGFuZCB0aGUgbW9kYWxzIGluIHRob3NlIGNvbnRhaW5lcnMuXG4gKiBTaW1wbGlmaWVkLCBidXQgaW5zcGlyZWQgYnkgcmVhY3Qtb3ZlcmxheSdzIE1vZGFsTWFuYWdlciBjbGFzcy5cbiAqIFVzZWQgYnkgdGhlIE1vZGFsIHRvIGVuc3VyZSBwcm9wZXIgc3R5bGluZyBvZiBjb250YWluZXJzLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNb2RhbE1hbmFnZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmNvbnRhaW5lcnMgPSB2b2lkIDA7XG4gICAgdGhpcy5tb2RhbHMgPSB2b2lkIDA7XG4gICAgdGhpcy5tb2RhbHMgPSBbXTtcbiAgICB0aGlzLmNvbnRhaW5lcnMgPSBbXTtcbiAgfVxuICBhZGQobW9kYWwsIGNvbnRhaW5lcikge1xuICAgIGxldCBtb2RhbEluZGV4ID0gdGhpcy5tb2RhbHMuaW5kZXhPZihtb2RhbCk7XG4gICAgaWYgKG1vZGFsSW5kZXggIT09IC0xKSB7XG4gICAgICByZXR1cm4gbW9kYWxJbmRleDtcbiAgICB9XG4gICAgbW9kYWxJbmRleCA9IHRoaXMubW9kYWxzLmxlbmd0aDtcbiAgICB0aGlzLm1vZGFscy5wdXNoKG1vZGFsKTtcblxuICAgIC8vIElmIHRoZSBtb2RhbCB3ZSBhcmUgYWRkaW5nIGlzIGFscmVhZHkgaW4gdGhlIERPTS5cbiAgICBpZiAobW9kYWwubW9kYWxSZWYpIHtcbiAgICAgIGFyaWFIaWRkZW4obW9kYWwubW9kYWxSZWYsIGZhbHNlKTtcbiAgICB9XG4gICAgY29uc3QgaGlkZGVuU2libGluZ3MgPSBnZXRIaWRkZW5TaWJsaW5ncyhjb250YWluZXIpO1xuICAgIGFyaWFIaWRkZW5TaWJsaW5ncyhjb250YWluZXIsIG1vZGFsLm1vdW50LCBtb2RhbC5tb2RhbFJlZiwgaGlkZGVuU2libGluZ3MsIHRydWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lckluZGV4ID0gZmluZEluZGV4T2YodGhpcy5jb250YWluZXJzLCBpdGVtID0+IGl0ZW0uY29udGFpbmVyID09PSBjb250YWluZXIpO1xuICAgIGlmIChjb250YWluZXJJbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuY29udGFpbmVyc1tjb250YWluZXJJbmRleF0ubW9kYWxzLnB1c2gobW9kYWwpO1xuICAgICAgcmV0dXJuIG1vZGFsSW5kZXg7XG4gICAgfVxuICAgIHRoaXMuY29udGFpbmVycy5wdXNoKHtcbiAgICAgIG1vZGFsczogW21vZGFsXSxcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIHJlc3RvcmU6IG51bGwsXG4gICAgICBoaWRkZW5TaWJsaW5nc1xuICAgIH0pO1xuICAgIHJldHVybiBtb2RhbEluZGV4O1xuICB9XG4gIG1vdW50KG1vZGFsLCBwcm9wcykge1xuICAgIGNvbnN0IGNvbnRhaW5lckluZGV4ID0gZmluZEluZGV4T2YodGhpcy5jb250YWluZXJzLCBpdGVtID0+IGl0ZW0ubW9kYWxzLmluZGV4T2YobW9kYWwpICE9PSAtMSk7XG4gICAgY29uc3QgY29udGFpbmVySW5mbyA9IHRoaXMuY29udGFpbmVyc1tjb250YWluZXJJbmRleF07XG4gICAgaWYgKCFjb250YWluZXJJbmZvLnJlc3RvcmUpIHtcbiAgICAgIGNvbnRhaW5lckluZm8ucmVzdG9yZSA9IGhhbmRsZUNvbnRhaW5lcihjb250YWluZXJJbmZvLCBwcm9wcyk7XG4gICAgfVxuICB9XG4gIHJlbW92ZShtb2RhbCwgYXJpYUhpZGRlblN0YXRlID0gdHJ1ZSkge1xuICAgIGNvbnN0IG1vZGFsSW5kZXggPSB0aGlzLm1vZGFscy5pbmRleE9mKG1vZGFsKTtcbiAgICBpZiAobW9kYWxJbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBtb2RhbEluZGV4O1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXJJbmRleCA9IGZpbmRJbmRleE9mKHRoaXMuY29udGFpbmVycywgaXRlbSA9PiBpdGVtLm1vZGFscy5pbmRleE9mKG1vZGFsKSAhPT0gLTEpO1xuICAgIGNvbnN0IGNvbnRhaW5lckluZm8gPSB0aGlzLmNvbnRhaW5lcnNbY29udGFpbmVySW5kZXhdO1xuICAgIGNvbnRhaW5lckluZm8ubW9kYWxzLnNwbGljZShjb250YWluZXJJbmZvLm1vZGFscy5pbmRleE9mKG1vZGFsKSwgMSk7XG4gICAgdGhpcy5tb2RhbHMuc3BsaWNlKG1vZGFsSW5kZXgsIDEpO1xuXG4gICAgLy8gSWYgdGhhdCB3YXMgdGhlIGxhc3QgbW9kYWwgaW4gYSBjb250YWluZXIsIGNsZWFuIHVwIHRoZSBjb250YWluZXIuXG4gICAgaWYgKGNvbnRhaW5lckluZm8ubW9kYWxzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgLy8gVGhlIG1vZGFsIG1pZ2h0IGJlIGNsb3NlZCBiZWZvcmUgaXQgaGFkIHRoZSBjaGFuY2UgdG8gYmUgbW91bnRlZCBpbiB0aGUgRE9NLlxuICAgICAgaWYgKGNvbnRhaW5lckluZm8ucmVzdG9yZSkge1xuICAgICAgICBjb250YWluZXJJbmZvLnJlc3RvcmUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2RhbC5tb2RhbFJlZikge1xuICAgICAgICAvLyBJbiBjYXNlIHRoZSBtb2RhbCB3YXNuJ3QgaW4gdGhlIERPTSB5ZXQuXG4gICAgICAgIGFyaWFIaWRkZW4obW9kYWwubW9kYWxSZWYsIGFyaWFIaWRkZW5TdGF0ZSk7XG4gICAgICB9XG4gICAgICBhcmlhSGlkZGVuU2libGluZ3MoY29udGFpbmVySW5mby5jb250YWluZXIsIG1vZGFsLm1vdW50LCBtb2RhbC5tb2RhbFJlZiwgY29udGFpbmVySW5mby5oaWRkZW5TaWJsaW5ncywgZmFsc2UpO1xuICAgICAgdGhpcy5jb250YWluZXJzLnNwbGljZShjb250YWluZXJJbmRleCwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE90aGVyd2lzZSBtYWtlIHN1cmUgdGhlIG5leHQgdG9wIG1vZGFsIGlzIHZpc2libGUgdG8gYSBzY3JlZW4gcmVhZGVyLlxuICAgICAgY29uc3QgbmV4dFRvcCA9IGNvbnRhaW5lckluZm8ubW9kYWxzW2NvbnRhaW5lckluZm8ubW9kYWxzLmxlbmd0aCAtIDFdO1xuICAgICAgLy8gYXMgc29vbiBhcyBhIG1vZGFsIGlzIGFkZGluZyBpdHMgbW9kYWxSZWYgaXMgdW5kZWZpbmVkLiBpdCBjYW4ndCBzZXRcbiAgICAgIC8vIGFyaWEtaGlkZGVuIGJlY2F1c2UgdGhlIGRvbSBlbGVtZW50IGRvZXNuJ3QgZXhpc3QgZWl0aGVyXG4gICAgICAvLyB3aGVuIG1vZGFsIHdhcyB1bm1vdW50ZWQgYmVmb3JlIG1vZGFsUmVmIGdldHMgbnVsbFxuICAgICAgaWYgKG5leHRUb3AubW9kYWxSZWYpIHtcbiAgICAgICAgYXJpYUhpZGRlbihuZXh0VG9wLm1vZGFsUmVmLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtb2RhbEluZGV4O1xuICB9XG4gIGlzVG9wTW9kYWwobW9kYWwpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RhbHMubGVuZ3RoID4gMCAmJiB0aGlzLm1vZGFsc1t0aGlzLm1vZGFscy5sZW5ndGggLSAxXSA9PT0gbW9kYWw7XG4gIH1cbn0iLCIndXNlIGNsaWVudCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbnNpc3RlbnQtcmV0dXJuLCBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS10YWJpbmRleCAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGV4YWN0UHJvcCwgZWxlbWVudEFjY2VwdGluZ1JlZiwgdW5zdGFibGVfdXNlRm9ya1JlZiBhcyB1c2VGb3JrUmVmLCB1bnN0YWJsZV9vd25lckRvY3VtZW50IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG4vLyBJbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vZm9jdXMtdHJhcC90YWJiYWJsZVxuY29uc3QgY2FuZGlkYXRlc1NlbGVjdG9yID0gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnLCAnYVtocmVmXScsICdidXR0b24nLCAnW3RhYmluZGV4XScsICdhdWRpb1tjb250cm9sc10nLCAndmlkZW9bY29udHJvbHNdJywgJ1tjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIl0pJ10uam9pbignLCcpO1xuZnVuY3Rpb24gZ2V0VGFiSW5kZXgobm9kZSkge1xuICBjb25zdCB0YWJpbmRleEF0dHIgPSBwYXJzZUludChub2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fCAnJywgMTApO1xuICBpZiAoIU51bWJlci5pc05hTih0YWJpbmRleEF0dHIpKSB7XG4gICAgcmV0dXJuIHRhYmluZGV4QXR0cjtcbiAgfVxuXG4gIC8vIEJyb3dzZXJzIGRvIG5vdCByZXR1cm4gYHRhYkluZGV4YCBjb3JyZWN0bHkgZm9yIGNvbnRlbnRFZGl0YWJsZSBub2RlcztcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjYxMTA4JnE9Y29udGVudGVkaXRhYmxlJTIwdGFiaW5kZXgmY2FuPTJcbiAgLy8gc28gaWYgdGhleSBkb24ndCBoYXZlIGEgdGFiaW5kZXggYXR0cmlidXRlIHNwZWNpZmljYWxseSBzZXQsIGFzc3VtZSBpdCdzIDAuXG4gIC8vIGluIENocm9tZSwgPGRldGFpbHMvPiwgPGF1ZGlvIGNvbnRyb2xzLz4gYW5kIDx2aWRlbyBjb250cm9scy8+IGVsZW1lbnRzIGdldCBhIGRlZmF1bHRcbiAgLy8gIGB0YWJJbmRleGAgb2YgLTEgd2hlbiB0aGUgJ3RhYmluZGV4JyBhdHRyaWJ1dGUgaXNuJ3Qgc3BlY2lmaWVkIGluIHRoZSBET00sXG4gIC8vICB5ZXQgdGhleSBhcmUgc3RpbGwgcGFydCBvZiB0aGUgcmVndWxhciB0YWIgb3JkZXI7IGluIEZGLCB0aGV5IGdldCBhIGRlZmF1bHRcbiAgLy8gIGB0YWJJbmRleGAgb2YgMDsgc2luY2UgQ2hyb21lIHN0aWxsIHB1dHMgdGhvc2UgZWxlbWVudHMgaW4gdGhlIHJlZ3VsYXIgdGFiXG4gIC8vICBvcmRlciwgY29uc2lkZXIgdGhlaXIgdGFiIGluZGV4IHRvIGJlIDAuXG4gIGlmIChub2RlLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnIHx8IChub2RlLm5vZGVOYW1lID09PSAnQVVESU8nIHx8IG5vZGUubm9kZU5hbWUgPT09ICdWSURFTycgfHwgbm9kZS5ub2RlTmFtZSA9PT0gJ0RFVEFJTFMnKSAmJiBub2RlLmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIHJldHVybiBub2RlLnRhYkluZGV4O1xufVxuZnVuY3Rpb24gaXNOb25UYWJiYWJsZVJhZGlvKG5vZGUpIHtcbiAgaWYgKG5vZGUudGFnTmFtZSAhPT0gJ0lOUFVUJyB8fCBub2RlLnR5cGUgIT09ICdyYWRpbycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCFub2RlLm5hbWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgZ2V0UmFkaW8gPSBzZWxlY3RvciA9PiBub2RlLm93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbdHlwZT1cInJhZGlvXCJdJHtzZWxlY3Rvcn1gKTtcbiAgbGV0IHJvdmluZyA9IGdldFJhZGlvKGBbbmFtZT1cIiR7bm9kZS5uYW1lfVwiXTpjaGVja2VkYCk7XG4gIGlmICghcm92aW5nKSB7XG4gICAgcm92aW5nID0gZ2V0UmFkaW8oYFtuYW1lPVwiJHtub2RlLm5hbWV9XCJdYCk7XG4gIH1cbiAgcmV0dXJuIHJvdmluZyAhPT0gbm9kZTtcbn1cbmZ1bmN0aW9uIGlzTm9kZU1hdGNoaW5nU2VsZWN0b3JGb2N1c2FibGUobm9kZSkge1xuICBpZiAobm9kZS5kaXNhYmxlZCB8fCBub2RlLnRhZ05hbWUgPT09ICdJTlBVVCcgJiYgbm9kZS50eXBlID09PSAnaGlkZGVuJyB8fCBpc05vblRhYmJhYmxlUmFkaW8obm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBkZWZhdWx0R2V0VGFiYmFibGUocm9vdCkge1xuICBjb25zdCByZWd1bGFyVGFiTm9kZXMgPSBbXTtcbiAgY29uc3Qgb3JkZXJlZFRhYk5vZGVzID0gW107XG4gIEFycmF5LmZyb20ocm9vdC5xdWVyeVNlbGVjdG9yQWxsKGNhbmRpZGF0ZXNTZWxlY3RvcikpLmZvckVhY2goKG5vZGUsIGkpID0+IHtcbiAgICBjb25zdCBub2RlVGFiSW5kZXggPSBnZXRUYWJJbmRleChub2RlKTtcbiAgICBpZiAobm9kZVRhYkluZGV4ID09PSAtMSB8fCAhaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZShub2RlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobm9kZVRhYkluZGV4ID09PSAwKSB7XG4gICAgICByZWd1bGFyVGFiTm9kZXMucHVzaChub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3JkZXJlZFRhYk5vZGVzLnB1c2goe1xuICAgICAgICBkb2N1bWVudE9yZGVyOiBpLFxuICAgICAgICB0YWJJbmRleDogbm9kZVRhYkluZGV4LFxuICAgICAgICBub2RlOiBub2RlXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3JkZXJlZFRhYk5vZGVzLnNvcnQoKGEsIGIpID0+IGEudGFiSW5kZXggPT09IGIudGFiSW5kZXggPyBhLmRvY3VtZW50T3JkZXIgLSBiLmRvY3VtZW50T3JkZXIgOiBhLnRhYkluZGV4IC0gYi50YWJJbmRleCkubWFwKGEgPT4gYS5ub2RlKS5jb25jYXQocmVndWxhclRhYk5vZGVzKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRJc0VuYWJsZWQoKSB7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgY29tcG9uZW50IHRoYXQgbG9ja3MgZm9jdXMgaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gKlxuICogRGVtb3M6XG4gKlxuICogLSBbRm9jdXMgVHJhcF0oaHR0cHM6Ly9tdWkuY29tL2Jhc2UtdWkvcmVhY3QtZm9jdXMtdHJhcC8pXG4gKlxuICogQVBJOlxuICpcbiAqIC0gW0ZvY3VzVHJhcCBBUEldKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LWZvY3VzLXRyYXAvY29tcG9uZW50cy1hcGkvI2ZvY3VzLXRyYXApXG4gKi9cbmZ1bmN0aW9uIEZvY3VzVHJhcChwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgZGlzYWJsZUF1dG9Gb2N1cyA9IGZhbHNlLFxuICAgIGRpc2FibGVFbmZvcmNlRm9jdXMgPSBmYWxzZSxcbiAgICBkaXNhYmxlUmVzdG9yZUZvY3VzID0gZmFsc2UsXG4gICAgZ2V0VGFiYmFibGUgPSBkZWZhdWx0R2V0VGFiYmFibGUsXG4gICAgaXNFbmFibGVkID0gZGVmYXVsdElzRW5hYmxlZCxcbiAgICBvcGVuXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaWdub3JlTmV4dEVuZm9yY2VGb2N1cyA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlbnRpbmVsU3RhcnQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNlbnRpbmVsRW5kID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBub2RlVG9SZXN0b3JlID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCByZWFjdEZvY3VzRXZlbnRUYXJnZXQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIC8vIFRoaXMgdmFyaWFibGUgaXMgdXNlZnVsIHdoZW4gZGlzYWJsZUF1dG9Gb2N1cyBpcyB0cnVlLlxuICAvLyBJdCB3YWl0cyBmb3IgdGhlIGFjdGl2ZSBlbGVtZW50IHRvIG1vdmUgaW50byB0aGUgY29tcG9uZW50IHRvIGFjdGl2YXRlLlxuICBjb25zdCBhY3RpdmF0ZWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCByb290UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gdXBzdHJlYW0gZml4XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYoY2hpbGRyZW4ucmVmLCByb290UmVmKTtcbiAgY29uc3QgbGFzdEtleWRvd24gPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gV2UgbWlnaHQgcmVuZGVyIGFuIGVtcHR5IGNoaWxkLlxuICAgIGlmICghb3BlbiB8fCAhcm9vdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGFjdGl2YXRlZC5jdXJyZW50ID0gIWRpc2FibGVBdXRvRm9jdXM7XG4gIH0sIFtkaXNhYmxlQXV0b0ZvY3VzLCBvcGVuXSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gV2UgbWlnaHQgcmVuZGVyIGFuIGVtcHR5IGNoaWxkLlxuICAgIGlmICghb3BlbiB8fCAhcm9vdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQocm9vdFJlZi5jdXJyZW50KTtcbiAgICBpZiAoIXJvb3RSZWYuY3VycmVudC5jb250YWlucyhkb2MuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgIGlmICghcm9vdFJlZi5jdXJyZW50Lmhhc0F0dHJpYnV0ZSgndGFiSW5kZXgnKSkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IFRoZSBtb2RhbCBjb250ZW50IG5vZGUgZG9lcyBub3QgYWNjZXB0IGZvY3VzLicsICdGb3IgdGhlIGJlbmVmaXQgb2YgYXNzaXN0aXZlIHRlY2hub2xvZ2llcywgJyArICd0aGUgdGFiSW5kZXggb2YgdGhlIG5vZGUgaXMgYmVpbmcgc2V0IHRvIFwiLTFcIi4nXS5qb2luKCdcXG4nKSk7XG4gICAgICAgIH1cbiAgICAgICAgcm9vdFJlZi5jdXJyZW50LnNldEF0dHJpYnV0ZSgndGFiSW5kZXgnLCAnLTEnKTtcbiAgICAgIH1cbiAgICAgIGlmIChhY3RpdmF0ZWQuY3VycmVudCkge1xuICAgICAgICByb290UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIHJlc3RvcmVMYXN0Rm9jdXMoKVxuICAgICAgaWYgKCFkaXNhYmxlUmVzdG9yZUZvY3VzKSB7XG4gICAgICAgIC8vIEluIElFMTEgaXQgaXMgcG9zc2libGUgZm9yIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgdG8gYmUgbnVsbCByZXN1bHRpbmdcbiAgICAgICAgLy8gaW4gbm9kZVRvUmVzdG9yZS5jdXJyZW50IGJlaW5nIG51bGwuXG4gICAgICAgIC8vIE5vdCBhbGwgZWxlbWVudHMgaW4gSUUxMSBoYXZlIGEgZm9jdXMgbWV0aG9kLlxuICAgICAgICAvLyBPbmNlIElFMTEgc3VwcG9ydCBpcyBkcm9wcGVkIHRoZSBmb2N1cygpIGNhbGwgY2FuIGJlIHVuY29uZGl0aW9uYWwuXG4gICAgICAgIGlmIChub2RlVG9SZXN0b3JlLmN1cnJlbnQgJiYgbm9kZVRvUmVzdG9yZS5jdXJyZW50LmZvY3VzKSB7XG4gICAgICAgICAgaWdub3JlTmV4dEVuZm9yY2VGb2N1cy5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICBub2RlVG9SZXN0b3JlLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlVG9SZXN0b3JlLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG4gICAgLy8gTWlzc2luZyBgZGlzYWJsZVJlc3RvcmVGb2N1c2Agd2hpY2ggaXMgZmluZS5cbiAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGNoYW5naW5nIHRoYXQgcHJvcCBvbiBhbiBvcGVuIEZvY3VzVHJhcFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW29wZW5dKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBXZSBtaWdodCByZW5kZXIgYW4gZW1wdHkgY2hpbGQuXG4gICAgaWYgKCFvcGVuIHx8ICFyb290UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZG9jID0gb3duZXJEb2N1bWVudChyb290UmVmLmN1cnJlbnQpO1xuICAgIGNvbnN0IGNvbnRhaW4gPSBuYXRpdmVFdmVudCA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGN1cnJlbnQ6IHJvb3RFbGVtZW50XG4gICAgICB9ID0gcm9vdFJlZjtcblxuICAgICAgLy8gQ2xlYW51cCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGxhemlseSBpbiBSZWFjdCAxNy5cbiAgICAgIC8vIENvbnRhaW4gY2FuIGJlIGNhbGxlZCBiZXR3ZWVuIHRoZSBjb21wb25lbnQgYmVpbmcgdW5tb3VudGVkIGFuZCBpdHMgY2xlYW51cCBmdW5jdGlvbiBiZWluZyBydW4uXG4gICAgICBpZiAocm9vdEVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCFkb2MuaGFzRm9jdXMoKSB8fCBkaXNhYmxlRW5mb3JjZUZvY3VzIHx8ICFpc0VuYWJsZWQoKSB8fCBpZ25vcmVOZXh0RW5mb3JjZUZvY3VzLmN1cnJlbnQpIHtcbiAgICAgICAgaWdub3JlTmV4dEVuZm9yY2VGb2N1cy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghcm9vdEVsZW1lbnQuY29udGFpbnMoZG9jLmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgIC8vIGlmIHRoZSBmb2N1cyBldmVudCBpcyBub3QgY29taW5nIGZyb20gaW5zaWRlIHRoZSBjaGlsZHJlbidzIHJlYWN0IHRyZWUsIHJlc2V0IHRoZSByZWZzXG4gICAgICAgIGlmIChuYXRpdmVFdmVudCAmJiByZWFjdEZvY3VzRXZlbnRUYXJnZXQuY3VycmVudCAhPT0gbmF0aXZlRXZlbnQudGFyZ2V0IHx8IGRvYy5hY3RpdmVFbGVtZW50ICE9PSByZWFjdEZvY3VzRXZlbnRUYXJnZXQuY3VycmVudCkge1xuICAgICAgICAgIHJlYWN0Rm9jdXNFdmVudFRhcmdldC5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChyZWFjdEZvY3VzRXZlbnRUYXJnZXQuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFjdGl2YXRlZC5jdXJyZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0YWJiYWJsZSA9IFtdO1xuICAgICAgICBpZiAoZG9jLmFjdGl2ZUVsZW1lbnQgPT09IHNlbnRpbmVsU3RhcnQuY3VycmVudCB8fCBkb2MuYWN0aXZlRWxlbWVudCA9PT0gc2VudGluZWxFbmQuY3VycmVudCkge1xuICAgICAgICAgIHRhYmJhYmxlID0gZ2V0VGFiYmFibGUocm9vdFJlZi5jdXJyZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGFiYmFibGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHZhciBfbGFzdEtleWRvd24kY3VycmVudCwgX2xhc3RLZXlkb3duJGN1cnJlbnQyO1xuICAgICAgICAgIGNvbnN0IGlzU2hpZnRUYWIgPSBCb29sZWFuKCgoX2xhc3RLZXlkb3duJGN1cnJlbnQgPSBsYXN0S2V5ZG93bi5jdXJyZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2xhc3RLZXlkb3duJGN1cnJlbnQuc2hpZnRLZXkpICYmICgoX2xhc3RLZXlkb3duJGN1cnJlbnQyID0gbGFzdEtleWRvd24uY3VycmVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9sYXN0S2V5ZG93biRjdXJyZW50Mi5rZXkpID09PSAnVGFiJyk7XG4gICAgICAgICAgY29uc3QgZm9jdXNOZXh0ID0gdGFiYmFibGVbMF07XG4gICAgICAgICAgY29uc3QgZm9jdXNQcmV2aW91cyA9IHRhYmJhYmxlW3RhYmJhYmxlLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmICh0eXBlb2YgZm9jdXNOZXh0ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2YgZm9jdXNQcmV2aW91cyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChpc1NoaWZ0VGFiKSB7XG4gICAgICAgICAgICAgIGZvY3VzUHJldmlvdXMuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZvY3VzTmV4dC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByb290RWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCBsb29wRm9jdXMgPSBuYXRpdmVFdmVudCA9PiB7XG4gICAgICBsYXN0S2V5ZG93bi5jdXJyZW50ID0gbmF0aXZlRXZlbnQ7XG4gICAgICBpZiAoZGlzYWJsZUVuZm9yY2VGb2N1cyB8fCAhaXNFbmFibGVkKCkgfHwgbmF0aXZlRXZlbnQua2V5ICE9PSAnVGFiJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgbmV4dCB0YWIgc3RhcnRzIGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgLy8gZG9jLmFjdGl2ZUVsZW1lbnQgcmVmZXJzIHRvIHRoZSBvcmlnaW4uXG4gICAgICBpZiAoZG9jLmFjdGl2ZUVsZW1lbnQgPT09IHJvb3RSZWYuY3VycmVudCAmJiBuYXRpdmVFdmVudC5zaGlmdEtleSkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGlnbm9yZSB0aGUgbmV4dCBjb250YWluIGFzXG4gICAgICAgIC8vIGl0IHdpbGwgdHJ5IHRvIG1vdmUgdGhlIGZvY3VzIGJhY2sgdG8gdGhlIHJvb3RSZWYgZWxlbWVudC5cbiAgICAgICAgaWdub3JlTmV4dEVuZm9yY2VGb2N1cy5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgaWYgKHNlbnRpbmVsRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICBzZW50aW5lbEVuZC5jdXJyZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIGRvYy5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgY29udGFpbik7XG4gICAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBsb29wRm9jdXMsIHRydWUpO1xuXG4gICAgLy8gV2l0aCBFZGdlLCBTYWZhcmkgYW5kIEZpcmVmb3gsIG5vIGZvY3VzIHJlbGF0ZWQgZXZlbnRzIGFyZSBmaXJlZCB3aGVuIHRoZSBmb2N1c2VkIGFyZWEgc3RvcHMgYmVpbmcgYSBmb2N1c2VkIGFyZWEuXG4gICAgLy8gZS5nLiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD01NTk1NjEuXG4gICAgLy8gSW5zdGVhZCwgd2UgY2FuIGxvb2sgaWYgdGhlIGFjdGl2ZSBlbGVtZW50IHdhcyByZXN0b3JlZCBvbiB0aGUgQk9EWSBlbGVtZW50LlxuICAgIC8vXG4gICAgLy8gVGhlIHdoYXR3ZyBzcGVjIGRlZmluZXMgaG93IHRoZSBicm93c2VyIHNob3VsZCBiZWhhdmUgYnV0IGRvZXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbiBhbnkgZXZlbnRzOlxuICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2ludGVyYWN0aW9uLmh0bWwjZm9jdXMtZml4dXAtcnVsZS5cbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmIChkb2MuYWN0aXZlRWxlbWVudCAmJiBkb2MuYWN0aXZlRWxlbWVudC50YWdOYW1lID09PSAnQk9EWScpIHtcbiAgICAgICAgY29udGFpbihudWxsKTtcbiAgICAgIH1cbiAgICB9LCA1MCk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpO1xuICAgICAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBjb250YWluKTtcbiAgICAgIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgbG9vcEZvY3VzLCB0cnVlKTtcbiAgICB9O1xuICB9LCBbZGlzYWJsZUF1dG9Gb2N1cywgZGlzYWJsZUVuZm9yY2VGb2N1cywgZGlzYWJsZVJlc3RvcmVGb2N1cywgaXNFbmFibGVkLCBvcGVuLCBnZXRUYWJiYWJsZV0pO1xuICBjb25zdCBvbkZvY3VzID0gZXZlbnQgPT4ge1xuICAgIGlmIChub2RlVG9SZXN0b3JlLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgIG5vZGVUb1Jlc3RvcmUuY3VycmVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgfVxuICAgIGFjdGl2YXRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZWFjdEZvY3VzRXZlbnRUYXJnZXQuY3VycmVudCA9IGV2ZW50LnRhcmdldDtcbiAgICBjb25zdCBjaGlsZHJlblByb3BzSGFuZGxlciA9IGNoaWxkcmVuLnByb3BzLm9uRm9jdXM7XG4gICAgaWYgKGNoaWxkcmVuUHJvcHNIYW5kbGVyKSB7XG4gICAgICBjaGlsZHJlblByb3BzSGFuZGxlcihldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVGb2N1c1NlbnRpbmVsID0gZXZlbnQgPT4ge1xuICAgIGlmIChub2RlVG9SZXN0b3JlLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgIG5vZGVUb1Jlc3RvcmUuY3VycmVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgfVxuICAgIGFjdGl2YXRlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgfTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhSZWFjdC5GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgdGFiSW5kZXg6IG9wZW4gPyAwIDogLTEsXG4gICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1NlbnRpbmVsLFxuICAgICAgcmVmOiBzZW50aW5lbFN0YXJ0LFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInNlbnRpbmVsU3RhcnRcIlxuICAgIH0pLCAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICByZWY6IGhhbmRsZVJlZixcbiAgICAgIG9uRm9jdXNcbiAgICB9KSwgLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwge1xuICAgICAgdGFiSW5kZXg6IG9wZW4gPyAwIDogLTEsXG4gICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1NlbnRpbmVsLFxuICAgICAgcmVmOiBzZW50aW5lbEVuZCxcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJzZW50aW5lbEVuZFwiXG4gICAgfSldXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gRm9jdXNUcmFwLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCBUeXBlU2NyaXB0IHR5cGVzIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEEgc2luZ2xlIGNoaWxkIGNvbnRlbnQgZWxlbWVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBlbGVtZW50QWNjZXB0aW5nUmVmLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZm9jdXMgdHJhcCB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IHNoaWZ0IGZvY3VzIHRvIGl0c2VsZiB3aGVuIGl0IG9wZW5zLCBhbmRcbiAgICogcmVwbGFjZSBpdCB0byB0aGUgbGFzdCBmb2N1c2VkIGVsZW1lbnQgd2hlbiBpdCBjbG9zZXMuXG4gICAqIFRoaXMgYWxzbyB3b3JrcyBjb3JyZWN0bHkgd2l0aCBhbnkgZm9jdXMgdHJhcCBjaGlsZHJlbiB0aGF0IGhhdmUgdGhlIGBkaXNhYmxlQXV0b0ZvY3VzYCBwcm9wLlxuICAgKlxuICAgKiBHZW5lcmFsbHkgdGhpcyBzaG91bGQgbmV2ZXIgYmUgc2V0IHRvIGB0cnVlYCBhcyBpdCBtYWtlcyB0aGUgZm9jdXMgdHJhcCBsZXNzXG4gICAqIGFjY2Vzc2libGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ2llcywgbGlrZSBzY3JlZW4gcmVhZGVycy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZm9jdXMgdHJhcCB3aWxsIG5vdCBwcmV2ZW50IGZvY3VzIGZyb20gbGVhdmluZyB0aGUgZm9jdXMgdHJhcCB3aGlsZSBvcGVuLlxuICAgKlxuICAgKiBHZW5lcmFsbHkgdGhpcyBzaG91bGQgbmV2ZXIgYmUgc2V0IHRvIGB0cnVlYCBhcyBpdCBtYWtlcyB0aGUgZm9jdXMgdHJhcCBsZXNzXG4gICAqIGFjY2Vzc2libGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ2llcywgbGlrZSBzY3JlZW4gcmVhZGVycy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVFbmZvcmNlRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZm9jdXMgdHJhcCB3aWxsIG5vdCByZXN0b3JlIGZvY3VzIHRvIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50IG9uY2VcbiAgICogZm9jdXMgdHJhcCBpcyBoaWRkZW4gb3IgdW5tb3VudGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJlc3RvcmVGb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9yZGVyZWQgdGFiYmFibGUgbm9kZXMgKGkuZS4gaW4gdGFiIG9yZGVyKSB3aXRoaW4gdGhlIHJvb3QuXG4gICAqIEZvciBpbnN0YW5jZSwgeW91IGNhbiBwcm92aWRlIHRoZSBcInRhYmJhYmxlXCIgbnBtIGRlcGVuZGVuY3kuXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IHJvb3RcbiAgICovXG4gIGdldFRhYmJhYmxlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBleHRlbmRzIHRoZSBgb3BlbmAgcHJvcC5cbiAgICogSXQgYWxsb3dzIHRvIHRvZ2dsZSB0aGUgb3BlbiBzdGF0ZSB3aXRob3V0IGhhdmluZyB0byB3YWl0IGZvciBhIHJlcmVuZGVyIHdoZW4gY2hhbmdpbmcgdGhlIGBvcGVuYCBwcm9wLlxuICAgKiBUaGlzIHByb3Agc2hvdWxkIGJlIG1lbW9pemVkLlxuICAgKiBJdCBjYW4gYmUgdXNlZCB0byBzdXBwb3J0IG11bHRpcGxlIGZvY3VzIHRyYXAgbW91bnRlZCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBAZGVmYXVsdCBmdW5jdGlvbiBkZWZhdWx0SXNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgKiAgIHJldHVybiB0cnVlO1xuICAgKiB9XG4gICAqL1xuICBpc0VuYWJsZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBmb2N1cyBpcyBsb2NrZWQuXG4gICAqL1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIEZvY3VzVHJhcFsncHJvcFR5cGVzJyArICcnXSA9IGV4YWN0UHJvcChGb2N1c1RyYXAucHJvcFR5cGVzKTtcbn1cbmV4cG9ydCBkZWZhdWx0IEZvY3VzVHJhcDsiLCJpbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TW9kYWxVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aU1vZGFsJywgc2xvdCk7XG59XG5jb25zdCBtb2RhbENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlNb2RhbCcsIFsncm9vdCcsICdoaWRkZW4nLCAnYmFja2Ryb3AnXSk7XG5leHBvcnQgZGVmYXVsdCBtb2RhbENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbG9zZUFmdGVyVHJhbnNpdGlvblwiLCBcImNvbnRhaW5lclwiLCBcImRpc2FibGVBdXRvRm9jdXNcIiwgXCJkaXNhYmxlRW5mb3JjZUZvY3VzXCIsIFwiZGlzYWJsZUVzY2FwZUtleURvd25cIiwgXCJkaXNhYmxlUG9ydGFsXCIsIFwiZGlzYWJsZVJlc3RvcmVGb2N1c1wiLCBcImRpc2FibGVTY3JvbGxMb2NrXCIsIFwiaGlkZUJhY2tkcm9wXCIsIFwia2VlcE1vdW50ZWRcIiwgXCJtYW5hZ2VyXCIsIFwib25CYWNrZHJvcENsaWNrXCIsIFwib25DbG9zZVwiLCBcIm9uS2V5RG93blwiLCBcIm9wZW5cIiwgXCJvblRyYW5zaXRpb25FbnRlclwiLCBcIm9uVHJhbnNpdGlvbkV4aXRlZFwiLCBcInNsb3RQcm9wc1wiLCBcInNsb3RzXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGVsZW1lbnRBY2NlcHRpbmdSZWYsIEhUTUxFbGVtZW50VHlwZSwgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50LCB1bnN0YWJsZV91c2VGb3JrUmVmIGFzIHVzZUZvcmtSZWYsIHVuc3RhYmxlX2NyZWF0ZUNoYWluZWRGdW5jdGlvbiBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24sIHVuc3RhYmxlX3VzZUV2ZW50Q2FsbGJhY2sgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGNvbXBvc2VDbGFzc2VzIGZyb20gJy4uL2NvbXBvc2VDbGFzc2VzJztcbmltcG9ydCBQb3J0YWwgZnJvbSAnLi4vUG9ydGFsJztcbmltcG9ydCBNb2RhbE1hbmFnZXIsIHsgYXJpYUhpZGRlbiB9IGZyb20gJy4vTW9kYWxNYW5hZ2VyJztcbmltcG9ydCBGb2N1c1RyYXAgZnJvbSAnLi4vRm9jdXNUcmFwJztcbmltcG9ydCB7IGdldE1vZGFsVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9tb2RhbENsYXNzZXMnO1xuaW1wb3J0IHsgdXNlU2xvdFByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlQ2xhc3NOYW1lc092ZXJyaWRlIH0gZnJvbSAnLi4vdXRpbHMvQ2xhc3NOYW1lQ29uZmlndXJhdG9yJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgb3BlbixcbiAgICBleGl0ZWRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsICFvcGVuICYmIGV4aXRlZCAmJiAnaGlkZGVuJ10sXG4gICAgYmFja2Ryb3A6IFsnYmFja2Ryb3AnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIHVzZUNsYXNzTmFtZXNPdmVycmlkZShnZXRNb2RhbFV0aWxpdHlDbGFzcykpO1xufTtcbmZ1bmN0aW9uIGdldENvbnRhaW5lcihjb250YWluZXIpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb250YWluZXIgPT09ICdmdW5jdGlvbicgPyBjb250YWluZXIoKSA6IGNvbnRhaW5lcjtcbn1cbmZ1bmN0aW9uIGdldEhhc1RyYW5zaXRpb24oY2hpbGRyZW4pIHtcbiAgcmV0dXJuIGNoaWxkcmVuID8gY2hpbGRyZW4ucHJvcHMuaGFzT3duUHJvcGVydHkoJ2luJykgOiBmYWxzZTtcbn1cblxuLy8gQSBtb2RhbCBtYW5hZ2VyIHVzZWQgdG8gdHJhY2sgYW5kIG1hbmFnZSB0aGUgc3RhdGUgb2Ygb3BlbiBNb2RhbHMuXG4vLyBNb2RhbHMgZG9uJ3Qgb3BlbiBvbiB0aGUgc2VydmVyIHNvIHRoaXMgd29uJ3QgY29uZmxpY3Qgd2l0aCBjb25jdXJyZW50IHJlcXVlc3RzLlxuY29uc3QgZGVmYXVsdE1hbmFnZXIgPSBuZXcgTW9kYWxNYW5hZ2VyKCk7XG5cbi8qKlxuICogTW9kYWwgaXMgYSBsb3dlci1sZXZlbCBjb25zdHJ1Y3QgdGhhdCBpcyBsZXZlcmFnZWQgYnkgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzOlxuICpcbiAqICogICBbRGlhbG9nXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvYXBpL2RpYWxvZy8pXG4gKiAqICAgW0RyYXdlcl0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2FwaS9kcmF3ZXIvKVxuICogKiAgIFtNZW51XShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvYXBpL21lbnUvKVxuICogKiAgIFtQb3BvdmVyXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvYXBpL3BvcG92ZXIvKVxuICpcbiAqIElmIHlvdSBhcmUgY3JlYXRpbmcgYSBtb2RhbCBkaWFsb2csIHlvdSBwcm9iYWJseSB3YW50IHRvIHVzZSB0aGUgW0RpYWxvZ10oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2FwaS9kaWFsb2cvKSBjb21wb25lbnRcbiAqIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIE1vZGFsLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IHNoYXJlcyBtYW55IGNvbmNlcHRzIHdpdGggW3JlYWN0LW92ZXJsYXlzXShodHRwczovL3JlYWN0LWJvb3RzdHJhcC5naXRodWIuaW8vcmVhY3Qtb3ZlcmxheXMvI21vZGFscykuXG4gKlxuICogRGVtb3M6XG4gKlxuICogLSBbTW9kYWxdKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LW1vZGFsLylcbiAqXG4gKiBBUEk6XG4gKlxuICogLSBbTW9kYWwgQVBJXShodHRwczovL211aS5jb20vYmFzZS11aS9yZWFjdC1tb2RhbC9jb21wb25lbnRzLWFwaS8jbW9kYWwpXG4gKi9cbmNvbnN0IE1vZGFsID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTW9kYWwocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICB2YXIgX3Byb3BzJGFyaWFIaWRkZW4sIF9zbG90cyRyb290O1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsb3NlQWZ0ZXJUcmFuc2l0aW9uID0gZmFsc2UsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRW5mb3JjZUZvY3VzID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRXNjYXBlS2V5RG93biA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVBvcnRhbCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1cyA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVNjcm9sbExvY2sgPSBmYWxzZSxcbiAgICAgIGhpZGVCYWNrZHJvcCA9IGZhbHNlLFxuICAgICAga2VlcE1vdW50ZWQgPSBmYWxzZSxcbiAgICAgIC8vIHByaXZhdGVcbiAgICAgIG1hbmFnZXI6IG1hbmFnZXJQcm9wID0gZGVmYXVsdE1hbmFnZXIsXG4gICAgICBvbkJhY2tkcm9wQ2xpY2ssXG4gICAgICBvbkNsb3NlLFxuICAgICAgb25LZXlEb3duLFxuICAgICAgb3BlbixcbiAgICAgIG9uVHJhbnNpdGlvbkVudGVyLFxuICAgICAgb25UcmFuc2l0aW9uRXhpdGVkLFxuICAgICAgc2xvdFByb3BzID0ge30sXG4gICAgICBzbG90cyA9IHt9XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIC8vIFRPRE86IGBtb2RhbGBgIG11c3QgY2hhbmdlIGl0cyB0eXBlIGluIHRoaXMgZmlsZSB0byBtYXRjaCB0aGUgdHlwZSBvZiBtZXRob2RzXG4gIC8vIHByb3ZpZGVkIGJ5IGBNb2RhbE1hbmFnZXJgXG4gIGNvbnN0IG1hbmFnZXIgPSBtYW5hZ2VyUHJvcDtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IFJlYWN0LnVzZVN0YXRlKCFvcGVuKTtcbiAgY29uc3QgbW9kYWwgPSBSZWFjdC51c2VSZWYoe30pO1xuICBjb25zdCBtb3VudE5vZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IG1vZGFsUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKG1vZGFsUmVmLCBmb3J3YXJkZWRSZWYpO1xuICBjb25zdCBoYXNUcmFuc2l0aW9uID0gZ2V0SGFzVHJhbnNpdGlvbihjaGlsZHJlbik7XG4gIGNvbnN0IGFyaWFIaWRkZW5Qcm9wID0gKF9wcm9wcyRhcmlhSGlkZGVuID0gcHJvcHNbJ2FyaWEtaGlkZGVuJ10pICE9IG51bGwgPyBfcHJvcHMkYXJpYUhpZGRlbiA6IHRydWU7XG4gIGNvbnN0IGdldERvYyA9ICgpID0+IG93bmVyRG9jdW1lbnQobW91bnROb2RlUmVmLmN1cnJlbnQpO1xuICBjb25zdCBnZXRNb2RhbCA9ICgpID0+IHtcbiAgICBtb2RhbC5jdXJyZW50Lm1vZGFsUmVmID0gbW9kYWxSZWYuY3VycmVudDtcbiAgICBtb2RhbC5jdXJyZW50Lm1vdW50Tm9kZSA9IG1vdW50Tm9kZVJlZi5jdXJyZW50O1xuICAgIHJldHVybiBtb2RhbC5jdXJyZW50O1xuICB9O1xuICBjb25zdCBoYW5kbGVNb3VudGVkID0gKCkgPT4ge1xuICAgIG1hbmFnZXIubW91bnQoZ2V0TW9kYWwoKSwge1xuICAgICAgZGlzYWJsZVNjcm9sbExvY2tcbiAgICB9KTtcblxuICAgIC8vIEZpeCBhIGJ1ZyBvbiBDaHJvbWUgd2hlcmUgdGhlIHNjcm9sbCBpc24ndCBpbml0aWFsbHkgMC5cbiAgICBpZiAobW9kYWxSZWYuY3VycmVudCkge1xuICAgICAgbW9kYWxSZWYuY3VycmVudC5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlT3BlbiA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkQ29udGFpbmVyID0gZ2V0Q29udGFpbmVyKGNvbnRhaW5lcikgfHwgZ2V0RG9jKCkuYm9keTtcbiAgICBtYW5hZ2VyLmFkZChnZXRNb2RhbCgpLCByZXNvbHZlZENvbnRhaW5lcik7XG5cbiAgICAvLyBUaGUgZWxlbWVudCB3YXMgYWxyZWFkeSBtb3VudGVkLlxuICAgIGlmIChtb2RhbFJlZi5jdXJyZW50KSB7XG4gICAgICBoYW5kbGVNb3VudGVkKCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaXNUb3BNb2RhbCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IG1hbmFnZXIuaXNUb3BNb2RhbChnZXRNb2RhbCgpKSwgW21hbmFnZXJdKTtcbiAgY29uc3QgaGFuZGxlUG9ydGFsUmVmID0gdXNlRXZlbnRDYWxsYmFjayhub2RlID0+IHtcbiAgICBtb3VudE5vZGVSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgaWYgKCFub2RlIHx8ICFtb2RhbFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvcGVuICYmIGlzVG9wTW9kYWwoKSkge1xuICAgICAgaGFuZGxlTW91bnRlZCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmlhSGlkZGVuKG1vZGFsUmVmLmN1cnJlbnQsIGFyaWFIaWRkZW5Qcm9wKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVDbG9zZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBtYW5hZ2VyLnJlbW92ZShnZXRNb2RhbCgpLCBhcmlhSGlkZGVuUHJvcCk7XG4gIH0sIFttYW5hZ2VyLCBhcmlhSGlkZGVuUHJvcF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBoYW5kbGVDbG9zZSgpO1xuICAgIH07XG4gIH0sIFtoYW5kbGVDbG9zZV0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcGVuKSB7XG4gICAgICBoYW5kbGVPcGVuKCk7XG4gICAgfSBlbHNlIGlmICghaGFzVHJhbnNpdGlvbiB8fCAhY2xvc2VBZnRlclRyYW5zaXRpb24pIHtcbiAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgfVxuICB9LCBbb3BlbiwgaGFuZGxlQ2xvc2UsIGhhc1RyYW5zaXRpb24sIGNsb3NlQWZ0ZXJUcmFuc2l0aW9uLCBoYW5kbGVPcGVuXSk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjbG9zZUFmdGVyVHJhbnNpdGlvbixcbiAgICBkaXNhYmxlQXV0b0ZvY3VzLFxuICAgIGRpc2FibGVFbmZvcmNlRm9jdXMsXG4gICAgZGlzYWJsZUVzY2FwZUtleURvd24sXG4gICAgZGlzYWJsZVBvcnRhbCxcbiAgICBkaXNhYmxlUmVzdG9yZUZvY3VzLFxuICAgIGRpc2FibGVTY3JvbGxMb2NrLFxuICAgIGV4aXRlZCxcbiAgICBoaWRlQmFja2Ryb3AsXG4gICAga2VlcE1vdW50ZWRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgaGFuZGxlRW50ZXIgPSAoKSA9PiB7XG4gICAgc2V0RXhpdGVkKGZhbHNlKTtcbiAgICBpZiAob25UcmFuc2l0aW9uRW50ZXIpIHtcbiAgICAgIG9uVHJhbnNpdGlvbkVudGVyKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSAoKSA9PiB7XG4gICAgc2V0RXhpdGVkKHRydWUpO1xuICAgIGlmIChvblRyYW5zaXRpb25FeGl0ZWQpIHtcbiAgICAgIG9uVHJhbnNpdGlvbkV4aXRlZCgpO1xuICAgIH1cbiAgICBpZiAoY2xvc2VBZnRlclRyYW5zaXRpb24pIHtcbiAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gZXZlbnQgPT4ge1xuICAgIGlmIChldmVudC50YXJnZXQgIT09IGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKG9uQmFja2Ryb3BDbGljaykge1xuICAgICAgb25CYWNrZHJvcENsaWNrKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKG9uQ2xvc2UpIHtcbiAgICAgIG9uQ2xvc2UoZXZlbnQsICdiYWNrZHJvcENsaWNrJyk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gZXZlbnQgPT4ge1xuICAgIGlmIChvbktleURvd24pIHtcbiAgICAgIG9uS2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgLy8gVGhlIGhhbmRsZXIgZG9lc24ndCB0YWtlIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgaW50byBhY2NvdW50OlxuICAgIC8vXG4gICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKSBpcyBtZWFudCB0byBzdG9wIGRlZmF1bHQgYmVoYXZpb3JzIGxpa2VcbiAgICAvLyBjbGlja2luZyBhIGNoZWNrYm94IHRvIGNoZWNrIGl0LCBoaXR0aW5nIGEgYnV0dG9uIHRvIHN1Ym1pdCBhIGZvcm0sXG4gICAgLy8gYW5kIGhpdHRpbmcgbGVmdCBhcnJvdyB0byBtb3ZlIHRoZSBjdXJzb3IgaW4gYSB0ZXh0IGlucHV0IGV0Yy5cbiAgICAvLyBPbmx5IHNwZWNpYWwgSFRNTCBlbGVtZW50cyBoYXZlIHRoZXNlIGRlZmF1bHQgYmVoYXZpb3JzLlxuICAgIGlmIChldmVudC5rZXkgIT09ICdFc2NhcGUnIHx8ICFpc1RvcE1vZGFsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFkaXNhYmxlRXNjYXBlS2V5RG93bikge1xuICAgICAgLy8gU3dhbGxvdyB0aGUgZXZlbnQsIGluIGNhc2Ugc29tZW9uZSBpcyBsaXN0ZW5pbmcgZm9yIHRoZSBlc2NhcGUga2V5IG9uIHRoZSBib2R5LlxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpZiAob25DbG9zZSkge1xuICAgICAgICBvbkNsb3NlKGV2ZW50LCAnZXNjYXBlS2V5RG93bicpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgY2hpbGRQcm9wcyA9IHt9O1xuICBpZiAoY2hpbGRyZW4ucHJvcHMudGFiSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgIGNoaWxkUHJvcHMudGFiSW5kZXggPSAnLTEnO1xuICB9XG5cbiAgLy8gSXQncyBhIFRyYW5zaXRpb24gbGlrZSBjb21wb25lbnRcbiAgaWYgKGhhc1RyYW5zaXRpb24pIHtcbiAgICBjaGlsZFByb3BzLm9uRW50ZXIgPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oaGFuZGxlRW50ZXIsIGNoaWxkcmVuLnByb3BzLm9uRW50ZXIpO1xuICAgIGNoaWxkUHJvcHMub25FeGl0ZWQgPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24oaGFuZGxlRXhpdGVkLCBjaGlsZHJlbi5wcm9wcy5vbkV4aXRlZCk7XG4gIH1cbiAgY29uc3QgUm9vdCA9IChfc2xvdHMkcm9vdCA9IHNsb3RzLnJvb3QpICE9IG51bGwgPyBfc2xvdHMkcm9vdCA6ICdkaXYnO1xuICBjb25zdCByb290UHJvcHMgPSB1c2VTbG90UHJvcHMoe1xuICAgIGVsZW1lbnRUeXBlOiBSb290LFxuICAgIGV4dGVybmFsU2xvdFByb3BzOiBzbG90UHJvcHMucm9vdCxcbiAgICBleHRlcm5hbEZvcndhcmRlZFByb3BzOiBvdGhlcixcbiAgICBhZGRpdGlvbmFsUHJvcHM6IHtcbiAgICAgIHJlZjogaGFuZGxlUmVmLFxuICAgICAgcm9sZTogJ3ByZXNlbnRhdGlvbicsXG4gICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9LFxuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5yb290LFxuICAgIG93bmVyU3RhdGVcbiAgfSk7XG4gIGNvbnN0IEJhY2tkcm9wQ29tcG9uZW50ID0gc2xvdHMuYmFja2Ryb3A7XG4gIGNvbnN0IGJhY2tkcm9wUHJvcHMgPSB1c2VTbG90UHJvcHMoe1xuICAgIGVsZW1lbnRUeXBlOiBCYWNrZHJvcENvbXBvbmVudCxcbiAgICBleHRlcm5hbFNsb3RQcm9wczogc2xvdFByb3BzLmJhY2tkcm9wLFxuICAgIGFkZGl0aW9uYWxQcm9wczoge1xuICAgICAgJ2FyaWEtaGlkZGVuJzogdHJ1ZSxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUJhY2tkcm9wQ2xpY2ssXG4gICAgICBvcGVuXG4gICAgfSxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuYmFja2Ryb3AsXG4gICAgb3duZXJTdGF0ZVxuICB9KTtcbiAgaWYgKCFrZWVwTW91bnRlZCAmJiAhb3BlbiAmJiAoIWhhc1RyYW5zaXRpb24gfHwgZXhpdGVkKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChQb3J0YWxcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPOiBpbmNsdWRlIHJlZiB0byBCYXNlIFVJIFBvcnRhbCBwcm9wc1xuICAsIHtcbiAgICByZWY6IGhhbmRsZVBvcnRhbFJlZixcbiAgICBjb250YWluZXI6IGNvbnRhaW5lcixcbiAgICBkaXNhYmxlUG9ydGFsOiBkaXNhYmxlUG9ydGFsLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeHMoUm9vdCwgX2V4dGVuZHMoe30sIHJvb3RQcm9wcywge1xuICAgICAgY2hpbGRyZW46IFshaGlkZUJhY2tkcm9wICYmIEJhY2tkcm9wQ29tcG9uZW50ID8gLyojX19QVVJFX18qL19qc3goQmFja2Ryb3BDb21wb25lbnQsIF9leHRlbmRzKHt9LCBiYWNrZHJvcFByb3BzKSkgOiBudWxsLCAvKiNfX1BVUkVfXyovX2pzeChGb2N1c1RyYXAsIHtcbiAgICAgICAgZGlzYWJsZUVuZm9yY2VGb2N1czogZGlzYWJsZUVuZm9yY2VGb2N1cyxcbiAgICAgICAgZGlzYWJsZUF1dG9Gb2N1czogZGlzYWJsZUF1dG9Gb2N1cyxcbiAgICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1czogZGlzYWJsZVJlc3RvcmVGb2N1cyxcbiAgICAgICAgaXNFbmFibGVkOiBpc1RvcE1vZGFsLFxuICAgICAgICBvcGVuOiBvcGVuLFxuICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgY2hpbGRQcm9wcylcbiAgICAgIH0pXVxuICAgIH0pKVxuICB9KTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gTW9kYWwucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IFR5cGVTY3JpcHQgdHlwZXMgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQSBzaW5nbGUgY2hpbGQgY29udGVudCBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IGVsZW1lbnRBY2NlcHRpbmdSZWYuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUgdGhlIE1vZGFsIHdhaXRzIHVudGlsIGEgbmVzdGVkIFRyYW5zaXRpb24gaXMgY29tcGxldGVkIGJlZm9yZSBjbG9zaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2xvc2VBZnRlclRyYW5zaXRpb246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQW4gSFRNTCBlbGVtZW50IG9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBvbmUuXG4gICAqIFRoZSBgY29udGFpbmVyYCB3aWxsIGhhdmUgdGhlIHBvcnRhbCBjaGlsZHJlbiBhcHBlbmRlZCB0byBpdC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgaXQgdXNlcyB0aGUgYm9keSBvZiB0aGUgdG9wLWxldmVsIGRvY3VtZW50IG9iamVjdCxcbiAgICogc28gaXQncyBzaW1wbHkgYGRvY3VtZW50LmJvZHlgIG1vc3Qgb2YgdGhlIHRpbWUuXG4gICAqL1xuICBjb250YWluZXI6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbSFRNTEVsZW1lbnRUeXBlLCBQcm9wVHlwZXMuZnVuY10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbW9kYWwgd2lsbCBub3QgYXV0b21hdGljYWxseSBzaGlmdCBmb2N1cyB0byBpdHNlbGYgd2hlbiBpdCBvcGVucywgYW5kXG4gICAqIHJlcGxhY2UgaXQgdG8gdGhlIGxhc3QgZm9jdXNlZCBlbGVtZW50IHdoZW4gaXQgY2xvc2VzLlxuICAgKiBUaGlzIGFsc28gd29ya3MgY29ycmVjdGx5IHdpdGggYW55IG1vZGFsIGNoaWxkcmVuIHRoYXQgaGF2ZSB0aGUgYGRpc2FibGVBdXRvRm9jdXNgIHByb3AuXG4gICAqXG4gICAqIEdlbmVyYWxseSB0aGlzIHNob3VsZCBuZXZlciBiZSBzZXQgdG8gYHRydWVgIGFzIGl0IG1ha2VzIHRoZSBtb2RhbCBsZXNzXG4gICAqIGFjY2Vzc2libGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ2llcywgbGlrZSBzY3JlZW4gcmVhZGVycy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVBdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbW9kYWwgd2lsbCBub3QgcHJldmVudCBmb2N1cyBmcm9tIGxlYXZpbmcgdGhlIG1vZGFsIHdoaWxlIG9wZW4uXG4gICAqXG4gICAqIEdlbmVyYWxseSB0aGlzIHNob3VsZCBuZXZlciBiZSBzZXQgdG8gYHRydWVgIGFzIGl0IG1ha2VzIHRoZSBtb2RhbCBsZXNzXG4gICAqIGFjY2Vzc2libGUgdG8gYXNzaXN0aXZlIHRlY2hub2xvZ2llcywgbGlrZSBzY3JlZW4gcmVhZGVycy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVFbmZvcmNlRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBoaXR0aW5nIGVzY2FwZSB3aWxsIG5vdCBmaXJlIHRoZSBgb25DbG9zZWAgY2FsbGJhY2suXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRXNjYXBlS2V5RG93bjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgYGNoaWxkcmVuYCB3aWxsIGJlIHVuZGVyIHRoZSBET00gaGllcmFyY2h5IG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVBvcnRhbDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBtb2RhbCB3aWxsIG5vdCByZXN0b3JlIGZvY3VzIHRvIHByZXZpb3VzbHkgZm9jdXNlZCBlbGVtZW50IG9uY2VcbiAgICogbW9kYWwgaXMgaGlkZGVuIG9yIHVubW91bnRlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVSZXN0b3JlRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRGlzYWJsZSB0aGUgc2Nyb2xsIGxvY2sgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlU2Nyb2xsTG9jazogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBiYWNrZHJvcCBpcyBub3QgcmVuZGVyZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoaWRlQmFja2Ryb3A6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQWx3YXlzIGtlZXAgdGhlIGNoaWxkcmVuIGluIHRoZSBET00uXG4gICAqIFRoaXMgcHJvcCBjYW4gYmUgdXNlZnVsIGluIFNFTyBzaXR1YXRpb24gb3JcbiAgICogd2hlbiB5b3Ugd2FudCB0byBtYXhpbWl6ZSB0aGUgcmVzcG9uc2l2ZW5lc3Mgb2YgdGhlIE1vZGFsLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAga2VlcE1vdW50ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgYmFja2Ryb3AgaXMgY2xpY2tlZC5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgb25DbG9zZWAgcHJvcCB3aXRoIHRoZSBgcmVhc29uYCBhcmd1bWVudCB0byBoYW5kbGUgdGhlIGBiYWNrZHJvcENsaWNrYCBldmVudHMuXG4gICAqL1xuICBvbkJhY2tkcm9wQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IHJlcXVlc3RzIHRvIGJlIGNsb3NlZC5cbiAgICogVGhlIGByZWFzb25gIHBhcmFtZXRlciBjYW4gb3B0aW9uYWxseSBiZSB1c2VkIHRvIGNvbnRyb2wgdGhlIHJlc3BvbnNlIHRvIGBvbkNsb3NlYC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVhc29uIENhbiBiZTogYFwiZXNjYXBlS2V5RG93blwiYCwgYFwiYmFja2Ryb3BDbGlja1wiYC5cbiAgICovXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQSBmdW5jdGlvbiBjYWxsZWQgd2hlbiBhIHRyYW5zaXRpb24gZW50ZXJzLlxuICAgKi9cbiAgb25UcmFuc2l0aW9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQSBmdW5jdGlvbiBjYWxsZWQgd2hlbiBhIHRyYW5zaXRpb24gaGFzIGV4aXRlZC5cbiAgICovXG4gIG9uVHJhbnNpdGlvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2hvd24uXG4gICAqL1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIHByb3BzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUgdGhlIE1vZGFsLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdFByb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGJhY2tkcm9wOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAgIHJvb3Q6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlIHRoZSBNb2RhbC5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGJhY2tkcm9wOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgcm9vdDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgTW9kYWw7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiQmFja2Ryb3BDb21wb25lbnRcIiwgXCJCYWNrZHJvcFByb3BzXCIsIFwiY2xhc3Nlc1wiLCBcImNsYXNzTmFtZVwiLCBcImNsb3NlQWZ0ZXJUcmFuc2l0aW9uXCIsIFwiY2hpbGRyZW5cIiwgXCJjb250YWluZXJcIiwgXCJjb21wb25lbnRcIiwgXCJjb21wb25lbnRzXCIsIFwiY29tcG9uZW50c1Byb3BzXCIsIFwiZGlzYWJsZUF1dG9Gb2N1c1wiLCBcImRpc2FibGVFbmZvcmNlRm9jdXNcIiwgXCJkaXNhYmxlRXNjYXBlS2V5RG93blwiLCBcImRpc2FibGVQb3J0YWxcIiwgXCJkaXNhYmxlUmVzdG9yZUZvY3VzXCIsIFwiZGlzYWJsZVNjcm9sbExvY2tcIiwgXCJoaWRlQmFja2Ryb3BcIiwgXCJrZWVwTW91bnRlZFwiLCBcIm9uQmFja2Ryb3BDbGlja1wiLCBcIm9uQ2xvc2VcIiwgXCJvcGVuXCIsIFwic2xvdFByb3BzXCIsIFwic2xvdHNcIiwgXCJ0aGVtZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBNb2RhbFVuc3R5bGVkLCB7IG1vZGFsQ2xhc3NlcyBhcyBtb2RhbFVuc3R5bGVkQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZS9Nb2RhbCc7XG5pbXBvcnQgeyBpc0hvc3RDb21wb25lbnQsIHJlc29sdmVDb21wb25lbnRQcm9wcyB9IGZyb20gJ0BtdWkvYmFzZS91dGlscyc7XG5pbXBvcnQgeyBlbGVtZW50QWNjZXB0aW5nUmVmLCBIVE1MRWxlbWVudFR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgQmFja2Ryb3AgZnJvbSAnLi4vQmFja2Ryb3AnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBjb25zdCBtb2RhbENsYXNzZXMgPSBtb2RhbFVuc3R5bGVkQ2xhc3NlcztcbmNvbnN0IE1vZGFsUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpTW9kYWwnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgIW93bmVyU3RhdGUub3BlbiAmJiBvd25lclN0YXRlLmV4aXRlZCAmJiBzdHlsZXMuaGlkZGVuXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgcG9zaXRpb246ICdmaXhlZCcsXG4gIHpJbmRleDogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnpJbmRleC5tb2RhbCxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwXG59LCAhb3duZXJTdGF0ZS5vcGVuICYmIG93bmVyU3RhdGUuZXhpdGVkICYmIHtcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbn0pKTtcbmNvbnN0IE1vZGFsQmFja2Ryb3AgPSBzdHlsZWQoQmFja2Ryb3AsIHtcbiAgbmFtZTogJ011aU1vZGFsJyxcbiAgc2xvdDogJ0JhY2tkcm9wJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgcmV0dXJuIHN0eWxlcy5iYWNrZHJvcDtcbiAgfVxufSkoe1xuICB6SW5kZXg6IC0xXG59KTtcblxuLyoqXG4gKiBNb2RhbCBpcyBhIGxvd2VyLWxldmVsIGNvbnN0cnVjdCB0aGF0IGlzIGxldmVyYWdlZCBieSB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6XG4gKlxuICogLSBbRGlhbG9nXSgvbWF0ZXJpYWwtdWkvYXBpL2RpYWxvZy8pXG4gKiAtIFtEcmF3ZXJdKC9tYXRlcmlhbC11aS9hcGkvZHJhd2VyLylcbiAqIC0gW01lbnVdKC9tYXRlcmlhbC11aS9hcGkvbWVudS8pXG4gKiAtIFtQb3BvdmVyXSgvbWF0ZXJpYWwtdWkvYXBpL3BvcG92ZXIvKVxuICpcbiAqIElmIHlvdSBhcmUgY3JlYXRpbmcgYSBtb2RhbCBkaWFsb2csIHlvdSBwcm9iYWJseSB3YW50IHRvIHVzZSB0aGUgW0RpYWxvZ10oL21hdGVyaWFsLXVpL2FwaS9kaWFsb2cvKSBjb21wb25lbnRcbiAqIHJhdGhlciB0aGFuIGRpcmVjdGx5IHVzaW5nIE1vZGFsLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IHNoYXJlcyBtYW55IGNvbmNlcHRzIHdpdGggW3JlYWN0LW92ZXJsYXlzXShodHRwczovL3JlYWN0LWJvb3RzdHJhcC5naXRodWIuaW8vcmVhY3Qtb3ZlcmxheXMvI21vZGFscykuXG4gKi9cbmNvbnN0IE1vZGFsID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTW9kYWwoaW5Qcm9wcywgcmVmKSB7XG4gIHZhciBfcmVmLCBfc2xvdHMkcm9vdCwgX3JlZjIsIF9zbG90cyRiYWNrZHJvcCwgX3Nsb3RQcm9wcyRyb290LCBfc2xvdFByb3BzJGJhY2tkcm9wO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIG5hbWU6ICdNdWlNb2RhbCcsXG4gICAgcHJvcHM6IGluUHJvcHNcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIEJhY2tkcm9wQ29tcG9uZW50ID0gTW9kYWxCYWNrZHJvcCxcbiAgICAgIEJhY2tkcm9wUHJvcHMsXG4gICAgICBjbGFzc2VzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY2xvc2VBZnRlclRyYW5zaXRpb24gPSBmYWxzZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgY29tcG9uZW50LFxuICAgICAgY29tcG9uZW50cyA9IHt9LFxuICAgICAgY29tcG9uZW50c1Byb3BzID0ge30sXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRW5mb3JjZUZvY3VzID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRXNjYXBlS2V5RG93biA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVBvcnRhbCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1cyA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVNjcm9sbExvY2sgPSBmYWxzZSxcbiAgICAgIGhpZGVCYWNrZHJvcCA9IGZhbHNlLFxuICAgICAga2VlcE1vdW50ZWQgPSBmYWxzZSxcbiAgICAgIG9uQmFja2Ryb3BDbGljayxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICBvcGVuLFxuICAgICAgc2xvdFByb3BzLFxuICAgICAgc2xvdHMsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgdGhlbWVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2V4aXRlZCwgc2V0RXhpdGVkXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBjb21tb25Qcm9wcyA9IHtcbiAgICBjb250YWluZXIsXG4gICAgY2xvc2VBZnRlclRyYW5zaXRpb24sXG4gICAgZGlzYWJsZUF1dG9Gb2N1cyxcbiAgICBkaXNhYmxlRW5mb3JjZUZvY3VzLFxuICAgIGRpc2FibGVFc2NhcGVLZXlEb3duLFxuICAgIGRpc2FibGVQb3J0YWwsXG4gICAgZGlzYWJsZVJlc3RvcmVGb2N1cyxcbiAgICBkaXNhYmxlU2Nyb2xsTG9jayxcbiAgICBoaWRlQmFja2Ryb3AsXG4gICAga2VlcE1vdW50ZWQsXG4gICAgb25CYWNrZHJvcENsaWNrLFxuICAgIG9uQ2xvc2UsXG4gICAgb3BlblxuICB9O1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCBjb21tb25Qcm9wcywge1xuICAgIGV4aXRlZFxuICB9KTtcbiAgY29uc3QgUm9vdFNsb3QgPSAoX3JlZiA9IChfc2xvdHMkcm9vdCA9IHNsb3RzID09IG51bGwgPyB2b2lkIDAgOiBzbG90cy5yb290KSAhPSBudWxsID8gX3Nsb3RzJHJvb3QgOiBjb21wb25lbnRzLlJvb3QpICE9IG51bGwgPyBfcmVmIDogTW9kYWxSb290O1xuICBjb25zdCBCYWNrZHJvcFNsb3QgPSAoX3JlZjIgPSAoX3Nsb3RzJGJhY2tkcm9wID0gc2xvdHMgPT0gbnVsbCA/IHZvaWQgMCA6IHNsb3RzLmJhY2tkcm9wKSAhPSBudWxsID8gX3Nsb3RzJGJhY2tkcm9wIDogY29tcG9uZW50cy5CYWNrZHJvcCkgIT0gbnVsbCA/IF9yZWYyIDogQmFja2Ryb3BDb21wb25lbnQ7XG4gIGNvbnN0IHJvb3RTbG90UHJvcHMgPSAoX3Nsb3RQcm9wcyRyb290ID0gc2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBzbG90UHJvcHMucm9vdCkgIT0gbnVsbCA/IF9zbG90UHJvcHMkcm9vdCA6IGNvbXBvbmVudHNQcm9wcy5yb290O1xuICBjb25zdCBiYWNrZHJvcFNsb3RQcm9wcyA9IChfc2xvdFByb3BzJGJhY2tkcm9wID0gc2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBzbG90UHJvcHMuYmFja2Ryb3ApICE9IG51bGwgPyBfc2xvdFByb3BzJGJhY2tkcm9wIDogY29tcG9uZW50c1Byb3BzLmJhY2tkcm9wO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTW9kYWxVbnN0eWxlZCwgX2V4dGVuZHMoe1xuICAgIHNsb3RzOiB7XG4gICAgICByb290OiBSb290U2xvdCxcbiAgICAgIGJhY2tkcm9wOiBCYWNrZHJvcFNsb3RcbiAgICB9LFxuICAgIHNsb3RQcm9wczoge1xuICAgICAgcm9vdDogKCkgPT4gX2V4dGVuZHMoe30sIHJlc29sdmVDb21wb25lbnRQcm9wcyhyb290U2xvdFByb3BzLCBvd25lclN0YXRlKSwgIWlzSG9zdENvbXBvbmVudChSb290U2xvdCkgJiYge1xuICAgICAgICBhczogY29tcG9uZW50LFxuICAgICAgICB0aGVtZVxuICAgICAgfSwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3NOYW1lLCByb290U2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiByb290U2xvdFByb3BzLmNsYXNzTmFtZSwgY2xhc3NlcyA9PSBudWxsID8gdm9pZCAwIDogY2xhc3Nlcy5yb290LCAhb3duZXJTdGF0ZS5vcGVuICYmIG93bmVyU3RhdGUuZXhpdGVkICYmIChjbGFzc2VzID09IG51bGwgPyB2b2lkIDAgOiBjbGFzc2VzLmhpZGRlbikpXG4gICAgICB9KSxcbiAgICAgIGJhY2tkcm9wOiAoKSA9PiBfZXh0ZW5kcyh7fSwgQmFja2Ryb3BQcm9wcywgcmVzb2x2ZUNvbXBvbmVudFByb3BzKGJhY2tkcm9wU2xvdFByb3BzLCBvd25lclN0YXRlKSwge1xuICAgICAgICBjbGFzc05hbWU6IGNsc3goYmFja2Ryb3BTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGJhY2tkcm9wU2xvdFByb3BzLmNsYXNzTmFtZSwgQmFja2Ryb3BQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogQmFja2Ryb3BQcm9wcy5jbGFzc05hbWUsIGNsYXNzZXMgPT0gbnVsbCA/IHZvaWQgMCA6IGNsYXNzZXMuYmFja2Ryb3ApXG4gICAgICB9KVxuICAgIH0sXG4gICAgb25UcmFuc2l0aW9uRW50ZXI6ICgpID0+IHNldEV4aXRlZChmYWxzZSksXG4gICAgb25UcmFuc2l0aW9uRXhpdGVkOiAoKSA9PiBzZXRFeGl0ZWQodHJ1ZSksXG4gICAgcmVmOiByZWZcbiAgfSwgb3RoZXIsIGNvbW1vblByb3BzLCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gTW9kYWwucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQSBiYWNrZHJvcCBjb21wb25lbnQuIFRoaXMgcHJvcCBlbmFibGVzIGN1c3RvbSBiYWNrZHJvcCByZW5kZXJpbmcuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgc2xvdHMuYmFja2Ryb3BgIGluc3RlYWQuIFdoaWxlIHRoaXMgcHJvcCBjdXJyZW50bHkgd29ya3MsIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uLlxuICAgKiBVc2UgdGhlIGBzbG90cy5iYWNrZHJvcGAgcHJvcCB0byBtYWtlIHlvdXIgYXBwbGljYXRpb24gcmVhZHkgZm9yIHRoZSBuZXh0IHZlcnNpb24gb2YgTWF0ZXJpYWwgVUkuXG4gICAqIEBkZWZhdWx0IHN0eWxlZChCYWNrZHJvcCwge1xuICAgKiAgIG5hbWU6ICdNdWlNb2RhbCcsXG4gICAqICAgc2xvdDogJ0JhY2tkcm9wJyxcbiAgICogICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICogICAgIHJldHVybiBzdHlsZXMuYmFja2Ryb3A7XG4gICAqICAgfSxcbiAgICogfSkoe1xuICAgKiAgIHpJbmRleDogLTEsXG4gICAqIH0pXG4gICAqL1xuICBCYWNrZHJvcENvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgW2BCYWNrZHJvcGBdKC9tYXRlcmlhbC11aS9hcGkvYmFja2Ryb3AvKSBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgYHNsb3RQcm9wcy5iYWNrZHJvcGAgaW5zdGVhZC5cbiAgICovXG4gIEJhY2tkcm9wUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBBIHNpbmdsZSBjaGlsZCBjb250ZW50IGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogZWxlbWVudEFjY2VwdGluZ1JlZi5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHRydWUgdGhlIE1vZGFsIHdhaXRzIHVudGlsIGEgbmVzdGVkIFRyYW5zaXRpb24gaXMgY29tcGxldGVkIGJlZm9yZSBjbG9zaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2xvc2VBZnRlclRyYW5zaXRpb246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgc2xvdHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdHNgIHByb3AgaW5zdGVhZC5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgQmFja2Ryb3A6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBSb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYHNsb3RQcm9wc2AgcHJvcC5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBzbG90UHJvcHNgIHByb3AgaW5zdGVhZCwgYXMgYGNvbXBvbmVudHNQcm9wc2Agd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYmFja2Ryb3A6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gICAgcm9vdDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxuICB9KSxcbiAgLyoqXG4gICAqIEFuIEhUTUwgZWxlbWVudCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lLlxuICAgKiBUaGUgYGNvbnRhaW5lcmAgd2lsbCBoYXZlIHRoZSBwb3J0YWwgY2hpbGRyZW4gYXBwZW5kZWQgdG8gaXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGl0IHVzZXMgdGhlIGJvZHkgb2YgdGhlIHRvcC1sZXZlbCBkb2N1bWVudCBvYmplY3QsXG4gICAqIHNvIGl0J3Mgc2ltcGx5IGBkb2N1bWVudC5ib2R5YCBtb3N0IG9mIHRoZSB0aW1lLlxuICAgKi9cbiAgY29udGFpbmVyOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1vZGFsIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgc2hpZnQgZm9jdXMgdG8gaXRzZWxmIHdoZW4gaXQgb3BlbnMsIGFuZFxuICAgKiByZXBsYWNlIGl0IHRvIHRoZSBsYXN0IGZvY3VzZWQgZWxlbWVudCB3aGVuIGl0IGNsb3Nlcy5cbiAgICogVGhpcyBhbHNvIHdvcmtzIGNvcnJlY3RseSB3aXRoIGFueSBtb2RhbCBjaGlsZHJlbiB0aGF0IGhhdmUgdGhlIGBkaXNhYmxlQXV0b0ZvY3VzYCBwcm9wLlxuICAgKlxuICAgKiBHZW5lcmFsbHkgdGhpcyBzaG91bGQgbmV2ZXIgYmUgc2V0IHRvIGB0cnVlYCBhcyBpdCBtYWtlcyB0aGUgbW9kYWwgbGVzc1xuICAgKiBhY2Nlc3NpYmxlIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMsIGxpa2Ugc2NyZWVuIHJlYWRlcnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlQXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG1vZGFsIHdpbGwgbm90IHByZXZlbnQgZm9jdXMgZnJvbSBsZWF2aW5nIHRoZSBtb2RhbCB3aGlsZSBvcGVuLlxuICAgKlxuICAgKiBHZW5lcmFsbHkgdGhpcyBzaG91bGQgbmV2ZXIgYmUgc2V0IHRvIGB0cnVlYCBhcyBpdCBtYWtlcyB0aGUgbW9kYWwgbGVzc1xuICAgKiBhY2Nlc3NpYmxlIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMsIGxpa2Ugc2NyZWVuIHJlYWRlcnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRW5mb3JjZUZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaGl0dGluZyBlc2NhcGUgd2lsbCBub3QgZmlyZSB0aGUgYG9uQ2xvc2VgIGNhbGxiYWNrLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVzY2FwZUtleURvd246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGBjaGlsZHJlbmAgd2lsbCBiZSB1bmRlciB0aGUgRE9NIGhpZXJhcmNoeSBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVQb3J0YWw6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbW9kYWwgd2lsbCBub3QgcmVzdG9yZSBmb2N1cyB0byBwcmV2aW91c2x5IGZvY3VzZWQgZWxlbWVudCBvbmNlXG4gICAqIG1vZGFsIGlzIGhpZGRlbiBvciB1bm1vdW50ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmVzdG9yZUZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIHNjcm9sbCBsb2NrIGJlaGF2aW9yLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVNjcm9sbExvY2s6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYmFja2Ryb3AgaXMgbm90IHJlbmRlcmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGlkZUJhY2tkcm9wOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEFsd2F5cyBrZWVwIHRoZSBjaGlsZHJlbiBpbiB0aGUgRE9NLlxuICAgKiBUaGlzIHByb3AgY2FuIGJlIHVzZWZ1bCBpbiBTRU8gc2l0dWF0aW9uIG9yXG4gICAqIHdoZW4geW91IHdhbnQgdG8gbWF4aW1pemUgdGhlIHJlc3BvbnNpdmVuZXNzIG9mIHRoZSBNb2RhbC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGtlZXBNb3VudGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGJhY2tkcm9wIGlzIGNsaWNrZWQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgYG9uQ2xvc2VgIHByb3Agd2l0aCB0aGUgYHJlYXNvbmAgYXJndW1lbnQgdG8gaGFuZGxlIHRoZSBgYmFja2Ryb3BDbGlja2AgZXZlbnRzLlxuICAgKi9cbiAgb25CYWNrZHJvcENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGNvbXBvbmVudCByZXF1ZXN0cyB0byBiZSBjbG9zZWQuXG4gICAqIFRoZSBgcmVhc29uYCBwYXJhbWV0ZXIgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCB0byBjb250cm9sIHRoZSByZXNwb25zZSB0byBgb25DbG9zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiBDYW4gYmU6IGBcImVzY2FwZUtleURvd25cImAsIGBcImJhY2tkcm9wQ2xpY2tcImAuXG4gICAqL1xuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gY2FsbGVkIHdoZW4gYSB0cmFuc2l0aW9uIGVudGVycy5cbiAgICovXG4gIG9uVHJhbnNpdGlvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gY2FsbGVkIHdoZW4gYSB0cmFuc2l0aW9uIGhhcyBleGl0ZWQuXG4gICAqL1xuICBvblRyYW5zaXRpb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIHNob3duLlxuICAgKi9cbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSBwcm9wcyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlIHRoZSBNb2RhbC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBiYWNrZHJvcDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICByb290OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZSB0aGUgTW9kYWwuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBiYWNrZHJvcDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIHJvb3Q6IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IE1vZGFsOyIsIi8vIEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRlcmlhbC1jb21wb25lbnRzL21hdGVyaWFsLWNvbXBvbmVudHMtaW9zL2Jsb2IvYmNhMzYxMDc0MDU1OTRkNWI3YjE2MjY1YTViMGVkNjk4Zjg1YTVlZS9jb21wb25lbnRzL0VsZXZhdGlvbi9zcmMvVUlDb2xvciUyQk1hdGVyaWFsRWxldmF0aW9uLm0jTDYxXG5jb25zdCBnZXRPdmVybGF5QWxwaGEgPSBlbGV2YXRpb24gPT4ge1xuICBsZXQgYWxwaGFWYWx1ZTtcbiAgaWYgKGVsZXZhdGlvbiA8IDEpIHtcbiAgICBhbHBoYVZhbHVlID0gNS4xMTkxNiAqIGVsZXZhdGlvbiAqKiAyO1xuICB9IGVsc2Uge1xuICAgIGFscGhhVmFsdWUgPSA0LjUgKiBNYXRoLmxvZyhlbGV2YXRpb24gKyAxKSArIDI7XG4gIH1cbiAgcmV0dXJuIChhbHBoYVZhbHVlIC8gMTAwKS50b0ZpeGVkKDIpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGdldE92ZXJsYXlBbHBoYTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFwZXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVBhcGVyJywgc2xvdCk7XG59XG5jb25zdCBwYXBlckNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlQYXBlcicsIFsncm9vdCcsICdyb3VuZGVkJywgJ291dGxpbmVkJywgJ2VsZXZhdGlvbicsICdlbGV2YXRpb24wJywgJ2VsZXZhdGlvbjEnLCAnZWxldmF0aW9uMicsICdlbGV2YXRpb24zJywgJ2VsZXZhdGlvbjQnLCAnZWxldmF0aW9uNScsICdlbGV2YXRpb242JywgJ2VsZXZhdGlvbjcnLCAnZWxldmF0aW9uOCcsICdlbGV2YXRpb245JywgJ2VsZXZhdGlvbjEwJywgJ2VsZXZhdGlvbjExJywgJ2VsZXZhdGlvbjEyJywgJ2VsZXZhdGlvbjEzJywgJ2VsZXZhdGlvbjE0JywgJ2VsZXZhdGlvbjE1JywgJ2VsZXZhdGlvbjE2JywgJ2VsZXZhdGlvbjE3JywgJ2VsZXZhdGlvbjE4JywgJ2VsZXZhdGlvbjE5JywgJ2VsZXZhdGlvbjIwJywgJ2VsZXZhdGlvbjIxJywgJ2VsZXZhdGlvbjIyJywgJ2VsZXZhdGlvbjIzJywgJ2VsZXZhdGlvbjI0J10pO1xuZXhwb3J0IGRlZmF1bHQgcGFwZXJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiLCBcImVsZXZhdGlvblwiLCBcInNxdWFyZVwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBjaGFpblByb3BUeXBlcywgaW50ZWdlclByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgZ2V0T3ZlcmxheUFscGhhIGZyb20gJy4uL3N0eWxlcy9nZXRPdmVybGF5QWxwaGEnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBnZXRQYXBlclV0aWxpdHlDbGFzcyB9IGZyb20gJy4vcGFwZXJDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgc3F1YXJlLFxuICAgIGVsZXZhdGlvbixcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsICFzcXVhcmUgJiYgJ3JvdW5kZWQnLCB2YXJpYW50ID09PSAnZWxldmF0aW9uJyAmJiBgZWxldmF0aW9uJHtlbGV2YXRpb259YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRQYXBlclV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgUGFwZXJSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlQYXBlcicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgIW93bmVyU3RhdGUuc3F1YXJlICYmIHN0eWxlcy5yb3VuZGVkLCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdlbGV2YXRpb24nICYmIHN0eWxlc1tgZWxldmF0aW9uJHtvd25lclN0YXRlLmVsZXZhdGlvbn1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkdmFycyRvdmVybGF5cztcbiAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmJhY2tncm91bmQucGFwZXIsXG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQucHJpbWFyeSxcbiAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ2JveC1zaGFkb3cnKVxuICB9LCAhb3duZXJTdGF0ZS5zcXVhcmUgJiYge1xuICAgIGJvcmRlclJhZGl1czogdGhlbWUuc2hhcGUuYm9yZGVyUmFkaXVzXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2VsZXZhdGlvbicgJiYgX2V4dGVuZHMoe1xuICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3Nbb3duZXJTdGF0ZS5lbGV2YXRpb25dXG4gIH0sICF0aGVtZS52YXJzICYmIHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2RhcmsnICYmIHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGBsaW5lYXItZ3JhZGllbnQoJHthbHBoYSgnI2ZmZicsIGdldE92ZXJsYXlBbHBoYShvd25lclN0YXRlLmVsZXZhdGlvbikpfSwgJHthbHBoYSgnI2ZmZicsIGdldE92ZXJsYXlBbHBoYShvd25lclN0YXRlLmVsZXZhdGlvbikpfSlgXG4gIH0sIHRoZW1lLnZhcnMgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogKF90aGVtZSR2YXJzJG92ZXJsYXlzID0gdGhlbWUudmFycy5vdmVybGF5cykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR2YXJzJG92ZXJsYXlzW293bmVyU3RhdGUuZWxldmF0aW9uXVxuICB9KSk7XG59KTtcbmNvbnN0IFBhcGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gUGFwZXIoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVBhcGVyJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ2RpdicsXG4gICAgICBlbGV2YXRpb24gPSAxLFxuICAgICAgc3F1YXJlID0gZmFsc2UsXG4gICAgICB2YXJpYW50ID0gJ2VsZXZhdGlvbidcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbXBvbmVudCxcbiAgICBlbGV2YXRpb24sXG4gICAgc3F1YXJlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gICAgaWYgKHRoZW1lLnNoYWRvd3NbZWxldmF0aW9uXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBUaGUgZWxldmF0aW9uIHByb3ZpZGVkIDxQYXBlciBlbGV2YXRpb249eyR7ZWxldmF0aW9ufX0+IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHRoZW1lLmAsIGBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgXFxgdGhlbWUuc2hhZG93c1ske2VsZXZhdGlvbn1dXFxgIGlzIGRlZmluZWQuYF0uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUGFwZXJSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcmVmOiByZWZcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gUGFwZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFNoYWRvdyBkZXB0aCwgY29ycmVzcG9uZHMgdG8gYGRwYCBpbiB0aGUgc3BlYy5cbiAgICogSXQgYWNjZXB0cyB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAyNCBpbmNsdXNpdmUuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGVsZXZhdGlvbjogY2hhaW5Qcm9wVHlwZXMoaW50ZWdlclByb3BUeXBlLCBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZWxldmF0aW9uLFxuICAgICAgdmFyaWFudFxuICAgIH0gPSBwcm9wcztcbiAgICBpZiAoZWxldmF0aW9uID4gMCAmJiB2YXJpYW50ID09PSAnb3V0bGluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBNVUk6IENvbWJpbmluZyBcXGBlbGV2YXRpb249eyR7ZWxldmF0aW9ufX1cXGAgd2l0aCBcXGB2YXJpYW50PVwiJHt2YXJpYW50fVwiXFxgIGhhcyBubyBlZmZlY3QuIEVpdGhlciB1c2UgXFxgZWxldmF0aW9uPXswfVxcYCBvciB1c2UgYSBkaWZmZXJlbnQgXFxgdmFyaWFudFxcYC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCByb3VuZGVkIGNvcm5lcnMgYXJlIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc3F1YXJlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ2VsZXZhdGlvbidcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZWxldmF0aW9uJywgJ291dGxpbmVkJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBQYXBlcjsiLCIvKipcbiAqIFNhZmUgY2hhaW5lZCBmdW5jdGlvbi5cbiAqXG4gKiBXaWxsIG9ubHkgY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGlmIG5lZWRlZCxcbiAqIG90aGVyd2lzZSB3aWxsIHBhc3MgYmFjayBleGlzdGluZyBmdW5jdGlvbnMgb3IgbnVsbC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKC4uLmZ1bmNzKSB7XG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoKGFjYywgZnVuYykgPT4ge1xuICAgIGlmIChmdW5jID09IG51bGwpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgYWNjLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9LCAoKSA9PiB7fSk7XG59IiwiLy8gQSBjaGFuZ2Ugb2YgdGhlIGJyb3dzZXIgem9vbSBjaGFuZ2UgdGhlIHNjcm9sbGJhciBzaXplLlxuLy8gQ3JlZGl0IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iLzQ4OGZkOGFmYzUzNWNhM2E2YWQ0ZGM1ODFmNWU4OTIxN2I2YTM2YWMvanMvc3JjL3V0aWwvc2Nyb2xsYmFyLmpzI0wxNC1MMThcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbGJhclNpemUoZG9jKSB7XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9XaW5kb3cvaW5uZXJXaWR0aCN1c2FnZV9ub3Rlc1xuICBjb25zdCBkb2N1bWVudFdpZHRoID0gZG9jLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmV0dXJuIE1hdGguYWJzKHdpbmRvdy5pbm5lcldpZHRoIC0gZG9jdW1lbnRXaWR0aCk7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSJdLCJuYW1lcyI6WyJnZXRCYWNrZHJvcFV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJCYWNrZHJvcFJvb3QiLCJzdHlsZWQiLCJuYW1lIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsIm93bmVyU3RhdGUiLCJyb290IiwiaW52aXNpYmxlIiwicG9zaXRpb24iLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwicmlnaHQiLCJib3R0b20iLCJ0b3AiLCJsZWZ0IiwiYmFja2dyb3VuZENvbG9yIiwiV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IiLCJpblByb3BzIiwicmVmIiwiX3Nsb3RQcm9wcyRyb290IiwiX3JlZiIsIl9zbG90cyRyb290IiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiY29tcG9uZW50IiwiY29tcG9uZW50cyIsImNvbXBvbmVudHNQcm9wcyIsIm9wZW4iLCJzbG90UHJvcHMiLCJzbG90cyIsIlRyYW5zaXRpb25Db21wb25lbnQiLCJGYWRlIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwib3RoZXIiLCJjbGFzc2VzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsInJvb3RTbG90UHJvcHMiLCJpbiIsInRpbWVvdXQiLCJhcyIsIlJvb3QiLCJlbnRlcmluZyIsIm9wYWNpdHkiLCJlbnRlcmVkIiwidGhlbWUiLCJkZWZhdWx0VGltZW91dCIsImVudGVyIiwidHJhbnNpdGlvbnMiLCJkdXJhdGlvbiIsImVudGVyaW5nU2NyZWVuIiwiZXhpdCIsImxlYXZpbmdTY3JlZW4iLCJhZGRFbmRMaXN0ZW5lciIsImFwcGVhciIsImVhc2luZyIsImluUHJvcCIsIm9uRW50ZXIiLCJvbkVudGVyZWQiLCJvbkVudGVyaW5nIiwib25FeGl0Iiwib25FeGl0ZWQiLCJvbkV4aXRpbmciLCJzdHlsZSIsIm5vZGVSZWYiLCJoYW5kbGVSZWYiLCJub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrIiwiY2FsbGJhY2siLCJtYXliZUlzQXBwZWFyaW5nIiwibm9kZSIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJoYW5kbGVFbnRlcmluZyIsImhhbmRsZUVudGVyIiwiaXNBcHBlYXJpbmciLCJ0cmFuc2l0aW9uUHJvcHMiLCJtb2RlIiwid2Via2l0VHJhbnNpdGlvbiIsImNyZWF0ZSIsInRyYW5zaXRpb24iLCJoYW5kbGVFbnRlcmVkIiwiaGFuZGxlRXhpdGluZyIsImhhbmRsZUV4aXQiLCJoYW5kbGVFeGl0ZWQiLCJuZXh0Iiwic3RhdGUiLCJjaGlsZFByb3BzIiwidmlzaWJpbGl0eSIsImFyaWFIaWRkZW4iLCJlbGVtZW50Iiwic2hvdyIsInNldEF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImdldFBhZGRpbmdSaWdodCIsInBhcnNlSW50Iiwib3duZXJXaW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwicGFkZGluZ1JpZ2h0IiwiYXJpYUhpZGRlblNpYmxpbmdzIiwiY29udGFpbmVyIiwibW91bnRFbGVtZW50IiwiY3VycmVudEVsZW1lbnQiLCJlbGVtZW50c1RvRXhjbHVkZSIsImJsYWNrbGlzdCIsImZvckVhY2giLCJjYWxsIiwiaXNOb3RFeGNsdWRlZEVsZW1lbnQiLCJpbmRleE9mIiwiaXNOb3RGb3JiaWRkZW5FbGVtZW50IiwiaXNGb3JiaWRkZW5UYWdOYW1lIiwidGFnTmFtZSIsImlzSW5wdXRIaWRkZW4iLCJnZXRBdHRyaWJ1dGUiLCJpc0FyaWFIaWRkZW5Gb3JiaWRkZW5PbkVsZW1lbnQiLCJmaW5kSW5kZXhPZiIsIml0ZW1zIiwiaWR4Iiwic29tZSIsIml0ZW0iLCJpbmRleCIsImNhbmRpZGF0ZXNTZWxlY3RvciIsImpvaW4iLCJkZWZhdWx0R2V0VGFiYmFibGUiLCJyZWd1bGFyVGFiTm9kZXMiLCJvcmRlcmVkVGFiTm9kZXMiLCJBcnJheSIsImZyb20iLCJxdWVyeVNlbGVjdG9yQWxsIiwiaSIsIm5vZGVUYWJJbmRleCIsInRhYmluZGV4QXR0ciIsIk51bWJlciIsImlzTmFOIiwiY29udGVudEVkaXRhYmxlIiwibm9kZU5hbWUiLCJ0YWJJbmRleCIsImdldFRhYkluZGV4IiwiZGlzYWJsZWQiLCJ0eXBlIiwiZ2V0UmFkaW8iLCJzZWxlY3RvciIsIm93bmVyRG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwicm92aW5nIiwiaXNOb25UYWJiYWJsZVJhZGlvIiwiaXNOb2RlTWF0Y2hpbmdTZWxlY3RvckZvY3VzYWJsZSIsInB1c2giLCJkb2N1bWVudE9yZGVyIiwic29ydCIsImEiLCJiIiwibWFwIiwiY29uY2F0IiwiZGVmYXVsdElzRW5hYmxlZCIsImRpc2FibGVBdXRvRm9jdXMiLCJkaXNhYmxlRW5mb3JjZUZvY3VzIiwiZGlzYWJsZVJlc3RvcmVGb2N1cyIsImdldFRhYmJhYmxlIiwiaXNFbmFibGVkIiwiaWdub3JlTmV4dEVuZm9yY2VGb2N1cyIsInNlbnRpbmVsU3RhcnQiLCJzZW50aW5lbEVuZCIsIm5vZGVUb1Jlc3RvcmUiLCJyZWFjdEZvY3VzRXZlbnRUYXJnZXQiLCJhY3RpdmF0ZWQiLCJyb290UmVmIiwidXNlRm9ya1JlZiIsImxhc3RLZXlkb3duIiwiZG9jIiwiY29udGFpbnMiLCJhY3RpdmVFbGVtZW50IiwiaGFzQXR0cmlidXRlIiwiZm9jdXMiLCJjb250YWluIiwibmF0aXZlRXZlbnQiLCJyb290RWxlbWVudCIsImhhc0ZvY3VzIiwidGFyZ2V0IiwidGFiYmFibGUiLCJsZW5ndGgiLCJfbGFzdEtleWRvd24kY3VycmVudCIsIl9sYXN0S2V5ZG93biRjdXJyZW50MiIsImlzU2hpZnRUYWIiLCJCb29sZWFuIiwic2hpZnRLZXkiLCJrZXkiLCJmb2N1c05leHQiLCJmb2N1c1ByZXZpb3VzIiwibG9vcEZvY3VzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUZvY3VzU2VudGluZWwiLCJldmVudCIsInJlbGF0ZWRUYXJnZXQiLCJvbkZvY3VzIiwiY2hpbGRyZW5Qcm9wc0hhbmRsZXIiLCJnZXRNb2RhbFV0aWxpdHlDbGFzcyIsImRlZmF1bHRNYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJ0aGlzIiwiY29udGFpbmVycyIsIm1vZGFscyIsImFkZCIsIm1vZGFsIiwibW9kYWxJbmRleCIsIm1vZGFsUmVmIiwiaGlkZGVuU2libGluZ3MiLCJnZXRIaWRkZW5TaWJsaW5ncyIsIm1vdW50IiwiY29udGFpbmVySW5kZXgiLCJyZXN0b3JlIiwiY29udGFpbmVySW5mbyIsInJlc3RvcmVTdHlsZSIsImRpc2FibGVTY3JvbGxMb2NrIiwiYm9keSIsImlubmVyV2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzT3ZlcmZsb3dpbmciLCJzY3JvbGxiYXJTaXplIiwiZ2V0U2Nyb2xsYmFyU2l6ZSIsInZhbHVlIiwicHJvcGVydHkiLCJlbCIsImZpeGVkRWxlbWVudHMiLCJzY3JvbGxDb250YWluZXIiLCJwYXJlbnROb2RlIiwiRG9jdW1lbnRGcmFnbWVudCIsInBhcmVudCIsInBhcmVudEVsZW1lbnQiLCJjb250YWluZXJXaW5kb3ciLCJvdmVyZmxvd1kiLCJvdmVyZmxvdyIsIm92ZXJmbG93WCIsInNldFByb3BlcnR5IiwicmVtb3ZlUHJvcGVydHkiLCJoYW5kbGVDb250YWluZXIiLCJyZW1vdmUiLCJhcmlhSGlkZGVuU3RhdGUiLCJzcGxpY2UiLCJuZXh0VG9wIiwiaXNUb3BNb2RhbCIsImZvcndhcmRlZFJlZiIsIl9wcm9wcyRhcmlhSGlkZGVuIiwiY2xvc2VBZnRlclRyYW5zaXRpb24iLCJkaXNhYmxlRXNjYXBlS2V5RG93biIsImRpc2FibGVQb3J0YWwiLCJoaWRlQmFja2Ryb3AiLCJrZWVwTW91bnRlZCIsIm1hbmFnZXIiLCJtYW5hZ2VyUHJvcCIsIm9uQmFja2Ryb3BDbGljayIsIm9uQ2xvc2UiLCJvbktleURvd24iLCJvblRyYW5zaXRpb25FbnRlciIsIm9uVHJhbnNpdGlvbkV4aXRlZCIsImV4aXRlZCIsInNldEV4aXRlZCIsIm1vdW50Tm9kZVJlZiIsImhhc1RyYW5zaXRpb24iLCJoYXNPd25Qcm9wZXJ0eSIsImdldEhhc1RyYW5zaXRpb24iLCJhcmlhSGlkZGVuUHJvcCIsImdldE1vZGFsIiwibW91bnROb2RlIiwiaGFuZGxlTW91bnRlZCIsInNjcm9sbFRvcCIsImhhbmRsZU9wZW4iLCJ1c2VFdmVudENhbGxiYWNrIiwicmVzb2x2ZWRDb250YWluZXIiLCJnZXRDb250YWluZXIiLCJoYW5kbGVQb3J0YWxSZWYiLCJoYW5kbGVDbG9zZSIsImJhY2tkcm9wIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwicm9vdFByb3BzIiwidXNlU2xvdFByb3BzIiwiZWxlbWVudFR5cGUiLCJleHRlcm5hbFNsb3RQcm9wcyIsImV4dGVybmFsRm9yd2FyZGVkUHJvcHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJyb2xlIiwic3RvcFByb3BhZ2F0aW9uIiwiQmFja2Ryb3BDb21wb25lbnQiLCJiYWNrZHJvcFByb3BzIiwib25DbGljayIsImN1cnJlbnRUYXJnZXQiLCJQb3J0YWwiLCJNb2RhbFJvb3QiLCJoaWRkZW4iLCJ6SW5kZXgiLCJ2YXJzIiwiTW9kYWxCYWNrZHJvcCIsIkJhY2tkcm9wIiwiX3JlZjIiLCJfc2xvdHMkYmFja2Ryb3AiLCJfc2xvdFByb3BzJGJhY2tkcm9wIiwiQmFja2Ryb3BQcm9wcyIsImNvbW1vblByb3BzIiwiUm9vdFNsb3QiLCJCYWNrZHJvcFNsb3QiLCJiYWNrZHJvcFNsb3RQcm9wcyIsInJlc29sdmVDb21wb25lbnRQcm9wcyIsImlzSG9zdENvbXBvbmVudCIsImVsZXZhdGlvbiIsImFscGhhVmFsdWUiLCJNYXRoIiwibG9nIiwidG9GaXhlZCIsImdldFBhcGVyVXRpbGl0eUNsYXNzIiwiUGFwZXJSb290IiwidmFyaWFudCIsInNxdWFyZSIsInJvdW5kZWQiLCJfdGhlbWUkdmFycyRvdmVybGF5cyIsInBhbGV0dGUiLCJiYWNrZ3JvdW5kIiwicGFwZXIiLCJjb2xvciIsInRleHQiLCJwcmltYXJ5IiwiYm9yZGVyUmFkaXVzIiwic2hhcGUiLCJib3JkZXIiLCJkaXZpZGVyIiwiYm94U2hhZG93Iiwic2hhZG93cyIsImJhY2tncm91bmRJbWFnZSIsIm92ZXJsYXlzIiwiZnVuY3MiLCJyZWR1Y2UiLCJhY2MiLCJmdW5jIiwiYXJncyIsImFwcGx5IiwiZG9jdW1lbnRXaWR0aCIsImFicyIsIndpbmRvdyIsImRlZmF1bHRWaWV3Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/392.32fe2203.js b/react_frontend/static/react_frontend/js/392.32fe2203.js new file mode 100644 index 000000000..3f596a4ed --- /dev/null +++ b/react_frontend/static/react_frontend/js/392.32fe2203.js @@ -0,0 +1,3 @@ +/*! For license information please see 392.32fe2203.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[392,3774],{392:(e,n,t)=>{t.r(n),t.d(n,{default:()=>s});var o=t(6540),r=t(3774),a=t(4848);const s=function(e){return o.useEffect((function(){console.log("TestShowScreen subscribing to ['update'] events");var e=function(e){if(e.data.update.img1){var n=e.data.update;(0,r.draw)(n)}window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),o.useEffect((function(){var e=function(e){if("ready"===e.data.state)try{reset_scene3d(),(0,r.reset_all)()}catch(e){}};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.STATE_CHANGED],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.STATE_CHANGED],e)}}),[]),(0,a.jsxs)("div",{style:{display:"flex",height:"100%",width:"100%",position:"relative"},children:[(0,a.jsx)("div",{id:"canvas",style:{height:"100%",width:"33%"}}),(0,a.jsx)("canvas",{id:"gui_canvas",style:{width:"67%"}})]})}},3774:(e,n,t)=>{t.r(n),t.d(n,{draw:()=>u,reset_all:()=>w});var o,r,a,s,i=[],c=[];function d(e){return decodeURIComponent(escape(e))}var g=new Image,m=new Image;function u(e){o=JSON.parse(e.img1),a=d(o.img),null!==e.img1&&void 0!==e.img1&&(o=JSON.parse(e.img1),(a=d(o.img)).length>10&&(g.src="data:image1/jpeg;base64,"+a)),null!==e.img2&&void 0!==e.img2&&(r=JSON.parse(e.img2),(s=d(r.img)).length>10&&(m.src="data:image2/jpeg;base64,"+s));var n=JSON.parse(e.pts);""!=n&&function(e){for(var n=[],t=0;t{var o=t(6540),r=Symbol.for("react.element"),a=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,i=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function d(e,n,t){var o,a={},d=null,g=null;for(o in void 0!==t&&(d=""+t),void 0!==n.key&&(d=""+n.key),void 0!==n.ref&&(g=n.ref),n)s.call(n,o)&&!c.hasOwnProperty(o)&&(a[o]=n[o]);if(e&&e.defaultProps)for(o in n=e.defaultProps)void 0===a[o]&&(a[o]=n[o]);return{$$typeof:r,type:e,key:d,ref:g,props:a,_owner:i.current}}n.Fragment=a,n.jsx=d,n.jsxs=d},4848:(e,n,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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U0FBU0MsRUFBRUMsRUFBRUMsRUFBRTFELEdBQUcsSUFBSUMsRUFBRTBELEVBQUUsQ0FBQyxFQUFFQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSTVELFVBQWhGLElBQVNELElBQUk0RCxFQUFFLEdBQUc1RCxRQUFHLElBQVMwRCxFQUFFTixNQUFNUSxFQUFFLEdBQUdGLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVEsRUFBRUgsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRWtCLEtBQUtKLEVBQUV6RCxLQUFLa0QsRUFBRUosZUFBZTlDLEtBQUswRCxFQUFFMUQsR0FBR3lELEVBQUV6RCxJQUFJLEdBQUd3RCxHQUFHQSxFQUFFTSxhQUFhLElBQUk5RCxLQUFLeUQsRUFBRUQsRUFBRU0sa0JBQWUsSUFBU0osRUFBRTFELEtBQUswRCxFQUFFMUQsR0FBR3lELEVBQUV6RCxJQUFJLE1BQU0sQ0FBQytELFNBQVN4QixFQUFFeUIsS0FBS1IsRUFBRUwsSUFBSVEsRUFBRVAsSUFBSVEsRUFBRXpILE1BQU11SCxFQUFFTyxPQUFPbEIsRUFBRW1CLFFBQVEsQ0FBQ0MsRUFBUUMsU0FBUzFCLEVBQUV5QixFQUFRRSxJQUFJZCxFQUFFWSxFQUFRRyxLQUFLZixrQkNQeFdnQixFQUFPSixRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvM2RfcmVjb25zdHJ1Y3Rpb24vcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY1JlY29uc3RydWN0aW9uM0QuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvM2RfcmVjb25zdHJ1Y3Rpb24vcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL2hlbHBlclJlY29udHJ1Y3Rpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvUmVjb25zdHJ1Y3Rpb24zRFJSLmNzc1wiO1xyXG5pbXBvcnQgeyBkcmF3LCByZXNldF9hbGwgfSBmcm9tIFwiLi9oZWxwZXJzL2hlbHBlclJlY29udHJ1Y3Rpb25cIjtcclxuXHJcbmNvbnN0IFNwZWNpZmljUmVjb250cnVjdGlvbjNEID0gKHByb3BzKSA9PiB7XHJcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gc3Vic2NyaWJpbmcgdG8gWyd1cGRhdGUnXSBldmVudHNcIik7XHJcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgaWYobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWcxKXtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IG1lc3NhZ2UuZGF0YS51cGRhdGU7XHJcbiAgICAgICAgICAgIGRyYXcoZGF0YSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIFNlbmQgdGhlIEFDSyBvZiB0aGUgbXNnXHJcbiAgICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJhY2tcIik7XHJcbiAgICAgICAgfTtcclxuICAgIFxyXG4gICAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgICBjYWxsYmFja1xyXG4gICAgICAgICk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0sIFtdKTtcclxuXHJcbiAgICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJyZWFkeVwiKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgcmVzZXRfc2NlbmUzZCgpO1xyXG4gICAgICAgICAgICAgIHJlc2V0X2FsbCgpXHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgICAgICBjYWxsYmFja1xyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH0sIFtdKVxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsIGhlaWdodDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiwgcG9zaXRpb246XCJyZWxhdGl2ZVwifX0+XHJcbiAgICAgIDxkaXYgaWQ9XCJjYW52YXNcIiBzdHlsZT17e2hlaWdodDogXCIxMDAlXCIsIHdpZHRoOiBcIjMzJVwifX0vPlxyXG4gICAgICA8Y2FudmFzIGlkPVwiZ3VpX2NhbnZhc1wiIHN0eWxlPXt7d2lkdGg6IFwiNjclXCJ9fT48L2NhbnZhcz5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY1JlY29udHJ1Y3Rpb24zRDsiLCIvLyBTZXQgdGhlIHNyYyBvZiBpZnJhbWUgdGFnXHJcbnZhciBtYXRjaGluZ19oaXN0b3J5ID0gW107XHJcbnZhciBtYXRjaGluZ19oaXN0b3J5X2NvbG9yID0gW107XHJcbnZhciBwYWludF9tYXRjaGluZyA9ICdmYWxzZSc7XHJcblxyXG4vLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7XHJcbn1cclxuXHJcbi8vIFdlYnNvY2tldCBhbmQgb3RoZXIgdmFyaWFibGVzIGZvciBpbWFnZSBkaXNwbGF5XHJcbnZhciBpbWFnZV9kYXRhMSwgaW1hZ2VfZGF0YTIsIHNvdXJjZTEsIHNvdXJjZTJcclxubGV0IGltYWdlMSA9IG5ldyBJbWFnZSgpO1xyXG5sZXQgaW1hZ2UyID0gbmV3IEltYWdlKCk7XHJcbmltYWdlMS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgdXBkYXRlX2ltYWdlKCk7XHJcbn1cclxuXHJcbmltYWdlMi5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgdXBkYXRlX2ltYWdlKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3IChkYXRhKXtcclxuICAgICAgICAgICAgaW1hZ2VfZGF0YTEgPSBKU09OLnBhcnNlKGRhdGEuaW1nMSlcclxuICAgICAgICAgICAgc291cmNlMSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGExLmltZylcclxuICAgICAgICAgICAgaWYoZGF0YS5pbWcxICE9PSBudWxsICYmIGRhdGEuaW1nMSAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgICAgIGltYWdlX2RhdGExID0gSlNPTi5wYXJzZShkYXRhLmltZzEpXHJcbiAgICAgICAgICAgICAgICBzb3VyY2UxID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YTEuaW1nKVxyXG4gICAgICAgICAgICAgICAgaWYoc291cmNlMS5sZW5ndGggPiAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2UxLnNyYyA9IFwiZGF0YTppbWFnZTEvanBlZztiYXNlNjQsXCIgKyBzb3VyY2UxO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihkYXRhLmltZzIgIT09IG51bGwgJiYgZGF0YS5pbWcyICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgaW1hZ2VfZGF0YTIgPSBKU09OLnBhcnNlKGRhdGEuaW1nMilcclxuICAgICAgICAgICAgICAgIHNvdXJjZTIgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhMi5pbWcpXHJcbiAgICAgICAgICAgICAgICBpZihzb3VyY2UyLmxlbmd0aCA+IDEwKXtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZTIuc3JjID0gXCJkYXRhOmltYWdlMi9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTI7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBwb2ludCA9IEpTT04ucGFyc2UoZGF0YS5wdHMpO1xyXG4gICAgICAgICAgICBpZihwb2ludCAhPSBcIlwiKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBwYWludFBvaW50cyhwb2ludCk7ICAvL1RPRE86IERPIE5PVCBUT1VDSFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBtYXRjaGluZyA9IEpTT04ucGFyc2UoZGF0YS5tYXRjaCk7XHJcblxyXG4gICAgICAgICAgICBpZihtYXRjaGluZyAhPSBcIlwiKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBTZXRNYXRjaGluZyhtYXRjaGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gUGFpbnQgTWFjaGluZ1xyXG4gICAgICAgICAgICBwYWludF9tYXRjaGluZyA9IGRhdGEucF9tYXRjaFxyXG4gICAgICAgICAgICBpZiAocGFpbnRfbWF0Y2hpbmcgPT09IFwiVFwiKSB7XHJcbiAgICAgICAgICAgICAgICBwYWludE1hdGNoaW5nKCk7XHJcbiAgICAgICAgICAgIH1cclxufVxyXG4gICAgICAgIFxyXG5cclxuXHJcbi8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuZnVuY3Rpb24gdXBkYXRlX2ltYWdlKCl7XHJcbiAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzXCIpLFxyXG4gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IDI0MDtcclxuICAgIGNhbnZhcy53aWR0aCA9IDY1MDtcclxuXHJcbiAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZTEsIDAsIDAsMzIwLCAyNDApO1xyXG4gICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UyLCAzMjAsIDAsMzIwLCAyNDApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYWludFBvaW50cyhwb2ludHNfcmVjZWl2ZWQpXHJcbntcclxuICAgIHZhciBwb2ludCA9IFtdO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzX3JlY2VpdmVkLmxlbmd0aDsgaSsrKVxyXG4gICAge1xyXG4gICAgICAgIHBvaW50LnggPSBwb2ludHNfcmVjZWl2ZWRbaV1bMF07XHJcbiAgICAgICAgcG9pbnQueSA9IHBvaW50c19yZWNlaXZlZFtpXVsxXTtcclxuICAgICAgICBwb2ludC56ID0gcG9pbnRzX3JlY2VpdmVkW2ldWzJdO1xyXG4gICAgICAgIHBvaW50LnIgPSBwb2ludHNfcmVjZWl2ZWRbaV1bM107XHJcbiAgICAgICAgcG9pbnQuZyA9IHBvaW50c19yZWNlaXZlZFtpXVs0XTtcclxuICAgICAgICBwb2ludC5iID0gcG9pbnRzX3JlY2VpdmVkW2ldWzVdO1xyXG5cdFx0YWRkUG9pbnQocG9pbnQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYW5kb21Db2xvcigpIHtcclxuICB2YXIgbGV0dGVycyA9ICcwMTIzNDU2Nzg5QUJDREVGJztcclxuICB2YXIgY29sb3IgPSAnIyc7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcclxuICAgIGNvbG9yICs9IGxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpXTtcclxuICB9XHJcbiAgcmV0dXJuIGNvbG9yO1xyXG59XHJcblxyXG5mdW5jdGlvbiBsaW5lX21hdGNoaW5nX2ltYWdlKG1hdGNoaW5nKVxyXG57XHJcbiAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzXCIpLFxyXG4gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cclxuXHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8obWF0Y2hpbmcueDEsIG1hdGNoaW5nLnkxKTtcclxuICAgIGNvbnRleHQubGluZVRvKG1hdGNoaW5nLngyICsgMzIwLCBtYXRjaGluZy55Mik7XHJcbiAgICBjb250ZXh0LmFyYyhtYXRjaGluZy54MSwgbWF0Y2hpbmcueTEsIDUsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgIGNvbnRleHQuYXJjKG1hdGNoaW5nLngyICsgMzIwLCBtYXRjaGluZy55MiwgNSwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5zdHJva2VTdHlsZSA9IG1hdGNoaW5nLmNvbG9yO1xyXG4gICAgY29udGV4dC5maWxsU3R5bGUgPSBtYXRjaGluZy5jb2xvcjtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcGFpbnRNYXRjaGluZygpXHJcbntcclxuICAgIHJlc2V0X21hdGNoaW5nKClcclxuXHJcbiAgICB2YXIgbWF0Y2hpbmcgPSBbXTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoaW5nX2hpc3RvcnkubGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgICAgbWF0Y2hpbmcueDEgPSBtYXRjaGluZ19oaXN0b3J5W2ldWzBdLzI7XHJcbiAgICAgICAgbWF0Y2hpbmcueTEgPSBtYXRjaGluZ19oaXN0b3J5W2ldWzFdLzI7XHJcbiAgICAgICAgbWF0Y2hpbmcueDIgPSBtYXRjaGluZ19oaXN0b3J5W2ldWzJdLzI7XHJcbiAgICAgICAgbWF0Y2hpbmcueTIgPSBtYXRjaGluZ19oaXN0b3J5W2ldWzNdLzI7XHJcbiAgICAgICAgbWF0Y2hpbmcuY29sb3IgPSBtYXRjaGluZ19oaXN0b3J5X2NvbG9yW2ldO1xyXG5cclxuICAgICAgICBsaW5lX21hdGNoaW5nX2ltYWdlKG1hdGNoaW5nKTtcclxuICAgIH1cclxuICAgIG1hdGNoaW5nX2hpc3RvcnkgPSBbXVxyXG4gICAgbWF0Y2hpbmdfaGlzdG9yeV9jb2xvcj1bXVxyXG59XHJcblxyXG5mdW5jdGlvbiBTZXRNYXRjaGluZyhtYXRjaGluZ19yZWNlaXZlZClcclxue1xyXG4gICAgbWF0Y2hpbmdfaGlzdG9yeSA9IG1hdGNoaW5nX2hpc3RvcnkuY29uY2F0KG1hdGNoaW5nX3JlY2VpdmVkKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hpbmdfcmVjZWl2ZWQubGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgICAgbWF0Y2hpbmdfaGlzdG9yeV9jb2xvciA9IG1hdGNoaW5nX2hpc3RvcnlfY29sb3IuY29uY2F0KGdldFJhbmRvbUNvbG9yKCkpO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gcmVzZXRfbWF0Y2hpbmcoKSB7XHJcbiAgICBsZXQgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzXCIpLFxyXG4gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG5cclxuICAgIC8vIENsZWFyIHRoZSBjYW52YXNcclxuICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCk7XHJcblxyXG4gICAgLy8gUmVkcmF3IHRoZSBpbWFnZXNcclxuICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlMSwgMCwgMCwzMjAsIDI0MCk7XHJcbiAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZTIsIDMyMCwgMCwzMjAsIDI0MCk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRfYWxsKCkge1xyXG4gICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc1wiKSxcclxuICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuXHJcbiAgICAvLyBDbGVhciB0aGUgY2FudmFzXHJcbiAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG59XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIlJlYWN0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJpbWcxIiwiZHJhdyIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsInVuc3Vic2NyaWJlIiwic3RhdGUiLCJyZXNldF9zY2VuZTNkIiwicmVzZXRfYWxsIiwiZXJyb3IiLCJTVEFURV9DSEFOR0VEIiwiX2pzeHMiLCJzdHlsZSIsImRpc3BsYXkiLCJoZWlnaHQiLCJ3aWR0aCIsInBvc2l0aW9uIiwiY2hpbGRyZW4iLCJfanN4IiwiaWQiLCJpbWFnZV9kYXRhMSIsImltYWdlX2RhdGEyIiwic291cmNlMSIsInNvdXJjZTIiLCJtYXRjaGluZ19oaXN0b3J5IiwibWF0Y2hpbmdfaGlzdG9yeV9jb2xvciIsImRlY29kZV91dGY4IiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsImltYWdlMSIsIkltYWdlIiwiaW1hZ2UyIiwiSlNPTiIsInBhcnNlIiwiaW1nIiwidW5kZWZpbmVkIiwibGVuZ3RoIiwic3JjIiwiaW1nMiIsInBvaW50IiwicHRzIiwicG9pbnRzX3JlY2VpdmVkIiwiaSIsIngiLCJ5IiwieiIsInIiLCJnIiwiYiIsImFkZFBvaW50IiwicGFpbnRQb2ludHMiLCJtYXRjaGluZyIsIm1hdGNoIiwibWF0Y2hpbmdfcmVjZWl2ZWQiLCJjb25jYXQiLCJnZXRSYW5kb21Db2xvciIsIlNldE1hdGNoaW5nIiwicF9tYXRjaCIsImNhbnZhcyIsImNvbnRleHQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Q29udGV4dCIsImNsZWFyUmVjdCIsImRyYXdJbWFnZSIsIngxIiwieTEiLCJ4MiIsInkyIiwiY29sb3IiLCJsaW5lX21hdGNoaW5nX2ltYWdlIiwicGFpbnRNYXRjaGluZyIsInVwZGF0ZV9pbWFnZSIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImJlZ2luUGF0aCIsIm1vdmVUbyIsImxpbmVUbyIsImFyYyIsIlBJIiwic3Ryb2tlU3R5bGUiLCJmaWxsU3R5bGUiLCJmaWxsIiwic3Ryb2tlIiwib25sb2FkIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/392.32fe2203.js.LICENSE.txt b/react_frontend/static/react_frontend/js/392.32fe2203.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/392.32fe2203.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/3985.8fdaeb6d.js b/react_frontend/static/react_frontend/js/3985.8fdaeb6d.js new file mode 100644 index 000000000..2088df745 --- /dev/null +++ b/react_frontend/static/react_frontend/js/3985.8fdaeb6d.js @@ -0,0 +1,3 @@ +/*! For license information please see 3985.8fdaeb6d.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[3985],{6327:(t,e,r)=>{"use strict";var n=r(4994);e.A=void 0;var i=n(r(2032)),s=r(4848),a=(0,i.default)((0,s.jsx)("path",{d:"M6 19h4V5H6v14zm8-14v14h4V5h-4z"}),"Pause");e.A=a},8586:(t,e,r)=>{"use strict";var n=r(4994);e.A=void 0;var i=n(r(2032)),s=r(4848),a=(0,i.default)((0,s.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow");e.A=a},1710:(t,e,r)=>{t.exports=function t(e,r,n){function i(a,o){if(!r[a]){if(!e[a]){if(s)return s(a,!0);var h=new Error("Cannot find module '"+a+"'");throw h.code="MODULE_NOT_FOUND",h}var u=r[a]={exports:{}};e[a][0].call(u.exports,(function(t){return i(e[a][1][t]||t)}),u,u.exports,t,e,r,n)}return r[a].exports}for(var s=void 0,a=0;a>2,o=(3&e)<<4|r>>4,h=1>6:64,u=2>4,r=(15&a)<<4|(o=s.indexOf(t.charAt(u++)))>>2,n=(3&o)<<6|(h=s.indexOf(t.charAt(u++))),c[l++]=e,64!==o&&(c[l++]=r),64!==h&&(c[l++]=n);return c}},{"./support":30,"./utils":32}],2:[function(t,e,r){"use strict";var n=t("./external"),i=t("./stream/DataWorker"),s=t("./stream/Crc32Probe"),a=t("./stream/DataLengthProbe");function o(t,e,r,n,i){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var t=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a("data_length")),e=this;return t.on("end",(function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")})),t},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new s).pipe(new a("uncompressedSize")).pipe(e.compressWorker(r)).pipe(new a("compressedSize")).withStreamInfo("compression",e)},e.exports=o},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,e,r){"use strict";var n=t("./stream/GenericWorker");r.STORE={magic:"\0\0",compressWorker:function(){return new n("STORE compression")},uncompressWorker:function(){return new n("STORE decompression")}},r.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,e,r){"use strict";var n=t("./utils"),i=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?"string"!==n.getTypeOf(t)?function(t,e,r){var n=i,s=0+r;t^=-1;for(var a=0;a>>8^n[255&(t^e[a])];return~t}(0|e,t,t.length):function(t,e,r){var n=i,s=0+r;t^=-1;for(var a=0;a>>8^n[255&(t^e.charCodeAt(a))];return~t}(0|e,t,t.length):0}},{"./utils":32}],5:[function(t,e,r){"use strict";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,e,r){"use strict";var n;n="undefined"!=typeof Promise?Promise:t("lie"),e.exports={Promise:n}},{lie:37}],7:[function(t,e,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Uint32Array,i=t("pako"),s=t("./utils"),a=t("./stream/GenericWorker"),o=n?"uint8array":"array";function h(t,e){a.call(this,"FlateWorker/"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}r.magic="\b\0",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new i[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var t=this;this._pako.onData=function(e){t.push({data:e,meta:t.meta})}},r.compressWorker=function(t){return new h("Deflate",t)},r.uncompressWorker=function(){return new h("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,e,r){"use strict";function n(t,e){var r,n="";for(r=0;r>>=8;return n}function i(t,e,r,i,a,l){var f,c,d=t.file,p=t.compression,m=l!==o.utf8encode,_=s.transformTo("string",l(d.name)),g=s.transformTo("string",o.utf8encode(d.name)),v=d.comment,b=s.transformTo("string",l(v)),y=s.transformTo("string",o.utf8encode(v)),w=g.length!==d.name.length,k=y.length!==v.length,x="",S="",z="",C=d.dir,E=d.date,A={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(A.crc32=t.crc32,A.compressedSize=t.compressedSize,A.uncompressedSize=t.uncompressedSize);var I=0;e&&(I|=8),m||!w&&!k||(I|=2048);var O=0,B=0;C&&(O|=16),"UNIX"===a?(B=798,O|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(d.unixPermissions,C)):(B=20,O|=function(t){return 63&(t||0)}(d.dosPermissions)),f=E.getUTCHours(),f<<=6,f|=E.getUTCMinutes(),f<<=5,f|=E.getUTCSeconds()/2,c=E.getUTCFullYear()-1980,c<<=4,c|=E.getUTCMonth()+1,c<<=5,c|=E.getUTCDate(),w&&(S=n(1,1)+n(h(_),4)+g,x+="up"+n(S.length,2)+S),k&&(z=n(1,1)+n(h(b),4)+y,x+="uc"+n(z.length,2)+z);var R="";return R+="\n\0",R+=n(I,2),R+=p.magic,R+=n(f,2),R+=n(c,2),R+=n(A.crc32,4),R+=n(A.compressedSize,4),R+=n(A.uncompressedSize,4),R+=n(_.length,2),R+=n(x.length,2),{fileRecord:u.LOCAL_FILE_HEADER+R+_+x,dirRecord:u.CENTRAL_FILE_HEADER+n(B,2)+R+n(b.length,2)+"\0\0\0\0"+n(O,4)+n(i,4)+_+x+b}}var s=t("../utils"),a=t("../stream/GenericWorker"),o=t("../utf8"),h=t("../crc32"),u=t("../signature");function l(t,e,r,n){a.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}s.inherits(l,a),l.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,a.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-n-1))/r:100}}))},l.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},l.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return u.DATA_DESCRIPTOR+n(t.crc32,4)+n(t.compressedSize,4)+n(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},l.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return n.transformTo("string",this.readData(t))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=i},{"../utils":32}],19:[function(t,e,r){"use strict";var n=t("./Uint8ArrayReader");function i(t){n.call(this,t)}t("../utils").inherits(i,n),i.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,e,r){"use strict";var n=t("./DataReader");function i(t){n.call(this,t)}t("../utils").inherits(i,n),i.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},i.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},i.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},i.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./DataReader":18}],21:[function(t,e,r){"use strict";var n=t("./ArrayReader");function i(t){n.call(this,t)}t("../utils").inherits(i,n),i.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=i},{"../utils":32,"./ArrayReader":17}],22:[function(t,e,r){"use strict";var n=t("../utils"),i=t("../support"),s=t("./ArrayReader"),a=t("./StringReader"),o=t("./NodeBufferReader"),h=t("./Uint8ArrayReader");e.exports=function(t){var e=n.getTypeOf(t);return n.checkSupport(e),"string"!==e||i.uint8array?"nodebuffer"===e?new o(t):i.uint8array?new h(n.transformTo("uint8array",t)):new s(n.transformTo("array",t)):new a(t)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,e,r){"use strict";r.LOCAL_FILE_HEADER="PK",r.CENTRAL_FILE_HEADER="PK",r.CENTRAL_DIRECTORY_END="PK",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK",r.ZIP64_CENTRAL_DIRECTORY_END="PK",r.DATA_DESCRIPTOR="PK\b"},{}],24:[function(t,e,r){"use strict";var n=t("./GenericWorker"),i=t("../utils");function s(t){n.call(this,"ConvertWorker to "+t),this.destType=t}i.inherits(s,n),s.prototype.processChunk=function(t){this.push({data:i.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{"../utils":32,"./GenericWorker":28}],25:[function(t,e,r){"use strict";var n=t("./GenericWorker"),i=t("../crc32");function s(){n.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(s,n),s.prototype.processChunk=function(t){this.streamInfo.crc32=i(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,e,r){"use strict";var n=t("../utils"),i=t("./GenericWorker");function s(t){i.call(this,"DataLengthProbe for "+t),this.propName=t,this.withStreamInfo(t,0)}n.inherits(s,i),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}i.prototype.processChunk.call(this,t)},e.exports=s},{"../utils":32,"./GenericWorker":28}],27:[function(t,e,r){"use strict";var n=t("../utils"),i=t("./GenericWorker");function s(t){i.call(this,"DataWorker");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,t.then((function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=n.getTypeOf(t),e.isPaused||e._tickAndRepeat()}),(function(t){e.error(t)}))}n.inherits(s,i),s.prototype.cleanUp=function(){i.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!i.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":t=this.data.substring(this.index,e);break;case"uint8array":t=this.data.subarray(this.index,e);break;case"array":case"nodebuffer":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{"../utils":32,"./GenericWorker":28}],28:[function(t,e,r){"use strict";function n(t){this.name=t||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(t){this.emit("data",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit("error",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit("error",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var r=0;r "+t:t}},e.exports=n},{}],29:[function(t,e,r){"use strict";var n=t("../utils"),i=t("./ConvertWorker"),s=t("./GenericWorker"),a=t("../base64"),o=t("../support"),h=t("../external"),u=null;if(o.nodestream)try{u=t("../nodejs/NodejsStreamOutputAdapter")}catch(t){}function l(t,e,r){var a=e;switch(e){case"blob":case"arraybuffer":a="uint8array";break;case"base64":a="string"}try{this._internalType=a,this._outputType=e,this._mimeType=r,n.checkSupport(a),this._worker=t.pipe(new i(a)),t.lock()}catch(t){this._worker=new s("error"),this._worker.error(t)}}l.prototype={accumulate:function(t){return function(t,e){return new h.Promise((function(r,i){var s=[],o=t._internalType,h=t._outputType,u=t._mimeType;t.on("data",(function(t,r){s.push(t),e&&e(r)})).on("error",(function(t){s=[],i(t)})).on("end",(function(){try{var t=function(t,e,r){switch(t){case"blob":return n.newBlob(n.transformTo("arraybuffer",e),r);case"base64":return a.encode(e);default:return n.transformTo(t,e)}}(h,function(t,e){var r,n=0,i=null,s=0;for(r=0;r>>6:(r<65536?e[a++]=224|r>>>12:(e[a++]=240|r>>>18,e[a++]=128|r>>>12&63),e[a++]=128|r>>>6&63),e[a++]=128|63&r);return e}(t)},r.utf8decode=function(t){return i.nodebuffer?n.transformTo("nodebuffer",t).toString("utf-8"):function(t){var e,r,i,s,a=t.length,h=new Array(2*a);for(e=r=0;e>10&1023,h[r++]=56320|1023&i)}return h.length!==r&&(h.subarray?h=h.subarray(0,r):h.length=r),n.applyFromCharCode(h)}(t=n.transformTo(i.uint8array?"uint8array":"array",t))},n.inherits(u,a),u.prototype.processChunk=function(t){var e=n.transformTo(i.uint8array?"uint8array":"array",t.data);if(this.leftOver&&this.leftOver.length){if(i.uint8array){var s=e;(e=new Uint8Array(s.length+this.leftOver.length)).set(this.leftOver,0),e.set(s,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var a=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0||0===r?e:r+o[t[r]]>e?r:e}(e),h=e;a!==e.length&&(i.uint8array?(h=e.subarray(0,a),this.leftOver=e.subarray(a,e.length)):(h=e.slice(0,a),this.leftOver=e.slice(a,e.length))),this.push({data:r.utf8decode(h),meta:t.meta})},u.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=u,n.inherits(l,a),l.prototype.processChunk=function(t){this.push({data:r.utf8encode(t.data),meta:t.meta})},r.Utf8EncodeWorker=l},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,e,r){"use strict";var n=t("./support"),i=t("./base64"),s=t("./nodejsUtils"),a=t("./external");function o(t){return t}function h(t,e){for(var r=0;r>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||"/"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===i.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===i.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===i.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===i.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(t){var e,r,n,i=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index+4>>6:(r<65536?e[a++]=224|r>>>12:(e[a++]=240|r>>>18,e[a++]=128|r>>>12&63),e[a++]=128|r>>>6&63),e[a++]=128|63&r);return e},r.buf2binstring=function(t){return h(t,t.length)},r.binstring2buf=function(t){for(var e=new n.Buf8(t.length),r=0,i=e.length;r>10&1023,u[n++]=56320|1023&i)}return h(u,n)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0||0===r?e:r+a[t[r]]>e?r:e}},{"./common":41}],43:[function(t,e,r){"use strict";e.exports=function(t,e,r,n){for(var i=65535&t,s=t>>>16&65535,a=0;0!==r;){for(r-=a=2e3>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,i){var s=n,a=i+r;t^=-1;for(var o=i;o>>8^s[255&(t^e[o])];return~t}},{}],46:[function(t,e,r){"use strict";var n,i=t("../utils/common"),s=t("./trees"),a=t("./adler32"),o=t("./crc32"),h=t("./messages"),u=0,l=0,f=-2,c=2,d=8,p=286,m=30,_=19,g=2*p+1,v=15,b=3,y=258,w=y+b+1,k=42,x=113;function S(t,e){return t.msg=h[e],e}function z(t){return(t<<1)-(4t.avail_out&&(r=t.avail_out),0!==r&&(i.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function A(t,e){s._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,E(t.strm)}function I(t,e){t.pending_buf[t.pending++]=e}function O(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function B(t,e){var r,n,i=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-w?t.strstart-(t.w_size-w):0,u=t.window,l=t.w_mask,f=t.prev,c=t.strstart+y,d=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(i>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-1]===d&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&sh&&0!=--i);return a<=t.lookahead?a:t.lookahead}function R(t){var e,r,n,s,h,u,l,f,c,d,p=t.w_size;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=p+(p-w)){for(i.arraySet(t.window,t.window,p,p,0),t.match_start-=p,t.strstart-=p,t.block_start-=p,e=r=t.hash_size;n=t.head[--e],t.head[e]=p<=n?n-p:0,--r;);for(e=r=p;n=t.prev[--e],t.prev[e]=p<=n?n-p:0,--r;);s+=p}if(0===t.strm.avail_in)break;if(u=t.strm,l=t.window,f=t.strstart+t.lookahead,d=void 0,(c=s)<(d=u.avail_in)&&(d=c),r=0===d?0:(u.avail_in-=d,i.arraySet(l,u.input,u.next_in,d,f),1===u.state.wrap?u.adler=a(u.adler,l,d,f):2===u.state.wrap&&(u.adler=o(u.adler,l,d,f)),u.next_in+=d,u.total_in+=d,d),t.lookahead+=r,t.lookahead+t.insert>=b)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<=b&&(t.ins_h=(t.ins_h<=b)if(n=s._tr_tally(t,t.strstart-t.match_start,t.match_length-b),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=b){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<=b&&(t.ins_h=(t.ins_h<=b&&t.match_length<=t.prev_length){for(i=t.strstart+t.lookahead-b,n=s._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-b),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=i&&(t.ins_h=(t.ins_h<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(R(t),0===t.lookahead&&e===u)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+r;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,A(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-w&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(A(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(A(t,!1),t.strm.avail_out),1)})),new F(4,4,8,4,T),new F(4,5,16,8,T),new F(4,6,32,32,T),new F(4,4,16,16,D),new F(8,16,32,32,D),new F(8,16,128,128,D),new F(8,32,128,256,D),new F(32,128,258,1024,D),new F(32,258,258,4096,D)],r.deflateInit=function(t,e){return L(t,e,d,15,8,0)},r.deflateInit2=L,r.deflateReset=P,r.deflateResetKeep=U,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?f:(t.state.gzhead=e,l):f},r.deflate=function(t,e){var r,i,a,h;if(!t||!t.state||5>8&255),I(i,i.gzhead.time>>16&255),I(i,i.gzhead.time>>24&255),I(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),I(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(I(i,255&i.gzhead.extra.length),I(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=o(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(I(i,0),I(i,0),I(i,0),I(i,0),I(i,0),I(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),I(i,3),i.status=x);else{var c=d+(i.w_bits-8<<4)<<8;c|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(c|=32),c+=31-c%31,i.status=x,O(i,c),0!==i.strstart&&(O(i,t.adler>>>16),O(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(a=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>a&&(t.adler=o(t.adler,i.pending_buf,i.pending-a,a)),E(t),a=i.pending,i.pending!==i.pending_buf_size));)I(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>a&&(t.adler=o(t.adler,i.pending_buf,i.pending-a,a)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(t.adler=o(t.adler,i.pending_buf,i.pending-a,a)),E(t),a=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindexa&&(t.adler=o(t.adler,i.pending_buf,i.pending-a,a)),0===h&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){a=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>a&&(t.adler=o(t.adler,i.pending_buf,i.pending-a,a)),E(t),a=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindexa&&(t.adler=o(t.adler,i.pending_buf,i.pending-a,a)),0===h&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&E(t),i.pending+2<=i.pending_buf_size&&(I(i,255&t.adler),I(i,t.adler>>8&255),t.adler=0,i.status=x)):i.status=x),0!==i.pending){if(E(t),0===t.avail_out)return i.last_flush=-1,l}else if(0===t.avail_in&&z(e)<=z(r)&&4!==e)return S(t,-5);if(666===i.status&&0!==t.avail_in)return S(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==u&&666!==i.status){var p=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(R(t),0===t.lookahead)){if(e===u)return 1;break}if(t.match_length=0,r=s._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(A(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(A(t,!1),0===t.strm.avail_out)?1:2}(i,e):3===i.strategy?function(t,e){for(var r,n,i,a,o=t.window;;){if(t.lookahead<=y){if(R(t),t.lookahead<=y&&e===u)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=b&&0t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=b?(r=s._tr_tally(t,1,t.match_length-b),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=s._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(A(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(A(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(A(t,!1),0===t.strm.avail_out)?1:2}(i,e):n[i.level].func(i,e);if(3!==p&&4!==p||(i.status=666),1===p||3===p)return 0===t.avail_out&&(i.last_flush=-1),l;if(2===p&&(1===e?s._tr_align(i):5!==e&&(s._tr_stored_block(i,0,0,!1),3===e&&(C(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),E(t),0===t.avail_out))return i.last_flush=-1,l}return 4!==e?l:i.wrap<=0?1:(2===i.wrap?(I(i,255&t.adler),I(i,t.adler>>8&255),I(i,t.adler>>16&255),I(i,t.adler>>24&255),I(i,255&t.total_in),I(i,t.total_in>>8&255),I(i,t.total_in>>16&255),I(i,t.total_in>>24&255)):(O(i,t.adler>>>16),O(i,65535&t.adler)),E(t),0=r.w_size&&(0===o&&(C(r.head),r.strstart=0,r.block_start=0,r.insert=0),d=new i.Buf8(r.w_size),i.arraySet(d,e,p-r.w_size,r.w_size,0),e=d,p=r.w_size),h=t.avail_in,u=t.next_in,c=t.input,t.avail_in=p,t.next_in=0,t.input=e,R(r);r.lookahead>=b;){for(n=r.strstart,s=r.lookahead-(b-1);r.ins_h=(r.ins_h<>>=y=b>>>24,p-=y,0==(y=b>>>16&255))C[s++]=65535&b;else{if(!(16&y)){if(!(64&y)){b=m[(65535&b)+(d&(1<>>=y,p-=y),p<15&&(d+=z[n++]<>>=y=b>>>24,p-=y,!(16&(y=b>>>16&255))){if(!(64&y)){b=_[(65535&b)+(d&(1<>>=y,p-=y,(y=s-a)>3,d&=(1<<(p-=w<<3))-1,t.next_in=n,t.next_out=s,t.avail_in=n>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function p(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function m(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=l,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new n.Buf32(f),e.distcode=e.distdyn=new n.Buf32(c),e.sane=1,e.back=-1,h):u}function _(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,m(t)):u}function g(t,e){var r,n;return t&&t.state?(n=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15=a.wsize?(n.arraySet(a.window,e,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):(i<(s=a.wsize-a.wnext)&&(s=i),n.arraySet(a.window,e,r-i,s,a.wnext),(i-=s)?(n.arraySet(a.window,e,r-i,i,0),a.wnext=i,a.whave=a.wsize):(a.wnext+=s,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=s(r.check,P,2,0),b=v=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&v)<<8)+(v>>8))%31){t.msg="incorrect header check",r.mode=30;break}if(8!=(15&v)){t.msg="unknown compression method",r.mode=30;break}if(b-=4,T=8+(15&(v>>>=4)),0===r.wbits)r.wbits=T;else if(T>r.wbits){t.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(P[0]=255&v,P[1]=v>>>8&255,r.check=s(r.check,P,2,0)),b=v=0,r.mode=3;case 3:for(;b<32;){if(0===_)break t;_--,v+=f[p++]<>>8&255,P[2]=v>>>16&255,P[3]=v>>>24&255,r.check=s(r.check,P,4,0)),b=v=0,r.mode=4;case 4:for(;b<16;){if(0===_)break t;_--,v+=f[p++]<>8),512&r.flags&&(P[0]=255&v,P[1]=v>>>8&255,r.check=s(r.check,P,2,0)),b=v=0,r.mode=5;case 5:if(1024&r.flags){for(;b<16;){if(0===_)break t;_--,v+=f[p++]<>>8&255,r.check=s(r.check,P,2,0)),b=v=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(_<(S=r.length)&&(S=_),S&&(r.head&&(T=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,f,p,S,T)),512&r.flags&&(r.check=s(r.check,f,S,p)),_-=S,p+=S,r.length-=S),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===_)break t;for(S=0;T=f[p+S++],r.head&&T&&r.length<65536&&(r.head.name+=String.fromCharCode(T)),T&&S<_;);if(512&r.flags&&(r.check=s(r.check,f,S,p)),_-=S,p+=S,T)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===_)break t;for(S=0;T=f[p+S++],r.head&&T&&r.length<65536&&(r.head.comment+=String.fromCharCode(T)),T&&S<_;);if(512&r.flags&&(r.check=s(r.check,f,S,p)),_-=S,p+=S,T)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;b<16;){if(0===_)break t;_--,v+=f[p++]<>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;b<32;){if(0===_)break t;_--,v+=f[p++]<>>=7&b,b-=7&b,r.mode=27;break}for(;b<3;){if(0===_)break t;_--,v+=f[p++]<>>=1)){case 0:r.mode=14;break;case 1:if(k(r),r.mode=20,6!==e)break;v>>>=2,b-=2;break t;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=30}v>>>=2,b-=2;break;case 14:for(v>>>=7&b,b-=7&b;b<32;){if(0===_)break t;_--,v+=f[p++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&v,b=v=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(S=r.length){if(_>>=5,b-=5,r.ndist=1+(31&v),v>>>=5,b-=5,r.ncode=4+(15&v),v>>>=4,b-=4,286>>=3,b-=3}for(;r.have<19;)r.lens[L[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,F={bits:r.lenbits},D=o(0,r.lens,0,19,r.lencode,0,r.work,F),r.lenbits=F.bits,D){t.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,I=65535&U,!((E=U>>>24)<=b);){if(0===_)break t;_--,v+=f[p++]<>>=E,b-=E,r.lens[r.have++]=I;else{if(16===I){for(N=E+2;b>>=E,b-=E,0===r.have){t.msg="invalid bit length repeat",r.mode=30;break}T=r.lens[r.have-1],S=3+(3&v),v>>>=2,b-=2}else if(17===I){for(N=E+3;b>>=E)),v>>>=3,b-=3}else{for(N=E+7;b>>=E)),v>>>=7,b-=7}if(r.have+S>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=30;break}for(;S--;)r.lens[r.have++]=T}}if(30===r.mode)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,F={bits:r.lenbits},D=o(1,r.lens,0,r.nlen,r.lencode,0,r.work,F),r.lenbits=F.bits,D){t.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,F={bits:r.distbits},D=o(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,F),r.distbits=F.bits,D){t.msg="invalid distances set",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=_&&258<=g){t.next_out=m,t.avail_out=g,t.next_in=p,t.avail_in=_,r.hold=v,r.bits=b,a(t,w),m=t.next_out,c=t.output,g=t.avail_out,p=t.next_in,f=t.input,_=t.avail_in,v=r.hold,b=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;A=(U=r.lencode[v&(1<>>16&255,I=65535&U,!((E=U>>>24)<=b);){if(0===_)break t;_--,v+=f[p++]<>O)])>>>16&255,I=65535&U,!(O+(E=U>>>24)<=b);){if(0===_)break t;_--,v+=f[p++]<>>=O,b-=O,r.back+=O}if(v>>>=E,b-=E,r.back+=E,r.length=I,0===A){r.mode=26;break}if(32&A){r.back=-1,r.mode=12;break}if(64&A){t.msg="invalid literal/length code",r.mode=30;break}r.extra=15&A,r.mode=22;case 22:if(r.extra){for(N=r.extra;b>>=r.extra,b-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;A=(U=r.distcode[v&(1<>>16&255,I=65535&U,!((E=U>>>24)<=b);){if(0===_)break t;_--,v+=f[p++]<>O)])>>>16&255,I=65535&U,!(O+(E=U>>>24)<=b);){if(0===_)break t;_--,v+=f[p++]<>>=O,b-=O,r.back+=O}if(v>>>=E,b-=E,r.back+=E,64&A){t.msg="invalid distance code",r.mode=30;break}r.offset=I,r.extra=15&A,r.mode=24;case 24:if(r.extra){for(N=r.extra;b>>=r.extra,b-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===g)break t;if(S=w-g,r.offset>S){if((S=r.offset-S)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=30;break}z=S>r.wnext?(S-=r.wnext,r.wsize-S):r.wnext-S,S>r.length&&(S=r.length),C=r.window}else C=c,z=m-r.offset,S=r.length;for(gv?(y=U[P+f[S]],T[D+f[S]]):(y=96,0),d=1<>I)+(p-=d)]=b<<24|y<<16|w,0!==p;);for(d=1<>=1;if(0!==d?(R&=d-1,R+=d):R=0,S++,0==--F[x]){if(x===C)break;x=e[r+f[S]]}if(E>>7)]}function C(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function E(t,e,r){t.bi_valid>u-r?(t.bi_buf|=e<>u-t.bi_valid,t.bi_valid+=r-u):(t.bi_buf|=e<>>=1,r<<=1,0<--e;);return r>>>1}function O(t,e,r){var n,i,s=new Array(h+1),a=0;for(n=1;n<=h;n++)s[n]=a=a+r[n-1]<<1;for(i=0;i<=e;i++){var o=t[2*i+1];0!==o&&(t[2*i]=I(s[o]++,o))}}function B(t){var e;for(e=0;e>1;1<=r;r--)D(t,s,r);for(i=u;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],D(t,s,1),n=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=n,s[2*i]=s[2*r]+s[2*n],t.depth[i]=(t.depth[r]>=t.depth[n]?t.depth[r]:t.depth[n])+1,s[2*r+1]=s[2*n+1]=i,t.heap[1]=i++,D(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,n,i,s,a,o,u=e.dyn_tree,l=e.max_code,f=e.stat_desc.static_tree,c=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,p=e.stat_desc.extra_base,m=e.stat_desc.max_length,_=0;for(s=0;s<=h;s++)t.bl_count[s]=0;for(u[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<573;r++)m<(s=u[2*u[2*(n=t.heap[r])+1]+1]+1)&&(s=m,_++),u[2*n+1]=s,l>=7;n>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e>>3,(a=t.static_len+3+7>>>3)<=i&&(i=a)):i=a=r+5,r+4<=i&&-1!==e?j(t,e,r,n):4===t.strategy||a===i?(E(t,2+(n?1:0),3),F(t,p,m)):(E(t,4+(n?1:0),3),function(t,e,r,n){var i;for(E(t,e-257,5),E(t,r-1,5),E(t,n-4,4),i=0;i>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(g[r]+s+1)]++,t.dyn_dtree[2*z(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){E(t,2,3),A(t,256,p),function(t){16===t.bi_valid?(C(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{"../utils/common":41}],53:[function(t,e,r){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,n){(function(t){!function(t,e){"use strict";if(!t.setImmediate){var r,n,i,s,a=1,o={},h=!1,u=t.document,l=Object.getPrototypeOf&&Object.getPrototypeOf(t);l=l&&l.setTimeout?l:t,r="[object process]"==={}.toString.call(t.process)?function(t){process.nextTick((function(){c(t)}))}:function(){if(t.postMessage&&!t.importScripts){var e=!0,r=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=r,e}}()?(s="setImmediate$"+Math.random()+"$",t.addEventListener?t.addEventListener("message",d,!1):t.attachEvent("onmessage",d),function(e){t.postMessage(s+e,"*")}):t.MessageChannel?((i=new MessageChannel).port1.onmessage=function(t){c(t.data)},function(t){i.port2.postMessage(t)}):u&&"onreadystatechange"in u.createElement("script")?(n=u.documentElement,function(t){var e=u.createElement("script");e.onreadystatechange=function(){c(t),e.onreadystatechange=null,n.removeChild(e),e=null},n.appendChild(e)}):function(t){setTimeout(c,0,t)},l.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n + +(c) 2009-2016 Stuart Knightley +Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. + +JSZip uses the library pako released under the MIT license : +https://github.com/nodeca/pako/blob/main/LICENSE +*/ diff --git a/react_frontend/static/react_frontend/js/4035.2de1261e.js b/react_frontend/static/react_frontend/js/4035.2de1261e.js new file mode 100644 index 000000000..6e2cd527d --- /dev/null +++ b/react_frontend/static/react_frontend/js/4035.2de1261e.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4035],{2032:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o.createSvgIcon}});var o=r(8826)},1848:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});const o=r(6540).createContext({})},1641:(e,t,r)=>{"use strict";r.d(t,{A:()=>y});var o=r(8587),n=r(8168),a=r(6540),s=r(53),i=r(5659),c=r(4279),l=r(7577),u=r(4409),d=r(6606),p=r(8466),f=r(8413),A=r(1609);function g(e){return(0,A.A)("MuiIconButton",e)}const h=(0,f.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]);var v=r(4848);const m=["edge","children","className","color","disabled","disableFocusRipple","size"],b=(0,l.Ay)(d.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"default"!==r.color&&t[`color${(0,p.A)(r.color)}`],r.edge&&t[`edge${(0,p.A)(r.edge)}`],t[`size${(0,p.A)(r.size)}`]]}})((({theme:e,ownerState:t})=>(0,n.A)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})),(({theme:e,ownerState:t})=>{var r;const o=null==(r=(e.vars||e).palette)?void 0:r[t.color];return(0,n.A)({},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"default"!==t.color&&(0,n.A)({color:null==o?void 0:o.main},!t.disableRipple&&{"&:hover":(0,n.A)({},o&&{backgroundColor:e.vars?`rgba(${o.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(o.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===t.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===t.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${h.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})})),y=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiIconButton"}),{edge:a=!1,children:c,className:l,color:d="default",disabled:f=!1,disableFocusRipple:A=!1,size:h="medium"}=r,y=(0,o.A)(r,m),R=(0,n.A)({},r,{edge:a,color:d,disabled:f,disableFocusRipple:A,size:h}),x=(e=>{const{classes:t,disabled:r,color:o,edge:n,size:a}=e,s={root:["root",r&&"disabled","default"!==o&&`color${(0,p.A)(o)}`,n&&`edge${(0,p.A)(n)}`,`size${(0,p.A)(a)}`]};return(0,i.A)(s,g,t)})(R);return(0,v.jsx)(b,(0,n.A)({className:(0,s.A)(x.root,l),centerRipple:!0,focusRipple:!A,disabled:f,ref:t,ownerState:R},y,{children:c}))}))},8826:(e,t,r)=>{"use strict";r.r(t),r.d(t,{capitalize:()=>n.A,createChainedFunction:()=>a,createSvgIcon:()=>s.A,debounce:()=>i.A,deprecatedPropType:()=>c,isMuiElement:()=>l.A,ownerDocument:()=>u.A,ownerWindow:()=>d.A,requirePropFactory:()=>p,setRef:()=>f,unstable_ClassNameGenerator:()=>R,unstable_useEnhancedEffect:()=>A.A,unstable_useId:()=>g.A,unsupportedProp:()=>h,useControlled:()=>v.A,useEventCallback:()=>m.A,useForkRef:()=>b.A,useIsFocusVisible:()=>y.A});var o=r(9071),n=r(8466);const a=r(1210).A;var s=r(5003),i=r(1935);const c=function(e,t){return()=>null};var l=r(5034),u=r(6248),d=r(3749);r(8168);const p=function(e,t){return()=>null},f=r(989).A;var A=r(2778),g=r(1668);const h=function(e,t,r,o,n){return null};var v=r(1159),m=r(3034),b=r(6852),y=r(1544);const R={configure:e=>{o.A.configure(e)}}},1159:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});const o=r(2501).A},1668:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});const o=r(4661).A},2325:(e,t,r)=>{"use strict";function o(e){return e&&e.ownerDocument||document}r.d(t,{A:()=>o})},2501:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});var o=r(6540);function n({controlled:e,default:t,name:r,state:n="value"}){const{current:a}=o.useRef(void 0!==e),[s,i]=o.useState(t);return[a?e:s,o.useCallback((e=>{a||i(e)}),[])]}},4661:(e,t,r)=>{"use strict";var o;r.d(t,{A:()=>i});var n=r(6540);let a=0;const s=(o||(o=r.t(n,2)))["useId".toString()];function i(e){if(void 0!==s){const t=s();return null!=e?e:t}return function(e){const[t,r]=n.useState(e),o=e||t;return n.useEffect((()=>{null==t&&(a+=1,r(`mui-${a}`))}),[t]),o}(e)}},2230:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u}),r(6540);var o=r(6544),n=r(5793),a=r(5556),s=r.n(a),i=r(4848),c=(0,o.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function l(e){return(0,i.jsx)(n.A,{theme:c,children:e.children})}l.propTypes={children:s().node};const u=l},7710:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l}),r(6540);var o=r(833),n=r(1641),a=r(9463),s=r(6730),i=r(2230),c=r(4848);const l=function(e){return(0,c.jsx)(i.default,{children:(0,c.jsxs)(o.A,{color:"loading",variant:"contained",children:[e.url&&(0,c.jsx)(n.A,{href:e.url,target:"_blank",color:"secondary",children:(0,c.jsx)(a.A,{})}),(0,c.jsx)(n.A,{href:"https://forum.unibotics.org/",target:"_blank",color:"secondary",children:(0,c.jsx)(s.A,{})})]})})}},2694:(e,t,r)=>{"use strict";var o=r(6925);function n(){}function a(){}a.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,a,s){if(s!==o){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:n};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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S2pILEVBQU9xRCxFQUFVQyxFQUFlQyxFQUFVQyxFQUFjMEQsR0FDcEUsR0FBSUEsSUFBV04sRUFBZixDQUlBLElBQUlPLEVBQU0sSUFBSUMsTUFDWixtTEFLRixNQURBRCxFQUFJckgsS0FBTyxzQkFDTHFILENBUE4sQ0FRRixDQUVBLFNBQVNFLElBQ1AsT0FBT0osQ0FDVCxDQUhBQSxFQUFLSyxXQUFhTCxFQU1sQixJQUFJTSxFQUFpQixDQUNuQkMsTUFBT1AsRUFDUFEsT0FBUVIsRUFDUlMsS0FBTVQsRUFDTlUsS0FBTVYsRUFDTlcsT0FBUVgsRUFDUlksT0FBUVosRUFDUmEsT0FBUWIsRUFDUmMsT0FBUWQsRUFFUmUsSUFBS2YsRUFDTGdCLFFBQVNaLEVBQ1RhLFFBQVNqQixFQUNUa0IsWUFBYWxCLEVBQ2JtQixXQUFZZixFQUNadkQsS0FBTW1ELEVBQ05vQixTQUFVaEIsRUFDVmlCLE1BQU9qQixFQUNQa0IsVUFBV2xCLEVBQ1htQixNQUFPbkIsRUFDUG9CLE1BQU9wQixFQUVQcUIsZUFBZ0I1QixFQUNoQkMsa0JBQW1CRixHQUtyQixPQUZBVSxFQUFlckIsVUFBWXFCLEVBRXBCQSxDQUNULEMsaUJDL0NFUCxFQUFPaEksUUFBVSxFQUFRLEtBQVIsRSx3QkNObkJnSSxFQUFPaEksUUFGb0IsOEMsV0NKM0JnSSxFQUFPaEksUUFMUCxTQUFnQzJKLEdBQzlCLE9BQU9BLEdBQUtBLEVBQUVDLFdBQWFELEVBQUksQ0FDN0IsUUFBV0EsRUFFZixFQUN5QzNCLEVBQU9oSSxRQUFRNEosWUFBYSxFQUFNNUIsRUFBT2hJLFFBQWlCLFFBQUlnSSxFQUFPaEksTyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ljb25CdXR0b24vaWNvbkJ1dHRvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9JY29uQnV0dG9uL0ljb25CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9kZXByZWNhdGVkUHJvcFR5cGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvcmVxdWlyZVByb3BGYWN0b3J5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3Vuc3VwcG9ydGVkUHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VJZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lckRvY3VtZW50L293bmVyRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlQ29udHJvbGxlZC91c2VDb250cm9sbGVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlkL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvUm9ib3RpY3NUaGVtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuJ3VzZSBjbGllbnQnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfdXRpbHMuY3JlYXRlU3ZnSWNvbjtcbiAgfVxufSk7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXRpbHNcIik7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5jb25zdCBCdXR0b25Hcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBCdXR0b25Hcm91cENvbnRleHQuZGlzcGxheU5hbWUgPSAnQnV0dG9uR3JvdXBDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkdyb3VwQ29udGV4dDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpSWNvbkJ1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgaWNvbkJ1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlJY29uQnV0dG9uJywgWydyb290JywgJ2Rpc2FibGVkJywgJ2NvbG9ySW5oZXJpdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JFcnJvcicsICdjb2xvckluZm8nLCAnY29sb3JTdWNjZXNzJywgJ2NvbG9yV2FybmluZycsICdlZGdlU3RhcnQnLCAnZWRnZUVuZCcsICdzaXplU21hbGwnLCAnc2l6ZU1lZGl1bScsICdzaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBpY29uQnV0dG9uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJlZGdlXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb2xvclwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwic2l6ZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IGljb25CdXR0b25DbGFzc2VzLCB7IGdldEljb25CdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2ljb25CdXR0b25DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlZCxcbiAgICBjb2xvcixcbiAgICBlZGdlLFxuICAgIHNpemVcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGNvbG9yICE9PSAnZGVmYXVsdCcgJiYgYGNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gLCBlZGdlICYmIGBlZGdlJHtjYXBpdGFsaXplKGVkZ2UpfWAsIGBzaXplJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgSWNvbkJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBuYW1lOiAnTXVpSWNvbkJ1dHRvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnZGVmYXVsdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgb3duZXJTdGF0ZS5lZGdlICYmIHN0eWxlc1tgZWRnZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmVkZ2UpfWBdLCBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIGZsZXg6ICcwIDAgYXV0bycsXG4gIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMjQpLFxuICBwYWRkaW5nOiA4LFxuICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAvLyBFeHBsaWNpdGx5IHNldCB0aGUgZGVmYXVsdCB2YWx1ZSB0byBzb2x2ZSBhIGJ1ZyBvbiBJRTExLlxuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZSxcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdiYWNrZ3JvdW5kLWNvbG9yJywge1xuICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdFxuICB9KVxufSwgIW93bmVyU3RhdGUuZGlzYWJsZVJpcHBsZSAmJiB7XG4gICcmOmhvdmVyJzoge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5hY3RpdmVDaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLmFjdGlvbi5hY3RpdmUsIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICB9XG4gIH1cbn0sIG93bmVyU3RhdGUuZWRnZSA9PT0gJ3N0YXJ0JyAmJiB7XG4gIG1hcmdpbkxlZnQ6IG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyA/IC0zIDogLTEyXG59LCBvd25lclN0YXRlLmVkZ2UgPT09ICdlbmQnICYmIHtcbiAgbWFyZ2luUmlnaHQ6IG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyA/IC0zIDogLTEyXG59KSwgKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF9wYWxldHRlO1xuICBjb25zdCBwYWxldHRlID0gKF9wYWxldHRlID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXTtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAnaW5oZXJpdCdcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiBfZXh0ZW5kcyh7XG4gICAgY29sb3I6IHBhbGV0dGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBhbGV0dGUubWFpblxuICB9LCAhb3duZXJTdGF0ZS5kaXNhYmxlUmlwcGxlICYmIHtcbiAgICAnJjpob3Zlcic6IF9leHRlbmRzKHt9LCBwYWxldHRlICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7cGFsZXR0ZS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEocGFsZXR0ZS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpXG4gICAgfSwge1xuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSlcbiAgfSksIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICAgcGFkZGluZzogNSxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE4KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYge1xuICAgIHBhZGRpbmc6IDEyLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMjgpXG4gIH0sIHtcbiAgICBbYCYuJHtpY29uQnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH1cbiAgfSk7XG59KTtcblxuLyoqXG4gKiBSZWZlciB0byB0aGUgW0ljb25zXSgvbWF0ZXJpYWwtdWkvaWNvbnMvKSBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uXG4gKiByZWdhcmRpbmcgdGhlIGF2YWlsYWJsZSBpY29uIG9wdGlvbnMuXG4gKi9cbmNvbnN0IEljb25CdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBJY29uQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlJY29uQnV0dG9uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgZWRnZSA9IGZhbHNlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdkZWZhdWx0JyxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIHNpemUgPSAnbWVkaXVtJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgZWRnZSxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgc2l6ZVxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goSWNvbkJ1dHRvblJvb3QsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNlbnRlclJpcHBsZTogdHJ1ZSxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgcmVmOiByZWYsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZVxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEljb25CdXR0b24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGljb24gdG8gZGlzcGxheS5cbiAgICovXG4gIGNoaWxkcmVuOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMubm9kZSwgcHJvcHMgPT4ge1xuICAgIGNvbnN0IGZvdW5kID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShwcm9wcy5jaGlsZHJlbikuc29tZShjaGlsZCA9PiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpICYmIGNoaWxkLnByb3BzLm9uQ2xpY2spO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihbJ01VSTogWW91IGFyZSBwcm92aWRpbmcgYW4gb25DbGljayBldmVudCBsaXN0ZW5lciB0byBhIGNoaWxkIG9mIGEgYnV0dG9uIGVsZW1lbnQuJywgJ1ByZWZlciBhcHBseWluZyBpdCB0byB0aGUgSWNvbkJ1dHRvbiBkaXJlY3RseS4nLCAnVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIHdob2xlIDxidXR0b24+IHdpbGwgYmUgcmVzcG9uc2l2ZSB0byBjbGljayBldmVudHMuJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdkZWZhdWx0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSAga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBnaXZlbiwgdXNlcyBhIG5lZ2F0aXZlIG1hcmdpbiB0byBjb3VudGVyYWN0IHRoZSBwYWRkaW5nIG9uIG9uZVxuICAgKiBzaWRlICh0aGlzIGlzIG9mdGVuIGhlbHBmdWwgZm9yIGFsaWduaW5nIHRoZSBsZWZ0IG9yIHJpZ2h0XG4gICAqIHNpZGUgb2YgdGhlIGljb24gd2l0aCBjb250ZW50IGFib3ZlIG9yIGJlbG93LCB3aXRob3V0IHJ1aW5pbmcgdGhlIGJvcmRlclxuICAgKiBzaXplIGFuZCBzaGFwZSkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlZGdlOiBQcm9wVHlwZXMub25lT2YoWydlbmQnLCAnc3RhcnQnLCBmYWxzZV0pLFxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogYHNtYWxsYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZW5zZSBidXR0b24gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBJY29uQnV0dG9uOyIsImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZUNoYWluZWRGdW5jdGlvbiBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9kZXByZWNhdGVkUHJvcFR5cGUgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZXByZWNhdGVkUHJvcFR5cGU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVwcmVjYXRlZFByb3BUeXBlKHZhbGlkYXRvciwgcmVhc29uKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cbiAgcmV0dXJuIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgJHtsb2NhdGlvbn0gXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZVNhZmV9XFxgIGlzIGRlcHJlY2F0ZWQuICR7cmVhc29ufWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9yZXF1aXJlUHJvcEZhY3RvcnkgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCByZXF1aXJlUHJvcEZhY3Rvcnk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlUHJvcEZhY3RvcnkoY29tcG9uZW50TmFtZUluRXJyb3IsIENvbXBvbmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2ZvcmJpZC1mb3JlaWduLXByb3AtdHlwZXNcbiAgY29uc3QgcHJldlByb3BUeXBlcyA9IENvbXBvbmVudCA/IF9leHRlbmRzKHt9LCBDb21wb25lbnQucHJvcFR5cGVzKSA6IG51bGw7XG4gIGNvbnN0IHJlcXVpcmVQcm9wID0gcmVxdWlyZWRQcm9wID0+IChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQ2hlY2tlciA9IHByZXZQcm9wVHlwZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZQcm9wVHlwZXNbcHJvcEZ1bGxOYW1lU2FmZV07XG4gICAgaWYgKGRlZmF1bHRUeXBlQ2hlY2tlcikge1xuICAgICAgY29uc3QgdHlwZUNoZWNrZXJSZXN1bHQgPSBkZWZhdWx0VHlwZUNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICh0eXBlQ2hlY2tlclJlc3VsdCkge1xuICAgICAgICByZXR1cm4gdHlwZUNoZWNrZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJyAmJiAhcHJvcHNbcmVxdWlyZWRQcm9wXSkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZUluRXJyb3J9XFxgIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgXFxgJHtyZXF1aXJlZFByb3B9XFxgIHByb3AuYCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICByZXR1cm4gcmVxdWlyZVByb3A7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgc2V0UmVmOyIsImltcG9ydCB7IHVuc3RhYmxlX3Vuc3VwcG9ydGVkUHJvcCBhcyB1bnN1cHBvcnRlZFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVuc3VwcG9ydGVkUHJvcDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnN1cHBvcnRlZFByb3AocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVtb3ZlIGl0LmApO1xuICB9XG4gIHJldHVybiBudWxsO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvYmFzZS9jbGFzc05hbWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYXBpdGFsaXplIH0gZnJvbSAnLi9jYXBpdGFsaXplJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVTdmdJY29uIH0gZnJvbSAnLi9jcmVhdGVTdmdJY29uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnLi9kZXByZWNhdGVkUHJvcFR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICcuL2lzTXVpRWxlbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lcldpbmRvdyB9IGZyb20gJy4vb3duZXJXaW5kb3cnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXF1aXJlUHJvcEZhY3RvcnkgfSBmcm9tICcuL3JlcXVpcmVQcm9wRmFjdG9yeSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFJlZiB9IGZyb20gJy4vc2V0UmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICcuL3VzZUVuaGFuY2VkRWZmZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlSWQgfSBmcm9tICcuL3VzZUlkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnLi91bnN1cHBvcnRlZFByb3AnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VDb250cm9sbGVkIH0gZnJvbSAnLi91c2VDb250cm9sbGVkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZvcmtSZWYgfSBmcm9tICcuL3VzZUZvcmtSZWYnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJy4vdXNlSXNGb2N1c1Zpc2libGUnO1xuLy8gVE9ETzogcmVtb3ZlIHRoaXMgZXhwb3J0IG9uY2UgQ2xhc3NOYW1lR2VuZXJhdG9yIGlzIHN0YWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciA9IHtcbiAgY29uZmlndXJlOiBnZW5lcmF0b3IgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydNVUk6IGBDbGFzc05hbWVHZW5lcmF0b3JgIGltcG9ydCBmcm9tIGBAbXVpL21hdGVyaWFsL3V0aWxzYCBpcyBvdXRkYXRlZCBhbmQgbWlnaHQgY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMuJywgJycsIFwiWW91IHNob3VsZCB1c2UgYGltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvY2xhc3NOYW1lJ2AgaW5zdGVhZFwiLCAnJywgJ1RoZSBkZXRhaWwgb2YgdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8zMDAxMSNpc3N1ZWNvbW1lbnQtMTAyNDk5MzQwMScsICcnLCAnVGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9tdWkuY29tL2d1aWRlcy9jbGFzc25hbWUtZ2VuZXJhdG9yLyddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgQ2xhc3NOYW1lR2VuZXJhdG9yLmNvbmZpZ3VyZShnZW5lcmF0b3IpO1xuICB9XG59OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlQ29udHJvbGxlZCBhcyB1c2VDb250cm9sbGVkIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VDb250cm9sbGVkOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlSWQgYXMgdXNlSWQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUlkOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcywgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb250cm9sbGVkKHtcbiAgY29udHJvbGxlZCxcbiAgZGVmYXVsdDogZGVmYXVsdFByb3AsXG4gIG5hbWUsXG4gIHN0YXRlID0gJ3ZhbHVlJ1xufSkge1xuICAvLyBpc0NvbnRyb2xsZWQgaXMgaWdub3JlZCBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RzIGFzIGl0IHNob3VsZCBuZXZlciBjaGFuZ2UuXG4gIGNvbnN0IHtcbiAgICBjdXJyZW50OiBpc0NvbnRyb2xsZWRcbiAgfSA9IFJlYWN0LnVzZVJlZihjb250cm9sbGVkICE9PSB1bmRlZmluZWQpO1xuICBjb25zdCBbdmFsdWVTdGF0ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICBjb25zdCB2YWx1ZSA9IGlzQ29udHJvbGxlZCA/IGNvbnRyb2xsZWQgOiB2YWx1ZVN0YXRlO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDb250cm9sbGVkICE9PSAoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgJHtpc0NvbnRyb2xsZWQgPyAnJyA6ICd1bid9Y29udHJvbGxlZCAke3N0YXRlfSBzdGF0ZSBvZiAke25hbWV9IHRvIGJlICR7aXNDb250cm9sbGVkID8gJ3VuJyA6ICcnfWNvbnRyb2xsZWQuYCwgJ0VsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLicsIGBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICR7bmFtZX0gYCArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4nLCBcIlRoZSBuYXR1cmUgb2YgdGhlIHN0YXRlIGlzIGRldGVybWluZWQgZHVyaW5nIHRoZSBmaXJzdCByZW5kZXIuIEl0J3MgY29uc2lkZXJlZCBjb250cm9sbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgYHVuZGVmaW5lZGAuXCIsICdNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH0sIFtzdGF0ZSwgbmFtZSwgY29udHJvbGxlZF0pO1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGRlZmF1bHRWYWx1ZVxuICAgIH0gPSBSZWFjdC51c2VSZWYoZGVmYXVsdFByb3ApO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQ29udHJvbGxlZCAmJiBkZWZhdWx0VmFsdWUgIT09IGRlZmF1bHRQcm9wKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IEEgY29tcG9uZW50IGlzIGNoYW5naW5nIHRoZSBkZWZhdWx0ICR7c3RhdGV9IHN0YXRlIG9mIGFuIHVuY29udHJvbGxlZCAke25hbWV9IGFmdGVyIGJlaW5nIGluaXRpYWxpemVkLiBgICsgYFRvIHN1cHByZXNzIHRoaXMgd2FybmluZyBvcHQgdG8gdXNlIGEgY29udHJvbGxlZCAke25hbWV9LmBdLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFByb3ApXSk7XG4gIH1cbiAgY29uc3Qgc2V0VmFsdWVJZlVuY29udHJvbGxlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKG5ld1ZhbHVlID0+IHtcbiAgICBpZiAoIWlzQ29udHJvbGxlZCkge1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH1cbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZUlmVW5jb250cm9sbGVkXTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBnbG9iYWxJZCA9IDA7XG5mdW5jdGlvbiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKSB7XG4gIGNvbnN0IFtkZWZhdWx0SWQsIHNldERlZmF1bHRJZF0gPSBSZWFjdC51c2VTdGF0ZShpZE92ZXJyaWRlKTtcbiAgY29uc3QgaWQgPSBpZE92ZXJyaWRlIHx8IGRlZmF1bHRJZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdElkID09IG51bGwpIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHRoaXMgZGVmYXVsdCBpZCB3aGVuIHBvc3NpYmxlLlxuICAgICAgLy8gVXNlIHRoZSBpbmNyZW1lbnRpbmcgdmFsdWUgZm9yIGNsaWVudC1zaWRlIHJlbmRlcmluZyBvbmx5LlxuICAgICAgLy8gV2UgY2FuJ3QgdXNlIGl0IHNlcnZlci1zaWRlLlxuICAgICAgLy8gSWYgeW91IHdhbnQgdG8gdXNlIHJhbmRvbSB2YWx1ZXMgcGxlYXNlIGNvbnNpZGVyIHRoZSBCaXJ0aGRheSBQcm9ibGVtOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaXJ0aGRheV9wcm9ibGVtXG4gICAgICBnbG9iYWxJZCArPSAxO1xuICAgICAgc2V0RGVmYXVsdElkKGBtdWktJHtnbG9iYWxJZH1gKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0SWRdKTtcbiAgcmV0dXJuIGlkO1xufVxuXG4vLyBkb3duc3RyZWFtIGJ1bmRsZXJzIG1heSByZW1vdmUgdW5uZWNlc3NhcnkgY29uY2F0ZW5hdGlvbiwgYnV0IHdvbid0IHJlbW92ZSB0b1N0cmluZyBjYWxsIC0tIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svaXNzdWVzLzE0ODE0XG5jb25zdCBtYXliZVJlYWN0VXNlSWQgPSBSZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldO1xuLyoqXG4gKlxuICogQGV4YW1wbGUgPGRpdiBpZD17dXNlSWQoKX0gLz5cbiAqIEBwYXJhbSBpZE92ZXJyaWRlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VJZChpZE92ZXJyaWRlKSB7XG4gIGlmIChtYXliZVJlYWN0VXNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHJlYWN0SWQgPSBtYXliZVJlYWN0VXNlSWQoKTtcbiAgICByZXR1cm4gaWRPdmVycmlkZSAhPSBudWxsID8gaWRPdmVycmlkZSA6IHJlYWN0SWQ7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIC0tIGBSZWFjdC51c2VJZGAgaXMgaW52YXJpYW50IGF0IHJ1bnRpbWUuXG4gIHJldHVybiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKTtcbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IGNyZWF0ZVRoZW1lLCBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuXHJcbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xyXG4gIHBhbGV0dGU6IHtcclxuICAgIHR5cGU6IFwibGlnaHRcIixcclxuICAgIHByaW1hcnk6IHtcclxuICAgICAgbWFpbjogXCIjZmZhNzI2XCIsXHJcbiAgICB9LFxyXG4gICAgc2Vjb25kYXJ5OiB7XHJcbiAgICAgIG1haW46IFwiIzE0N2FmZlwiLFxyXG4gICAgfSxcclxuICAgIHN1Y2Nlc3M6IHtcclxuICAgICAgbWFpbjogXCIjNENBRjUwXCIsXHJcbiAgICB9LFxyXG4gICAgbm90Q29ubmVjdGVkOiB7XHJcbiAgICAgIG1haW46IFwiIzc1NzU3NVwiLFxyXG4gICAgfSxcclxuICAgIGxvYWRpbmc6IHtcclxuICAgICAgbWFpbjogXCIjRTY0QTE5XCIsXHJcbiAgICB9LFxyXG4gICAgc2VsZWN0b3I6IHtcclxuICAgICAgbWFpbjogXCIjMzI5RDlDXCIsXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgdHlwb2dyYXBoeToge1xyXG4gICAgZm9udEZhbWlseTogXCJSb2JvdG9cIixcclxuICB9LFxyXG59KTtcclxuXHJcbmZ1bmN0aW9uIFJvYm90aWNzVGhlbWUocHJvcHMpIHtcclxuICByZXR1cm4gPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57cHJvcHMuY2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPjtcclxufVxyXG5cclxuUm9ib3RpY3NUaGVtZS5wcm9wVHlwZXMgPSB7XHJcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgUm9ib3RpY3NUaGVtZTtcclxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEJ1dHRvbkdyb3VwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IEljb25CdXR0b24gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvblwiO1xyXG5pbXBvcnQgU2Nob29sT3V0bGluZWRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NjaG9vbE91dGxpbmVkXCI7XHJcbmltcG9ydCBDb2RlT3V0bGluZWRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvZGVPdXRsaW5lZFwiO1xyXG5pbXBvcnQgQ29tbWVudE91dGxpbmVkSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db21tZW50T3V0bGluZWRcIjtcclxuaW1wb3J0IFJvYm90aWNzVGhlbWUgZnJvbSBcIkNvbXBvbmVudHMvUm9ib3RpY3NUaGVtZVwiO1xyXG5cclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL2J1dHRvbnMvRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbi5jc3NcIjtcclxuXHJcbmNvbnN0IEV4ZXJjaXNlVGhlb3J5Rm9ydW1CdXR0b24gPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPFJvYm90aWNzVGhlbWU+XHJcbiAgICAgIDxCdXR0b25Hcm91cCBjb2xvcj17XCJsb2FkaW5nXCJ9IHZhcmlhbnQ9e1wiY29udGFpbmVkXCJ9PlxyXG4gICAgICAgIHtwcm9wcy51cmwgJiYgKFxyXG4gICAgICAgICAgPEljb25CdXR0b24gaHJlZj17cHJvcHMudXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgICAgICA8U2Nob29sT3V0bGluZWRJY29uIC8+XHJcbiAgICAgICAgICA8L0ljb25CdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9ydW0udW5pYm90aWNzLm9yZy9cIlxyXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Q29tbWVudE91dGxpbmVkSWNvbiAvPlxyXG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cclxuICAgICAgPC9CdXR0b25Hcm91cD5cclxuICAgIDwvUm9ib3RpY3NUaGVtZT5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbjtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHtcbiAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHtcbiAgICBcImRlZmF1bHRcIjogZVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl91dGlscyIsImNyZWF0ZVN2Z0ljb24iLCJnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsIkljb25CdXR0b25Sb290Iiwic3R5bGVkIiwiQnV0dG9uQmFzZSIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwib3duZXJTdGF0ZSIsInJvb3QiLCJjb2xvciIsImNhcGl0YWxpemUiLCJlZGdlIiwic2l6ZSIsInRoZW1lIiwidGV4dEFsaWduIiwiZmxleCIsImZvbnRTaXplIiwidHlwb2dyYXBoeSIsInB4VG9SZW0iLCJwYWRkaW5nIiwiYm9yZGVyUmFkaXVzIiwib3ZlcmZsb3ciLCJ2YXJzIiwicGFsZXR0ZSIsImFjdGlvbiIsImFjdGl2ZSIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImR1cmF0aW9uIiwic2hvcnRlc3QiLCJkaXNhYmxlUmlwcGxlIiwiYmFja2dyb3VuZENvbG9yIiwiYWN0aXZlQ2hhbm5lbCIsImhvdmVyT3BhY2l0eSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsIl9wYWxldHRlIiwibWFpbiIsIm1haW5DaGFubmVsIiwiZGlzYWJsZWQiLCJpblByb3BzIiwicmVmIiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGlzYWJsZUZvY3VzUmlwcGxlIiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiY2VudGVyUmlwcGxlIiwiZm9jdXNSaXBwbGUiLCJ2YWxpZGF0b3IiLCJyZWFzb24iLCJjb21wb25lbnROYW1lSW5FcnJvciIsIkNvbXBvbmVudCIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwidW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIiwiY29uZmlndXJlIiwiZ2VuZXJhdG9yIiwiQ2xhc3NOYW1lR2VuZXJhdG9yIiwib3duZXJEb2N1bWVudCIsIm5vZGUiLCJkb2N1bWVudCIsInVzZUNvbnRyb2xsZWQiLCJjb250cm9sbGVkIiwiZGVmYXVsdCIsImRlZmF1bHRQcm9wIiwic3RhdGUiLCJjdXJyZW50IiwiaXNDb250cm9sbGVkIiwidW5kZWZpbmVkIiwidmFsdWVTdGF0ZSIsInNldFZhbHVlIiwibmV3VmFsdWUiLCJnbG9iYWxJZCIsIm1heWJlUmVhY3RVc2VJZCIsInRvU3RyaW5nIiwidXNlSWQiLCJpZE92ZXJyaWRlIiwicmVhY3RJZCIsImRlZmF1bHRJZCIsInNldERlZmF1bHRJZCIsImlkIiwidXNlR2xvYmFsSWQiLCJjcmVhdGVUaGVtZSIsInR5cGUiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5Iiwic3VjY2VzcyIsIm5vdENvbm5lY3RlZCIsImxvYWRpbmciLCJzZWxlY3RvciIsImZvbnRGYW1pbHkiLCJSb2JvdGljc1RoZW1lIiwiX2pzeCIsIlRoZW1lUHJvdmlkZXIiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJfanN4cyIsIkJ1dHRvbkdyb3VwIiwidmFyaWFudCIsInVybCIsIkljb25CdXR0b24iLCJocmVmIiwidGFyZ2V0IiwiU2Nob29sT3V0bGluZWRJY29uIiwiQ29tbWVudE91dGxpbmVkSWNvbiIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsInNoaW0iLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZSIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4055.b48c7765.js b/react_frontend/static/react_frontend/js/4055.b48c7765.js new file mode 100644 index 000000000..9640c3733 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4055.b48c7765.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4055],{4055:(e,t,o)=>{o.r(t),o.d(t,{frequencyAutoCompleteObj:()=>i,guiAndHalAutoCompleteObj:()=>a});var a={_follow_line:{hal:[{type:"method",label:"getImage()",code:"getImage()",descriptions:"Get the image (BGR8)."},{type:"method",label:"setV(velocity)",code:"setV(velocity)",descriptions:"Set the linear speed."},{type:"method",label:"setW(velocity)",code:"setW(velocity)",descriptions:"Set the angular velocity."}],webgui:[{type:"method",label:"showImage(image)",code:"showImage(image)",descriptions:"Allows you to view a debug image or with relevant information."}]},_vacuum_cleaner:{hal:[{type:"method",label:"getBumperData().state",code:"getBumperData().state",descriptions:"To establish if the robot has crashed or not. Returns a 1 if the robot collides and a 0 if it has not crashed."},{type:"method",label:"getBumperData().bumper",code:"getBumperData().bumper",descriptions:"If the robot has crashed, it turns to 1 when the crash occurs at the center of the robot, 0 when it occurs at its right and 2 if the collision is at its left."},{type:"method",label:"getLaserData()",code:"getLaserData()",descriptions:"It allows to obtain the data of the laser sensor, which consists of 180 pairs of values ​​(0-180º, distance in meters)."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed)."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity"}],webgui:[]},_autoparking:{hal:[{type:"method",label:"getPose3d()",code:"getPose3d()",descriptions:"Get all the position information."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Get the position of the robot (y coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with regarding the map."},{type:"method",label:"getFrontLaserData()",code:"getFrontLaserData()",descriptions:"Obtain the front laser sensor data It is composed of 180 pairs of values: (0-180º distance in millimeters)."},{type:"method",label:"getRightLaserData()",code:"getRightLaserData()",descriptions:"Obtain the right laser sensor data It is composed of 180 pairs of values: (0-180º distance in millimeters)."},{type:"method",label:"getBackLaserData()",code:"getBackLaserData()",descriptions:"Obtain the back laser sensor data It is composed of 180 pairs of values: (0-180º distance in millimeters)."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."}],webgui:[]},_follow_person:{hal:[{type:"method",label:"getImage()",code:"getImage()",descriptions:"Obtain the current frame of the camera robot."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Obtain the position of the robot (and coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with respect to the map."},{type:"method",label:"getLaserData()",code:"getLaserData()",descriptions:"It allows to obtain the data of the laser sensor. It returns a list of 180 laser measurements (0 - 180 degrees)."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getBoundingBoxes()",code:"getBoundingBoxes()",descriptions:"This method calls a detect() neural network's method to obtain a list of detected objects from an image passed as argument."}],webgui:[{type:"method",label:"showImage()",code:"showImage()",descriptions:"Show an opencv image in the web template."}]},_vacuum_cleaner_loc:{hal:[{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the X coordinate of the robot."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Get the Y coordinate of the robot."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot."},{type:"method",label:"getBumperData().state",code:"getBumperData().state",descriptions:"To establish if the robot has crashed or not. Returns a 1 if the robot collides and a 0 if it has not crashed."},{type:"method",label:"getBumperData().bumper",code:"getBumperData().bumper",descriptions:"If the robot has crashed, it turns to 1 when the crash occurs at the center of the robot, 0 when it occurs at its right and 2 if the collision is at its left."},{type:"method",label:"getLaserData()",code:"getLaserData()",descriptions:"It allows to obtain the data of the laser sensor, which consists of 180 pairs of values ​​(0-180º, distance in meters)."}],webgui:[{type:"method",label:"showNumpy(mat)",code:"showNumpy(mat)",descriptions:"Displays the matrix sent."},{type:"method",label:"getMap(url)",code:"getMap(url)",descriptions:"Returns a numpy array with the image data in a 3 dimensional array (R, G, B, A). The URL of the Vacuum Cleaner."}]},_global_navigation:{hal:[{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getPose3d()",code:"getPose3d()",descriptions:"Returns x,y and theta components of the robot in world coordinates."}],webgui:[{type:"method",label:"showNumpy(numpy)",code:"showNumpy(numpy)",descriptions:"Shows Gradient Path Planning field on the user interface. It represents the values of the field that have been assigned to the array passed as a parameter. Accepts as input a two-dimensional uint8 numpy array whose values can range from 0 to 255 (grayscale). In order to have a grid with the same resolution as the map, the array should be 400x400."},{type:"method",label:"showPath(array)",code:"showPath(array)",descriptions:"Shows a path on the map. The parameter should be a 2D array containing each of the points of the path."},{type:"method",label:"getTargetPose()",code:"getTargetPose()",descriptions:"Returns x,y coordinates of chosen destionation in the world."},{type:"method",label:"getMap(url)",code:"getMap(url)",descriptions:"Returns a numpy array with the image data in grayscale as a 2 dimensional array."},{type:"method",label:"rowColumn(vector)",code:"rowColumn(vector)",descriptions:"Returns the index in map coordinates corresponding to the vector in world coordinates passed as parameter."}]},_rescue_people:{hal:[{type:"method",label:"get_position()",code:"get_position()",descriptions:"Returns the actual position of the drone as a numpy array [x, y, z], in m."},{type:"method",label:"get_velocity()",code:"get_velocity()",descriptions:"Returns the actual velocities of the drone as a numpy array [vx, vy, vz], in m/s."},{type:"method",label:"get_yaw_rate()",code:"get_yaw_rate()",descriptions:"Returns the actual yaw rate of the drone, in rad/s."},{type:"method",label:"get_orientation()",code:"get_orientation()",descriptions:"Returns the actual roll, pitch and yaw of the drone as a numpy array [roll, pitch, yaw], in rad."},{type:"method",label:"get_roll()",code:"get_roll()",descriptions:"Returns the roll angle of the drone, in rad."},{type:"method",label:"get_pitch()",code:"get_pitch()",descriptions:"Returns the pitch angle of the drone, in rad."},{type:"method",label:"get_yaw()",code:"get_yaw()",descriptions:"Returns the yaw angle of the drone, in rad."},{type:"method",label:"get_landed_state()",code:"get_landed_state()",descriptions:"Returns 1 if the drone is on the ground (landed), 2 if the drone is in the air and 4 if the drone is landing. 0 could be also returned if the drone landed state is unknown."},{type:"method",label:"set_cmd_pos(x, y, z, az)",code:"set_cmd_pos(x, y, z, az)",descriptions:"Commands the position (x,y,z) of the drone, in m and the yaw angle (az) (in rad) taking as reference the first takeoff point (map frame)."},{type:"method",label:"set_cmd_vel(vx, vy, vz, az)",code:"set_cmd_vel(vx, vy, vz, az)",descriptions:"Commands the linear velocity of the drone in the x, y and z directions (in m/s) and the yaw rate (az) (rad/s) in its body fixed frame."},{type:"method",label:"set_cmd_mix(vx, vy, z, az)",code:"set_cmd_mix(vx, vy, z, az)",descriptions:"Commands the linear velocity of the drone in the x, y directions (in m/s), the height (z) related to the takeoff point and the yaw rate (az) (in rad/s)"},{type:"method",label:"takeoff(height)",code:"takeoff(height)",descriptions:"Takeoff at the current location, to the given height (in m)."},{type:"method",label:"land()",code:"land()",descriptions:"Land at the current location."},{type:"method",label:"get_frontal_image()",code:"get_frontal_image()",descriptions:"Returns the latest image from the frontal camera as a OpenCV cv2_image."},{type:"method",label:"get_ventral_image()",code:"get_ventral_image()",descriptions:"Returns the latest image from the ventral camera as a OpenCV cv2_image."}],webgui:[{type:"method",label:"showImage(cv2_image)",code:"showImage(cv2_image)",descriptions:"Shows a image of the camera in the GUI."},{type:"method",label:"showLeftImage(cv2_image)",code:"showLeftImage(cv2_image)",descriptions:"Shows another image of the camera in the GUI."}]},_obstacle_avoidance:{hal:[{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Obtain the position of the robot (y coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with regarding the map."},{type:"method",label:"getLaserData()",code:"getLaserData()",descriptions:"Obtain laser sensor data It is composed of 180 pairs of values: (0-180º distance in meters)."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."}],webgui:[{type:"method",label:"getNextTarget()",code:"getNextTarget()",descriptions:"Obtain the next target object on the scenario."},{type:"method",label:"setTargetx",code:"setTargetx",descriptions:"Sets the x coordinate of the target on the GUI."},{type:"method",label:"setTargety",code:"setTargety",descriptions:"Sets the y coordinate of the target on the GUI."},{type:"method",label:"showForces",code:"showForces",descriptions:"Shows the forces being appliend on the car in real time."}]},_3d_reconstruction:{hal:[{type:"method",label:"getImage('left')",code:"getImage('left')",descriptions:"Get the left image."},{type:"method",label:"getImage('right')",code:"getImage('right')",descriptions:"Get the right image."},{type:"method",label:"getCameraPosition('left')",code:"getCameraPosition('left')",descriptions:"Get the left camera position from ROS Driver Camera."},{type:"method",label:"getCameraPosition('right')",code:"getCameraPosition('right')",descriptions:"Get the right camera position from ROS Driver Camera."},{type:"method",label:"graficToOptical('left', point2d)",code:"graficToOptical('left', point2d)",descriptions:"Transform the Image Coordinate System to the Camera System."},{type:"method",label:"backproject('left', point2d)",code:"backproject('left', point2d)",descriptions:"Backprojects the 2D Image Point into 3D Point Space."},{type:"method",label:"project('left', point3d)",code:"project('left', point3d)",descriptions:"Backprojects a 3D Point Space into the 2D Image Point."},{type:"method",label:"opticalToGrafic('left', point2d)",code:"opticalToGrafic('left', point2d)",descriptions:"Transform the Camera System to the Image Coordinate System."},{type:"method",label:"project3DScene(point3d)",code:"project3DScene(point3d)",descriptions:"Transform 3D Point Space after triangulation to the 3D Point Viewer."}],webgui:[{type:"method",label:"ShowNewPoints(points)",code:"ShowNewPoints(points)",descriptions:"Plot a array of plots in the 3D visor."},{type:"method",label:"ShowAllPoints(points)",code:"ShowAllPoints(points)",descriptions:"Clear the 3D visor and plot new array of plots."},{type:"method",label:"ClearAllPoints()",code:"ClearAllPoints()",descriptions:"Clear the 3D visor."},{type:"method",label:"showImageMatching(x1, y1, x2, y2)",code:"showImageMatching(x1, y1, x2, y2)",descriptions:"Plot the matching between two images."},{type:"method",label:"showImages(imageLeft,imageRight,True)",code:"showImages(imageLeft,imageRight,True)",descriptions:"Allows you to view a debug images or with relevant information."}]},_amazon_warehouse:{hal:[{type:"method",label:"getPose3d()",code:"getPose3d()",descriptions:"Returns x,y and theta components of the robot in world coordinates."},{type:"method",label:"getSimTime()",code:"getSimTime()",descriptions:"Returns simulation time."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular speed."},{type:"method",label:"lift()",code:"lift()",descriptions:"Lift the platform"},{type:"method",label:"putdown()",code:"putdown()",descriptions:"Put down the platform."}],webgui:[{type:"method",label:"showPath(array)",code:"showPath(array)",descriptions:"Shows a path on the map. The parameter should be a 2D array containing each of the points of the path."},{type:"method",label:"getMap(url)",code:"getMap(url)",descriptions:"Returns a numpy array with the image data in a 3 dimensional array (R, G, B, A)."},{type:"method",label:"showNumpy(mat)",code:"showNumpy(mat)",descriptions:"Displays the matrix sent."}]},_montecarlo_laser_loc:{hal:[{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Obtain the position of the robot (y coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with regarding the map."},{type:"method",label:"getOdom()",code:"getOdom()",descriptions:"Get the orientation of the robot with noise regarding the map."},{type:"method",label:"getLaserData()",code:"getLaserData()",descriptions:"Obtain laser sensor data It is composed of 180 pairs of values: (0-180º distance in meters)."},{type:"method",label:"getBumperData()",code:"getBumperData()",descriptions:"If the robot has crashed, it turns to 1 when the crash occurs at the center of the robot, 0 when it occurs at its right and 2 if the collision is at its left."}],webgui:[{type:"method",label:"showPosition(x, y, angle)",code:"showPosition(x, y, angle)",descriptions:"Shows the position on the map."},{type:"method",label:"getMap(url)",code:"getMap(url)",descriptions:"Returns a numpy array with the image data in a 3 dimensional array (R, G, B, A). The URL of the Vacuum Cleaner."},{type:"method",label:"poseToMap(x_prime, y_prime, yaw_prime)",code:"poseToMap(x_prime, y_prime, yaw_prime)",descriptions:"Returns the map coordinates of the given pose."},{type:"method",label:"mapToPose(x, y, yaw)",code:"mapToPose(x, y, yaw)",descriptions:"Returns the pose of the given map coordinates."},{type:"method",label:"showParticles(particles)",code:"showParticles(particles)",descriptions:"Shows the particles on the map."}]},_montecarlo_visual_loc:{hal:[{type:"method",label:"getImage()",code:"getImage()",descriptions:"Get the image."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Obtain the position of the robot (y coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with regarding the map."}],webgui:[{type:"method",label:"showPosition(x, y, angle)",code:"showPosition(x, y, angle)",descriptions:"Shows the position on the map."},{type:"method",label:"showImage()",code:"showImage()",descriptions:"Allows you to view a debug image or with relevant information."},{type:"method",label:"getMap(url)",code:"getMap(url)",descriptions:"Returns the map from the given url."},{type:"method",label:"getBGRMap(url)",code:"getBGRMap(url)",descriptions:"Returns the map as a cv2 image from the given url."},{type:"method",label:"poseToMap(x_prime, y_prime, yaw_prime)",code:"poseToMap(x_prime, y_prime, yaw_prime)",descriptions:"Converts the robot position to 2D coordinates in the map."},{type:"method",label:"mapToPose(x, y, yaw)",code:"mapToPose(x, y, yaw)",descriptions:"Converts the robot 2D coordinates in the map to the real 3D position."},{type:"method",label:"showParticles(particles)",code:"showParticles(particles)",descriptions:"Shows the particles on the map."}]},_marker_visual_loc:{hal:[{type:"method",label:"getImage()",code:"getImage()",descriptions:"Get the image."},{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Obtain the position of the robot (y coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with regarding the map."}],webgui:[{type:"method",label:"showEstimatedPose((x, y, angle))",code:"showEstimatedPose((x, y, angle))",descriptions:"Shows the estimated position on the map."},{type:"method",label:"showImage()",code:"showImage()",descriptions:"Allows you to view a debug image or with relevant information."}]},_laser_mapping:{hal:[{type:"method",label:"setV()",code:"setV()",descriptions:"Set the linear speed."},{type:"method",label:"setW()",code:"setW()",descriptions:"Set the angular velocity."},{type:"method",label:"getPose3d().x",code:"getPose3d().x",descriptions:"Get the position of the robot (x coordinate)."},{type:"method",label:"getPose3d().y",code:"getPose3d().y",descriptions:"Obtain the position of the robot (y coordinate)."},{type:"method",label:"getPose3d().yaw",code:"getPose3d().yaw",descriptions:"Get the orientation of the robot with regarding the map."},{type:"method",label:"getOdom()",code:"getOdom()",descriptions:"Obtain the position of the robot with a little noise."},{type:"method",label:"getOdom2()",code:"getOdom2()",descriptions:"Obtain the position of the robot with noise."},{type:"method",label:"getOdom3()",code:"getOdom3()",descriptions:"Obtain the position of the robot with a lot of noise."}],webgui:[{type:"method",label:"setUserMap(image)",code:"setUserMap(image)",descriptions:"Allows you to view a debug image or with relevant information."},{type:"method",label:"poseToMap(x, y, yaw)",code:"poseToMap(x, y, yaw)",descriptions:"Converts the robot position to 2D coordinates in the map."}]},_follow_road:{hal:[{type:"method",label:"get_position()",code:"get_position()",descriptions:"Returns the actual position of the drone as a numpy array [x, y, z], in m."},{type:"method",label:"get_velocity()",code:"get_velocity()",descriptions:"Returns the actual velocities of the drone as a numpy array [vx, vy, vz], in m/s."},{type:"method",label:"get_yaw_rate()",code:"get_yaw_rate()",descriptions:"Returns the actual yaw rate of the drone, in rad/s."},{type:"method",label:"get_orientation()",code:"get_orientation()",descriptions:"Returns the actual roll, pitch and yaw of the drone as a numpy array [roll, pitch, yaw], in rad."},{type:"method",label:"get_roll()",code:"get_roll()",descriptions:"Returns the roll angle of the drone, in rad."},{type:"method",label:"get_pitch()",code:"get_pitch()",descriptions:"Returns the pitch angle of the drone, in rad."},{type:"method",label:"get_yaw()",code:"get_yaw()",descriptions:"Returns the yaw angle of the drone, in rad."},{type:"method",label:"get_landed_state()",code:"get_landed_state()",descriptions:"Returns 1 if the drone is on the ground (landed), 2 if the drone is in the air and 4 if the drone is landing. 0 could be also returned if the drone landed state is unknown."},{type:"method",label:"set_cmd_pos(x, y, z, az)",code:"set_cmd_pos(x, y, z, az)",descriptions:"Commands the position (x,y,z) of the drone, in m and the yaw angle (az) (in rad) taking as reference the first takeoff point (map frame)."},{type:"method",label:"set_cmd_vel(vx, vy, vz, az)",code:"set_cmd_vel(vx, vy, vz, az)",descriptions:"Commands the linear velocity of the drone in the x, y and z directions (in m/s) and the yaw rate (az) (rad/s) in its body fixed frame."},{type:"method",label:"set_cmd_mix(vx, vy, z, az)",code:"set_cmd_mix(vx, vy, z, az)",descriptions:"Commands the linear velocity of the drone in the x, y directions (in m/s), the height (z) related to the takeoff point and the yaw rate (az) (in rad/s)"},{type:"method",label:"takeoff(height)",code:"takeoff(height)",descriptions:"Takeoff at the current location, to the given height (in m)."},{type:"method",label:"land()",code:"land()",descriptions:"Land at the current location."},{type:"method",label:"get_frontal_image()",code:"get_frontal_image()",descriptions:"Returns the latest image from the frontal camera as a OpenCV cv2_image."},{type:"method",label:"get_ventral_image()",code:"get_ventral_image()",descriptions:"Returns the latest image from the ventral camera as a OpenCV cv2_image."}],webgui:[{type:"method",label:"showImage(cv2_image)",code:"showImage(cv2_image)",descriptions:"Shows a image of the camera in the GUI."},{type:"method",label:"showLeftImage(cv2_image)",code:"showLeftImage(cv2_image)",descriptions:"Shows another image of the camera in the GUI."}]},_basic_computer_vision:{hal:[],webgui:[{type:"method",label:"showImage(image)",code:"showImage(image)",descriptions:"Allows you to view a debug image or with relevant information."},{type:"method",label:"getImage()",code:"getImage()",descriptions:"Returns the image from the camera. Can be None."}]}},i=[{type:"method",label:"tick()",code:"tick(20)",descriptions:"Regulate the execution rate. Defaults to 20 Hz."}]}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q05DLGFBQWMsaURBRWhCLENBQ0VILEtBQU0sU0FDTkMsTUFBTyxZQUNQQyxLQUFNLFlBQ05DLGFBQWMsK0NBRWhCLENBQ0VILEtBQU0sU0FDTkMsTUFBTyxxQkFDUEMsS0FBTSxxQkFDTkMsYUFDRSxnTEFFSixDQUNFSCxLQUFNLFNBQ05DLE1BQU8sMkJBQ1BDLEtBQU0sMkJBQ05DLGFBQ0UsNklBRUosQ0FDRUgsS0FBTSxTQUNOQyxNQUFPLDhCQUNQQyxLQUFNLDhCQUNOQyxhQUNFLDBJQUVKLENBQ0VILEtBQU0sU0FDTkMsTUFBTyw2QkFDUEMsS0FBTSw2QkFDTkMsYUFDRSwySkFFSixDQUNFSCxLQUFNLFNBQ05DLE1BQU8sa0JBQ1BDLEtBQU0sa0JBQ05DLGFBQ0UsZ0VBRUosQ0FDRUgsS0FBTSxTQUNOQyxNQUFPLFNBQ1BDLEtBQU0sU0FDTkMsYUFBYyxpQ0FFaEIsQ0FDRUgsS0FBTSxTQUNOQyxNQUFPLHNCQUNQQyxLQUFNLHNCQUNOQyxhQUNFLDJFQUVKLENBQ0VILEtBQU0sU0FDTkMsTUFBTyxzQkFDUEMsS0FBTSxzQkFDTkMsYUFDRSw0RUFHTkMsT0FBUSxDQUNOLENBQ0VKLEtBQU0sU0FDTkMsTUFBTyx1QkFDUEMsS0FBTSx1QkFDTkMsYUFBYywyQ0FFaEIsQ0FDRUgsS0FBTSxTQUNOQyxNQUFPLDJCQUNQQyxLQUFNLDJCQUNOQyxhQUFjLG1EQUlwQmdCLHVCQUF3QixDQUN0QnBCLElBQUssR0FDTEssT0FBUSxDQUNOLENBQ0VKLEtBQU0sU0FDTkMsTUFBTyxtQkFDUEMsS0FBTSxtQkFDTkMsYUFDRSxrRUFFSixDQUNFSCxLQUFNLFNBQ05DLE1BQU8sYUFDUEMsS0FBTSxhQUNOQyxhQUFjLHNEQU1UaUIsRUFBMkIsQ0FDdEMsQ0FDRXBCLEtBQU0sU0FDTkMsTUFBTyxTQUNQQyxLQUFNLFdBQ05DLGFBQWMsbUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9hdXRvY29tcGxldGUtc25pcHBldHMvaGFsX2d1aV9zbmlwcGV0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIQUwgJiBHVUkgQXV0byBDb21wbGV0ZSBPYmplY3RzXHJcbmV4cG9ydCBjb25zdCBndWlBbmRIYWxBdXRvQ29tcGxldGVPYmogPSB7XHJcbiAgX2ZvbGxvd19saW5lOiB7XHJcbiAgICBoYWw6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0SW1hZ2UoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0SW1hZ2UoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJHZXQgdGhlIGltYWdlIChCR1I4KS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0Vih2ZWxvY2l0eSlcIixcclxuICAgICAgICBjb2RlOiBcInNldFYodmVsb2NpdHkpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKHZlbG9jaXR5KVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0Vyh2ZWxvY2l0eSlcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2V0IHRoZSBhbmd1bGFyIHZlbG9jaXR5LlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICAgIHdlYmd1aTogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzaG93SW1hZ2UoaW1hZ2UpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93SW1hZ2UoaW1hZ2UpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJBbGxvd3MgeW91IHRvIHZpZXcgYSBkZWJ1ZyBpbWFnZSBvciB3aXRoIHJlbGV2YW50IGluZm9ybWF0aW9uLlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIF92YWN1dW1fY2xlYW5lcjoge1xyXG4gICAgaGFsOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldEJ1bXBlckRhdGEoKS5zdGF0ZVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0QnVtcGVyRGF0YSgpLnN0YXRlXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJUbyBlc3RhYmxpc2ggaWYgdGhlIHJvYm90IGhhcyBjcmFzaGVkIG9yIG5vdC4gUmV0dXJucyBhIDEgaWYgdGhlIHJvYm90IGNvbGxpZGVzIGFuZCBhIDAgaWYgaXQgaGFzIG5vdCBjcmFzaGVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRCdW1wZXJEYXRhKCkuYnVtcGVyXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRCdW1wZXJEYXRhKCkuYnVtcGVyXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJJZiB0aGUgcm9ib3QgaGFzIGNyYXNoZWQsIGl0IHR1cm5zIHRvIDEgd2hlbiB0aGUgY3Jhc2ggb2NjdXJzIGF0IHRoZSBjZW50ZXIgb2YgdGhlIHJvYm90LCAwIHdoZW4gaXQgb2NjdXJzIGF0IGl0cyByaWdodCBhbmQgMiBpZiB0aGUgY29sbGlzaW9uIGlzIGF0IGl0cyBsZWZ0LlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0TGFzZXJEYXRhKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkl0IGFsbG93cyB0byBvYnRhaW4gdGhlIGRhdGEgb2YgdGhlIGxhc2VyIHNlbnNvciwgd2hpY2ggY29uc2lzdHMgb2YgMTgwIHBhaXJzIG9mIHZhbHVlcyDigIvigIsoMC0xODDCuiwgZGlzdGFuY2UgaW4gbWV0ZXJzKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VigpXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRWKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2V0IHRoZSBsaW5lYXIgc3BlZWQpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgdmVsb2NpdHlcIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtdLFxyXG4gIH0sXHJcbiAgX2F1dG9wYXJraW5nOiB7XHJcbiAgICBoYWw6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKClcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCBhbGwgdGhlIHBvc2l0aW9uIGluZm9ybWF0aW9uLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKS54XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS54XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHJvYm90ICh4IGNvb3JkaW5hdGUpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKS55XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHJvYm90ICh5IGNvb3JkaW5hdGUpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKS55YXdcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpLnlhd1wiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiR2V0IHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcm9ib3Qgd2l0aCByZWdhcmRpbmcgdGhlIG1hcC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0RnJvbnRMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0RnJvbnRMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiT2J0YWluIHRoZSBmcm9udCBsYXNlciBzZW5zb3IgZGF0YSBJdCBpcyBjb21wb3NlZCBvZiAxODAgcGFpcnMgb2YgdmFsdWVzOiAoMC0xODDCuiBkaXN0YW5jZSBpbiBtaWxsaW1ldGVycykuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFJpZ2h0TGFzZXJEYXRhKClcIixcclxuICAgICAgICBjb2RlOiBcImdldFJpZ2h0TGFzZXJEYXRhKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIk9idGFpbiB0aGUgcmlnaHQgbGFzZXIgc2Vuc29yIGRhdGEgSXQgaXMgY29tcG9zZWQgb2YgMTgwIHBhaXJzIG9mIHZhbHVlczogKDAtMTgwwrogZGlzdGFuY2UgaW4gbWlsbGltZXRlcnMpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRCYWNrTGFzZXJEYXRhKClcIixcclxuICAgICAgICBjb2RlOiBcImdldEJhY2tMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiT2J0YWluIHRoZSBiYWNrIGxhc2VyIHNlbnNvciBkYXRhIEl0IGlzIGNvbXBvc2VkIG9mIDE4MCBwYWlycyBvZiB2YWx1ZXM6ICgwLTE4MMK6IGRpc3RhbmNlIGluIG1pbGxpbWV0ZXJzKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VigpXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRWKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2V0IHRoZSBsaW5lYXIgc3BlZWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VygpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgYW5ndWxhciB2ZWxvY2l0eS5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtdLFxyXG4gIH0sXHJcbiAgX2ZvbGxvd19wZXJzb246IHtcclxuICAgIGhhbDogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRJbWFnZSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRJbWFnZSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIk9idGFpbiB0aGUgY3VycmVudCBmcmFtZSBvZiB0aGUgY2FtZXJhIHJvYm90LlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKS54XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS54XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgcG9zaXRpb24gb2YgdGhlIHJvYm90ICh4IGNvb3JkaW5hdGUpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKS55XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIk9idGFpbiB0aGUgcG9zaXRpb24gb2YgdGhlIHJvYm90IChhbmQgY29vcmRpbmF0ZSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnlhd1wiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJHZXQgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSByb2JvdCB3aXRoIHJlc3BlY3QgdG8gdGhlIG1hcC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0TGFzZXJEYXRhKClcIixcclxuICAgICAgICBjb2RlOiBcImdldExhc2VyRGF0YSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJJdCBhbGxvd3MgdG8gb2J0YWluIHRoZSBkYXRhIG9mIHRoZSBsYXNlciBzZW5zb3IuIEl0IHJldHVybnMgYSBsaXN0IG9mIDE4MCBsYXNlciBtZWFzdXJlbWVudHMgKDAgLSAxODAgZGVncmVlcykuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgdmVsb2NpdHkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldEJvdW5kaW5nQm94ZXMoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0Qm91bmRpbmdCb3hlcygpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJUaGlzIG1ldGhvZCBjYWxscyBhIGRldGVjdCgpIG5ldXJhbCBuZXR3b3JrJ3MgbWV0aG9kIHRvIG9idGFpbiBhIGxpc3Qgb2YgZGV0ZWN0ZWQgb2JqZWN0cyBmcm9tIGFuIGltYWdlIHBhc3NlZCBhcyBhcmd1bWVudC5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd0ltYWdlKClcIixcclxuICAgICAgICBjb2RlOiBcInNob3dJbWFnZSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNob3cgYW4gb3BlbmN2IGltYWdlIGluIHRoZSB3ZWIgdGVtcGxhdGUuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgX3ZhY3V1bV9jbGVhbmVyX2xvYzoge1xyXG4gICAgaGFsOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgdmVsb2NpdHkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnhcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpLnhcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiR2V0IHRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIHJvYm90LlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKS55XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgWSBjb29yZGluYXRlIG9mIHRoZSByb2JvdC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55YXdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiR2V0IHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcm9ib3QuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldEJ1bXBlckRhdGEoKS5zdGF0ZVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0QnVtcGVyRGF0YSgpLnN0YXRlXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJUbyBlc3RhYmxpc2ggaWYgdGhlIHJvYm90IGhhcyBjcmFzaGVkIG9yIG5vdC4gUmV0dXJucyBhIDEgaWYgdGhlIHJvYm90IGNvbGxpZGVzIGFuZCBhIDAgaWYgaXQgaGFzIG5vdCBjcmFzaGVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRCdW1wZXJEYXRhKCkuYnVtcGVyXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRCdW1wZXJEYXRhKCkuYnVtcGVyXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJJZiB0aGUgcm9ib3QgaGFzIGNyYXNoZWQsIGl0IHR1cm5zIHRvIDEgd2hlbiB0aGUgY3Jhc2ggb2NjdXJzIGF0IHRoZSBjZW50ZXIgb2YgdGhlIHJvYm90LCAwIHdoZW4gaXQgb2NjdXJzIGF0IGl0cyByaWdodCBhbmQgMiBpZiB0aGUgY29sbGlzaW9uIGlzIGF0IGl0cyBsZWZ0LlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0TGFzZXJEYXRhKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkl0IGFsbG93cyB0byBvYnRhaW4gdGhlIGRhdGEgb2YgdGhlIGxhc2VyIHNlbnNvciwgd2hpY2ggY29uc2lzdHMgb2YgMTgwIHBhaXJzIG9mIHZhbHVlcyDigIvigIsoMC0xODDCuiwgZGlzdGFuY2UgaW4gbWV0ZXJzKS5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd051bXB5KG1hdClcIixcclxuICAgICAgICBjb2RlOiBcInNob3dOdW1weShtYXQpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkRpc3BsYXlzIHRoZSBtYXRyaXggc2VudC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0TWFwKHVybClcIixcclxuICAgICAgICBjb2RlOiBcImdldE1hcCh1cmwpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJSZXR1cm5zIGEgbnVtcHkgYXJyYXkgd2l0aCB0aGUgaW1hZ2UgZGF0YSBpbiBhIDMgZGltZW5zaW9uYWwgYXJyYXkgKFIsIEcsIEIsIEEpLiBUaGUgVVJMIG9mIHRoZSBWYWN1dW0gQ2xlYW5lci5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICBfZ2xvYmFsX25hdmlnYXRpb246IHtcclxuICAgIGhhbDogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRWKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGxpbmVhciBzcGVlZC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VygpXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRXKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2V0IHRoZSBhbmd1bGFyIHZlbG9jaXR5LlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgeCx5IGFuZCB0aGV0YSBjb21wb25lbnRzIG9mIHRoZSByb2JvdCBpbiB3b3JsZCBjb29yZGluYXRlcy5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd051bXB5KG51bXB5KVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2hvd051bXB5KG51bXB5KVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiU2hvd3MgR3JhZGllbnQgUGF0aCBQbGFubmluZyBmaWVsZCBvbiB0aGUgdXNlciBpbnRlcmZhY2UuIEl0IHJlcHJlc2VudHMgdGhlIHZhbHVlcyBvZiB0aGUgZmllbGQgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gdGhlIGFycmF5IHBhc3NlZCBhcyBhIHBhcmFtZXRlci4gQWNjZXB0cyBhcyBpbnB1dCBhIHR3by1kaW1lbnNpb25hbCB1aW50OCBudW1weSBhcnJheSB3aG9zZSB2YWx1ZXMgY2FuIHJhbmdlIGZyb20gMCB0byAyNTUgKGdyYXlzY2FsZSkuIEluIG9yZGVyIHRvIGhhdmUgYSBncmlkIHdpdGggdGhlIHNhbWUgcmVzb2x1dGlvbiBhcyB0aGUgbWFwLCB0aGUgYXJyYXkgc2hvdWxkIGJlIDQwMHg0MDAuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dQYXRoKGFycmF5KVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2hvd1BhdGgoYXJyYXkpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJTaG93cyBhIHBhdGggb24gdGhlIG1hcC4gVGhlIHBhcmFtZXRlciBzaG91bGQgYmUgYSAyRCBhcnJheSBjb250YWluaW5nIGVhY2ggb2YgdGhlIHBvaW50cyBvZiB0aGUgcGF0aC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0VGFyZ2V0UG9zZSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRUYXJnZXRQb3NlKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgeCx5IGNvb3JkaW5hdGVzIG9mIGNob3NlbiBkZXN0aW9uYXRpb24gaW4gdGhlIHdvcmxkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRNYXAodXJsKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0TWFwKHVybClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgYSBudW1weSBhcnJheSB3aXRoIHRoZSBpbWFnZSBkYXRhIGluIGdyYXlzY2FsZSBhcyBhIDIgZGltZW5zaW9uYWwgYXJyYXkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInJvd0NvbHVtbih2ZWN0b3IpXCIsXHJcbiAgICAgICAgY29kZTogXCJyb3dDb2x1bW4odmVjdG9yKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiUmV0dXJucyB0aGUgaW5kZXggaW4gbWFwIGNvb3JkaW5hdGVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZlY3RvciBpbiB3b3JsZCBjb29yZGluYXRlcyBwYXNzZWQgYXMgcGFyYW1ldGVyLlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIF9yZXNjdWVfcGVvcGxlOiB7XHJcbiAgICBoYWw6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X3Bvc2l0aW9uKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF9wb3NpdGlvbigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJSZXR1cm5zIHRoZSBhY3R1YWwgcG9zaXRpb24gb2YgdGhlIGRyb25lIGFzIGEgbnVtcHkgYXJyYXkgW3gsIHksIHpdLCBpbiBtLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRfdmVsb2NpdHkoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0X3ZlbG9jaXR5KClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgdGhlIGFjdHVhbCB2ZWxvY2l0aWVzIG9mIHRoZSBkcm9uZSBhcyBhIG51bXB5IGFycmF5IFt2eCwgdnksIHZ6XSwgaW4gbS9zLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRfeWF3X3JhdGUoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0X3lhd19yYXRlKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiUmV0dXJucyB0aGUgYWN0dWFsIHlhdyByYXRlIG9mIHRoZSBkcm9uZSwgaW4gcmFkL3MuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF9vcmllbnRhdGlvbigpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRfb3JpZW50YXRpb24oKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiUmV0dXJucyB0aGUgYWN0dWFsIHJvbGwsIHBpdGNoIGFuZCB5YXcgb2YgdGhlIGRyb25lIGFzIGEgbnVtcHkgYXJyYXkgW3JvbGwsIHBpdGNoLCB5YXddLCBpbiByYWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF9yb2xsKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF9yb2xsKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiUmV0dXJucyB0aGUgcm9sbCBhbmdsZSBvZiB0aGUgZHJvbmUsIGluIHJhZC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X3BpdGNoKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF9waXRjaCgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlJldHVybnMgdGhlIHBpdGNoIGFuZ2xlIG9mIHRoZSBkcm9uZSwgaW4gcmFkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRfeWF3KClcIixcclxuICAgICAgICBjb2RlOiBcImdldF95YXcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJSZXR1cm5zIHRoZSB5YXcgYW5nbGUgb2YgdGhlIGRyb25lLCBpbiByYWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF9sYW5kZWRfc3RhdGUoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0X2xhbmRlZF9zdGF0ZSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJSZXR1cm5zIDEgaWYgdGhlIGRyb25lIGlzIG9uIHRoZSBncm91bmQgKGxhbmRlZCksIDIgaWYgdGhlIGRyb25lIGlzIGluIHRoZSBhaXIgYW5kIDQgaWYgdGhlIGRyb25lIGlzIGxhbmRpbmcuIDAgY291bGQgYmUgYWxzbyByZXR1cm5lZCBpZiB0aGUgZHJvbmUgbGFuZGVkIHN0YXRlIGlzIHVua25vd24uXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldF9jbWRfcG9zKHgsIHksIHosIGF6KVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0X2NtZF9wb3MoeCwgeSwgeiwgYXopXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJDb21tYW5kcyB0aGUgcG9zaXRpb24gKHgseSx6KSBvZiB0aGUgZHJvbmUsIGluIG0gYW5kIHRoZSB5YXcgYW5nbGUgKGF6KSAoaW4gcmFkKSB0YWtpbmcgYXMgcmVmZXJlbmNlIHRoZSBmaXJzdCB0YWtlb2ZmIHBvaW50IChtYXAgZnJhbWUpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRfY21kX3ZlbCh2eCwgdnksIHZ6LCBheilcIixcclxuICAgICAgICBjb2RlOiBcInNldF9jbWRfdmVsKHZ4LCB2eSwgdnosIGF6KVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiQ29tbWFuZHMgdGhlIGxpbmVhciB2ZWxvY2l0eSBvZiB0aGUgZHJvbmUgaW4gdGhlIHgsIHkgYW5kIHogZGlyZWN0aW9ucyAoaW4gbS9zKSBhbmQgdGhlIHlhdyByYXRlIChheikgKHJhZC9zKSBpbiBpdHMgYm9keSBmaXhlZCBmcmFtZS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0X2NtZF9taXgodngsIHZ5LCB6LCBheilcIixcclxuICAgICAgICBjb2RlOiBcInNldF9jbWRfbWl4KHZ4LCB2eSwgeiwgYXopXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJDb21tYW5kcyB0aGUgbGluZWFyIHZlbG9jaXR5IG9mIHRoZSBkcm9uZSBpbiB0aGUgeCwgeSBkaXJlY3Rpb25zIChpbiBtL3MpLCB0aGUgaGVpZ2h0ICh6KSByZWxhdGVkIHRvIHRoZSB0YWtlb2ZmIHBvaW50IGFuZCB0aGUgeWF3IHJhdGUgKGF6KSAoaW4gcmFkL3MpXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInRha2VvZmYoaGVpZ2h0KVwiLFxyXG4gICAgICAgIGNvZGU6IFwidGFrZW9mZihoZWlnaHQpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJUYWtlb2ZmIGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uLCB0byB0aGUgZ2l2ZW4gaGVpZ2h0IChpbiBtKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwibGFuZCgpXCIsXHJcbiAgICAgICAgY29kZTogXCJsYW5kKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiTGFuZCBhdCB0aGUgY3VycmVudCBsb2NhdGlvbi5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X2Zyb250YWxfaW1hZ2UoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0X2Zyb250YWxfaW1hZ2UoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiUmV0dXJucyB0aGUgbGF0ZXN0IGltYWdlIGZyb20gdGhlIGZyb250YWwgY2FtZXJhIGFzIGEgT3BlbkNWIGN2Ml9pbWFnZS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X3ZlbnRyYWxfaW1hZ2UoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0X3ZlbnRyYWxfaW1hZ2UoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiUmV0dXJucyB0aGUgbGF0ZXN0IGltYWdlIGZyb20gdGhlIHZlbnRyYWwgY2FtZXJhIGFzIGEgT3BlbkNWIGN2Ml9pbWFnZS5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd0ltYWdlKGN2Ml9pbWFnZSlcIixcclxuICAgICAgICBjb2RlOiBcInNob3dJbWFnZShjdjJfaW1hZ2UpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNob3dzIGEgaW1hZ2Ugb2YgdGhlIGNhbWVyYSBpbiB0aGUgR1VJLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzaG93TGVmdEltYWdlKGN2Ml9pbWFnZSlcIixcclxuICAgICAgICBjb2RlOiBcInNob3dMZWZ0SW1hZ2UoY3YyX2ltYWdlKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTaG93cyBhbm90aGVyIGltYWdlIG9mIHRoZSBjYW1lcmEgaW4gdGhlIEdVSS5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICBfb2JzdGFjbGVfYXZvaWRhbmNlOiB7XHJcbiAgICBoYWw6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueFwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueFwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCAoeCBjb29yZGluYXRlKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJPYnRhaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCAoeSBjb29yZGluYXRlKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55YXdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkdldCB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHJvYm90IHdpdGggcmVnYXJkaW5nIHRoZSBtYXAuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldExhc2VyRGF0YSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiT2J0YWluIGxhc2VyIHNlbnNvciBkYXRhIEl0IGlzIGNvbXBvc2VkIG9mIDE4MCBwYWlycyBvZiB2YWx1ZXM6ICgwLTE4MMK6IGRpc3RhbmNlIGluIG1ldGVycykuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgdmVsb2NpdHkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgd2ViZ3VpOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldE5leHRUYXJnZXQoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0TmV4dFRhcmdldCgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIk9idGFpbiB0aGUgbmV4dCB0YXJnZXQgb2JqZWN0IG9uIHRoZSBzY2VuYXJpby5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VGFyZ2V0eFwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VGFyZ2V0eFwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXRzIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIHRhcmdldCBvbiB0aGUgR1VJLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRUYXJnZXR5XCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRUYXJnZXR5XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldHMgdGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgdGFyZ2V0IG9uIHRoZSBHVUkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dGb3JjZXNcIixcclxuICAgICAgICBjb2RlOiBcInNob3dGb3JjZXNcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlNob3dzIHRoZSBmb3JjZXMgYmVpbmcgYXBwbGllbmQgb24gdGhlIGNhciBpbiByZWFsIHRpbWUuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgXzNkX3JlY29uc3RydWN0aW9uOiB7XHJcbiAgICBoYWw6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0SW1hZ2UoJ2xlZnQnKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0SW1hZ2UoJ2xlZnQnKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJHZXQgdGhlIGxlZnQgaW1hZ2UuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldEltYWdlKCdyaWdodCcpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRJbWFnZSgncmlnaHQnKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJHZXQgdGhlIHJpZ2h0IGltYWdlLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRDYW1lcmFQb3NpdGlvbignbGVmdCcpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRDYW1lcmFQb3NpdGlvbignbGVmdCcpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgbGVmdCBjYW1lcmEgcG9zaXRpb24gZnJvbSBST1MgRHJpdmVyIENhbWVyYS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0Q2FtZXJhUG9zaXRpb24oJ3JpZ2h0JylcIixcclxuICAgICAgICBjb2RlOiBcImdldENhbWVyYVBvc2l0aW9uKCdyaWdodCcpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgcmlnaHQgY2FtZXJhIHBvc2l0aW9uIGZyb20gUk9TIERyaXZlciBDYW1lcmEuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdyYWZpY1RvT3B0aWNhbCgnbGVmdCcsIHBvaW50MmQpXCIsXHJcbiAgICAgICAgY29kZTogXCJncmFmaWNUb09wdGljYWwoJ2xlZnQnLCBwb2ludDJkKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiVHJhbnNmb3JtIHRoZSBJbWFnZSBDb29yZGluYXRlIFN5c3RlbSB0byB0aGUgQ2FtZXJhIFN5c3RlbS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiYmFja3Byb2plY3QoJ2xlZnQnLCBwb2ludDJkKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiYmFja3Byb2plY3QoJ2xlZnQnLCBwb2ludDJkKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJCYWNrcHJvamVjdHMgdGhlIDJEIEltYWdlIFBvaW50IGludG8gM0QgUG9pbnQgU3BhY2UuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInByb2plY3QoJ2xlZnQnLCBwb2ludDNkKVwiLFxyXG4gICAgICAgIGNvZGU6IFwicHJvamVjdCgnbGVmdCcsIHBvaW50M2QpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkJhY2twcm9qZWN0cyBhIDNEIFBvaW50IFNwYWNlIGludG8gdGhlIDJEIEltYWdlIFBvaW50LlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJvcHRpY2FsVG9HcmFmaWMoJ2xlZnQnLCBwb2ludDJkKVwiLFxyXG4gICAgICAgIGNvZGU6IFwib3B0aWNhbFRvR3JhZmljKCdsZWZ0JywgcG9pbnQyZClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlRyYW5zZm9ybSB0aGUgQ2FtZXJhIFN5c3RlbSB0byB0aGUgSW1hZ2UgQ29vcmRpbmF0ZSBTeXN0ZW0uXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInByb2plY3QzRFNjZW5lKHBvaW50M2QpXCIsXHJcbiAgICAgICAgY29kZTogXCJwcm9qZWN0M0RTY2VuZShwb2ludDNkKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiVHJhbnNmb3JtIDNEIFBvaW50IFNwYWNlIGFmdGVyIHRyaWFuZ3VsYXRpb24gdG8gdGhlIDNEIFBvaW50IFZpZXdlci5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiU2hvd05ld1BvaW50cyhwb2ludHMpXCIsXHJcbiAgICAgICAgY29kZTogXCJTaG93TmV3UG9pbnRzKHBvaW50cylcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiUGxvdCBhIGFycmF5IG9mIHBsb3RzIGluIHRoZSAzRCB2aXNvci5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiU2hvd0FsbFBvaW50cyhwb2ludHMpXCIsXHJcbiAgICAgICAgY29kZTogXCJTaG93QWxsUG9pbnRzKHBvaW50cylcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiQ2xlYXIgdGhlIDNEIHZpc29yIGFuZCBwbG90IG5ldyBhcnJheSBvZiBwbG90cy5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiQ2xlYXJBbGxQb2ludHMoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiQ2xlYXJBbGxQb2ludHMoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJDbGVhciB0aGUgM0Qgdmlzb3IuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dJbWFnZU1hdGNoaW5nKHgxLCB5MSwgeDIsIHkyKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2hvd0ltYWdlTWF0Y2hpbmcoeDEsIHkxLCB4MiwgeTIpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlBsb3QgdGhlIG1hdGNoaW5nIGJldHdlZW4gdHdvIGltYWdlcy5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd0ltYWdlcyhpbWFnZUxlZnQsaW1hZ2VSaWdodCxUcnVlKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2hvd0ltYWdlcyhpbWFnZUxlZnQsaW1hZ2VSaWdodCxUcnVlKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiQWxsb3dzIHlvdSB0byB2aWV3IGEgZGVidWcgaW1hZ2VzIG9yIHdpdGggcmVsZXZhbnQgaW5mb3JtYXRpb24uXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgX2FtYXpvbl93YXJlaG91c2U6IHtcclxuICAgIGhhbDogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRQb3NlM2QoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgeCx5IGFuZCB0aGV0YSBjb21wb25lbnRzIG9mIHRoZSByb2JvdCBpbiB3b3JsZCBjb29yZGluYXRlcy5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0U2ltVGltZSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRTaW1UaW1lKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiUmV0dXJucyBzaW11bGF0aW9uIHRpbWUuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgc3BlZWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImxpZnQoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwibGlmdCgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkxpZnQgdGhlIHBsYXRmb3JtXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInB1dGRvd24oKVwiLFxyXG4gICAgICAgIGNvZGU6IFwicHV0ZG93bigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlB1dCBkb3duIHRoZSBwbGF0Zm9ybS5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd1BhdGgoYXJyYXkpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93UGF0aChhcnJheSlcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlNob3dzIGEgcGF0aCBvbiB0aGUgbWFwLiBUaGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIDJEIGFycmF5IGNvbnRhaW5pbmcgZWFjaCBvZiB0aGUgcG9pbnRzIG9mIHRoZSBwYXRoLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRNYXAodXJsKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0TWFwKHVybClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgYSBudW1weSBhcnJheSB3aXRoIHRoZSBpbWFnZSBkYXRhIGluIGEgMyBkaW1lbnNpb25hbCBhcnJheSAoUiwgRywgQiwgQSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dOdW1weShtYXQpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93TnVtcHkobWF0KVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJEaXNwbGF5cyB0aGUgbWF0cml4IHNlbnQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgX21vbnRlY2FybG9fbGFzZXJfbG9jOiB7XHJcbiAgICBoYWw6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VigpXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRWKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2V0IHRoZSBsaW5lYXIgc3BlZWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VygpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgYW5ndWxhciB2ZWxvY2l0eS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueFwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueFwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCAoeCBjb29yZGluYXRlKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJPYnRhaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCAoeSBjb29yZGluYXRlKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55YXdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkdldCB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHJvYm90IHdpdGggcmVnYXJkaW5nIHRoZSBtYXAuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldE9kb20oKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0T2RvbSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJHZXQgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSByb2JvdCB3aXRoIG5vaXNlIHJlZ2FyZGluZyB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRMYXNlckRhdGEoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0TGFzZXJEYXRhKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIk9idGFpbiBsYXNlciBzZW5zb3IgZGF0YSBJdCBpcyBjb21wb3NlZCBvZiAxODAgcGFpcnMgb2YgdmFsdWVzOiAoMC0xODDCuiBkaXN0YW5jZSBpbiBtZXRlcnMpLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRCdW1wZXJEYXRhKClcIixcclxuICAgICAgICBjb2RlOiBcImdldEJ1bXBlckRhdGEoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiSWYgdGhlIHJvYm90IGhhcyBjcmFzaGVkLCBpdCB0dXJucyB0byAxIHdoZW4gdGhlIGNyYXNoIG9jY3VycyBhdCB0aGUgY2VudGVyIG9mIHRoZSByb2JvdCwgMCB3aGVuIGl0IG9jY3VycyBhdCBpdHMgcmlnaHQgYW5kIDIgaWYgdGhlIGNvbGxpc2lvbiBpcyBhdCBpdHMgbGVmdC5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd1Bvc2l0aW9uKHgsIHksIGFuZ2xlKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2hvd1Bvc2l0aW9uKHgsIHksIGFuZ2xlKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTaG93cyB0aGUgcG9zaXRpb24gb24gdGhlIG1hcC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0TWFwKHVybClcIixcclxuICAgICAgICBjb2RlOiBcImdldE1hcCh1cmwpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJSZXR1cm5zIGEgbnVtcHkgYXJyYXkgd2l0aCB0aGUgaW1hZ2UgZGF0YSBpbiBhIDMgZGltZW5zaW9uYWwgYXJyYXkgKFIsIEcsIEIsIEEpLiBUaGUgVVJMIG9mIHRoZSBWYWN1dW0gQ2xlYW5lci5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwicG9zZVRvTWFwKHhfcHJpbWUsIHlfcHJpbWUsIHlhd19wcmltZSlcIixcclxuICAgICAgICBjb2RlOiBcInBvc2VUb01hcCh4X3ByaW1lLCB5X3ByaW1lLCB5YXdfcHJpbWUpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlJldHVybnMgdGhlIG1hcCBjb29yZGluYXRlcyBvZiB0aGUgZ2l2ZW4gcG9zZS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwibWFwVG9Qb3NlKHgsIHksIHlhdylcIixcclxuICAgICAgICBjb2RlOiBcIm1hcFRvUG9zZSh4LCB5LCB5YXcpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlJldHVybnMgdGhlIHBvc2Ugb2YgdGhlIGdpdmVuIG1hcCBjb29yZGluYXRlcy5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd1BhcnRpY2xlcyhwYXJ0aWNsZXMpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93UGFydGljbGVzKHBhcnRpY2xlcylcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2hvd3MgdGhlIHBhcnRpY2xlcyBvbiB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIF9tb250ZWNhcmxvX3Zpc3VhbF9sb2M6IHtcclxuICAgIGhhbDogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRJbWFnZSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRJbWFnZSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkdldCB0aGUgaW1hZ2UuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgdmVsb2NpdHkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnhcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpLnhcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9ib3QgKHggY29vcmRpbmF0ZSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnlcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpLnlcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiT2J0YWluIHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9ib3QgKHkgY29vcmRpbmF0ZSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnlhd1wiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJHZXQgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSByb2JvdCB3aXRoIHJlZ2FyZGluZyB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICAgIHdlYmd1aTogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzaG93UG9zaXRpb24oeCwgeSwgYW5nbGUpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93UG9zaXRpb24oeCwgeSwgYW5nbGUpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNob3dzIHRoZSBwb3NpdGlvbiBvbiB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzaG93SW1hZ2UoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2hvd0ltYWdlKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkFsbG93cyB5b3UgdG8gdmlldyBhIGRlYnVnIGltYWdlIG9yIHdpdGggcmVsZXZhbnQgaW5mb3JtYXRpb24uXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldE1hcCh1cmwpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRNYXAodXJsKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJSZXR1cm5zIHRoZSBtYXAgZnJvbSB0aGUgZ2l2ZW4gdXJsLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRCR1JNYXAodXJsKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0QkdSTWFwKHVybClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiUmV0dXJucyB0aGUgbWFwIGFzIGEgY3YyIGltYWdlIGZyb20gdGhlIGdpdmVuIHVybC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwicG9zZVRvTWFwKHhfcHJpbWUsIHlfcHJpbWUsIHlhd19wcmltZSlcIixcclxuICAgICAgICBjb2RlOiBcInBvc2VUb01hcCh4X3ByaW1lLCB5X3ByaW1lLCB5YXdfcHJpbWUpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJDb252ZXJ0cyB0aGUgcm9ib3QgcG9zaXRpb24gdG8gMkQgY29vcmRpbmF0ZXMgaW4gdGhlIG1hcC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwibWFwVG9Qb3NlKHgsIHksIHlhdylcIixcclxuICAgICAgICBjb2RlOiBcIm1hcFRvUG9zZSh4LCB5LCB5YXcpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJDb252ZXJ0cyB0aGUgcm9ib3QgMkQgY29vcmRpbmF0ZXMgaW4gdGhlIG1hcCB0byB0aGUgcmVhbCAzRCBwb3NpdGlvbi5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd1BhcnRpY2xlcyhwYXJ0aWNsZXMpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93UGFydGljbGVzKHBhcnRpY2xlcylcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2hvd3MgdGhlIHBhcnRpY2xlcyBvbiB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIF9tYXJrZXJfdmlzdWFsX2xvYzoge1xyXG4gICAgaGFsOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldEltYWdlKClcIixcclxuICAgICAgICBjb2RlOiBcImdldEltYWdlKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiR2V0IHRoZSBpbWFnZS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VigpXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRWKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2V0IHRoZSBsaW5lYXIgc3BlZWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VygpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgYW5ndWxhciB2ZWxvY2l0eS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueFwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueFwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJHZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCAoeCBjb29yZGluYXRlKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJPYnRhaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCAoeSBjb29yZGluYXRlKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRQb3NlM2QoKS55YXdcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkdldCB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHJvYm90IHdpdGggcmVnYXJkaW5nIHRoZSBtYXAuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgd2ViZ3VpOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dFc3RpbWF0ZWRQb3NlKCh4LCB5LCBhbmdsZSkpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93RXN0aW1hdGVkUG9zZSgoeCwgeSwgYW5nbGUpKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTaG93cyB0aGUgZXN0aW1hdGVkIHBvc2l0aW9uIG9uIHRoZSBtYXAuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dJbWFnZSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93SW1hZ2UoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiQWxsb3dzIHlvdSB0byB2aWV3IGEgZGVidWcgaW1hZ2Ugb3Igd2l0aCByZWxldmFudCBpbmZvcm1hdGlvbi5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgfSxcclxuICBfbGFzZXJfbWFwcGluZzoge1xyXG4gICAgaGFsOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldFYoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwic2V0VigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlNldCB0aGUgbGluZWFyIHNwZWVkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRXKClcIixcclxuICAgICAgICBjb2RlOiBcInNldFcoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTZXQgdGhlIGFuZ3VsYXIgdmVsb2NpdHkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnhcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpLnhcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiR2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9ib3QgKHggY29vcmRpbmF0ZSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnlcIixcclxuICAgICAgICBjb2RlOiBcImdldFBvc2UzZCgpLnlcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiT2J0YWluIHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9ib3QgKHkgY29vcmRpbmF0ZSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldFBvc2UzZCgpLnlhd1wiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0UG9zZTNkKCkueWF3XCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJHZXQgdGhlIG9yaWVudGF0aW9uIG9mIHRoZSByb2JvdCB3aXRoIHJlZ2FyZGluZyB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRPZG9tKClcIixcclxuICAgICAgICBjb2RlOiBcImdldE9kb20oKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJPYnRhaW4gdGhlIHBvc2l0aW9uIG9mIHRoZSByb2JvdCB3aXRoIGEgbGl0dGxlIG5vaXNlLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRPZG9tMigpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRPZG9tMigpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIk9idGFpbiB0aGUgcG9zaXRpb24gb2YgdGhlIHJvYm90IHdpdGggbm9pc2UuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldE9kb20zKClcIixcclxuICAgICAgICBjb2RlOiBcImdldE9kb20zKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiT2J0YWluIHRoZSBwb3NpdGlvbiBvZiB0aGUgcm9ib3Qgd2l0aCBhIGxvdCBvZiBub2lzZS5cIixcclxuICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB3ZWJndWk6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0VXNlck1hcChpbWFnZSlcIixcclxuICAgICAgICBjb2RlOiBcInNldFVzZXJNYXAoaW1hZ2UpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJBbGxvd3MgeW91IHRvIHZpZXcgYSBkZWJ1ZyBpbWFnZSBvciB3aXRoIHJlbGV2YW50IGluZm9ybWF0aW9uLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJwb3NlVG9NYXAoeCwgeSwgeWF3KVwiLFxyXG4gICAgICAgIGNvZGU6IFwicG9zZVRvTWFwKHgsIHksIHlhdylcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkNvbnZlcnRzIHRoZSByb2JvdCBwb3NpdGlvbiB0byAyRCBjb29yZGluYXRlcyBpbiB0aGUgbWFwLlwiLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICB9LFxyXG4gIF9mb2xsb3dfcm9hZDoge1xyXG4gICAgaGFsOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF9wb3NpdGlvbigpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRfcG9zaXRpb24oKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiUmV0dXJucyB0aGUgYWN0dWFsIHBvc2l0aW9uIG9mIHRoZSBkcm9uZSBhcyBhIG51bXB5IGFycmF5IFt4LCB5LCB6XSwgaW4gbS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X3ZlbG9jaXR5KClcIixcclxuICAgICAgICBjb2RlOiBcImdldF92ZWxvY2l0eSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJSZXR1cm5zIHRoZSBhY3R1YWwgdmVsb2NpdGllcyBvZiB0aGUgZHJvbmUgYXMgYSBudW1weSBhcnJheSBbdngsIHZ5LCB2el0sIGluIG0vcy5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X3lhd19yYXRlKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF95YXdfcmF0ZSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlJldHVybnMgdGhlIGFjdHVhbCB5YXcgcmF0ZSBvZiB0aGUgZHJvbmUsIGluIHJhZC9zLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRfb3JpZW50YXRpb24oKVwiLFxyXG4gICAgICAgIGNvZGU6IFwiZ2V0X29yaWVudGF0aW9uKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgdGhlIGFjdHVhbCByb2xsLCBwaXRjaCBhbmQgeWF3IG9mIHRoZSBkcm9uZSBhcyBhIG51bXB5IGFycmF5IFtyb2xsLCBwaXRjaCwgeWF3XSwgaW4gcmFkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRfcm9sbCgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRfcm9sbCgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlJldHVybnMgdGhlIHJvbGwgYW5nbGUgb2YgdGhlIGRyb25lLCBpbiByYWQuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF9waXRjaCgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRfcGl0Y2goKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJSZXR1cm5zIHRoZSBwaXRjaCBhbmdsZSBvZiB0aGUgZHJvbmUsIGluIHJhZC5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwiZ2V0X3lhdygpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRfeWF3KClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiUmV0dXJucyB0aGUgeWF3IGFuZ2xlIG9mIHRoZSBkcm9uZSwgaW4gcmFkLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRfbGFuZGVkX3N0YXRlKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF9sYW5kZWRfc3RhdGUoKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiUmV0dXJucyAxIGlmIHRoZSBkcm9uZSBpcyBvbiB0aGUgZ3JvdW5kIChsYW5kZWQpLCAyIGlmIHRoZSBkcm9uZSBpcyBpbiB0aGUgYWlyIGFuZCA0IGlmIHRoZSBkcm9uZSBpcyBsYW5kaW5nLiAwIGNvdWxkIGJlIGFsc28gcmV0dXJuZWQgaWYgdGhlIGRyb25lIGxhbmRlZCBzdGF0ZSBpcyB1bmtub3duLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzZXRfY21kX3Bvcyh4LCB5LCB6LCBheilcIixcclxuICAgICAgICBjb2RlOiBcInNldF9jbWRfcG9zKHgsIHksIHosIGF6KVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiQ29tbWFuZHMgdGhlIHBvc2l0aW9uICh4LHkseikgb2YgdGhlIGRyb25lLCBpbiBtIGFuZCB0aGUgeWF3IGFuZ2xlIChheikgKGluIHJhZCkgdGFraW5nIGFzIHJlZmVyZW5jZSB0aGUgZmlyc3QgdGFrZW9mZiBwb2ludCAobWFwIGZyYW1lKS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2V0X2NtZF92ZWwodngsIHZ5LCB2eiwgYXopXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRfY21kX3ZlbCh2eCwgdnksIHZ6LCBheilcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIkNvbW1hbmRzIHRoZSBsaW5lYXIgdmVsb2NpdHkgb2YgdGhlIGRyb25lIGluIHRoZSB4LCB5IGFuZCB6IGRpcmVjdGlvbnMgKGluIG0vcykgYW5kIHRoZSB5YXcgcmF0ZSAoYXopIChyYWQvcykgaW4gaXRzIGJvZHkgZml4ZWQgZnJhbWUuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNldF9jbWRfbWl4KHZ4LCB2eSwgeiwgYXopXCIsXHJcbiAgICAgICAgY29kZTogXCJzZXRfY21kX21peCh2eCwgdnksIHosIGF6KVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiQ29tbWFuZHMgdGhlIGxpbmVhciB2ZWxvY2l0eSBvZiB0aGUgZHJvbmUgaW4gdGhlIHgsIHkgZGlyZWN0aW9ucyAoaW4gbS9zKSwgdGhlIGhlaWdodCAoeikgcmVsYXRlZCB0byB0aGUgdGFrZW9mZiBwb2ludCBhbmQgdGhlIHlhdyByYXRlIChheikgKGluIHJhZC9zKVwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJ0YWtlb2ZmKGhlaWdodClcIixcclxuICAgICAgICBjb2RlOiBcInRha2VvZmYoaGVpZ2h0KVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgICAgIFwiVGFrZW9mZiBhdCB0aGUgY3VycmVudCBsb2NhdGlvbiwgdG8gdGhlIGdpdmVuIGhlaWdodCAoaW4gbSkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImxhbmQoKVwiLFxyXG4gICAgICAgIGNvZGU6IFwibGFuZCgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIkxhbmQgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24uXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF9mcm9udGFsX2ltYWdlKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF9mcm9udGFsX2ltYWdlKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgdGhlIGxhdGVzdCBpbWFnZSBmcm9tIHRoZSBmcm9udGFsIGNhbWVyYSBhcyBhIE9wZW5DViBjdjJfaW1hZ2UuXCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcImdldF92ZW50cmFsX2ltYWdlKClcIixcclxuICAgICAgICBjb2RlOiBcImdldF92ZW50cmFsX2ltYWdlKClcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgICAgICBcIlJldHVybnMgdGhlIGxhdGVzdCBpbWFnZSBmcm9tIHRoZSB2ZW50cmFsIGNhbWVyYSBhcyBhIE9wZW5DViBjdjJfaW1hZ2UuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gICAgd2ViZ3VpOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIm1ldGhvZFwiLFxyXG4gICAgICAgIGxhYmVsOiBcInNob3dJbWFnZShjdjJfaW1hZ2UpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93SW1hZ2UoY3YyX2ltYWdlKVwiLFxyXG4gICAgICAgIGRlc2NyaXB0aW9uczogXCJTaG93cyBhIGltYWdlIG9mIHRoZSBjYW1lcmEgaW4gdGhlIEdVSS5cIixcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICAgICAgbGFiZWw6IFwic2hvd0xlZnRJbWFnZShjdjJfaW1hZ2UpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93TGVmdEltYWdlKGN2Ml9pbWFnZSlcIixcclxuICAgICAgICBkZXNjcmlwdGlvbnM6IFwiU2hvd3MgYW5vdGhlciBpbWFnZSBvZiB0aGUgY2FtZXJhIGluIHRoZSBHVUkuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgX2Jhc2ljX2NvbXB1dGVyX3Zpc2lvbjoge1xyXG4gICAgaGFsOiBbXSxcclxuICAgIHdlYmd1aTogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJzaG93SW1hZ2UoaW1hZ2UpXCIsXHJcbiAgICAgICAgY29kZTogXCJzaG93SW1hZ2UoaW1hZ2UpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICAgICAgXCJBbGxvd3MgeW91IHRvIHZpZXcgYSBkZWJ1ZyBpbWFnZSBvciB3aXRoIHJlbGV2YW50IGluZm9ybWF0aW9uLlwiLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJtZXRob2RcIixcclxuICAgICAgICBsYWJlbDogXCJnZXRJbWFnZSgpXCIsXHJcbiAgICAgICAgY29kZTogXCJnZXRJbWFnZSgpXCIsXHJcbiAgICAgICAgZGVzY3JpcHRpb25zOiBcIlJldHVybnMgdGhlIGltYWdlIGZyb20gdGhlIGNhbWVyYS4gQ2FuIGJlIE5vbmUuXCIsXHJcbiAgICAgIH0sXHJcbiAgICBdLFxyXG4gIH0sXHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZnJlcXVlbmN5QXV0b0NvbXBsZXRlT2JqID0gW1xyXG4gIHtcclxuICAgIHR5cGU6IFwibWV0aG9kXCIsXHJcbiAgICBsYWJlbDogXCJ0aWNrKClcIixcclxuICAgIGNvZGU6IFwidGljaygyMClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJSZWd1bGF0ZSB0aGUgZXhlY3V0aW9uIHJhdGUuIERlZmF1bHRzIHRvIDIwIEh6LlwiLFxyXG4gIH0sXHJcbl07XHJcbiJdLCJuYW1lcyI6WyJndWlBbmRIYWxBdXRvQ29tcGxldGVPYmoiLCJfZm9sbG93X2xpbmUiLCJoYWwiLCJ0eXBlIiwibGFiZWwiLCJjb2RlIiwiZGVzY3JpcHRpb25zIiwid2ViZ3VpIiwiX3ZhY3V1bV9jbGVhbmVyIiwiX2F1dG9wYXJraW5nIiwiX2ZvbGxvd19wZXJzb24iLCJfdmFjdXVtX2NsZWFuZXJfbG9jIiwiX2dsb2JhbF9uYXZpZ2F0aW9uIiwiX3Jlc2N1ZV9wZW9wbGUiLCJfb2JzdGFjbGVfYXZvaWRhbmNlIiwiXzNkX3JlY29uc3RydWN0aW9uIiwiX2FtYXpvbl93YXJlaG91c2UiLCJfbW9udGVjYXJsb19sYXNlcl9sb2MiLCJfbW9udGVjYXJsb192aXN1YWxfbG9jIiwiX21hcmtlcl92aXN1YWxfbG9jIiwiX2xhc2VyX21hcHBpbmciLCJfZm9sbG93X3JvYWQiLCJfYmFzaWNfY29tcHV0ZXJfdmlzaW9uIiwiZnJlcXVlbmN5QXV0b0NvbXBsZXRlT2JqIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4075.9c40cac3.js b/react_frontend/static/react_frontend/js/4075.9c40cac3.js new file mode 100644 index 000000000..127c6f39b --- /dev/null +++ b/react_frontend/static/react_frontend/js/4075.9c40cac3.js @@ -0,0 +1,3 @@ +/*! For license information please see 4075.9c40cac3.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4075],{4075:(t,q,s)=>{s.r(q),s.d(q,{AlignIcon:()=>n,CloseIcon:()=>o,InfoIcon:()=>v,KeyboardIcon:()=>i,WidgetsIcon:()=>l,ZoomInIcon:()=>r,ZoomOutIcon:()=>h});var e=s(4848),h=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,e.jsx)("path",{d:"M268.02-444q-15.02 0-25.52-10.29t-10.5-25.5q0-15.21 10.35-25.71T268-516h423.98q15.02 0 25.52 10.29t10.5 25.5q0 15.21-10.35 25.71T692-444H268.02Z"})})},r=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,e.jsx)("path",{d:"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z"})})},n=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,e.jsx)("path",{d:"M144-144v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Z"})})},v=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,e.jsx)("path",{d:"M444-288h72v-240h-72v240Zm35.79-312q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm.49 504Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"})})},o=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#898989",children:(0,e.jsx)("path",{d:"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z"})})},i=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,e.jsx)("path",{d:"M168-240q-29.7 0-50.85-21.15Q96-282.3 96-312v-336q0-29.7 21.15-50.85Q138.3-720 168-720h624q29.7 0 50.85 21.15Q864-677.7 864-648v336q0 29.7-21.15 50.85Q821.7-240 792-240H168Zm0-72h624v-336H168v336Zm203.96-24h215.76q15.28 0 25.78-10.29 10.5-10.29 10.5-25.5t-10.34-25.71Q603.32-408 588.04-408H372.28q-15.28 0-25.78 10.29-10.5 10.29-10.5 25.5t10.34 25.71q10.34 10.5 25.62 10.5ZM168-312v-336 336Zm107.79-240q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm-408 96q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z"})})},l=function(t){return t.cssClass,(0,e.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,e.jsx)("path",{d:"M610-458 457.39-611q-5.39-5.4-7.89-11.7-2.5-6.3-2.5-13.5t2.5-13.5Q452-656 457-661l153-153q5-5 12-8t14.2-3q7.2 0 13.5 3t11.3 8l152.61 153q5.39 5.4 7.89 11.7 2.5 6.3 2.5 13.5t-2.5 13.5Q819-616 814-611L661-458q-5 5-11.3 8-6.3 3-13.5 3t-14.2-3q-7-3-12-8ZM144-563.96v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm384 384v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H564.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm-384 0v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62ZM216-600h144v-144H216v144Zm420 66 101-102-101-102-102 102 102 102Zm-36 318h144v-144H600v144Zm-384 0h144v-144H216v144Zm144-384Zm174-36ZM360-360Zm240 0Z"})})}},1020:(t,q,s)=>{var e=s(6540),h=Symbol.for("react.element"),r=Symbol.for("react.fragment"),n=Object.prototype.hasOwnProperty,v=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function i(t,q,s){var e,r={},i=null,l=null;for(e in void 0!==s&&(i=""+s),void 0!==q.key&&(i=""+q.key),void 0!==q.ref&&(l=q.ref),q)n.call(q,e)&&!o.hasOwnProperty(e)&&(r[e]=q[e]);if(t&&t.defaultProps)for(e in q=t.defaultProps)void 0===r[e]&&(r[e]=q[e]);return{$$typeof:h,type:t,key:i,ref:l,props:r,_owner:v.current}}q.Fragment=r,q.jsx=i,q.jsxs=i},4848:(t,q,s)=>{t.exports=s(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDA3NS5kM2ZjZTM5MS5qcyIsIm1hcHBpbmdzIjoiO3FRQUFhQSxFQUFjLFNBQUhDLEdBQWMsT0FBQUEsRUFBUkMsVUFDNUJDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsTUFBTSw2QkFDTkMsT0FBTyxPQUNQQyxRQUFRLGlCQUNSQyxNQUFNLE9BQ05DLEtBQUssVUFBU0MsVUFFZE4sRUFBQUEsRUFBQUEsS0FBQSxRQUFNTyxFQUFFLHNKQUNKLEVBRUtDLEVBQWEsU0FBSEMsR0FBYyxPQUFBQSxFQUFSVixVQUMzQkMsRUFBQUEsRUFBQUEsS0FBQSxPQUNFQyxNQUFNLDZCQUNOQyxPQUFPLE9BQ1BDLFFBQVEsaUJBQ1JDLE1BQU0sT0FDTkMsS0FBSyxVQUFTQyxVQUVkTixFQUFBQSxFQUFBQSxLQUFBLFFBQU1PLEVBQUUsK0RBQ0osRUFFS0csRUFBWSxTQUFIQyxHQUFjLE9BQUFBLEVBQVJaLFVBQzFCQyxFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVNDLFVBRWROLEVBQUFBLEVBQUFBLEtBQUEsUUFBTU8sRUFBRSxzSEFDSixFQUdLSyxFQUFXLFNBQUhDLEdBQWMsT0FBQUEsRUFBUmQsVUFDekJDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsTUFBTSw2QkFDTkMsT0FBTyxPQUNQQyxRQUFRLGlCQUNSQyxNQUFNLE9BQ05DLEtBQUssVUFBU0MsVUFFZE4sRUFBQUEsRUFBQUEsS0FBQSxRQUFNTyxFQUFFLDhmQUNKLEVBR0tPLEVBQVksU0FBSEMsR0FBYyxPQUFBQSxFQUFSaEIsVUFDMUJDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsTUFBTSw2QkFDTkMsT0FBTyxPQUNQQyxRQUFRLGlCQUNSQyxNQUFNLE9BQ05DLEtBQUssVUFBU0MsVUFFZE4sRUFBQUEsRUFBQUEsS0FBQSxRQUFNTyxFQUFFLHVHQUNKLEVBR0tTLEVBQWUsU0FBSEMsR0FBYyxPQUFBQSxFQUFSbEIsVUFDN0JDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsTUFBTSw2QkFDTkMsT0FBTyxPQUNQQyxRQUFRLGlCQUNSQyxNQUFNLE9BQ05DLEtBQUssVUFBU0MsVUFFZE4sRUFBQUEsRUFBQUEsS0FBQSxRQUFNTyxFQUFFLHdxREFDSixFQUdLVyxFQUFjLFNBQUhDLEdBQWMsT0FBQUEsRUFBUnBCLFVBQzVCQyxFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVNDLFVBRWROLEVBQUFBLEVBQUFBLEtBQUEsUUFBTU8sRUFBRSxxZ0NBQ0osa0JDdEVLLElBQUlhLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFbEMsRUFBRSxDQUFDLEVBQUVtQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUYsVUFBaEYsSUFBU0QsSUFBSUUsRUFBRSxHQUFHRixRQUFHLElBQVNELEVBQUVOLE1BQU1TLEVBQUUsR0FBR0gsRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNUyxFQUFFSixFQUFFTCxLQUFjSyxFQUFFZCxFQUFFbUIsS0FBS0wsRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS2xDLEVBQUVrQyxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVPLGFBQWEsSUFBSUosS0FBS0YsRUFBRUQsRUFBRU8sa0JBQWUsSUFBU3RDLEVBQUVrQyxLQUFLbEMsRUFBRWtDLEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDSyxTQUFTekIsRUFBRTBCLEtBQUtULEVBQUVMLElBQUlTLEVBQUVSLElBQUlTLEVBQUVLLE1BQU16QyxFQUFFMEMsT0FBT3BCLEVBQUVxQixRQUFRLENBQUNDLEVBQVFDLFNBQVM1QixFQUFFMkIsRUFBUUUsSUFBSWhCLEVBQUVjLEVBQVFHLEtBQUtqQixrQkNQeFdrQixFQUFPSixRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvaWNvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBab29tT3V0SWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0yNjguMDItNDQ0cS0xNS4wMiAwLTI1LjUyLTEwLjI5dC0xMC41LTI1LjVxMC0xNS4yMSAxMC4zNS0yNS43MVQyNjgtNTE2aDQyMy45OHExNS4wMiAwIDI1LjUyIDEwLjI5dDEwLjUgMjUuNXEwIDE1LjIxLTEwLjM1IDI1LjcxVDY5Mi00NDRIMjY4LjAyWlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbmV4cG9ydCBjb25zdCBab29tSW5JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC00NDRIMjQwdi03MmgyMDR2LTIwNGg3MnYyMDRoMjA0djcySDUxNnYyMDRoLTcydi0yMDRaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuZXhwb3J0IGNvbnN0IEFsaWduSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0xNDQtMTQ0di03Mmg2NzJ2NzJIMTQ0Wm0wLTE1MHYtNzJoNDgwdjcySDE0NFptMC0xNTB2LTcyaDY3MnY3MkgxNDRabTAtMTUwdi03Mmg0ODB2NzJIMTQ0Wm0wLTE1MHYtNzJoNjcydjcySDE0NFpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEluZm9JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC0yODhoNzJ2LTI0MGgtNzJ2MjQwWm0zNS43OS0zMTJxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabS40OSA1MDRRNDAxLTk2IDMzMS0xMjZ0LTEyMi41LTgyLjVRMTU2LTI2MSAxMjYtMzMwLjk2dC0zMC0xNDkuNVE5Ni01NjAgMTI2LTYyOS41cTMwLTY5LjUgODIuNS0xMjJUMzMwLjk2LTgzNHE2OS45Ni0zMCAxNDkuNS0zMHQxNDkuMDQgMzBxNjkuNSAzMCAxMjIgODIuNVQ4MzQtNjI5LjI4cTMwIDY5LjczIDMwIDE0OVE4NjQtNDAxIDgzNC0zMzF0LTgyLjUgMTIyLjVRNjk5LTE1NiA2MjkuMjgtMTI2cS02OS43MyAzMC0xNDkgMzBabS0uMjgtNzJxMTMwIDAgMjIxLTkxdDkxLTIyMXEwLTEzMC05MS0yMjF0LTIyMS05MXEtMTMwIDAtMjIxIDkxdC05MSAyMjFxMCAxMzAgOTEgMjIxdDIyMSA5MVptMC0zMTJaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBDbG9zZUljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiM4OTg5ODlcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJtMjkxLTI0MC01MS01MSAxODktMTg5LTE4OS0xODkgNTEtNTEgMTg5IDE4OSAxODktMTg5IDUxIDUxLTE4OSAxODkgMTg5IDE4OS01MSA1MS0xODktMTg5LTE4OSAxODlaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBLZXlib2FyZEljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNmY2ZjZmNcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNMTY4LTI0MHEtMjkuNyAwLTUwLjg1LTIxLjE1UTk2LTI4Mi4zIDk2LTMxMnYtMzM2cTAtMjkuNyAyMS4xNS01MC44NVExMzguMy03MjAgMTY4LTcyMGg2MjRxMjkuNyAwIDUwLjg1IDIxLjE1UTg2NC02NzcuNyA4NjQtNjQ4djMzNnEwIDI5LjctMjEuMTUgNTAuODVRODIxLjctMjQwIDc5Mi0yNDBIMTY4Wm0wLTcyaDYyNHYtMzM2SDE2OHYzMzZabTIwMy45Ni0yNGgyMTUuNzZxMTUuMjggMCAyNS43OC0xMC4yOSAxMC41LTEwLjI5IDEwLjUtMjUuNXQtMTAuMzQtMjUuNzFRNjAzLjMyLTQwOCA1ODguMDQtNDA4SDM3Mi4yOHEtMTUuMjggMC0yNS43OCAxMC4yOS0xMC41IDEwLjI5LTEwLjUgMjUuNXQxMC4zNCAyNS43MXExMC4zNCAxMC41IDI1LjYyIDEwLjVaTTE2OC0zMTJ2LTMzNiAzMzZabTEwNy43OS0yNDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0tNDA4IDk2cTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IFdpZGdldHNJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjZmNmY2ZjXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTYxMC00NTggNDU3LjM5LTYxMXEtNS4zOS01LjQtNy44OS0xMS43LTIuNS02LjMtMi41LTEzLjV0Mi41LTEzLjVRNDUyLTY1NiA0NTctNjYxbDE1My0xNTNxNS01IDEyLTh0MTQuMi0zcTcuMiAwIDEzLjUgM3QxMS4zIDhsMTUyLjYxIDE1M3E1LjM5IDUuNCA3Ljg5IDExLjcgMi41IDYuMyAyLjUgMTMuNXQtMi41IDEzLjVRODE5LTYxNiA4MTQtNjExTDY2MS00NThxLTUgNS0xMS4zIDgtNi4zIDMtMTMuNSAzdC0xNC4yLTNxLTctMy0xMi04Wk0xNDQtNTYzLjk2di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUgxODAuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0zODQgMzg0di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUg1NjQuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0tMzg0IDB2LTIxNS43NnEwLTE1LjI4IDEwLjM0LTI1Ljc4IDEwLjM0LTEwLjUgMjUuNjItMTAuNWgyMTUuNzZxMTUuMjggMCAyNS43OCAxMC4zNCAxMC41IDEwLjM0IDEwLjUgMjUuNjJ2MjE1Ljc2cTAgMTUuMjgtMTAuMzQgMjUuNzgtMTAuMzQgMTAuNS0yNS42MiAxMC41SDE4MC4yOHEtMTUuMjggMC0yNS43OC0xMC4zNC0xMC41LTEwLjM0LTEwLjUtMjUuNjJaTTIxNi02MDBoMTQ0di0xNDRIMjE2djE0NFptNDIwIDY2IDEwMS0xMDItMTAxLTEwMi0xMDIgMTAyIDEwMiAxMDJabS0zNiAzMThoMTQ0di0xNDRINjAwdjE0NFptLTM4NCAwaDE0NHYtMTQ0SDIxNnYxNDRabTE0NC0zODRabTE3NC0zNlpNMzYwLTM2MFptMjQwIDBaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIlpvb21PdXRJY29uIiwiX3JlZiIsImNzc0NsYXNzIiwiX2pzeCIsInhtbG5zIiwiaGVpZ2h0Iiwidmlld0JveCIsIndpZHRoIiwiZmlsbCIsImNoaWxkcmVuIiwiZCIsIlpvb21Jbkljb24iLCJfcmVmMiIsIkFsaWduSWNvbiIsIl9yZWYzIiwiSW5mb0ljb24iLCJfcmVmNCIsIkNsb3NlSWNvbiIsIl9yZWY1IiwiS2V5Ym9hcmRJY29uIiwiX3JlZjYiLCJXaWRnZXRzSWNvbiIsIl9yZWY3IiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsInByb3BzIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4075.9c40cac3.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4075.9c40cac3.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4075.9c40cac3.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4078.620631cc.js b/react_frontend/static/react_frontend/js/4078.620631cc.js new file mode 100644 index 000000000..a113bba05 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4078.620631cc.js @@ -0,0 +1,3 @@ +/*! For license information please see 4078.620631cc.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4078],{4078:(t,e,r)=>{r.r(e),r.d(e,{default:()=>d});var n=r(6540),o=r(4848);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(l&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),N(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;N(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:R(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function s(t,e,r,n,o,i,a){try{var c=t[i](a),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(n,o)}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return h(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&p>0?"#008D01":"white"}),children:[(0,o.jsx)("div",{onClick:function(){return g.current.click()},className:"cursor-pointer w-16 h-9 flex justify-center items-center",children:(0,o.jsx)(m,{fillColor:a.length>0&&p>0?"white":"#008D01"})}),(0,o.jsx)("div",{className:"tooltip-details",children:a.length>0&&p>0?(0,o.jsxs)("div",{className:"flex flex-col items-center text-sm text-white gap-2",title:a,children:[a.length>0&&(0,o.jsxs)("p",{children:["File Name: ",a]}),p>0&&(0,o.jsxs)("p",{children:["File Size: ",(p/1048576).toFixed(4)," MB"]})]}):(0,o.jsx)("p",{className:"text-sm text-white",children:"Upload a .onnx model"})}),(0,o.jsx)("input",{type:"file",accept:".onnx",onChange:w,ref:g,style:{display:"none"},className:"cursor-pointer",onClick:function(t){t.target.value=null}})]}):null})};var v={uploadButtonContainer:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",borderRadius:"6px"}},m=function(t){var e=t.cssClass,r=t.fillColor;return(0,o.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -960 960 960",width:"28",height:"28",fill:r||"currentColor",className:"".concat(e),children:[(0,o.jsx)("path",{d:"M440-320v-326L336-542l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"}),"Add commentMore actions"]})}},1020:(t,e,r)=>{var n=r(6540),o=Symbol.for("react.element"),i=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,c=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function u(t,e,r){var n,i={},u=null,s=null;for(n in void 0!==r&&(u=""+r),void 0!==e.key&&(u=""+e.key),void 0!==e.ref&&(s=e.ref),e)a.call(e,n)&&!l.hasOwnProperty(n)&&(i[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps)void 0===i[n]&&(i[n]=e[n]);return{$$typeof:o,type:t,key:u,ref:s,props:i,_owner:c.current}}e.Fragment=i,e.jsx=u,e.jsxs=u},4848:(t,e,r)=>{t.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUUsRUFBUSxNQUFTK0osRUFBRXJMLE9BQU9zTCxJQUFJLGlCQUFpQmpLLEVBQUVyQixPQUFPc0wsSUFBSSxrQkFBa0JDLEVBQUUvTCxPQUFPQyxVQUFVRSxlQUFlRCxFQUFFNEIsRUFBRWtLLG1EQUFtREMsa0JBQWtCOUosRUFBRSxDQUFDK0osS0FBSSxFQUFHbkIsS0FBSSxFQUFHb0IsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUUxTCxFQUFFRixFQUFFK0IsR0FBRyxJQUFJOEosRUFBRWxLLEVBQUUsQ0FBQyxFQUFFdkMsRUFBRSxLQUFLK0IsRUFBRSxLQUFpRixJQUFJMEssVUFBaEYsSUFBUzlKLElBQUkzQyxFQUFFLEdBQUcyQyxRQUFHLElBQVMvQixFQUFFeUwsTUFBTXJNLEVBQUUsR0FBR1ksRUFBRXlMLFVBQUssSUFBU3pMLEVBQUVzSyxNQUFNbkosRUFBRW5CLEVBQUVzSyxLQUFjdEssRUFBRXNMLEVBQUVwSyxLQUFLbEIsRUFBRTZMLEtBQUtuSyxFQUFFaEMsZUFBZW1NLEtBQUtsSyxFQUFFa0ssR0FBRzdMLEVBQUU2TCxJQUFJLEdBQUczTCxHQUFHQSxFQUFFNEwsYUFBYSxJQUFJRCxLQUFLN0wsRUFBRUUsRUFBRTRMLGtCQUFlLElBQVNuSyxFQUFFa0ssS0FBS2xLLEVBQUVrSyxHQUFHN0wsRUFBRTZMLElBQUksTUFBTSxDQUFDRSxTQUFTWCxFQUFFcEssS0FBS2QsRUFBRXVMLElBQUlyTSxFQUFFa0wsSUFBSW5KLEVBQUU2SyxNQUFNckssRUFBRXNLLE9BQU94TSxFQUFFc0ssUUFBUSxDQUFDbUMsRUFBUUMsU0FBUy9LLEVBQUU4SyxFQUFRRSxJQUFJUixFQUFFTSxFQUFRRyxLQUFLVCxrQkNQeFdVLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvRExNb2RlbFVwbG9hZEJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgXCIuLy4uLy4uL3N0eWxlcy9idXR0b25zL0RMTW9kZWxVcGxvYWRCdXR0b24uY3NzXCI7XHJcbmltcG9ydCBcIi4vLi4vLi4vc3R5bGVzL3RhaWx3aW5kLmNzc1wiO1xyXG5cclxuLy8gQ29uc3RhbnRzXHJcbmNvbnN0IHdoaXRlX2xpc3RfZXhlcmNpc2VzID0gW1wiZGlnaXRfY2xhc3NpZmljYXRpb25cIiwgXCJodW1hbl9kZXRlY3Rpb25cIl07XHJcbmNvbnN0IE1CID0gMTAyNCAqIDEwMjQ7XHJcblxyXG53aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMgPSB3aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMgfHwge307XHJcblxyXG53aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMuRGVlcExlYXJuaW5nTW9kZWwgPSAoZnVuY3Rpb24gKCkge1xyXG4gIGxldCBtb2RlbF9idWZmZXIgPSBudWxsO1xyXG5cclxuICBjb25zdCBzZXRNb2RlbEJ1ZmZlciA9IChtb2RlbEJ1ZmZlcikgPT4ge1xyXG4gICAgbW9kZWxfYnVmZmVyID0gbW9kZWxCdWZmZXI7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZ2V0TW9kZWxCdWZmZXIgPSAoKSA9PiBtb2RlbF9idWZmZXI7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBzZXRNb2RlbEJ1ZmZlcjogc2V0TW9kZWxCdWZmZXIsXHJcbiAgICBnZXRNb2RlbEJ1ZmZlcjogZ2V0TW9kZWxCdWZmZXIsXHJcbiAgfTtcclxufSkoKTtcclxuXHJcbi8vIERlZXAgTGVhcm5pbmcgTW9kZWwgVXBsb2FkIEJ1dHRvbiBDb21wb25lbnRcclxuY29uc3QgRExNb2RlbFVwbG9hZEJ1dHRvbiA9ICgpID0+IHtcclxuICBjb25zdCBbZXhlcmNpc2VOYW1lLCBzZXRFeGVyY2lzZU5hbWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW2ZpbGVOYW1lLCBzZXRGaWxlTmFtZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcclxuICBjb25zdCBbZmlsZVNpemUsIHNldEZpbGVTaXplXSA9IFJlYWN0LnVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IGZpbGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcblxyXG4gIC8vIEVmZmVjdCB0byBzZXQgdGhlIGV4ZXJjaXNlIG5hbWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgVVJMXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGN1cnJlbnRQYXRoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xyXG4gICAgY29uc3Qgc3BsaXQgPSBjdXJyZW50UGF0aC5zcGxpdChcIi9cIikuZmlsdGVyKEJvb2xlYW4pOyAvLyBHZXQgdGhlIGxhc3QgcGFydCBvZiB0aGUgVVJMXHJcbiAgICBjb25zdCBleGVyY2lzZSA9IHNwbGl0W3NwbGl0Lmxlbmd0aCAtIDFdOyAvLyBBc3N1bWluZyB0aGUgbGFzdCBwYXJ0IGlzIHRoZSBleGVyY2lzZSBuYW1lXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgZXhlcmNpc2UgaXMgaW4gdGhlIHdoaXRlbGlzdFxyXG4gICAgaWYgKHdoaXRlX2xpc3RfZXhlcmNpc2VzLmluY2x1ZGVzKGV4ZXJjaXNlKSkge1xyXG4gICAgICBzZXRFeGVyY2lzZU5hbWUoZXhlcmNpc2UpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0RXhlcmNpc2VOYW1lKFwiXCIpOyAvLyBSZXNldCBpZiBub3QgaW4gdGhlIHdoaXRlbGlzdFxyXG4gICAgfVxyXG4gIH0sIFtdKTtcclxuXHJcbiAgLy8gSGFuZGxlIGZpbGUgdXBsb2FkXHJcbiAgY29uc3QgaGFuZGxlVXBsb2FkID0gYXN5bmMgKGV2ZW50KSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKCFmaWxlIHx8ICFmaWxlLm5hbWUuZW5kc1dpdGgoXCIub25ueFwiKSkge1xyXG4gICAgICBhbGVydChcIlBsZWFzZSB1cGxvYWQgYSB2YWxpZCAub25ueCBmaWxlXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZmlsZS5hcnJheUJ1ZmZlcigpOyAvLyBCaW5hcnkgYnVmZmVyXHJcblxyXG4gICAgY29uc29sZS5sb2coXCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cIik7XHJcbiAgICBjb25zb2xlLmxvZyhcIkZpbGUgdXBsb2FkZWQ6XCIsIGZpbGUubmFtZSk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkZpbGUgc2l6ZTpcIiwgKGZpbGUuc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMiksIFwiTUJcIik7XHJcbiAgICBjb25zb2xlLmxvZyhcIkZpbGUgdHlwZTpcIiwgZmlsZS50eXBlKTtcclxuICAgIGNvbnNvbGUubG9nKFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XCIpO1xyXG5cclxuICAgIC8vIFNldCB0aGUgbW9kZWwgaW4gdGhlIERlZXBMZWFybmluZ01vZGVsIGNvbXBvbmVudFxyXG4gICAgd2luZG93LlJvYm90aWNzUmVhY3RDb21wb25lbnRzLkRlZXBMZWFybmluZ01vZGVsLnNldE1vZGVsQnVmZmVyKGJ1ZmZlcik7XHJcbiAgICAvLyBVcGRhdGUgdGhlIHN0YXRlIHdpdGggZmlsZSBkZXRhaWxzXHJcbiAgICBzZXRGaWxlTmFtZShmaWxlLm5hbWUpO1xyXG4gICAgc2V0RmlsZVNpemUoZmlsZS5zaXplKTtcclxuICB9O1xyXG5cclxuICAvLyBSZW5kZXIgdGhlIHVwbG9hZCBidXR0b24gaWYgdGhlIGV4ZXJjaXNlIGlzIGluIHRoZSB3aGl0ZWxpc3RcclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAge2V4ZXJjaXNlTmFtZSAmJiB3aGl0ZV9saXN0X2V4ZXJjaXNlcy5pbmNsdWRlcyhleGVyY2lzZU5hbWUpID8gKFxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17YHRvb2x0aXAtY29udGFpbmVyIG0tMSBib3JkZXItWzFweF0gaG92ZXI6Ym9yZGVyLVsxLjhweF0gYm9yZGVyLVsjMDA4RDAxN0ZdIGhvdmVyOmJvcmRlci1bIzAwOEQwMV0gY3Vyc29yLXBvaW50ZXIgZHVyYXRpb24tWzI1MG1zXSB0cmFuc2l0aW9uLWNvbG9yc2B9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAuLi5zdHlsZXMudXBsb2FkQnV0dG9uQ29udGFpbmVyLFxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOlxyXG4gICAgICAgICAgICAgIGZpbGVOYW1lLmxlbmd0aCA+IDAgJiYgZmlsZVNpemUgPiAwID8gXCIjMDA4RDAxXCIgOiBcIndoaXRlXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZmlsZVJlZi5jdXJyZW50LmNsaWNrKCl9XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImN1cnNvci1wb2ludGVyIHctMTYgaC05IGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPFVwbG9hZEljb25cclxuICAgICAgICAgICAgICBmaWxsQ29sb3I9e1xyXG4gICAgICAgICAgICAgICAgZmlsZU5hbWUubGVuZ3RoID4gMCAmJiBmaWxlU2l6ZSA+IDAgPyBcIndoaXRlXCIgOiBcIiMwMDhEMDFcIlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIHsvKiBmaWxlIGRldGFpbHMgKi99XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRvb2x0aXAtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICB7ZmlsZU5hbWUubGVuZ3RoID4gMCAmJiBmaWxlU2l6ZSA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgdGV4dC1zbSB0ZXh0LXdoaXRlIGdhcC0yXCJcclxuICAgICAgICAgICAgICAgIHRpdGxlPXtmaWxlTmFtZX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7ZmlsZU5hbWUubGVuZ3RoID4gMCAmJiA8cD5GaWxlIE5hbWU6IHtmaWxlTmFtZX08L3A+fVxyXG4gICAgICAgICAgICAgICAge2ZpbGVTaXplID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxwPkZpbGUgU2l6ZTogeyhmaWxlU2l6ZSAvIE1CKS50b0ZpeGVkKDQpfSBNQjwvcD5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXdoaXRlXCI+VXBsb2FkIGEgLm9ubnggbW9kZWw8L3A+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgICBhY2NlcHQ9XCIub25ueFwiXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVVcGxvYWR9XHJcbiAgICAgICAgICAgIHJlZj17ZmlsZVJlZn1cclxuICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJub25lXCIgfSAvKiBIaWRlIHRoZSBkZWZhdWx0IGZpbGUgaW5wdXQgKi99XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcclxuICAgICAgICAgICAgICBlLnRhcmdldC52YWx1ZSA9IG51bGw7IC8vIFJlc2V0IHRoZSBmaWxlIGlucHV0IHZhbHVlXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApIDogbnVsbH1cclxuICAgIDwvPlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBETE1vZGVsVXBsb2FkQnV0dG9uO1xyXG5cclxuLyogc3R5bGVzICovXHJcbmNvbnN0IHN0eWxlcyA9IHtcclxuICB1cGxvYWRCdXR0b25Db250YWluZXI6IHtcclxuICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcclxuICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxyXG4gICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcclxuICAgIGJvcmRlclJhZGl1czogXCI2cHhcIixcclxuICB9LFxyXG59O1xyXG4vLyBkaWdpdF9jbGFzc2lmaWNhdGlvbjtcclxuY29uc3QgVXBsb2FkSWNvbiA9ICh7IGNzc0NsYXNzLCBmaWxsQ29sb3IgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjhcIlxyXG4gICAgaGVpZ2h0PVwiMjhcIlxyXG4gICAgZmlsbD17ZmlsbENvbG9yIHx8IFwiY3VycmVudENvbG9yXCJ9XHJcbiAgICBjbGFzc05hbWU9e2Ake2Nzc0NsYXNzfWB9XHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk00NDAtMzIwdi0zMjZMMzM2LTU0MmwtNTYtNTggMjAwLTIwMCAyMDAgMjAwLTU2IDU4LTEwNC0xMDR2MzI2aC04MFpNMjQwLTE2MHEtMzMgMC01Ni41LTIzLjVUMTYwLTI0MHYtMTIwaDgwdjEyMGg0ODB2LTEyMGg4MHYxMjBxMCAzMy0yMy41IDU2LjVUNzIwLTE2MEgyNDBaXCIgLz5cclxuICAgIEFkZCBjb21tZW50TW9yZSBhY3Rpb25zXHJcbiAgPC9zdmc+XHJcbik7XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX3NsaWNlZFRvQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiZnJvbSIsInRlc3QiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibW9kZWxfYnVmZmVyIiwid2hpdGVfbGlzdF9leGVyY2lzZXMiLCJ3aW5kb3ciLCJSb2JvdGljc1JlYWN0Q29tcG9uZW50cyIsIkRlZXBMZWFybmluZ01vZGVsIiwic2V0TW9kZWxCdWZmZXIiLCJtb2RlbEJ1ZmZlciIsImdldE1vZGVsQnVmZmVyIiwiX1JlYWN0JHVzZVN0YXRlMiIsIlJlYWN0IiwiZXhlcmNpc2VOYW1lIiwic2V0RXhlcmNpc2VOYW1lIiwiX1JlYWN0JHVzZVN0YXRlNCIsImZpbGVOYW1lIiwic2V0RmlsZU5hbWUiLCJfUmVhY3QkdXNlU3RhdGU2IiwiZmlsZVNpemUiLCJzZXRGaWxlU2l6ZSIsImZpbGVSZWYiLCJzcGxpdCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZXhlcmNpc2UiLCJpbmNsdWRlcyIsImhhbmRsZVVwbG9hZCIsIl9yZWYiLCJfY2FsbGVlIiwiZXZlbnQiLCJmaWxlIiwiYnVmZmVyIiwiX2NvbnRleHQiLCJ0YXJnZXQiLCJmaWxlcyIsImVuZHNXaXRoIiwiYWxlcnQiLCJhcnJheUJ1ZmZlciIsImNvbnNvbGUiLCJsb2ciLCJzaXplIiwidG9GaXhlZCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfeCIsIl9qc3giLCJfRnJhZ21lbnQiLCJjaGlsZHJlbiIsIl9qc3hzIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwic3R5bGVzIiwidXBsb2FkQnV0dG9uQ29udGFpbmVyIiwiYmFja2dyb3VuZCIsIm9uQ2xpY2siLCJjdXJyZW50IiwiY2xpY2siLCJVcGxvYWRJY29uIiwiZmlsbENvbG9yIiwidGl0bGUiLCJhY2NlcHQiLCJvbkNoYW5nZSIsInJlZiIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiYm9yZGVyUmFkaXVzIiwiX3JlZjIiLCJjc3NDbGFzcyIsInhtbG5zIiwidmlld0JveCIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsImNvbmNhdCIsImsiLCJmb3IiLCJtIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsImtleSIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImIiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInByb3BzIiwiX293bmVyIiwiZXhwb3J0cyIsIkZyYWdtZW50IiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4078.620631cc.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4078.620631cc.js.LICENSE.txt new file mode 100644 index 000000000..6e4dcbdde --- /dev/null +++ b/react_frontend/static/react_frontend/js/4078.620631cc.js.LICENSE.txt @@ -0,0 +1,11 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4088.a4f56783.js b/react_frontend/static/react_frontend/js/4088.a4f56783.js new file mode 100644 index 000000000..a24d27af8 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4088.a4f56783.js @@ -0,0 +1,3 @@ +/*! For license information please see 4088.a4f56783.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4088],{4088:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDA4OC4yYzVhMDA2YS5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjBCLFNBQUNBLEdBQ3pCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2FtYXpvbl93YXJlaG91c2UvcmVhY3QtY29tcG9uZW50cy9BbWF6b25XYXJlaG91c2VSUi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvQW1hem9uV2FyZWhvdXNlUlIuY3NzXCI7XHJcblxyXG5jb25zdCBBbWF6b25XYXJlaG91c2VSUiA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBBbWF6b25XYXJlaG91c2VSUjsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4088.a4f56783.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4088.a4f56783.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4088.a4f56783.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4104.03a2f66a.js b/react_frontend/static/react_frontend/js/4104.03a2f66a.js new file mode 100644 index 000000000..c21f7c0c9 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4104.03a2f66a.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4104,2230],{5793:(e,n,t)=>{"use strict";t.d(n,{A:()=>_});var r=t(8168),o=t(8587),c=t(6540);const s=c.createContext(null);function i(){return c.useContext(s)}const a="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var u=t(4848);const l=function(e){const{children:n,theme:t}=e,o=i(),l=c.useMemo((()=>{const e=null===o?t:function(e,n){return"function"==typeof n?n(e):(0,r.A)({},e,n)}(o,t);return null!=e&&(e[a]=null!==o),e}),[t,o]);return(0,u.jsx)(s.Provider,{value:l,children:n})};var f=t(5684),p=t(3951);const d={};function h(e,n,t,o=!1){return c.useMemo((()=>{const c=e&&n[e]||n;if("function"==typeof t){const s=t(c),i=e?(0,r.A)({},n,{[e]:s}):s;return o?()=>i:i}return e?(0,r.A)({},n,{[e]:t}):(0,r.A)({},n,t)}),[e,n,t,o])}const m=function(e){const{children:n,theme:t,themeId:r}=e,o=(0,p.A)(d),c=i()||d,s=h(r,o,t),a=h(r,c,t,!0);return(0,u.jsx)(l,{theme:a,children:(0,u.jsx)(f.T.Provider,{value:s,children:n})})};var y=t(8312);const v=["theme"];function _(e){let{theme:n}=e,t=(0,o.A)(e,v);const c=n[y.A];return(0,u.jsx)(m,(0,r.A)({},t,{themeId:c?y.A:void 0,theme:c||n}))}},4104:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>c}),t(6540);var r=t(2230),o=t(4848);const c=function(){return(0,o.jsx)(r.default,{children:(0,o.jsx)("div",{className:"Exercise"})})}},2230:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>l}),t(6540);var r=t(6544),o=t(5793),c=t(5556),s=t.n(c),i=t(4848),a=(0,r.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function u(e){return(0,i.jsx)(o.A,{theme:a,children:e.children})}u.propTypes={children:s().node};const l=u},2694:(e,n,t)=>{"use strict";var r=t(6925);function o(){}function c(){}c.resetWarningCache=o,e.exports=function(){function e(e,n,t,o,c,s){if(s!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:c,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,n,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUQsRUFBTUMsVUFDN0MsQ0FFQTJCLEVBQWNlLFVBQVksQ0FDeEIxQyxTQUFVMkMsSUFBQUEsTUFHWixTLDhCQzlCQSxJQUFJQyxFQUF1QixFQUFRLE1BRW5DLFNBQVNDLElBQWlCLENBQzFCLFNBQVNDLElBQTBCLENBQ25DQSxFQUF1QkMsa0JBQW9CRixFQUUzQ0csRUFBT0MsUUFBVSxXQUNmLFNBQVNDLEVBQUtuRCxFQUFPb0QsRUFBVUMsRUFBZUMsRUFBVUMsRUFBY0MsR0FDcEUsR0FBSUEsSUFBV1gsRUFBZixDQUlBLElBQUlZLEVBQU0sSUFBSUMsTUFDWixtTEFLRixNQURBRCxFQUFJRSxLQUFPLHNCQUNMRixDQVBOLENBUUYsQ0FFQSxTQUFTRyxJQUNQLE9BQU9ULENBQ1QsQ0FIQUEsRUFBS1UsV0FBYVYsRUFNbEIsSUFBSVcsRUFBaUIsQ0FDbkJDLE1BQU9aLEVBQ1BhLE9BQVFiLEVBQ1JjLEtBQU1kLEVBQ05lLEtBQU1mLEVBQ05nQixPQUFRaEIsRUFDUmlCLE9BQVFqQixFQUNSa0IsT0FBUWxCLEVBQ1JtQixPQUFRbkIsRUFFUm9CLElBQUtwQixFQUNMcUIsUUFBU1osRUFDVGEsUUFBU3RCLEVBQ1R1QixZQUFhdkIsRUFDYndCLFdBQVlmLEVBQ1pnQixLQUFNekIsRUFDTjBCLFNBQVVqQixFQUNWa0IsTUFBT2xCLEVBQ1BtQixVQUFXbkIsRUFDWG9CLE1BQU9wQixFQUNQcUIsTUFBT3JCLEVBRVBzQixlQUFnQm5DLEVBQ2hCQyxrQkFBbUJGLEdBS3JCLE9BRkFnQixFQUFlbEIsVUFBWWtCLEVBRXBCQSxDQUNULEMsaUJDL0NFYixFQUFPQyxRQUFVLEVBQVEsS0FBUixFLHdCQ05uQkQsRUFBT0MsUUFGb0IsOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy91c2VUaGVtZS9UaGVtZUNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvdXNlVGhlbWUvdXNlVGhlbWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvVGhlbWVQcm92aWRlci9uZXN0ZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9wcml2YXRlLXRoZW1pbmcvVGhlbWVQcm92aWRlci9UaGVtZVByb3ZpZGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9UaGVtZVByb3ZpZGVyL1RoZW1lUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvVGhlbWVQcm92aWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL0V4ZXJjaXNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvUm9ib3RpY3NUaGVtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IFRoZW1lQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgVGhlbWVDb250ZXh0LmRpc3BsYXlOYW1lID0gJ1RoZW1lQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBUaGVtZUNvbnRleHQ7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFRoZW1lQ29udGV4dCBmcm9tICcuL1RoZW1lQ29udGV4dCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRGVidWdWYWx1ZSh0aGVtZSk7XG4gIH1cbiAgcmV0dXJuIHRoZW1lO1xufSIsImNvbnN0IGhhc1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmZvcjtcbmV4cG9ydCBkZWZhdWx0IGhhc1N5bWJvbCA/IFN5bWJvbC5mb3IoJ211aS5uZXN0ZWQnKSA6ICdfX1RIRU1FX05FU1RFRF9fJzsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBleGFjdFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBUaGVtZUNvbnRleHQgZnJvbSAnLi4vdXNlVGhlbWUvVGhlbWVDb250ZXh0JztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi91c2VUaGVtZSc7XG5pbXBvcnQgbmVzdGVkIGZyb20gJy4vbmVzdGVkJztcblxuLy8gVG8gc3VwcG9ydCBjb21wb3NpdGlvbiBvZiB0aGVtZS5cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBtZXJnZU91dGVyTG9jYWxUaGVtZShvdXRlclRoZW1lLCBsb2NhbFRoZW1lKSB7XG4gIGlmICh0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gbG9jYWxUaGVtZShvdXRlclRoZW1lKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKCFtZXJnZWRUaGVtZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3Ugc2hvdWxkIHJldHVybiBhbiBvYmplY3QgZnJvbSB5b3VyIHRoZW1lIGZ1bmN0aW9uLCBpLmUuJywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXsoKSA9PiAoe30pfSAvPiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG59XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgdGFrZXMgYSBgdGhlbWVgIHByb3AuXG4gKiBJdCBtYWtlcyB0aGUgYHRoZW1lYCBhdmFpbGFibGUgZG93biB0aGUgUmVhY3QgdHJlZSB0aGFua3MgdG8gUmVhY3QgY29udGV4dC5cbiAqIFRoaXMgY29tcG9uZW50IHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQgYXQgKip0aGUgcm9vdCBvZiB5b3VyIGNvbXBvbmVudCB0cmVlKiouXG4gKi9cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIHRoZW1lOiBsb2NhbFRoZW1lXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qgb3V0ZXJUaGVtZSA9IHVzZVRoZW1lKCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKG91dGVyVGhlbWUgPT09IG51bGwgJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IFlvdSBhcmUgcHJvdmlkaW5nIGEgdGhlbWUgZnVuY3Rpb24gcHJvcCB0byB0aGUgVGhlbWVQcm92aWRlciBjb21wb25lbnQ6JywgJzxUaGVtZVByb3ZpZGVyIHRoZW1lPXtvdXRlclRoZW1lID0+IG91dGVyVGhlbWV9IC8+JywgJycsICdIb3dldmVyLCBubyBvdXRlciB0aGVtZSBpcyBwcmVzZW50LicsICdNYWtlIHN1cmUgYSB0aGVtZSBpcyBhbHJlYWR5IGluamVjdGVkIGhpZ2hlciBpbiB0aGUgUmVhY3QgdHJlZSAnICsgJ29yIHByb3ZpZGUgYSB0aGVtZSBvYmplY3QuJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICBjb25zdCB0aGVtZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG91dHB1dCA9IG91dGVyVGhlbWUgPT09IG51bGwgPyBsb2NhbFRoZW1lIDogbWVyZ2VPdXRlckxvY2FsVGhlbWUob3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gICAgaWYgKG91dHB1dCAhPSBudWxsKSB7XG4gICAgICBvdXRwdXRbbmVzdGVkXSA9IG91dGVyVGhlbWUgIT09IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH0sIFtsb2NhbFRoZW1lLCBvdXRlclRoZW1lXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUaGVtZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogdGhlbWUsXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBZb3VyIGNvbXBvbmVudCB0cmVlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQSB0aGVtZSBvYmplY3QuIFlvdSBjYW4gcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGV4dGVuZCB0aGUgb3V0ZXIgdGhlbWUuXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKS5pc1JlcXVpcmVkXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSBleGFjdFByb3AoVGhlbWVQcm92aWRlci5wcm9wVHlwZXMpIDogdm9pZCAwO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgYXMgTXVpVGhlbWVQcm92aWRlciwgdXNlVGhlbWUgYXMgdXNlUHJpdmF0ZVRoZW1lIH0gZnJvbSAnQG11aS9wcml2YXRlLXRoZW1pbmcnO1xuaW1wb3J0IHsgZXhhY3RQcm9wIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyBUaGVtZUNvbnRleHQgYXMgU3R5bGVkRW5naW5lVGhlbWVDb250ZXh0IH0gZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCB1c2VUaGVtZVdpdGhvdXREZWZhdWx0IGZyb20gJy4uL3VzZVRoZW1lV2l0aG91dERlZmF1bHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IEVNUFRZX1RIRU1FID0ge307XG5mdW5jdGlvbiB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSwgaXNQcml2YXRlID0gZmFsc2UpIHtcbiAgcmV0dXJuIFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHJlc29sdmVkVGhlbWUgPSB0aGVtZUlkID8gdXBwZXJUaGVtZVt0aGVtZUlkXSB8fCB1cHBlclRoZW1lIDogdXBwZXJUaGVtZTtcbiAgICBpZiAodHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnN0IG1lcmdlZFRoZW1lID0gbG9jYWxUaGVtZShyZXNvbHZlZFRoZW1lKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoZW1lSWQgPyBfZXh0ZW5kcyh7fSwgdXBwZXJUaGVtZSwge1xuICAgICAgICBbdGhlbWVJZF06IG1lcmdlZFRoZW1lXG4gICAgICB9KSA6IG1lcmdlZFRoZW1lO1xuICAgICAgLy8gbXVzdCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgdGhlIHByaXZhdGUgdGhlbWUgdG8gTk9UIG1lcmdlIHdpdGggdGhlIHVwcGVyIHRoZW1lLlxuICAgICAgLy8gc2VlIHRoZSB0ZXN0IGNhc2UgXCJ1c2UgcHJvdmlkZWQgdGhlbWUgZnJvbSBhIGNhbGxiYWNrXCIgaW4gVGhlbWVQcm92aWRlci50ZXN0LmpzXG4gICAgICBpZiAoaXNQcml2YXRlKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdGhlbWVJZCA/IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCB7XG4gICAgICBbdGhlbWVJZF06IGxvY2FsVGhlbWVcbiAgICB9KSA6IF9leHRlbmRzKHt9LCB1cHBlclRoZW1lLCBsb2NhbFRoZW1lKTtcbiAgfSwgW3RoZW1lSWQsIHVwcGVyVGhlbWUsIGxvY2FsVGhlbWUsIGlzUHJpdmF0ZV0pO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IG1ha2VzIHRoZSBgdGhlbWVgIGF2YWlsYWJsZSBkb3duIHRoZSBSZWFjdCB0cmVlLlxuICogSXQgc2hvdWxkIHByZWZlcmFibHkgYmUgdXNlZCBhdCAqKnRoZSByb290IG9mIHlvdXIgY29tcG9uZW50IHRyZWUqKi5cbiAqXG4gKiA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PiAvLyBleGlzdGluZyB1c2UgY2FzZVxuICogPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3sgaWQ6IHRoZW1lIH19PiAvLyB0aGVtZSBzY29waW5nXG4gKi9cbmZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIHRoZW1lOiBsb2NhbFRoZW1lLFxuICAgIHRoZW1lSWRcbiAgfSA9IHByb3BzO1xuICBjb25zdCB1cHBlclRoZW1lID0gdXNlVGhlbWVXaXRob3V0RGVmYXVsdChFTVBUWV9USEVNRSk7XG4gIGNvbnN0IHVwcGVyUHJpdmF0ZVRoZW1lID0gdXNlUHJpdmF0ZVRoZW1lKCkgfHwgRU1QVFlfVEhFTUU7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHVwcGVyVGhlbWUgPT09IG51bGwgJiYgdHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicgfHwgdGhlbWVJZCAmJiB1cHBlclRoZW1lICYmICF1cHBlclRoZW1lW3RoZW1lSWRdICYmIHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3UgYXJlIHByb3ZpZGluZyBhIHRoZW1lIGZ1bmN0aW9uIHByb3AgdG8gdGhlIFRoZW1lUHJvdmlkZXIgY29tcG9uZW50OicsICc8VGhlbWVQcm92aWRlciB0aGVtZT17b3V0ZXJUaGVtZSA9PiBvdXRlclRoZW1lfSAvPicsICcnLCAnSG93ZXZlciwgbm8gb3V0ZXIgdGhlbWUgaXMgcHJlc2VudC4nLCAnTWFrZSBzdXJlIGEgdGhlbWUgaXMgYWxyZWFkeSBpbmplY3RlZCBoaWdoZXIgaW4gdGhlIFJlYWN0IHRyZWUgJyArICdvciBwcm92aWRlIGEgdGhlbWUgb2JqZWN0LiddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgZW5naW5lVGhlbWUgPSB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gIGNvbnN0IHByaXZhdGVUaGVtZSA9IHVzZVRoZW1lU2NvcGluZyh0aGVtZUlkLCB1cHBlclByaXZhdGVUaGVtZSwgbG9jYWxUaGVtZSwgdHJ1ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChNdWlUaGVtZVByb3ZpZGVyLCB7XG4gICAgdGhlbWU6IHByaXZhdGVUaGVtZSxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goU3R5bGVkRW5naW5lVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgICB2YWx1ZTogZW5naW5lVGhlbWUsXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KVxuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogWW91ciBjb21wb25lbnQgdHJlZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEEgdGhlbWUgb2JqZWN0LiBZb3UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBleHRlbmQgdGhlIG91dGVyIHRoZW1lLlxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSkuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSBkZXNpZ24gc3lzdGVtJ3MgdW5pcXVlIGlkIGZvciBnZXR0aW5nIHRoZSBjb3JyZXNwb25kZWQgdGhlbWUgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZGVzaWduIHN5c3RlbXMuXG4gICAqL1xuICB0aGVtZUlkOiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSBleGFjdFByb3AoVGhlbWVQcm92aWRlci5wcm9wVHlwZXMpIDogdm9pZCAwO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVQcm92aWRlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJ0aGVtZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIGFzIFN5c3RlbVRoZW1lUHJvdmlkZXIgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi9pZGVudGlmaWVyJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBUaGVtZVByb3ZpZGVyKF9yZWYpIHtcbiAgbGV0IHtcbiAgICAgIHRoZW1lOiB0aGVtZUlucHV0XG4gICAgfSA9IF9yZWYsXG4gICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuICBjb25zdCBzY29wZWRUaGVtZSA9IHRoZW1lSW5wdXRbVEhFTUVfSURdO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU3lzdGVtVGhlbWVQcm92aWRlciwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgdGhlbWVJZDogc2NvcGVkVGhlbWUgPyBUSEVNRV9JRCA6IHVuZGVmaW5lZCxcbiAgICB0aGVtZTogc2NvcGVkVGhlbWUgfHwgdGhlbWVJbnB1dFxuICB9KSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIFlvdXIgY29tcG9uZW50IHRyZWUuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBBIHRoZW1lIG9iamVjdC4gWW91IGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZXh0ZW5kIHRoZSBvdXRlciB0aGVtZS5cbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuZnVuY10pLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7IiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgXCIuLi9zdHlsZXMvRXhlcmNpc2UuY3NzXCI7XHJcbmltcG9ydCBSb2JvdGljc1RoZW1lIGZyb20gXCIuL1JvYm90aWNzVGhlbWVcIjtcclxuXHJcbmZ1bmN0aW9uIEV4ZXJjaXNlKCkge1xyXG4gIHJldHVybiAoXHJcbiAgICA8Um9ib3RpY3NUaGVtZT5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJFeGVyY2lzZVwiIC8+XHJcbiAgICA8L1JvYm90aWNzVGhlbWU+XHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgRXhlcmNpc2U7XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgY3JlYXRlVGhlbWUsIFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5cclxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XHJcbiAgcGFsZXR0ZToge1xyXG4gICAgdHlwZTogXCJsaWdodFwiLFxyXG4gICAgcHJpbWFyeToge1xyXG4gICAgICBtYWluOiBcIiNmZmE3MjZcIixcclxuICAgIH0sXHJcbiAgICBzZWNvbmRhcnk6IHtcclxuICAgICAgbWFpbjogXCIjMTQ3YWZmXCIsXHJcbiAgICB9LFxyXG4gICAgc3VjY2Vzczoge1xyXG4gICAgICBtYWluOiBcIiM0Q0FGNTBcIixcclxuICAgIH0sXHJcbiAgICBub3RDb25uZWN0ZWQ6IHtcclxuICAgICAgbWFpbjogXCIjNzU3NTc1XCIsXHJcbiAgICB9LFxyXG4gICAgbG9hZGluZzoge1xyXG4gICAgICBtYWluOiBcIiNFNjRBMTlcIixcclxuICAgIH0sXHJcbiAgICBzZWxlY3Rvcjoge1xyXG4gICAgICBtYWluOiBcIiMzMjlEOUNcIixcclxuICAgIH0sXHJcbiAgfSxcclxuICB0eXBvZ3JhcGh5OiB7XHJcbiAgICBmb250RmFtaWx5OiBcIlJvYm90b1wiLFxyXG4gIH0sXHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gUm9ib3RpY3NUaGVtZShwcm9wcykge1xyXG4gIHJldHVybiA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9Pntwcm9wcy5jaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+O1xyXG59XHJcblxyXG5Sb2JvdGljc1RoZW1lLnByb3BUeXBlcyA9IHtcclxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSb2JvdGljc1RoZW1lO1xyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiJdLCJuYW1lcyI6WyJ1c2VUaGVtZSIsIlN5bWJvbCIsImZvciIsInByb3BzIiwiY2hpbGRyZW4iLCJ0aGVtZSIsImxvY2FsVGhlbWUiLCJvdXRlclRoZW1lIiwib3V0cHV0IiwibWVyZ2VPdXRlckxvY2FsVGhlbWUiLCJuZXN0ZWQiLCJQcm92aWRlciIsInZhbHVlIiwiRU1QVFlfVEhFTUUiLCJ1c2VUaGVtZVNjb3BpbmciLCJ0aGVtZUlkIiwidXBwZXJUaGVtZSIsImlzUHJpdmF0ZSIsInJlc29sdmVkVGhlbWUiLCJtZXJnZWRUaGVtZSIsInJlc3VsdCIsInVzZVRoZW1lV2l0aG91dERlZmF1bHQiLCJ1cHBlclByaXZhdGVUaGVtZSIsImVuZ2luZVRoZW1lIiwicHJpdmF0ZVRoZW1lIiwiX2V4Y2x1ZGVkIiwiX3JlZiIsInRoZW1lSW5wdXQiLCJzY29wZWRUaGVtZSIsInVuZGVmaW5lZCIsIl9qc3giLCJSb2JvdGljc1RoZW1lIiwiY2xhc3NOYW1lIiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwidHlwZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5Iiwic3VjY2VzcyIsIm5vdENvbm5lY3RlZCIsImxvYWRpbmciLCJzZWxlY3RvciIsInR5cG9ncmFwaHkiLCJmb250RmFtaWx5IiwiVGhlbWVQcm92aWRlciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4147.ac682216.js b/react_frontend/static/react_frontend/js/4147.ac682216.js new file mode 100644 index 000000000..fdb181db0 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4147.ac682216.js @@ -0,0 +1,3 @@ +/*! For license information please see 4147.ac682216.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4147,1941],{4147:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var n=r(6540),a=r(5556),s=r.n(a),o=r(1941),i=r(2597),c=r(4848);function p(e){return n.useEffect((function(){console.log("TestShowScreen subscribing to ['update'] events");var e=function(e){console.log(e),e.data.update.image_right&&(console.log("image_right"),(0,o.drawImage)(e.data.update)),e.data.update.image_left&&(console.log("image_left"),(0,o.drawLeftImage)(e.data.update)),window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),(0,c.jsxs)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative"},children:[(0,c.jsx)("img",{className:"image",id:"gui_canvas_left",style:{left:"0"},src:i}),(0,c.jsx)("img",{className:"image",id:"gui_canvas_right",style:{left:"50%"},src:i})]})}p.propTypes={circuit:s().string};const g=p},1941:(e,t,r)=>{"use strict";function n(e){var t,r=document.getElementById("gui_canvas_right"),n=JSON.parse(e.image_right),a=(t=n.image_right,decodeURIComponent(escape(t))),s=n.shape_right;""!=a&&s instanceof Array&&(r.src="data:image/jpeg;base64,"+a,r.width=s[1],r.height=s[0])}function a(e){var t,r=document.getElementById("gui_canvas_left"),n=JSON.parse(e.image_left),a=(t=n.image_left,decodeURIComponent(escape(t))),s=n.shape_left;""!=a&&s instanceof Array&&(r.src="data:image/jpeg;base64,"+a,r.width=s[1],r.height=s[0])}r.r(t),r.d(t,{drawImage:()=>n,drawLeftImage:()=>a}),new Image,new Image},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function s(){}s.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,s,o){if(o!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),s=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function p(e,t,r){var n,s={},p=null,g=null;for(n in void 0!==r&&(p=""+r),void 0!==t.key&&(p=""+t.key),void 0!==t.ref&&(g=t.ref),t)o.call(t,n)&&!c.hasOwnProperty(n)&&(s[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===s[n]&&(s[n]=t[n]);return{$$typeof:a,type:e,key:p,ref:g,props:s,_owner:i.current}}t.Fragment=s,t.jsx=p,t.jsxs=p},4848:(e,t,r)=>{"use strict";e.exports=r(1020)},2597:(e,t,r)=>{"use strict";e.exports=r.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9yZXNjdWVfcGVvcGxlX2NsYXNzaWMvcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY1Jlc2N1ZVBlb3BsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9yZXNjdWVfcGVvcGxlX2NsYXNzaWMvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZXNSZXNjdWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IHsgZHJhd0ltYWdlLCBkcmF3TGVmdEltYWdlIH0gZnJvbSBcIi4vaGVscGVycy9zaG93SW1hZ2VzUmVzY3VlXCI7XHJcbmltcG9ydCBub0ltYWdlIGZyb20gXCIuLi8uLi9hc3NldHMvaW1nL25vSW1hZ2UucG5nXCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCJcclxuZnVuY3Rpb24gU3BlY2lmaWNSZXNjdWVQZW9wbGUocHJvcHMpIHtcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSk7XHJcblxyXG4gICAgICBpZiAobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZV9yaWdodCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW1hZ2VfcmlnaHRcIik7XHJcbiAgICAgICAgZHJhd0ltYWdlKG1lc3NhZ2UuZGF0YS51cGRhdGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlX2xlZnQpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcImltYWdlX2xlZnRcIik7XHJcbiAgICAgICAgZHJhd0xlZnRJbWFnZShtZXNzYWdlLmRhdGEudXBkYXRlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2VuZCB0aGUgQUNLIG9mIHRoZSBtc2dcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwiYWNrXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsIHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiwgcG9zaXRpb246XCJyZWxhdGl2ZVwifX0+XHJcbiAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1hZ2VcIiBpZD1cImd1aV9jYW52YXNfbGVmdFwiIHN0eWxlPXt7bGVmdDogXCIwXCJ9fSBzcmM9e25vSW1hZ2V9Lz5cclxuICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWFnZVwiIGlkPVwiZ3VpX2NhbnZhc19yaWdodFwiIHN0eWxlPXt7bGVmdDogXCI1MCVcIn19IHNyYz17bm9JbWFnZX0vPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNSZXNjdWVQZW9wbGUucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY1Jlc2N1ZVBlb3BsZTtcclxuIiwiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7XHJcbn1cclxuXHJcbmxldCBpbWFnZV9yaWdodCA9IG5ldyBJbWFnZSgpO1xyXG5sZXQgaW1hZ2VfbGVmdCA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZShkYXRhKSB7XHJcbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX3JpZ2h0KSxcclxuICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfcmlnaHQpLFxyXG4gICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlX3JpZ2h0O1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMZWZ0SW1hZ2UoZGF0YSkge1xyXG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZV9sZWZ0O1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY1Jlc2N1ZVBlb3BsZSIsInByb3BzIiwiUmVhY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInVwZGF0ZSIsImltYWdlX3JpZ2h0IiwiZHJhd0ltYWdlIiwiaW1hZ2VfbGVmdCIsImRyYXdMZWZ0SW1hZ2UiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInNlbmQiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImNoaWxkcmVuIiwiX2pzeCIsImNsYXNzTmFtZSIsImlkIiwibGVmdCIsInNyYyIsIm5vSW1hZ2UiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwicyIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpbWFnZV9kYXRhIiwiSlNPTiIsInBhcnNlIiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJzaGFwZV9yaWdodCIsIkFycmF5Iiwic2hhcGVfbGVmdCIsIkltYWdlIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4147.ac682216.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4147.ac682216.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4147.ac682216.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4222.0f349960.js b/react_frontend/static/react_frontend/js/4222.0f349960.js new file mode 100644 index 000000000..968019186 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4222.0f349960.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4222],{3879:(e,t,n)=>{n.d(t,{A:()=>Le});var r=n(8168),o=n(8587),i=n(6540),a=n(1523),s=n(1529),p=n(2325);function f(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function c(e){return e instanceof f(e).Element||e instanceof Element}function l(e){return e instanceof f(e).HTMLElement||e instanceof HTMLElement}function u(e){return"undefined"!=typeof ShadowRoot&&(e instanceof f(e).ShadowRoot||e instanceof ShadowRoot)}var d=Math.max,m=Math.min,h=Math.round;function v(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function g(){return!/^((?!chrome|android).)*safari/i.test(v())}function y(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,i=1;t&&l(e)&&(o=e.offsetWidth>0&&h(r.width)/e.offsetWidth||1,i=e.offsetHeight>0&&h(r.height)/e.offsetHeight||1);var a=(c(e)?f(e):window).visualViewport,s=!g()&&n,p=(r.left+(s&&a?a.offsetLeft:0))/o,u=(r.top+(s&&a?a.offsetTop:0))/i,d=r.width/o,m=r.height/i;return{width:d,height:m,top:u,right:p+d,bottom:u+m,left:p,x:p,y:u}}function b(e){var t=f(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function w(e){return e?(e.nodeName||"").toLowerCase():null}function x(e){return((c(e)?e.ownerDocument:e.document)||window.document).documentElement}function O(e){return y(x(e)).left+b(e).scrollLeft}function A(e){return f(e).getComputedStyle(e)}function P(e){var t=A(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function E(e,t,n){void 0===n&&(n=!1);var r,o,i=l(t),a=l(t)&&function(e){var t=e.getBoundingClientRect(),n=h(t.width)/e.offsetWidth||1,r=h(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),s=x(t),p=y(e,a,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(i||!i&&!n)&&(("body"!==w(t)||P(s))&&(c=(r=t)!==f(r)&&l(r)?{scrollLeft:(o=r).scrollLeft,scrollTop:o.scrollTop}:b(r)),l(t)?((u=y(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):s&&(u.x=O(s))),{x:p.left+c.scrollLeft-u.x,y:p.top+c.scrollTop-u.y,width:p.width,height:p.height}}function j(e){var t=y(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function R(e){return"html"===w(e)?e:e.assignedSlot||e.parentNode||(u(e)?e.host:null)||x(e)}function M(e){return["html","body","#document"].indexOf(w(e))>=0?e.ownerDocument.body:l(e)&&P(e)?e:M(R(e))}function W(e,t){var n;void 0===t&&(t=[]);var r=M(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),i=f(r),a=o?[i].concat(i.visualViewport||[],P(r)?r:[]):r,s=t.concat(a);return o?s:s.concat(W(R(a)))}function B(e){return["table","td","th"].indexOf(w(e))>=0}function D(e){return l(e)&&"fixed"!==A(e).position?e.offsetParent:null}function k(e){for(var t=f(e),n=D(e);n&&B(n)&&"static"===A(n).position;)n=D(n);return n&&("html"===w(n)||"body"===w(n)&&"static"===A(n).position)?t:n||function(e){var t=/firefox/i.test(v());if(/Trident/i.test(v())&&l(e)&&"fixed"===A(e).position)return null;var n=R(e);for(u(n)&&(n=n.host);l(n)&&["html","body"].indexOf(w(n))<0;){var r=A(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var S="top",T="bottom",L="right",H="left",C="auto",N=[S,T,L,H],V="start",q="end",I="viewport",U="popper",F=N.reduce((function(e,t){return e.concat([t+"-"+V,t+"-"+q])}),[]),_=[].concat(N,[C]).reduce((function(e,t){return e.concat([t,t+"-"+V,t+"-"+q])}),[]),z=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function $(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}var X={placement:"bottom",modifiers:[],strategy:"absolute"};function Y(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function ee(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?K(o):null,a=o?Q(o):null,s=n.x+n.width/2-r.width/2,p=n.y+n.height/2-r.height/2;switch(i){case S:t={x:s,y:n.y-r.height};break;case T:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:p};break;case H:t={x:n.x-r.width,y:p};break;default:t={x:n.x,y:n.y}}var f=i?Z(i):null;if(null!=f){var c="y"===f?"height":"width";switch(a){case V:t[f]=t[f]-(n[c]/2-r[c]/2);break;case q:t[f]=t[f]+(n[c]/2-r[c]/2)}}return t}var te={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ne(e){var t,n=e.popper,r=e.popperRect,o=e.placement,i=e.variation,a=e.offsets,s=e.position,p=e.gpuAcceleration,c=e.adaptive,l=e.roundOffsets,u=e.isFixed,d=a.x,m=void 0===d?0:d,v=a.y,g=void 0===v?0:v,y="function"==typeof l?l({x:m,y:g}):{x:m,y:g};m=y.x,g=y.y;var b=a.hasOwnProperty("x"),w=a.hasOwnProperty("y"),O=H,P=S,E=window;if(c){var j=k(n),R="clientHeight",M="clientWidth";j===f(n)&&"static"!==A(j=x(n)).position&&"absolute"===s&&(R="scrollHeight",M="scrollWidth"),(o===S||(o===H||o===L)&&i===q)&&(P=T,g-=(u&&j===E&&E.visualViewport?E.visualViewport.height:j[R])-r.height,g*=p?1:-1),o!==H&&(o!==S&&o!==T||i!==q)||(O=L,m-=(u&&j===E&&E.visualViewport?E.visualViewport.width:j[M])-r.width,m*=p?1:-1)}var W,B=Object.assign({position:s},c&&te),D=!0===l?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:h(n*o)/o||0,y:h(r*o)/o||0}}({x:m,y:g},f(n)):{x:m,y:g};return m=D.x,g=D.y,p?Object.assign({},B,((W={})[P]=w?"0":"",W[O]=b?"0":"",W.transform=(E.devicePixelRatio||1)<=1?"translate("+m+"px, "+g+"px)":"translate3d("+m+"px, "+g+"px, 0)",W)):Object.assign({},B,((t={})[P]=w?g+"px":"",t[O]=b?m+"px":"",t.transform="",t))}var re={left:"right",right:"left",bottom:"top",top:"bottom"};function oe(e){return e.replace(/left|right|bottom|top/g,(function(e){return re[e]}))}var ie={start:"end",end:"start"};function ae(e){return e.replace(/start|end/g,(function(e){return ie[e]}))}function se(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&u(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function pe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function fe(e,t,n){return t===I?pe(function(e,t){var n=f(e),r=x(e),o=n.visualViewport,i=r.clientWidth,a=r.clientHeight,s=0,p=0;if(o){i=o.width,a=o.height;var c=g();(c||!c&&"fixed"===t)&&(s=o.offsetLeft,p=o.offsetTop)}return{width:i,height:a,x:s+O(e),y:p}}(e,n)):c(t)?function(e,t){var n=y(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):pe(function(e){var t,n=x(e),r=b(e),o=null==(t=e.ownerDocument)?void 0:t.body,i=d(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=d(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+O(e),p=-r.scrollTop;return"rtl"===A(o||n).direction&&(s+=d(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:p}}(x(e)))}function ce(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function le(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,i=n.strategy,a=void 0===i?e.strategy:i,s=n.boundary,p=void 0===s?"clippingParents":s,f=n.rootBoundary,u=void 0===f?I:f,h=n.elementContext,v=void 0===h?U:h,g=n.altBoundary,b=void 0!==g&&g,O=n.padding,P=void 0===O?0:O,E=ce("number"!=typeof P?P:le(P,N)),j=v===U?"reference":U,M=e.rects.popper,B=e.elements[b?j:v],D=function(e,t,n,r){var o="clippingParents"===t?function(e){var t=W(R(e)),n=["absolute","fixed"].indexOf(A(e).position)>=0&&l(e)?k(e):e;return c(n)?t.filter((function(e){return c(e)&&se(e,n)&&"body"!==w(e)})):[]}(e):[].concat(t),i=[].concat(o,[n]),a=i[0],s=i.reduce((function(t,n){var o=fe(e,n,r);return t.top=d(o.top,t.top),t.right=m(o.right,t.right),t.bottom=m(o.bottom,t.bottom),t.left=d(o.left,t.left),t}),fe(e,a,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}(c(B)?B:B.contextElement||x(e.elements.popper),p,u,a),H=y(e.elements.reference),C=ee({reference:H,element:M,strategy:"absolute",placement:o}),V=pe(Object.assign({},M,C)),q=v===U?V:H,F={top:D.top-q.top+E.top,bottom:q.bottom-D.bottom+E.bottom,left:D.left-q.left+E.left,right:q.right-D.right+E.right},_=e.modifiersData.offset;if(v===U&&_){var z=_[o];Object.keys(F).forEach((function(e){var t=[L,T].indexOf(e)>=0?1:-1,n=[S,T].indexOf(e)>=0?"y":"x";F[e]+=z[n]*t}))}return F}function de(e,t,n){return d(e,m(t,n))}function me(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function he(e){return[S,L,T,H].some((function(t){return e[t]>=0}))}var ve=J({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=void 0===o||o,a=r.resize,s=void 0===a||a,p=f(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&c.forEach((function(e){e.addEventListener("scroll",n.update,G)})),s&&p.addEventListener("resize",n.update,G),function(){i&&c.forEach((function(e){e.removeEventListener("scroll",n.update,G)})),s&&p.removeEventListener("resize",n.update,G)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ee({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,i=n.adaptive,a=void 0===i||i,s=n.roundOffsets,p=void 0===s||s,f={placement:K(t.placement),variation:Q(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,ne(Object.assign({},f,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:p})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,ne(Object.assign({},f,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:p})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];l(o)&&w(o)&&(Object.assign(o.style,n),Object.keys(r).forEach((function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var r=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});l(r)&&w(r)&&(Object.assign(r.style,i),Object.keys(o).forEach((function(e){r.removeAttribute(e)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=void 0===o?[0,0]:o,a=_.reduce((function(e,n){return e[n]=function(e,t,n){var r=K(e),o=[H,S].indexOf(r)>=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[H,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],p=s.x,f=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=p,t.modifiersData.popperOffsets.y+=f),t.modifiersData[r]=a}},{name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,p=n.fallbackPlacements,f=n.padding,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,d=n.flipVariations,m=void 0===d||d,h=n.allowedAutoPlacements,v=t.options.placement,g=K(v),y=p||(g!==v&&m?function(e){if(K(e)===C)return[];var t=oe(e);return[ae(e),t,ae(t)]}(v):[oe(v)]),b=[v].concat(y).reduce((function(e,n){return e.concat(K(n)===C?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,p=n.allowedAutoPlacements,f=void 0===p?_:p,c=Q(r),l=c?s?F:F.filter((function(e){return Q(e)===c})):N,u=l.filter((function(e){return f.indexOf(e)>=0}));0===u.length&&(u=l);var d=u.reduce((function(t,n){return t[n]=ue(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[K(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}(t,{placement:n,boundary:c,rootBoundary:l,padding:f,flipVariations:m,allowedAutoPlacements:h}):n)}),[]),w=t.rects.reference,x=t.rects.popper,O=new Map,A=!0,P=b[0],E=0;E=0,B=W?"width":"height",D=ue(t,{placement:j,boundary:c,rootBoundary:l,altBoundary:u,padding:f}),k=W?M?L:H:M?T:S;w[B]>x[B]&&(k=oe(k));var q=oe(k),I=[];if(i&&I.push(D[R]<=0),s&&I.push(D[k]<=0,D[q]<=0),I.every((function(e){return e}))){P=j,A=!1;break}O.set(j,I)}if(A)for(var U=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return P=t,"break"},z=m?3:1;z>0&&"break"!==U(z);z--);t.placement!==P&&(t.modifiersData[r]._skip=!0,t.placement=P,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0!==a&&a,p=n.boundary,f=n.rootBoundary,c=n.altBoundary,l=n.padding,u=n.tether,h=void 0===u||u,v=n.tetherOffset,g=void 0===v?0:v,y=ue(t,{boundary:p,rootBoundary:f,padding:l,altBoundary:c}),b=K(t.placement),w=Q(t.placement),x=!w,O=Z(b),A="x"===O?"y":"x",P=t.modifiersData.popperOffsets,E=t.rects.reference,R=t.rects.popper,M="function"==typeof g?g(Object.assign({},t.rects,{placement:t.placement})):g,W="number"==typeof M?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),B=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,D={x:0,y:0};if(P){if(i){var C,N="y"===O?S:H,q="y"===O?T:L,I="y"===O?"height":"width",U=P[O],F=U+y[N],_=U-y[q],z=h?-R[I]/2:0,$=w===V?E[I]:R[I],X=w===V?-R[I]:-E[I],Y=t.elements.arrow,J=h&&Y?j(Y):{width:0,height:0},G=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},ee=G[N],te=G[q],ne=de(0,E[I],J[I]),re=x?E[I]/2-z-ne-ee-W.mainAxis:$-ne-ee-W.mainAxis,oe=x?-E[I]/2+z+ne+te+W.mainAxis:X+ne+te+W.mainAxis,ie=t.elements.arrow&&k(t.elements.arrow),ae=ie?"y"===O?ie.clientTop||0:ie.clientLeft||0:0,se=null!=(C=null==B?void 0:B[O])?C:0,pe=U+oe-se,fe=de(h?m(F,U+re-se-ae):F,U,h?d(_,pe):_);P[O]=fe,D[O]=fe-U}if(s){var ce,le="x"===O?S:H,me="x"===O?T:L,he=P[A],ve="y"===A?"height":"width",ge=he+y[le],ye=he-y[me],be=-1!==[S,H].indexOf(b),we=null!=(ce=null==B?void 0:B[A])?ce:0,xe=be?ge:he-E[ve]-R[ve]-we+W.altAxis,Oe=be?he+E[ve]+R[ve]-we-W.altAxis:ye,Ae=h&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(xe,he,Oe):de(h?xe:ge,he,h?Oe:ye);P[A]=Ae,D[A]=Ae-he}t.modifiersData[r]=D}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=K(n.placement),p=Z(s),f=[H,L].indexOf(s)>=0?"height":"width";if(i&&a){var c=function(e,t){return ce("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:le(e,N))}(o.padding,n),l=j(i),u="y"===p?S:H,d="y"===p?T:L,m=n.rects.reference[f]+n.rects.reference[p]-a[p]-n.rects.popper[f],h=a[p]-n.rects.reference[p],v=k(i),g=v?"y"===p?v.clientHeight||0:v.clientWidth||0:0,y=m/2-h/2,b=c[u],w=g-l[f]-c[d],x=g/2-l[f]/2+y,O=de(b,x,w),A=p;n.modifiersData[r]=((t={})[A]=O,t.centerOffset=O-x,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&se(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=ue(t,{elementContext:"reference"}),s=ue(t,{altBoundary:!0}),p=me(a,r),f=me(s,o,i),c=he(p),l=he(f);t.modifiersData[n]={referenceClippingOffsets:p,popperEscapeOffsets:f,isReferenceHidden:c,hasPopperEscaped:l},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":l})}}]}),ge=n(5659),ye=n(3493),be=n(1609);function we(e){return(0,be.A)("MuiPopper",e)}(0,n(8413).A)("MuiPopper",["root"]);var xe=n(9977),Oe=n(3636),Ae=n(4848);const Pe=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],Ee=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function je(e){return"function"==typeof e?e():e}const Re={},Me=i.forwardRef((function(e,t){var n;const{anchorEl:p,children:f,direction:c,disablePortal:l,modifiers:u,open:d,placement:m,popperOptions:h,popperRef:v,slotProps:g={},slots:y={},TransitionProps:b}=e,w=(0,o.A)(e,Pe),x=i.useRef(null),O=(0,a.A)(x,t),A=i.useRef(null),P=(0,a.A)(A,v),E=i.useRef(P);(0,s.A)((()=>{E.current=P}),[P]),i.useImperativeHandle(v,(()=>A.current),[]);const j=function(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}(m,c),[R,M]=i.useState(j),[W,B]=i.useState(je(p));i.useEffect((()=>{A.current&&A.current.forceUpdate()})),i.useEffect((()=>{p&&B(je(p))}),[p]),(0,s.A)((()=>{if(!W||!d)return;let e=[{name:"preventOverflow",options:{altBoundary:l}},{name:"flip",options:{altBoundary:l}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:e})=>{M(e.placement)}}];null!=u&&(e=e.concat(u)),h&&null!=h.modifiers&&(e=e.concat(h.modifiers));const t=ve(W,x.current,(0,r.A)({placement:j},h,{modifiers:e}));return E.current(t),()=>{t.destroy(),E.current(null)}}),[W,l,u,d,h,j]);const D={placement:R};null!==b&&(D.TransitionProps=b);const k=(0,ge.A)({root:["root"]},(0,Oe.W)(we)),S=null!=(n=y.root)?n:"div",T=(0,xe.A)({elementType:S,externalSlotProps:g.root,externalForwardedProps:w,additionalProps:{role:"tooltip",ref:O},ownerState:e,className:k.root});return(0,Ae.jsx)(S,(0,r.A)({},T,{children:"function"==typeof f?f(D):f}))})),We=i.forwardRef((function(e,t){const{anchorEl:n,children:a,container:s,direction:f="ltr",disablePortal:c=!1,keepMounted:l=!1,modifiers:u,open:d,placement:m="bottom",popperOptions:h=Re,popperRef:v,style:g,transition:y=!1,slotProps:b={},slots:w={}}=e,x=(0,o.A)(e,Ee),[O,A]=i.useState(!0);if(!l&&!d&&(!y||O))return null;let P;if(s)P=s;else if(n){const e=je(n);P=e&&void 0!==e.nodeType?(0,p.A)(e).body:(0,p.A)(null).body}const E=d||!l||y&&!O?void 0:"none",j=y?{in:d,onEnter:()=>{A(!1)},onExited:()=>{A(!0)}}:void 0;return(0,Ae.jsx)(ye.A,{disablePortal:c,container:P,children:(0,Ae.jsx)(Me,(0,r.A)({anchorEl:n,direction:f,disablePortal:c,modifiers:u,ref:t,open:y?!O:d,placement:m,popperOptions:h,popperRef:v,slotProps:b,slots:w},x,{style:(0,r.A)({position:"fixed",top:0,left:0,display:E},g),TransitionProps:j,children:a}))})}));var Be=n(3951),De=n(7577),ke=n(4409);const Se=["anchorEl","component","components","componentsProps","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","transition","slots","slotProps"],Te=(0,De.Ay)(We,{name:"MuiPopper",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Le=i.forwardRef((function(e,t){var n;const i=(0,Be.A)(),a=(0,ke.A)({props:e,name:"MuiPopper"}),{anchorEl:s,component:p,components:f,componentsProps:c,container:l,disablePortal:u,keepMounted:d,modifiers:m,open:h,placement:v,popperOptions:g,popperRef:y,transition:b,slots:w,slotProps:x}=a,O=(0,o.A)(a,Se),A=null!=(n=null==w?void 0:w.root)?n:null==f?void 0:f.Root,P=(0,r.A)({anchorEl:s,container:l,disablePortal:u,keepMounted:d,modifiers:m,open:h,placement:v,popperOptions:g,popperRef:y,transition:b},O);return(0,Ae.jsx)(Te,(0,r.A)({as:p,direction:null==i?void 0:i.direction,slots:{root:A},slotProps:null!=x?x:c},P,{ref:t}))}))},4073:(e,t,n)=>{n.d(t,{A:()=>w});var r=n(8587),o=n(8168),i=n(6540),a=n(53),s=n(9599),p=n(5659),f=n(7577),c=n(4409),l=n(8466),u=n(8413),d=n(1609);function m(e){return(0,d.A)("MuiTypography",e)}(0,u.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var h=n(4848);const v=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],g=(0,f.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t[`align${(0,l.A)(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,o.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),y={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},b={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},w=i.forwardRef((function(e,t){const n=(0,c.A)({props:e,name:"MuiTypography"}),i=(e=>b[e]||e)(n.color),f=(0,s.A)((0,o.A)({},n,{color:i})),{align:u="inherit",className:d,component:w,gutterBottom:x=!1,noWrap:O=!1,paragraph:A=!1,variant:P="body1",variantMapping:E=y}=f,j=(0,r.A)(f,v),R=(0,o.A)({},f,{align:u,color:i,className:d,component:w,gutterBottom:x,noWrap:O,paragraph:A,variant:P,variantMapping:E}),M=w||(A?"p":E[P]||y[P])||"span",W=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:o,variant:i,classes:a}=e,s={root:["root",i,"inherit"!==e.align&&`align${(0,l.A)(t)}`,n&&"gutterBottom",r&&"noWrap",o&&"paragraph"]};return(0,p.A)(s,m,a)})(R);return(0,h.jsx)(g,(0,o.A)({as:M,ref:t,ownerState:R,className:(0,a.A)(W.root,d)},j))}))},1668:(e,t,n)=>{n.d(t,{A:()=>r});const r=n(4661).A},4661:(e,t,n)=>{var r;n.d(t,{A:()=>s});var o=n(6540);let i=0;const a=(r||(r=n.t(o,2)))["useId".toString()];function s(e){if(void 0!==a){const t=a();return null!=e?e:t}return function(e){const[t,n]=o.useState(e),r=e||t;return o.useEffect((()=>{null==t&&(i+=1,n(`mui-${i}`))}),[t]),r}(e)}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFLYixFQUFRRSxLQUFNVyxJQUM3QjNCLEdBQ0wsRyxrQ0NuSEEsUSxRQUFvQixDLHNEQ0FwQixJQUFJNkYsRUFBVyxFQWtCZixNQUFNQyxHQUFrQixpQkFBTSxRQUFRbmlCLFlBT3ZCLFNBQVNvaUIsRUFBTUMsR0FDNUIsUUFBd0IzVixJQUFwQnlWLEVBQStCLENBQ2pDLE1BQU1HLEVBQVVILElBQ2hCLE9BQXFCLE1BQWRFLEVBQXFCQSxFQUFhQyxDQUMzQyxDQUVBLE9BOUJGLFNBQXFCRCxHQUNuQixNQUFPRSxFQUFXQyxHQUFnQixXQUFlSCxHQUMzQ0ksRUFBS0osR0FBY0UsRUFXekIsT0FWQSxhQUFnQixLQUNHLE1BQWJBLElBS0ZMLEdBQVksRUFDWk0sRUFBYSxPQUFPTixLQUN0QixHQUNDLENBQUNLLElBQ0dFLENBQ1QsQ0FnQlNDLENBQVlMLEVBQ3JCLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21hdGguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzVGFibGVFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvb3JkZXJNb2RpZmllcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlQnlOYW1lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2NvbnRhaW5zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvb2Zmc2V0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcnJvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvUG9wcGVyL3BvcHBlckNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL1BvcHBlci9Qb3BwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Qb3BwZXIvUG9wcGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeS90eXBvZ3JhcGh5Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvVHlwb2dyYXBoeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlkL3VzZUlkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiZXhwb3J0IHZhciBtYXggPSBNYXRoLm1heDtcbmV4cG9ydCB2YXIgbWluID0gTWF0aC5taW47XG5leHBvcnQgdmFyIHJvdW5kID0gTWF0aC5yb3VuZDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzICYmIEFycmF5LmlzQXJyYXkodWFEYXRhLmJyYW5kcykpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLmJyYW5kICsgXCIvXCIgKyBpdGVtLnZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG5cbiAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG59IiwiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cblxuICB2YXIgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaW5jbHVkZVNjYWxlICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBzY2FsZVggPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCA/IHJvdW5kKGNsaWVudFJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxIDogMTtcbiAgICBzY2FsZVkgPSBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgPyByb3VuZChjbGllbnRSZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxIDogMTtcbiAgfVxuXG4gIHZhciBfcmVmID0gaXNFbGVtZW50KGVsZW1lbnQpID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93LFxuICAgICAgdmlzdWFsVmlld3BvcnQgPSBfcmVmLnZpc3VhbFZpZXdwb3J0O1xuXG4gIHZhciBhZGRWaXN1YWxPZmZzZXRzID0gIWlzTGF5b3V0Vmlld3BvcnQoKSAmJiBpc0ZpeGVkU3RyYXRlZ3k7XG4gIHZhciB4ID0gKGNsaWVudFJlY3QubGVmdCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCA6IDApKSAvIHNjYWxlWDtcbiAgdmFyIHkgPSAoY2xpZW50UmVjdC50b3AgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcCA6IDApKSAvIHNjYWxlWTtcbiAgdmFyIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlWDtcbiAgdmFyIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGVZO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICByZXR1cm4gKChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50Lm93bmVyRG9jdW1lbnQgOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgZWxlbWVudC5kb2N1bWVudCkgfHwgd2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQ7XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSB7XG4gIC8vIElmIDxodG1sPiBoYXMgYSBDU1Mgd2lkdGggZ3JlYXRlciB0aGFuIHRoZSB2aWV3cG9ydCwgdGhlbiB0aGlzIHdpbGwgYmVcbiAgLy8gaW5jb3JyZWN0IGZvciBSVEwuXG4gIC8vIFBvcHBlciAxIGlzIGJyb2tlbiBpbiB0aGlzIGNhc2UgYW5kIG5ldmVyIGhhZCBhIGJ1ZyByZXBvcnQgc28gbGV0J3MgYXNzdW1lXG4gIC8vIGl0J3Mgbm90IGFuIGlzc3VlLiBJIGRvbid0IHRoaW5rIGFueW9uZSBldmVyIHNwZWNpZmllcyB3aWR0aCBvbiA8aHRtbD5cbiAgLy8gYW55d2F5LlxuICAvLyBCcm93c2VycyB3aGVyZSB0aGUgbGVmdCBzY3JvbGxiYXIgZG9lc24ndCBjYXVzZSBhbiBpc3N1ZSByZXBvcnQgYDBgIGZvclxuICAvLyB0aGlzIChlLmcuIEVkZ2UgMjAxOSwgSUUxMSwgU2FmYXJpKVxuICByZXR1cm4gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSkubGVmdCArIGdldFdpbmRvd1Njcm9sbChlbGVtZW50KS5zY3JvbGxMZWZ0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgLy8gRmlyZWZveCB3YW50cyB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLFxuICAgICAgb3ZlcmZsb3cgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WCxcbiAgICAgIG92ZXJmbG93WSA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WTtcblxuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVuLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiOyAvLyBSZXR1cm5zIHRoZSBsYXlvdXQgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuIExheW91dFxuLy8gbWVhbnMgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRMYXlvdXRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7IC8vIFVzZSB0aGUgY2xpZW50UmVjdCBzaXplcyBpZiBpdCdzIG5vdCBiZWVuIHRyYW5zZm9ybWVkLlxuICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEyMjNcblxuICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3Qud2lkdGggLSB3aWR0aCkgPD0gMSkge1xuICAgIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aDtcbiAgfVxuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LmhlaWdodCAtIGhlaWdodCkgPD0gMSkge1xuICAgIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBlbGVtZW50Lm9mZnNldExlZnQsXG4gICAgeTogZWxlbWVudC5vZmZzZXRUb3AsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShlbGVtZW50KSB7XG4gIGlmIChnZXROb2RlTmFtZShlbGVtZW50KSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gKC8vIHRoaXMgaXMgYSBxdWlja2VyIChidXQgbGVzcyB0eXBlIHNhZmUpIHdheSB0byBzYXZlIHF1aXRlIHNvbWUgYnl0ZXMgZnJvbSB0aGUgYnVuZGxlXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXVxuICAgIC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgIGVsZW1lbnQuYXNzaWduZWRTbG90IHx8IC8vIHN0ZXAgaW50byB0aGUgc2hhZG93IERPTSBvZiB0aGUgcGFyZW50IG9mIGEgc2xvdHRlZCBub2RlXG4gICAgZWxlbWVudC5wYXJlbnROb2RlIHx8ICggLy8gRE9NIEVsZW1lbnQgZGV0ZWN0ZWRcbiAgICBpc1NoYWRvd1Jvb3QoZWxlbWVudCkgPyBlbGVtZW50Lmhvc3QgOiBudWxsKSB8fCAvLyBTaGFkb3dSb290IGRldGVjdGVkXG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IEhUTUxFbGVtZW50IGlzIGEgTm9kZVxuICAgIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSAvLyBmYWxsYmFja1xuXG4gICk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50LCBpc1NoYWRvd1Jvb3QgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBnZXRVQVN0cmluZyBmcm9tIFwiLi4vdXRpbHMvdXNlckFnZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy84MzdcbiAgZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufSAvLyBgLm9mZnNldFBhcmVudGAgcmVwb3J0cyBgbnVsbGAgZm9yIGZpeGVkIGVsZW1lbnRzLCB3aGlsZSBhYnNvbHV0ZSBlbGVtZW50c1xuLy8gcmV0dXJuIHRoZSBjb250YWluaW5nIGJsb2NrXG5cblxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgdmFyIGlzRmlyZWZveCA9IC9maXJlZm94L2kudGVzdChnZXRVQVN0cmluZygpKTtcbiAgdmFyIGlzSUUgPSAvVHJpZGVudC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG5cbiAgaWYgKGlzSUUgJiYgaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIC8vIEluIElFIDksIDEwIGFuZCAxMSBmaXhlZCBlbGVtZW50cyBjb250YWluaW5nIGJsb2NrIGlzIGFsd2F5cyBlc3RhYmxpc2hlZCBieSB0aGUgdmlld3BvcnRcbiAgICB2YXIgZWxlbWVudENzcyA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG5cbiAgICBpZiAoZWxlbWVudENzcy5wb3NpdGlvbiA9PT0gJ2ZpeGVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcblxuICBpZiAoaXNTaGFkb3dSb290KGN1cnJlbnROb2RlKSkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUuaG9zdDtcbiAgfVxuXG4gIHdoaWxlIChpc0hUTUxFbGVtZW50KGN1cnJlbnROb2RlKSAmJiBbJ2h0bWwnLCAnYm9keSddLmluZGV4T2YoZ2V0Tm9kZU5hbWUoY3VycmVudE5vZGUpKSA8IDApIHtcbiAgICB2YXIgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Tm9kZSk7IC8vIFRoaXMgaXMgbm9uLWV4aGF1c3RpdmUgYnV0IGNvdmVycyB0aGUgbW9zdCBjb21tb24gQ1NTIHByb3BlcnRpZXMgdGhhdFxuICAgIC8vIGNyZWF0ZSBhIGNvbnRhaW5pbmcgYmxvY2suXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NvbnRhaW5pbmdfYmxvY2sjaWRlbnRpZnlpbmdfdGhlX2NvbnRhaW5pbmdfYmxvY2tcblxuICAgIGlmIChjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgY3NzLmNvbnRhaW4gPT09ICdwYWludCcgfHwgWyd0cmFuc2Zvcm0nLCAncGVyc3BlY3RpdmUnXS5pbmRleE9mKGNzcy53aWxsQ2hhbmdlKSAhPT0gLTEgfHwgaXNGaXJlZm94ICYmIGNzcy53aWxsQ2hhbmdlID09PSAnZmlsdGVyJyB8fCBpc0ZpcmVmb3ggJiYgY3NzLmZpbHRlciAmJiBjc3MuZmlsdGVyICE9PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiBjdXJyZW50Tm9kZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJlbnROb2RlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBHZXRzIHRoZSBjbG9zZXN0IGFuY2VzdG9yIHBvc2l0aW9uZWQgZWxlbWVudC4gSGFuZGxlcyBzb21lIGVkZ2UgY2FzZXMsXG4vLyBzdWNoIGFzIHRhYmxlIGFuY2VzdG9ycyBhbmQgY3Jvc3MgYnJvd3NlciBidWdzLlxuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpO1xuXG4gIHdoaWxlIChvZmZzZXRQYXJlbnQgJiYgaXNUYWJsZUVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQpO1xuICB9XG5cbiAgaWYgKG9mZnNldFBhcmVudCAmJiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2h0bWwnIHx8IGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdib2R5JyAmJiBnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB8fCB3aW5kb3c7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBvcmRlck1vZGlmaWVycyBmcm9tIFwiLi91dGlscy9vcmRlck1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IGRlYm91bmNlIGZyb20gXCIuL3V0aWxzL2RlYm91bmNlLmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbnZhciBERUZBVUxUX09QVElPTlMgPSB7XG4gIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gIG1vZGlmaWVyczogW10sXG4gIHN0cmF0ZWd5OiAnYWJzb2x1dGUnXG59O1xuXG5mdW5jdGlvbiBhcmVWYWxpZEVsZW1lbnRzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuICFhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gIShlbGVtZW50ICYmIHR5cGVvZiBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJyk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcG9wcGVyR2VuZXJhdG9yKGdlbmVyYXRvck9wdGlvbnMpIHtcbiAgaWYgKGdlbmVyYXRvck9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIGdlbmVyYXRvck9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfZ2VuZXJhdG9yT3B0aW9ucyA9IGdlbmVyYXRvck9wdGlvbnMsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0TW9kaWZpZXJzLFxuICAgICAgZGVmYXVsdE1vZGlmaWVycyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9PT0gdm9pZCAwID8gW10gOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYsXG4gICAgICBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE9wdGlvbnMsXG4gICAgICBkZWZhdWx0T3B0aW9ucyA9IF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPT09IHZvaWQgMCA/IERFRkFVTFRfT1BUSU9OUyA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZjI7XG4gIHJldHVybiBmdW5jdGlvbiBjcmVhdGVQb3BwZXIocmVmZXJlbmNlLCBwb3BwZXIsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0gZGVmYXVsdE9wdGlvbnM7XG4gICAgfVxuXG4gICAgdmFyIHN0YXRlID0ge1xuICAgICAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgICAgIG9yZGVyZWRNb2RpZmllcnM6IFtdLFxuICAgICAgb3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9PUFRJT05TLCBkZWZhdWx0T3B0aW9ucyksXG4gICAgICBtb2RpZmllcnNEYXRhOiB7fSxcbiAgICAgIGVsZW1lbnRzOiB7XG4gICAgICAgIHJlZmVyZW5jZTogcmVmZXJlbmNlLFxuICAgICAgICBwb3BwZXI6IHBvcHBlclxuICAgICAgfSxcbiAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgc3R5bGVzOiB7fVxuICAgIH07XG4gICAgdmFyIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB2YXIgaXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB2YXIgaW5zdGFuY2UgPSB7XG4gICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbiBzZXRPcHRpb25zKHNldE9wdGlvbnNBY3Rpb24pIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2V0T3B0aW9uc0FjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHNldE9wdGlvbnNBY3Rpb24oc3RhdGUub3B0aW9ucykgOiBzZXRPcHRpb25zQWN0aW9uO1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHN0YXRlLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgc3RhdGUub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIHN0YXRlLnNjcm9sbFBhcmVudHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10sXG4gICAgICAgICAgcG9wcGVyOiBsaXN0U2Nyb2xsUGFyZW50cyhwb3BwZXIpXG4gICAgICAgIH07IC8vIE9yZGVycyB0aGUgbW9kaWZpZXJzIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgYHBoYXNlYFxuICAgICAgICAvLyBwcm9wZXJ0aWVzXG5cbiAgICAgICAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlck1vZGlmaWVycyhtZXJnZUJ5TmFtZShbXS5jb25jYXQoZGVmYXVsdE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpKSk7IC8vIFN0cmlwIG91dCBkaXNhYmxlZCBtb2RpZmllcnNcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICByZXR1cm4gbS5lbmFibGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gU3RvcmUgdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyIHJlY3RzIHRvIGJlIHJlYWQgYnkgbW9kaWZpZXJzXG5cblxuICAgICAgICBzdGF0ZS5yZWN0cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGdldENvbXBvc2l0ZVJlY3QocmVmZXJlbmNlLCBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKSwgc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJyksXG4gICAgICAgICAgcG9wcGVyOiBnZXRMYXlvdXRSZWN0KHBvcHBlcilcbiAgICAgICAgfTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gcmVzZXQgdGhlIGN1cnJlbnQgdXBkYXRlIGN5Y2xlLiBUaGVcbiAgICAgICAgLy8gbW9zdCBjb21tb24gdXNlIGNhc2UgZm9yIHRoaXMgaXMgdGhlIGBmbGlwYCBtb2RpZmllciBjaGFuZ2luZyB0aGVcbiAgICAgICAgLy8gcGxhY2VtZW50LCB3aGljaCB0aGVuIG5lZWRzIHRvIHJlLXJ1biBhbGwgdGhlIG1vZGlmaWVycywgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gbG9naWMgd2FzIHByZXZpb3VzbHkgcmFuIGZvciB0aGUgcHJldmlvdXMgcGxhY2VtZW50IGFuZCBpcyB0aGVyZWZvcmVcbiAgICAgICAgLy8gc3RhbGUvaW5jb3JyZWN0XG5cbiAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7IC8vIE9uIGVhY2ggdXBkYXRlIGN5Y2xlLCB0aGUgYG1vZGlmaWVyc0RhdGFgIHByb3BlcnR5IGZvciBlYWNoIG1vZGlmaWVyXG4gICAgICAgIC8vIGlzIGZpbGxlZCB3aXRoIHRoZSBpbml0aWFsIGRhdGEgc3BlY2lmaWVkIGJ5IHRoZSBtb2RpZmllci4gVGhpcyBtZWFuc1xuICAgICAgICAvLyBpdCBkb2Vzbid0IHBlcnNpc3QgYW5kIGlzIGZyZXNoIG9uIGVhY2ggdXBkYXRlLlxuICAgICAgICAvLyBUbyBlbnN1cmUgcGVyc2lzdGVudCBkYXRhLCB1c2UgYCR7bmFtZX0jcGVyc2lzdGVudGBcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vZGlmaWVyc0RhdGFbbW9kaWZpZXIubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllci5kYXRhKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICAgICAgICBfcmVmJG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zID0gX3JlZiRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYuZWZmZWN0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZWZmZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFyIGNsZWFudXBGbiA9IGVmZmVjdCh7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIG5vb3BGbiA9IGZ1bmN0aW9uIG5vb3BGbigpIHt9O1xuXG4gICAgICAgICAgZWZmZWN0Q2xlYW51cEZucy5wdXNoKGNsZWFudXBGbiB8fCBub29wRm4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgZWZmZWN0Q2xlYW51cEZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgIH0pO1xuICAgICAgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cbmV4cG9ydCB2YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGRldGVjdE92ZXJmbG93IH07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgPj0gMCA/ICd4JyA6ICd5Jztcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCwgc3RhcnQsIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZU9mZnNldHMoX3JlZikge1xuICB2YXIgcmVmZXJlbmNlID0gX3JlZi5yZWZlcmVuY2UsXG4gICAgICBlbGVtZW50ID0gX3JlZi5lbGVtZW50LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZi5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gcGxhY2VtZW50ID8gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIHZhcmlhdGlvbiA9IHBsYWNlbWVudCA/IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIDogbnVsbDtcbiAgdmFyIGNvbW1vblggPSByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCAvIDIgLSBlbGVtZW50LndpZHRoIC8gMjtcbiAgdmFyIGNvbW1vblkgPSByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHQgLyAyIC0gZWxlbWVudC5oZWlnaHQgLyAyO1xuICB2YXIgb2Zmc2V0cztcblxuICBzd2l0Y2ggKGJhc2VQbGFjZW1lbnQpIHtcbiAgICBjYXNlIHRvcDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZWxlbWVudC5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgYm90dG9tOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIHJpZ2h0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgbGVmdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54IC0gZWxlbWVudC53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54LFxuICAgICAgICB5OiByZWZlcmVuY2UueVxuICAgICAgfTtcbiAgfVxuXG4gIHZhciBtYWluQXhpcyA9IGJhc2VQbGFjZW1lbnQgPyBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCkgOiBudWxsO1xuXG4gIGlmIChtYWluQXhpcyAhPSBudWxsKSB7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICBzd2l0Y2ggKHZhcmlhdGlvbikge1xuICAgICAgY2FzZSBzdGFydDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSAtIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgZW5kOlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdICsgKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2Zmc2V0cztcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIGVuZCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHVuc2V0U2lkZXMgPSB7XG4gIHRvcDogJ2F1dG8nLFxuICByaWdodDogJ2F1dG8nLFxuICBib3R0b206ICdhdXRvJyxcbiAgbGVmdDogJ2F1dG8nXG59OyAvLyBSb3VuZCB0aGUgb2Zmc2V0cyB0byB0aGUgbmVhcmVzdCBzdWl0YWJsZSBzdWJwaXhlbCBiYXNlZCBvbiB0aGUgRFBSLlxuLy8gWm9vbWluZyBjYW4gY2hhbmdlIHRoZSBEUFIsIGJ1dCBpdCBzZWVtcyB0byByZXBvcnQgYSB2YWx1ZSB0aGF0IHdpbGxcbi8vIGNsZWFubHkgZGl2aWRlIHRoZSB2YWx1ZXMgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VicGl4ZWxzLlxuXG5mdW5jdGlvbiByb3VuZE9mZnNldHNCeURQUihfcmVmLCB3aW4pIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0sIGFkYXB0aXZlICYmIHVuc2V0U2lkZXMpO1xuXG4gIHZhciBfcmVmNCA9IHJvdW5kT2Zmc2V0cyA9PT0gdHJ1ZSA/IHJvdW5kT2Zmc2V0c0J5RFBSKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSwgZ2V0V2luZG93KHBvcHBlcikpIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmNC54O1xuICB5ID0gX3JlZjQueTtcblxuICBpZiAoZ3B1QWNjZWxlcmF0aW9uKSB7XG4gICAgdmFyIF9PYmplY3QkYXNzaWduO1xuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduID0ge30sIF9PYmplY3QkYXNzaWduW3NpZGVZXSA9IGhhc1kgPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ25bc2lkZVhdID0gaGFzWCA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbi50cmFuc2Zvcm0gPSAod2luLmRldmljZVBpeGVsUmF0aW8gfHwgMSkgPD0gMSA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNSkge1xuICB2YXIgc3RhdGUgPSBfcmVmNS5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNS5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICB2YXJpYXRpb246IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHBvcHBlcjogc3RhdGUuZWxlbWVudHMucG9wcGVyLFxuICAgIHBvcHBlclJlY3Q6IHN0YXRlLnJlY3RzLnBvcHBlcixcbiAgICBncHVBY2NlbGVyYXRpb246IGdwdUFjY2VsZXJhdGlvbixcbiAgICBpc0ZpeGVkOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnXG4gIH07XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5wb3BwZXIsIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLFxuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBhZGFwdGl2ZTogYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyAhPSBudWxsKSB7XG4gICAgc3RhdGUuc3R5bGVzLmFycm93ID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLmFycm93LCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3csXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGFkYXB0aXZlOiBmYWxzZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcGxhY2VtZW50Jzogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnY29tcHV0ZVN0eWxlcycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnYmVmb3JlV3JpdGUnLFxuICBmbjogY29tcHV0ZVN0eWxlcyxcbiAgZGF0YToge31cbn07IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIHZhciB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIHZhciBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgdmFyIHggPSAwO1xuICB2YXIgeSA9IDA7XG5cbiAgaWYgKHZpc3VhbFZpZXdwb3J0KSB7XG4gICAgd2lkdGggPSB2aXN1YWxWaWV3cG9ydC53aWR0aDtcbiAgICBoZWlnaHQgPSB2aXN1YWxWaWV3cG9ydC5oZWlnaHQ7XG4gICAgdmFyIGxheW91dFZpZXdwb3J0ID0gaXNMYXlvdXRWaWV3cG9ydCgpO1xuXG4gICAgaWYgKGxheW91dFZpZXdwb3J0IHx8ICFsYXlvdXRWaWV3cG9ydCAmJiBzdHJhdGVneSA9PT0gJ2ZpeGVkJykge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEZyZXNoU2lkZU9iamVjdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDBcbiAgfTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgeyBtYXggYXMgbWF0aE1heCwgbWluIGFzIG1hdGhNaW4gfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluKG1pbiwgdmFsdWUsIG1heCkge1xuICByZXR1cm4gbWF0aE1heChtaW4sIG1hdGhNaW4odmFsdWUsIG1heCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbk1heENsYW1wKG1pbiwgdmFsdWUsIG1heCkge1xuICB2YXIgdiA9IHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpO1xuICByZXR1cm4gdiA+IG1heCA/IG1heCA6IHY7XG59IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbmltcG9ydCBvZmZzZXQgZnJvbSBcIi4vbW9kaWZpZXJzL29mZnNldC5qc1wiO1xuaW1wb3J0IGZsaXAgZnJvbSBcIi4vbW9kaWZpZXJzL2ZsaXAuanNcIjtcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSBcIi4vbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGFycm93IGZyb20gXCIuL21vZGlmaWVycy9hcnJvdy5qc1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vbW9kaWZpZXJzL2hpZGUuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlcywgb2Zmc2V0LCBmbGlwLCBwcmV2ZW50T3ZlcmZsb3csIGFycm93LCBoaWRlXTtcbnZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKHtcbiAgZGVmYXVsdE1vZGlmaWVyczogZGVmYXVsdE1vZGlmaWVyc1xufSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyLCBwb3BwZXJHZW5lcmF0b3IsIGRlZmF1bHRNb2RpZmllcnMsIGRldGVjdE92ZXJmbG93IH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIFRoaXMgbW9kaWZpZXIgdGFrZXMgdGhlIHN0eWxlcyBwcmVwYXJlZCBieSB0aGUgYGNvbXB1dGVTdHlsZXNgIG1vZGlmaWVyXG4vLyBhbmQgYXBwbGllcyB0aGVtIHRvIHRoZSBIVE1MRWxlbWVudHMgc3VjaCBhcyBwb3BwZXIgYW5kIGFycm93XG5cbmZ1bmN0aW9uIGFwcGx5U3R5bGVzKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZTtcbiAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB2YXIgc3R5bGUgPSBzdGF0ZS5zdHlsZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGF0dHJpYnV0ZXMgPSBzdGF0ZS5hdHRyaWJ1dGVzW25hbWVdIHx8IHt9O1xuICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gRmxvdyBkb2Vzbid0IHN1cHBvcnQgdG8gZXh0ZW5kIHRoaXMgcHJvcGVydHksIGJ1dCBpdCdzIHRoZSBtb3N0XG4gICAgLy8gZWZmZWN0aXZlIHdheSB0byBhcHBseSBzdHlsZXMgdG8gYW4gSFRNTEVsZW1lbnRcbiAgICAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV1cblxuXG4gICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlc1tuYW1lXTtcblxuICAgICAgaWYgKHZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlID09PSB0cnVlID8gJycgOiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGU7XG4gIHZhciBpbml0aWFsU3R5bGVzID0ge1xuICAgIHBvcHBlcjoge1xuICAgICAgcG9zaXRpb246IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICB0b3A6ICcwJyxcbiAgICAgIG1hcmdpbjogJzAnXG4gICAgfSxcbiAgICBhcnJvdzoge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbiAgICB9LFxuICAgIHJlZmVyZW5jZToge31cbiAgfTtcbiAgT2JqZWN0LmFzc2lnbihzdGF0ZS5lbGVtZW50cy5wb3BwZXIuc3R5bGUsIGluaXRpYWxTdHlsZXMucG9wcGVyKTtcbiAgc3RhdGUuc3R5bGVzID0gaW5pdGlhbFN0eWxlcztcblxuICBpZiAoc3RhdGUuZWxlbWVudHMuYXJyb3cpIHtcbiAgICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLmFycm93LnN0eWxlLCBpbml0aWFsU3R5bGVzLmFycm93KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgT2JqZWN0LmtleXMoc3RhdGUuZWxlbWVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIHZhciBlbGVtZW50ID0gc3RhdGUuZWxlbWVudHNbbmFtZV07XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgICB2YXIgc3R5bGVQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc3RhdGUuc3R5bGVzLmhhc093blByb3BlcnR5KG5hbWUpID8gc3RhdGUuc3R5bGVzW25hbWVdIDogaW5pdGlhbFN0eWxlc1tuYW1lXSk7IC8vIFNldCBhbGwgdmFsdWVzIHRvIGFuIGVtcHR5IHN0cmluZyB0byB1bnNldCB0aGVtXG5cbiAgICAgIHZhciBzdHlsZSA9IHN0eWxlUHJvcGVydGllcy5yZWR1Y2UoZnVuY3Rpb24gKHN0eWxlLCBwcm9wZXJ0eSkge1xuICAgICAgICBzdHlsZVtwcm9wZXJ0eV0gPSAnJztcbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgICAgfSwge30pOyAvLyBhcnJvdyBpcyBvcHRpb25hbCArIHZpcnR1YWwgZWxlbWVudHNcblxuICAgICAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8ICFnZXROb2RlTmFtZShlbGVtZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZWxlbWVudC5zdHlsZSwgc3R5bGUpO1xuICAgICAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaChmdW5jdGlvbiAoYXR0cmlidXRlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICd3cml0ZScsXG4gIGZuOiBhcHBseVN0eWxlcyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ2NvbXB1dGVTdHlsZXMnXVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBnZXRPcHBvc2l0ZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgY29tcHV0ZUF1dG9QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyBib3R0b20sIHRvcCwgc3RhcnQsIHJpZ2h0LCBsZWZ0LCBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5mdW5jdGlvbiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgaWYgKGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGZsaXAoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgPSBvcHRpb25zLmZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9IG9wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGZsaXBWYXJpYXRpbyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IG9wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzO1xuICB2YXIgcHJlZmVycmVkUGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gYmFzZVBsYWNlbWVudCA9PT0gcHJlZmVycmVkUGxhY2VtZW50O1xuICB2YXIgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBWYXJpYXRpb25zID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocHJlZmVycmVkUGxhY2VtZW50KSk7XG4gIHZhciBwbGFjZW1lbnRzID0gW3ByZWZlcnJlZFBsYWNlbWVudF0uY29uY2F0KGZhbGxiYWNrUGxhY2VtZW50cykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0byA/IGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zOiBmbGlwVmFyaWF0aW9ucyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50czogYWxsb3dlZEF1dG9QbGFjZW1lbnRzXG4gICAgfSkgOiBwbGFjZW1lbnQpO1xuICB9LCBbXSk7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGNoZWNrc01hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIG1ha2VGYWxsYmFja0NoZWNrcyA9IHRydWU7XG4gIHZhciBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzWzBdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGxhY2VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2ldO1xuXG4gICAgdmFyIF9iYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIGlzU3RhcnRWYXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gc3RhcnQ7XG4gICAgdmFyIGlzVmVydGljYWwgPSBbdG9wLCBib3R0b21dLmluZGV4T2YoX2Jhc2VQbGFjZW1lbnQpID49IDA7XG4gICAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSk7XG4gICAgdmFyIG1haW5WYXJpYXRpb25TaWRlID0gaXNWZXJ0aWNhbCA/IGlzU3RhcnRWYXJpYXRpb24gPyByaWdodCA6IGxlZnQgOiBpc1N0YXJ0VmFyaWF0aW9uID8gYm90dG9tIDogdG9wO1xuXG4gICAgaWYgKHJlZmVyZW5jZVJlY3RbbGVuXSA+IHBvcHBlclJlY3RbbGVuXSkge1xuICAgICAgbWFpblZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgfVxuXG4gICAgdmFyIGFsdFZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgdmFyIGNoZWNrcyA9IFtdO1xuXG4gICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W19iYXNlUGxhY2VtZW50XSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1ttYWluVmFyaWF0aW9uU2lkZV0gPD0gMCwgb3ZlcmZsb3dbYWx0VmFyaWF0aW9uU2lkZV0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrcy5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgIHJldHVybiBjaGVjaztcbiAgICB9KSkge1xuICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgbWFrZUZhbGxiYWNrQ2hlY2tzID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjaGVja3NNYXAuc2V0KHBsYWNlbWVudCwgY2hlY2tzKTtcbiAgfVxuXG4gIGlmIChtYWtlRmFsbGJhY2tDaGVja3MpIHtcbiAgICAvLyBgMmAgbWF5IGJlIGRlc2lyZWQgaW4gc29tZSBjYXNlcyDigJMgcmVzZWFyY2ggbGF0ZXJcbiAgICB2YXIgbnVtYmVyT2ZDaGVja3MgPSBmbGlwVmFyaWF0aW9ucyA/IDMgOiAxO1xuXG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgIHZhciBmaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50cy5maW5kKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICAgICAgdmFyIGNoZWNrcyA9IGNoZWNrc01hcC5nZXQocGxhY2VtZW50KTtcblxuICAgICAgICBpZiAoY2hlY2tzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoZWNrcy5zbGljZSgwLCBfaSkuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2s7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZml0dGluZ1BsYWNlbWVudCkge1xuICAgICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBmaXR0aW5nUGxhY2VtZW50O1xuICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IG51bWJlck9mQ2hlY2tzOyBfaSA+IDA7IF9pLS0pIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoX2kpO1xuXG4gICAgICBpZiAoX3JldCA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUucGxhY2VtZW50ICE9PSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwID0gdHJ1ZTtcbiAgICBzdGF0ZS5wbGFjZW1lbnQgPSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgc3RhdGUucmVzZXQgPSB0cnVlO1xuICB9XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdmbGlwJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGZsaXAsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J10sXG4gIGRhdGE6IHtcbiAgICBfc2tpcDogZmFsc2VcbiAgfVxufTsiLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHsgd2l0aGluLCB3aXRoaW5NYXhDbGFtcCB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0RnJlc2hTaWRlT2JqZWN0IGZyb20gXCIuLi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmltcG9ydCB7IG1pbiBhcyBtYXRoTWluLCBtYXggYXMgbWF0aE1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIHByZXZlbnRPdmVyZmxvdyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkYWx0QXhpcyxcbiAgICAgIGJvdW5kYXJ5ID0gb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IG9wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBvcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IG9wdGlvbnMucGFkZGluZyxcbiAgICAgIF9vcHRpb25zJHRldGhlciA9IG9wdGlvbnMudGV0aGVyLFxuICAgICAgdGV0aGVyID0gX29wdGlvbnMkdGV0aGVyID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkdGV0aGVyLFxuICAgICAgX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID0gb3B0aW9ucy50ZXRoZXJPZmZzZXQsXG4gICAgICB0ZXRoZXJPZmZzZXQgPSBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQ7XG4gIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5XG4gIH0pO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gIXZhcmlhdGlvbjtcbiAgdmFyIG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpO1xuICB2YXIgYWx0QXhpcyA9IGdldEFsdEF4aXMobWFpbkF4aXMpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cztcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgdGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gdGV0aGVyT2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogdGV0aGVyT2Zmc2V0O1xuICB2YXIgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldFZhbHVlID09PSAnbnVtYmVyJyA/IHtcbiAgICBtYWluQXhpczogdGV0aGVyT2Zmc2V0VmFsdWUsXG4gICAgYWx0QXhpczogdGV0aGVyT2Zmc2V0VmFsdWVcbiAgfSA6IE9iamVjdC5hc3NpZ24oe1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGFsdEF4aXM6IDBcbiAgfSwgdGV0aGVyT2Zmc2V0VmFsdWUpO1xuICB2YXIgb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XSA6IG51bGw7XG4gIHZhciBkYXRhID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmICghcG9wcGVyT2Zmc2V0cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDtcblxuICAgIHZhciBtYWluU2lkZSA9IG1haW5BeGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICAgIHZhciBhbHRTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuICAgIHZhciBvZmZzZXQgPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXTtcbiAgICB2YXIgbWluID0gb2Zmc2V0ICsgb3ZlcmZsb3dbbWFpblNpZGVdO1xuICAgIHZhciBtYXggPSBvZmZzZXQgLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1pbkxlbiAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBtYXhPZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyAtcmVmZXJlbmNlUmVjdFtsZW5dIC8gMiArIGFkZGl0aXZlICsgYXJyb3dMZW4gKyBhcnJvd1BhZGRpbmdNYXggKyBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXMgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcztcbiAgICB2YXIgYXJyb3dPZmZzZXRQYXJlbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdyAmJiBnZXRPZmZzZXRQYXJlbnQoc3RhdGUuZWxlbWVudHMuYXJyb3cpO1xuICAgIHZhciBjbGllbnRPZmZzZXQgPSBhcnJvd09mZnNldFBhcmVudCA/IG1haW5BeGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRUb3AgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudExlZnQgfHwgMCA6IDA7XG4gICAgdmFyIG9mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkID0gb2Zmc2V0TW9kaWZpZXJTdGF0ZSA9PSBudWxsID8gdm9pZCAwIDogb2Zmc2V0TW9kaWZpZXJTdGF0ZVttYWluQXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBvZmZzZXQgKyBtaW5PZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlIC0gY2xpZW50T2Zmc2V0O1xuICAgIHZhciB0ZXRoZXJNYXggPSBvZmZzZXQgKyBtYXhPZmZzZXQgLSBvZmZzZXRNb2RpZmllclZhbHVlO1xuICAgIHZhciBwcmV2ZW50ZWRPZmZzZXQgPSB3aXRoaW4odGV0aGVyID8gbWF0aE1pbihtaW4sIHRldGhlck1pbikgOiBtaW4sIG9mZnNldCwgdGV0aGVyID8gbWF0aE1heChtYXgsIHRldGhlck1heCkgOiBtYXgpO1xuICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0IC0gb2Zmc2V0O1xuICB9XG5cbiAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgIHZhciBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyO1xuXG4gICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgdmFyIF9hbHRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGJvdHRvbSA6IHJpZ2h0O1xuXG4gICAgdmFyIF9vZmZzZXQgPSBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdO1xuXG4gICAgdmFyIF9sZW4gPSBhbHRBeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICB2YXIgX21pbiA9IF9vZmZzZXQgKyBvdmVyZmxvd1tfbWFpblNpZGVdO1xuXG4gICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgdmFyIGlzT3JpZ2luU2lkZSA9IFt0b3AsIGxlZnRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgIT09IC0xO1xuXG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclZhbHVlID0gKF9vZmZzZXRNb2RpZmllclN0YXRlJDIgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW2FsdEF4aXNdKSAhPSBudWxsID8gX29mZnNldE1vZGlmaWVyU3RhdGUkMiA6IDA7XG5cbiAgICB2YXIgX3RldGhlck1pbiA9IGlzT3JpZ2luU2lkZSA/IF9taW4gOiBfb2Zmc2V0IC0gcmVmZXJlbmNlUmVjdFtfbGVuXSAtIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzO1xuXG4gICAgdmFyIF90ZXRoZXJNYXggPSBpc09yaWdpblNpZGUgPyBfb2Zmc2V0ICsgcmVmZXJlbmNlUmVjdFtfbGVuXSArIHBvcHBlclJlY3RbX2xlbl0gLSBfb2Zmc2V0TW9kaWZpZXJWYWx1ZSAtIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5hbHRBeGlzIDogX21heDtcblxuICAgIHZhciBfcHJldmVudGVkT2Zmc2V0ID0gdGV0aGVyICYmIGlzT3JpZ2luU2lkZSA/IHdpdGhpbk1heENsYW1wKF90ZXRoZXJNaW4sIF9vZmZzZXQsIF90ZXRoZXJNYXgpIDogd2l0aGluKHRldGhlciA/IF90ZXRoZXJNaW4gOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBfdGV0aGVyTWF4IDogX21heCk7XG5cbiAgICBwb3BwZXJPZmZzZXRzW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldDtcbiAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBwcmV2ZW50T3ZlcmZsb3csXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QWx0QXhpcyhheGlzKSB7XG4gIHJldHVybiBheGlzID09PSAneCcgPyAneScgOiAneCc7XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuLi9kb20tdXRpbHMvY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgd2l0aGluIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi4vdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuLi91dGlscy9leHBhbmRUb0hhc2hNYXAuanNcIjtcbmltcG9ydCB7IGxlZnQsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdG9wLCBib3R0b20gfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdG9QYWRkaW5nT2JqZWN0ID0gZnVuY3Rpb24gdG9QYWRkaW5nT2JqZWN0KHBhZGRpbmcsIHN0YXRlKSB7XG4gIHBhZGRpbmcgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBhZGRpbmcoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiBwYWRkaW5nO1xuICByZXR1cm4gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbn07XG5cbmZ1bmN0aW9uIGFycm93KF9yZWYpIHtcbiAgdmFyIF9zdGF0ZSRtb2RpZmllcnNEYXRhJDtcblxuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGlzVmVydGljYWwgPSBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgaWYgKCFhcnJvd0VsZW1lbnQgfHwgIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcGFkZGluZ09iamVjdCA9IHRvUGFkZGluZ09iamVjdChvcHRpb25zLnBhZGRpbmcsIHN0YXRlKTtcbiAgdmFyIGFycm93UmVjdCA9IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KTtcbiAgdmFyIG1pblByb3AgPSBheGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICB2YXIgbWF4UHJvcCA9IGF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICB2YXIgZW5kRGlmZiA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtsZW5dICsgc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnBvcHBlcltsZW5dO1xuICB2YXIgc3RhcnREaWZmID0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KGFycm93RWxlbWVudCk7XG4gIHZhciBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBheGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFdpZHRoIHx8IDAgOiAwO1xuICB2YXIgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7IC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgcG9wcGVyIGlmIHRoZSBjZW50ZXIgcG9pbnQgaXNcbiAgLy8gb3V0c2lkZSBvZiB0aGUgcG9wcGVyIGJvdW5kc1xuXG4gIHZhciBtaW4gPSBwYWRkaW5nT2JqZWN0W21pblByb3BdO1xuICB2YXIgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93UmVjdFtsZW5dIC0gcGFkZGluZ09iamVjdFttYXhQcm9wXTtcbiAgdmFyIGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dSZWN0W2xlbl0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gIHZhciBvZmZzZXQgPSB3aXRoaW4obWluLCBjZW50ZXIsIG1heCk7IC8vIFByZXZlbnRzIGJyZWFraW5nIHN5bnRheCBoaWdobGlnaHRpbmcuLi5cblxuICB2YXIgYXhpc1Byb3AgPSBheGlzO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gKF9zdGF0ZSRtb2RpZmllcnNEYXRhJCA9IHt9LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSRbYXhpc1Byb3BdID0gb2Zmc2V0LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQuY2VudGVyT2Zmc2V0ID0gb2Zmc2V0IC0gY2VudGVyLCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQpO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQsXG4gICAgICBhcnJvd0VsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyAnW2RhdGEtcG9wcGVyLWFycm93XScgOiBfb3B0aW9ucyRlbGVtZW50O1xuXG4gIGlmIChhcnJvd0VsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfSAvLyBDU1Mgc2VsZWN0b3JcblxuXG4gIGlmICh0eXBlb2YgYXJyb3dFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICBpZiAoIWFycm93RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29udGFpbnMoc3RhdGUuZWxlbWVudHMucG9wcGVyLCBhcnJvd0VsZW1lbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGUuZWxlbWVudHMuYXJyb3cgPSBhcnJvd0VsZW1lbnQ7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdhcnJvdycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBhcnJvdyxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydwcmV2ZW50T3ZlcmZsb3cnXVxufTsiLCJpbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9wcGVyVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlQb3BwZXInLCBzbG90KTtcbn1cbmNvbnN0IHBvcHBlckNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlQb3BwZXInLCBbJ3Jvb3QnXSk7XG5leHBvcnQgZGVmYXVsdCBwb3BwZXJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFuY2hvckVsXCIsIFwiY2hpbGRyZW5cIiwgXCJkaXJlY3Rpb25cIiwgXCJkaXNhYmxlUG9ydGFsXCIsIFwibW9kaWZpZXJzXCIsIFwib3BlblwiLCBcInBsYWNlbWVudFwiLCBcInBvcHBlck9wdGlvbnNcIiwgXCJwb3BwZXJSZWZcIiwgXCJzbG90UHJvcHNcIiwgXCJzbG90c1wiLCBcIlRyYW5zaXRpb25Qcm9wc1wiLCBcIm93bmVyU3RhdGVcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJhbmNob3JFbFwiLCBcImNoaWxkcmVuXCIsIFwiY29udGFpbmVyXCIsIFwiZGlyZWN0aW9uXCIsIFwiZGlzYWJsZVBvcnRhbFwiLCBcImtlZXBNb3VudGVkXCIsIFwibW9kaWZpZXJzXCIsIFwib3BlblwiLCBcInBsYWNlbWVudFwiLCBcInBvcHBlck9wdGlvbnNcIiwgXCJwb3BwZXJSZWZcIiwgXCJzdHlsZVwiLCBcInRyYW5zaXRpb25cIiwgXCJzbG90UHJvcHNcIiwgXCJzbG90c1wiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzLCBIVE1MRWxlbWVudFR5cGUsIHJlZlR5cGUsIHVuc3RhYmxlX293bmVyRG9jdW1lbnQgYXMgb3duZXJEb2N1bWVudCwgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgYXMgdXNlRW5oYW5jZWRFZmZlY3QsIHVuc3RhYmxlX3VzZUZvcmtSZWYgYXMgdXNlRm9ya1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlUG9wcGVyIH0gZnJvbSAnQHBvcHBlcmpzL2NvcmUnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjb21wb3NlQ2xhc3NlcyBmcm9tICcuLi9jb21wb3NlQ2xhc3Nlcyc7XG5pbXBvcnQgUG9ydGFsIGZyb20gJy4uL1BvcnRhbCc7XG5pbXBvcnQgeyBnZXRQb3BwZXJVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3BvcHBlckNsYXNzZXMnO1xuaW1wb3J0IHsgdXNlU2xvdFByb3BzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlQ2xhc3NOYW1lc092ZXJyaWRlIH0gZnJvbSAnLi4vdXRpbHMvQ2xhc3NOYW1lQ29uZmlndXJhdG9yJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBmbGlwUGxhY2VtZW50KHBsYWNlbWVudCwgZGlyZWN0aW9uKSB7XG4gIGlmIChkaXJlY3Rpb24gPT09ICdsdHInKSB7XG4gICAgcmV0dXJuIHBsYWNlbWVudDtcbiAgfVxuICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgIGNhc2UgJ2JvdHRvbS1lbmQnOlxuICAgICAgcmV0dXJuICdib3R0b20tc3RhcnQnO1xuICAgIGNhc2UgJ2JvdHRvbS1zdGFydCc6XG4gICAgICByZXR1cm4gJ2JvdHRvbS1lbmQnO1xuICAgIGNhc2UgJ3RvcC1lbmQnOlxuICAgICAgcmV0dXJuICd0b3Atc3RhcnQnO1xuICAgIGNhc2UgJ3RvcC1zdGFydCc6XG4gICAgICByZXR1cm4gJ3RvcC1lbmQnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcGxhY2VtZW50O1xuICB9XG59XG5mdW5jdGlvbiByZXNvbHZlQW5jaG9yRWwoYW5jaG9yRWwpIHtcbiAgcmV0dXJuIHR5cGVvZiBhbmNob3JFbCA9PT0gJ2Z1bmN0aW9uJyA/IGFuY2hvckVsKCkgOiBhbmNob3JFbDtcbn1cbmZ1bmN0aW9uIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC5ub2RlVHlwZSAhPT0gdW5kZWZpbmVkO1xufVxuZnVuY3Rpb24gaXNWaXJ0dWFsRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbn1cbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gKCkgPT4ge1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIHVzZUNsYXNzTmFtZXNPdmVycmlkZShnZXRQb3BwZXJVdGlsaXR5Q2xhc3MpKTtcbn07XG5jb25zdCBkZWZhdWx0UG9wcGVyT3B0aW9ucyA9IHt9O1xuY29uc3QgUG9wcGVyVG9vbHRpcCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFBvcHBlclRvb2x0aXAocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICB2YXIgX3Nsb3RzJHJvb3Q7XG4gIGNvbnN0IHtcbiAgICAgIGFuY2hvckVsLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkaXJlY3Rpb24sXG4gICAgICBkaXNhYmxlUG9ydGFsLFxuICAgICAgbW9kaWZpZXJzLFxuICAgICAgb3BlbixcbiAgICAgIHBsYWNlbWVudDogaW5pdGlhbFBsYWNlbWVudCxcbiAgICAgIHBvcHBlck9wdGlvbnMsXG4gICAgICBwb3BwZXJSZWY6IHBvcHBlclJlZlByb3AsXG4gICAgICBzbG90UHJvcHMgPSB7fSxcbiAgICAgIHNsb3RzID0ge30sXG4gICAgICBUcmFuc2l0aW9uUHJvcHNcbiAgICAgIC8vIEB0cy1pZ25vcmUgaW50ZXJuYWwgbG9naWNcbiAgICAgIC8vIHByZXZlbnQgZnJvbSBzcHJlYWRpbmcgdG8gRE9NLCBpdCBjYW4gY29tZSBmcm9tIHRoZSBwYXJlbnQgY29tcG9uZW50IGUuZy4gU2VsZWN0LlxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCB0b29sdGlwUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBvd25SZWYgPSB1c2VGb3JrUmVmKHRvb2x0aXBSZWYsIGZvcndhcmRlZFJlZik7XG4gIGNvbnN0IHBvcHBlclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUG9wcGVyUmVmID0gdXNlRm9ya1JlZihwb3BwZXJSZWYsIHBvcHBlclJlZlByb3ApO1xuICBjb25zdCBoYW5kbGVQb3BwZXJSZWZSZWYgPSBSZWFjdC51c2VSZWYoaGFuZGxlUG9wcGVyUmVmKTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIGhhbmRsZVBvcHBlclJlZlJlZi5jdXJyZW50ID0gaGFuZGxlUG9wcGVyUmVmO1xuICB9LCBbaGFuZGxlUG9wcGVyUmVmXSk7XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUocG9wcGVyUmVmUHJvcCwgKCkgPT4gcG9wcGVyUmVmLmN1cnJlbnQsIFtdKTtcbiAgY29uc3QgcnRsUGxhY2VtZW50ID0gZmxpcFBsYWNlbWVudChpbml0aWFsUGxhY2VtZW50LCBkaXJlY3Rpb24pO1xuICAvKipcbiAgICogcGxhY2VtZW50IGluaXRpYWxpemVkIGZyb20gcHJvcCBidXQgY2FuIGNoYW5nZSBkdXJpbmcgbGlmZXRpbWUgaWYgbW9kaWZpZXJzLmZsaXAuXG4gICAqIG1vZGlmaWVycy5mbGlwIGlzIGVzc2VudGlhbGx5IGEgZmxpcCBmb3IgY29udHJvbGxlZC91bmNvbnRyb2xsZWQgYmVoYXZpb3JcbiAgICovXG4gIGNvbnN0IFtwbGFjZW1lbnQsIHNldFBsYWNlbWVudF0gPSBSZWFjdC51c2VTdGF0ZShydGxQbGFjZW1lbnQpO1xuICBjb25zdCBbcmVzb2x2ZWRBbmNob3JFbGVtZW50LCBzZXRSZXNvbHZlZEFuY2hvckVsZW1lbnRdID0gUmVhY3QudXNlU3RhdGUocmVzb2x2ZUFuY2hvckVsKGFuY2hvckVsKSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHBvcHBlclJlZi5jdXJyZW50KSB7XG4gICAgICBwb3BwZXJSZWYuY3VycmVudC5mb3JjZVVwZGF0ZSgpO1xuICAgIH1cbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFuY2hvckVsKSB7XG4gICAgICBzZXRSZXNvbHZlZEFuY2hvckVsZW1lbnQocmVzb2x2ZUFuY2hvckVsKGFuY2hvckVsKSk7XG4gICAgfVxuICB9LCBbYW5jaG9yRWxdKTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVzb2x2ZWRBbmNob3JFbGVtZW50IHx8ICFvcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBoYW5kbGVQb3BwZXJVcGRhdGUgPSBkYXRhID0+IHtcbiAgICAgIHNldFBsYWNlbWVudChkYXRhLnBsYWNlbWVudCk7XG4gICAgfTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHJlc29sdmVkQW5jaG9yRWxlbWVudCAmJiBpc0hUTUxFbGVtZW50KHJlc29sdmVkQW5jaG9yRWxlbWVudCkgJiYgcmVzb2x2ZWRBbmNob3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgIGNvbnN0IGJveCA9IHJlc29sdmVkQW5jaG9yRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiYgYm94LnRvcCA9PT0gMCAmJiBib3gubGVmdCA9PT0gMCAmJiBib3gucmlnaHQgPT09IDAgJiYgYm94LmJvdHRvbSA9PT0gMCkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihbJ01VSTogVGhlIGBhbmNob3JFbGAgcHJvcCBwcm92aWRlZCB0byB0aGUgY29tcG9uZW50IGlzIGludmFsaWQuJywgJ1RoZSBhbmNob3IgZWxlbWVudCBzaG91bGQgYmUgcGFydCBvZiB0aGUgZG9jdW1lbnQgbGF5b3V0LicsIFwiTWFrZSBzdXJlIHRoZSBlbGVtZW50IGlzIHByZXNlbnQgaW4gdGhlIGRvY3VtZW50IG9yIHRoYXQgaXQncyBub3QgZGlzcGxheSBub25lLlwiXS5qb2luKCdcXG4nKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHBvcHBlck1vZGlmaWVycyA9IFt7XG4gICAgICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgYWx0Qm91bmRhcnk6IGRpc2FibGVQb3J0YWxcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBuYW1lOiAnZmxpcCcsXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGFsdEJvdW5kYXJ5OiBkaXNhYmxlUG9ydGFsXG4gICAgICB9XG4gICAgfSwge1xuICAgICAgbmFtZTogJ29uVXBkYXRlJyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwaGFzZTogJ2FmdGVyV3JpdGUnLFxuICAgICAgZm46ICh7XG4gICAgICAgIHN0YXRlXG4gICAgICB9KSA9PiB7XG4gICAgICAgIGhhbmRsZVBvcHBlclVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfV07XG4gICAgaWYgKG1vZGlmaWVycyAhPSBudWxsKSB7XG4gICAgICBwb3BwZXJNb2RpZmllcnMgPSBwb3BwZXJNb2RpZmllcnMuY29uY2F0KG1vZGlmaWVycyk7XG4gICAgfVxuICAgIGlmIChwb3BwZXJPcHRpb25zICYmIHBvcHBlck9wdGlvbnMubW9kaWZpZXJzICE9IG51bGwpIHtcbiAgICAgIHBvcHBlck1vZGlmaWVycyA9IHBvcHBlck1vZGlmaWVycy5jb25jYXQocG9wcGVyT3B0aW9ucy5tb2RpZmllcnMpO1xuICAgIH1cbiAgICBjb25zdCBwb3BwZXIgPSBjcmVhdGVQb3BwZXIocmVzb2x2ZWRBbmNob3JFbGVtZW50LCB0b29sdGlwUmVmLmN1cnJlbnQsIF9leHRlbmRzKHtcbiAgICAgIHBsYWNlbWVudDogcnRsUGxhY2VtZW50XG4gICAgfSwgcG9wcGVyT3B0aW9ucywge1xuICAgICAgbW9kaWZpZXJzOiBwb3BwZXJNb2RpZmllcnNcbiAgICB9KSk7XG4gICAgaGFuZGxlUG9wcGVyUmVmUmVmLmN1cnJlbnQocG9wcGVyKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcG9wcGVyLmRlc3Ryb3koKTtcbiAgICAgIGhhbmRsZVBvcHBlclJlZlJlZi5jdXJyZW50KG51bGwpO1xuICAgIH07XG4gIH0sIFtyZXNvbHZlZEFuY2hvckVsZW1lbnQsIGRpc2FibGVQb3J0YWwsIG1vZGlmaWVycywgb3BlbiwgcG9wcGVyT3B0aW9ucywgcnRsUGxhY2VtZW50XSk7XG4gIGNvbnN0IGNoaWxkUHJvcHMgPSB7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfTtcbiAgaWYgKFRyYW5zaXRpb25Qcm9wcyAhPT0gbnVsbCkge1xuICAgIGNoaWxkUHJvcHMuVHJhbnNpdGlvblByb3BzID0gVHJhbnNpdGlvblByb3BzO1xuICB9XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3NlcygpO1xuICBjb25zdCBSb290ID0gKF9zbG90cyRyb290ID0gc2xvdHMucm9vdCkgIT0gbnVsbCA/IF9zbG90cyRyb290IDogJ2Rpdic7XG4gIGNvbnN0IHJvb3RQcm9wcyA9IHVzZVNsb3RQcm9wcyh7XG4gICAgZWxlbWVudFR5cGU6IFJvb3QsXG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IHNsb3RQcm9wcy5yb290LFxuICAgIGV4dGVybmFsRm9yd2FyZGVkUHJvcHM6IG90aGVyLFxuICAgIGFkZGl0aW9uYWxQcm9wczoge1xuICAgICAgcm9sZTogJ3Rvb2x0aXAnLFxuICAgICAgcmVmOiBvd25SZWZcbiAgICB9LFxuICAgIG93bmVyU3RhdGU6IHByb3BzLFxuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5yb290XG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUm9vdCwgX2V4dGVuZHMoe30sIHJvb3RQcm9wcywge1xuICAgIGNoaWxkcmVuOiB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbihjaGlsZFByb3BzKSA6IGNoaWxkcmVuXG4gIH0pKTtcbn0pO1xuXG4vKipcbiAqIFBvcHBlcnMgcmVseSBvbiB0aGUgM3JkIHBhcnR5IGxpYnJhcnkgW1BvcHBlci5qc10oaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvKSBmb3IgcG9zaXRpb25pbmcuXG4gKlxuICogRGVtb3M6XG4gKlxuICogLSBbUG9wcGVyXShodHRwczovL211aS5jb20vYmFzZS11aS9yZWFjdC1wb3BwZXIvKVxuICpcbiAqIEFQSTpcbiAqXG4gKiAtIFtQb3BwZXIgQVBJXShodHRwczovL211aS5jb20vYmFzZS11aS9yZWFjdC1wb3BwZXIvY29tcG9uZW50cy1hcGkvI3BvcHBlcilcbiAqL1xuY29uc3QgUG9wcGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gUG9wcGVyKHByb3BzLCBmb3J3YXJkZWRSZWYpIHtcbiAgY29uc3Qge1xuICAgICAgYW5jaG9yRWwsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyUHJvcCxcbiAgICAgIGRpcmVjdGlvbiA9ICdsdHInLFxuICAgICAgZGlzYWJsZVBvcnRhbCA9IGZhbHNlLFxuICAgICAga2VlcE1vdW50ZWQgPSBmYWxzZSxcbiAgICAgIG1vZGlmaWVycyxcbiAgICAgIG9wZW4sXG4gICAgICBwbGFjZW1lbnQgPSAnYm90dG9tJyxcbiAgICAgIHBvcHBlck9wdGlvbnMgPSBkZWZhdWx0UG9wcGVyT3B0aW9ucyxcbiAgICAgIHBvcHBlclJlZixcbiAgICAgIHN0eWxlLFxuICAgICAgdHJhbnNpdGlvbiA9IGZhbHNlLFxuICAgICAgc2xvdFByb3BzID0ge30sXG4gICAgICBzbG90cyA9IHt9XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZDIpO1xuICBjb25zdCBbZXhpdGVkLCBzZXRFeGl0ZWRdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gKCkgPT4ge1xuICAgIHNldEV4aXRlZChmYWxzZSk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUV4aXRlZCA9ICgpID0+IHtcbiAgICBzZXRFeGl0ZWQodHJ1ZSk7XG4gIH07XG4gIGlmICgha2VlcE1vdW50ZWQgJiYgIW9wZW4gJiYgKCF0cmFuc2l0aW9uIHx8IGV4aXRlZCkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIElmIHRoZSBjb250YWluZXIgcHJvcCBpcyBwcm92aWRlZCwgdXNlIHRoYXRcbiAgLy8gSWYgdGhlIGFuY2hvckVsIHByb3AgaXMgcHJvdmlkZWQsIHVzZSBpdHMgcGFyZW50IGJvZHkgZWxlbWVudCBhcyB0aGUgY29udGFpbmVyXG4gIC8vIElmIG5laXRoZXIgYXJlIHByb3ZpZGVkIGxldCB0aGUgTW9kYWwgdGFrZSBjYXJlIG9mIGNob29zaW5nIHRoZSBjb250YWluZXJcbiAgbGV0IGNvbnRhaW5lcjtcbiAgaWYgKGNvbnRhaW5lclByb3ApIHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXJQcm9wO1xuICB9IGVsc2UgaWYgKGFuY2hvckVsKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRBbmNob3JFbCA9IHJlc29sdmVBbmNob3JFbChhbmNob3JFbCk7XG4gICAgY29udGFpbmVyID0gcmVzb2x2ZWRBbmNob3JFbCAmJiBpc0hUTUxFbGVtZW50KHJlc29sdmVkQW5jaG9yRWwpID8gb3duZXJEb2N1bWVudChyZXNvbHZlZEFuY2hvckVsKS5ib2R5IDogb3duZXJEb2N1bWVudChudWxsKS5ib2R5O1xuICB9XG4gIGNvbnN0IGRpc3BsYXkgPSAhb3BlbiAmJiBrZWVwTW91bnRlZCAmJiAoIXRyYW5zaXRpb24gfHwgZXhpdGVkKSA/ICdub25lJyA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdHJhbnNpdGlvblByb3BzID0gdHJhbnNpdGlvbiA/IHtcbiAgICBpbjogb3BlbixcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkXG4gIH0gOiB1bmRlZmluZWQ7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChQb3J0YWwsIHtcbiAgICBkaXNhYmxlUG9ydGFsOiBkaXNhYmxlUG9ydGFsLFxuICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChQb3BwZXJUb29sdGlwLCBfZXh0ZW5kcyh7XG4gICAgICBhbmNob3JFbDogYW5jaG9yRWwsXG4gICAgICBkaXJlY3Rpb246IGRpcmVjdGlvbixcbiAgICAgIGRpc2FibGVQb3J0YWw6IGRpc2FibGVQb3J0YWwsXG4gICAgICBtb2RpZmllcnM6IG1vZGlmaWVycyxcbiAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgb3BlbjogdHJhbnNpdGlvbiA/ICFleGl0ZWQgOiBvcGVuLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBwb3BwZXJPcHRpb25zOiBwb3BwZXJPcHRpb25zLFxuICAgICAgcG9wcGVyUmVmOiBwb3BwZXJSZWYsXG4gICAgICBzbG90UHJvcHM6IHNsb3RQcm9wcyxcbiAgICAgIHNsb3RzOiBzbG90c1xuICAgIH0sIG90aGVyLCB7XG4gICAgICBzdHlsZTogX2V4dGVuZHMoe1xuICAgICAgICAvLyBQcmV2ZW50cyBzY3JvbGwgaXNzdWUsIHdhaXRpbmcgZm9yIFBvcHBlci5qcyB0byBhZGQgdGhpcyBzdHlsZSBvbmNlIGluaXRpYXRlZC5cbiAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgIC8vIEZpeCBQb3BwZXIuanMgZGlzcGxheSBpc3N1ZVxuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIGRpc3BsYXlcbiAgICAgIH0sIHN0eWxlKSxcbiAgICAgIFRyYW5zaXRpb25Qcm9wczogdHJhbnNpdGlvblByb3BzLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBQb3BwZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IFR5cGVTY3JpcHQgdHlwZXMgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQW4gSFRNTCBlbGVtZW50LCBbdmlydHVhbEVsZW1lbnRdKGh0dHBzOi8vcG9wcGVyLmpzLm9yZy9kb2NzL3YyL3ZpcnR1YWwtZWxlbWVudHMvKSxcbiAgICogb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgZWl0aGVyLlxuICAgKiBJdCdzIHVzZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyLlxuICAgKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgcGFzc2VkIGFzIHRoZSByZWZlcmVuY2Ugb2JqZWN0IG9mIHRoZSBQb3BwZXIgaW5zdGFuY2UuXG4gICAqL1xuICBhbmNob3JFbDogY2hhaW5Qcm9wVHlwZXMoUHJvcFR5cGVzLm9uZU9mVHlwZShbSFRNTEVsZW1lbnRUeXBlLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuZnVuY10pLCBwcm9wcyA9PiB7XG4gICAgaWYgKHByb3BzLm9wZW4pIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkQW5jaG9yRWwgPSByZXNvbHZlQW5jaG9yRWwocHJvcHMuYW5jaG9yRWwpO1xuICAgICAgaWYgKHJlc29sdmVkQW5jaG9yRWwgJiYgaXNIVE1MRWxlbWVudChyZXNvbHZlZEFuY2hvckVsKSAmJiByZXNvbHZlZEFuY2hvckVsLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICAgIGNvbnN0IGJveCA9IHJlc29sdmVkQW5jaG9yRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Rlc3QnICYmIGJveC50b3AgPT09IDAgJiYgYm94LmxlZnQgPT09IDAgJiYgYm94LnJpZ2h0ID09PSAwICYmIGJveC5ib3R0b20gPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IEVycm9yKFsnTVVJOiBUaGUgYGFuY2hvckVsYCBwcm9wIHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgaXMgaW52YWxpZC4nLCAnVGhlIGFuY2hvciBlbGVtZW50IHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBsYXlvdXQuJywgXCJNYWtlIHN1cmUgdGhlIGVsZW1lbnQgaXMgcHJlc2VudCBpbiB0aGUgZG9jdW1lbnQgb3IgdGhhdCBpdCdzIG5vdCBkaXNwbGF5IG5vbmUuXCJdLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghcmVzb2x2ZWRBbmNob3JFbCB8fCB0eXBlb2YgcmVzb2x2ZWRBbmNob3JFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgIT09ICdmdW5jdGlvbicgfHwgaXNWaXJ0dWFsRWxlbWVudChyZXNvbHZlZEFuY2hvckVsKSAmJiByZXNvbHZlZEFuY2hvckVsLmNvbnRleHRFbGVtZW50ICE9IG51bGwgJiYgcmVzb2x2ZWRBbmNob3JFbC5jb250ZXh0RWxlbWVudC5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKFsnTVVJOiBUaGUgYGFuY2hvckVsYCBwcm9wIHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgaXMgaW52YWxpZC4nLCAnSXQgc2hvdWxkIGJlIGFuIEhUTUwgZWxlbWVudCBpbnN0YW5jZSBvciBhIHZpcnR1YWxFbGVtZW50ICcsICcoaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvdmlydHVhbC1lbGVtZW50cy8pLiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogUG9wcGVyIHJlbmRlciBmdW5jdGlvbiBvciBub2RlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm5vZGUsIFByb3BUeXBlcy5mdW5jXSksXG4gIC8qKlxuICAgKiBBbiBIVE1MIGVsZW1lbnQgb3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG9uZS5cbiAgICogVGhlIGBjb250YWluZXJgIHdpbGwgaGF2ZSB0aGUgcG9ydGFsIGNoaWxkcmVuIGFwcGVuZGVkIHRvIGl0LlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBpdCB1c2VzIHRoZSBib2R5IG9mIHRoZSB0b3AtbGV2ZWwgZG9jdW1lbnQgb2JqZWN0LFxuICAgKiBzbyBpdCdzIHNpbXBseSBgZG9jdW1lbnQuYm9keWAgbW9zdCBvZiB0aGUgdGltZS5cbiAgICovXG4gIGNvbnRhaW5lcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtIVE1MRWxlbWVudFR5cGUsIFByb3BUeXBlcy5mdW5jXSksXG4gIC8qKlxuICAgKiBEaXJlY3Rpb24gb2YgdGhlIHRleHQuXG4gICAqIEBkZWZhdWx0ICdsdHInXG4gICAqL1xuICBkaXJlY3Rpb246IFByb3BUeXBlcy5vbmVPZihbJ2x0cicsICdydGwnXSksXG4gIC8qKlxuICAgKiBUaGUgYGNoaWxkcmVuYCB3aWxsIGJlIHVuZGVyIHRoZSBET00gaGllcmFyY2h5IG9mIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVBvcnRhbDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBBbHdheXMga2VlcCB0aGUgY2hpbGRyZW4gaW4gdGhlIERPTS5cbiAgICogVGhpcyBwcm9wIGNhbiBiZSB1c2VmdWwgaW4gU0VPIHNpdHVhdGlvbiBvclxuICAgKiB3aGVuIHlvdSB3YW50IHRvIG1heGltaXplIHRoZSByZXNwb25zaXZlbmVzcyBvZiB0aGUgUG9wcGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAga2VlcE1vdW50ZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogUG9wcGVyLmpzIGlzIGJhc2VkIG9uIGEgXCJwbHVnaW4tbGlrZVwiIGFyY2hpdGVjdHVyZSxcbiAgICogbW9zdCBvZiBpdHMgZmVhdHVyZXMgYXJlIGZ1bGx5IGVuY2Fwc3VsYXRlZCBcIm1vZGlmaWVyc1wiLlxuICAgKlxuICAgKiBBIG1vZGlmaWVyIGlzIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgZWFjaCB0aW1lIFBvcHBlci5qcyBuZWVkcyB0b1xuICAgKiBjb21wdXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wcGVyLlxuICAgKiBGb3IgdGhpcyByZWFzb24sIG1vZGlmaWVycyBzaG91bGQgYmUgdmVyeSBwZXJmb3JtYW50IHRvIGF2b2lkIGJvdHRsZW5lY2tzLlxuICAgKiBUbyBsZWFybiBob3cgdG8gY3JlYXRlIGEgbW9kaWZpZXIsIFtyZWFkIHRoZSBtb2RpZmllcnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvbW9kaWZpZXJzLykuXG4gICAqL1xuICBtb2RpZmllcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zaGFwZSh7XG4gICAgZGF0YTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBlZmZlY3Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIGVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGZuOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBuYW1lOiBQcm9wVHlwZXMuYW55LFxuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcGhhc2U6IFByb3BUeXBlcy5vbmVPZihbJ2FmdGVyTWFpbicsICdhZnRlclJlYWQnLCAnYWZ0ZXJXcml0ZScsICdiZWZvcmVNYWluJywgJ2JlZm9yZVJlYWQnLCAnYmVmb3JlV3JpdGUnLCAnbWFpbicsICdyZWFkJywgJ3dyaXRlJ10pLFxuICAgIHJlcXVpcmVzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSxcbiAgICByZXF1aXJlc0lmRXhpc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKVxuICB9KSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2hvd24uXG4gICAqL1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogUG9wcGVyIHBsYWNlbWVudC5cbiAgICogQGRlZmF1bHQgJ2JvdHRvbSdcbiAgICovXG4gIHBsYWNlbWVudDogUHJvcFR5cGVzLm9uZU9mKFsnYXV0by1lbmQnLCAnYXV0by1zdGFydCcsICdhdXRvJywgJ2JvdHRvbS1lbmQnLCAnYm90dG9tLXN0YXJ0JywgJ2JvdHRvbScsICdsZWZ0LWVuZCcsICdsZWZ0LXN0YXJ0JywgJ2xlZnQnLCAncmlnaHQtZW5kJywgJ3JpZ2h0LXN0YXJ0JywgJ3JpZ2h0JywgJ3RvcC1lbmQnLCAndG9wLXN0YXJ0JywgJ3RvcCddKSxcbiAgLyoqXG4gICAqIE9wdGlvbnMgcHJvdmlkZWQgdG8gdGhlIFtgUG9wcGVyLmpzYF0oaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvY29uc3RydWN0b3JzLyNvcHRpb25zKSBpbnN0YW5jZS5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHBvcHBlck9wdGlvbnM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbW9kaWZpZXJzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgb25GaXJzdFVwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGxhY2VtZW50OiBQcm9wVHlwZXMub25lT2YoWydhdXRvLWVuZCcsICdhdXRvLXN0YXJ0JywgJ2F1dG8nLCAnYm90dG9tLWVuZCcsICdib3R0b20tc3RhcnQnLCAnYm90dG9tJywgJ2xlZnQtZW5kJywgJ2xlZnQtc3RhcnQnLCAnbGVmdCcsICdyaWdodC1lbmQnLCAncmlnaHQtc3RhcnQnLCAncmlnaHQnLCAndG9wLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wJ10pLFxuICAgIHN0cmF0ZWd5OiBQcm9wVHlwZXMub25lT2YoWydhYnNvbHV0ZScsICdmaXhlZCddKVxuICB9KSxcbiAgLyoqXG4gICAqIEEgcmVmIHRoYXQgcG9pbnRzIHRvIHRoZSB1c2VkIHBvcHBlciBpbnN0YW5jZS5cbiAgICovXG4gIHBvcHBlclJlZjogcmVmVHlwZSxcbiAgLyoqXG4gICAqIFRoZSBwcm9wcyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlIHRoZSBQb3BwZXIuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90UHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcm9vdDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUgdGhlIFBvcHBlci5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHJvb3Q6IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIEhlbHAgc3VwcG9ydGluZyBhIHJlYWN0LXRyYW5zaXRpb24tZ3JvdXAvVHJhbnNpdGlvbiBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB0cmFuc2l0aW9uOiBQcm9wVHlwZXMuYm9vbFxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFBvcHBlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhbmNob3JFbFwiLCBcImNvbXBvbmVudFwiLCBcImNvbXBvbmVudHNcIiwgXCJjb21wb25lbnRzUHJvcHNcIiwgXCJjb250YWluZXJcIiwgXCJkaXNhYmxlUG9ydGFsXCIsIFwia2VlcE1vdW50ZWRcIiwgXCJtb2RpZmllcnNcIiwgXCJvcGVuXCIsIFwicGxhY2VtZW50XCIsIFwicG9wcGVyT3B0aW9uc1wiLCBcInBvcHBlclJlZlwiLCBcInRyYW5zaXRpb25cIiwgXCJzbG90c1wiLCBcInNsb3RQcm9wc1wiXTtcbmltcG9ydCBCYXNlUG9wcGVyIGZyb20gJ0BtdWkvYmFzZS9Qb3BwZXInO1xuaW1wb3J0IHsgdXNlVGhlbWVXaXRob3V0RGVmYXVsdCBhcyB1c2VUaGVtZSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCB7IEhUTUxFbGVtZW50VHlwZSwgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlZCwgdXNlVGhlbWVQcm9wcyB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgUG9wcGVyUm9vdCA9IHN0eWxlZChCYXNlUG9wcGVyLCB7XG4gIG5hbWU6ICdNdWlQb3BwZXInLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnJvb3Rcbn0pKHt9KTtcblxuLyoqXG4gKlxuICogRGVtb3M6XG4gKlxuICogLSBbQXV0b2NvbXBsZXRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvcmVhY3QtYXV0b2NvbXBsZXRlLylcbiAqIC0gW01lbnVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9yZWFjdC1tZW51LylcbiAqIC0gW1BvcHBlcl0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL3JlYWN0LXBvcHBlci8pXG4gKlxuICogQVBJOlxuICpcbiAqIC0gW1BvcHBlciBBUEldKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9hcGkvcG9wcGVyLylcbiAqL1xuY29uc3QgUG9wcGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gUG9wcGVyKGluUHJvcHMsIHJlZikge1xuICB2YXIgX3Nsb3RzJHJvb3Q7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpUG9wcGVyJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgYW5jaG9yRWwsXG4gICAgICBjb21wb25lbnQsXG4gICAgICBjb21wb25lbnRzLFxuICAgICAgY29tcG9uZW50c1Byb3BzLFxuICAgICAgY29udGFpbmVyLFxuICAgICAgZGlzYWJsZVBvcnRhbCxcbiAgICAgIGtlZXBNb3VudGVkLFxuICAgICAgbW9kaWZpZXJzLFxuICAgICAgb3BlbixcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHBvcHBlck9wdGlvbnMsXG4gICAgICBwb3BwZXJSZWYsXG4gICAgICB0cmFuc2l0aW9uLFxuICAgICAgc2xvdHMsXG4gICAgICBzbG90UHJvcHNcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgUm9vdENvbXBvbmVudCA9IChfc2xvdHMkcm9vdCA9IHNsb3RzID09IG51bGwgPyB2b2lkIDAgOiBzbG90cy5yb290KSAhPSBudWxsID8gX3Nsb3RzJHJvb3QgOiBjb21wb25lbnRzID09IG51bGwgPyB2b2lkIDAgOiBjb21wb25lbnRzLlJvb3Q7XG4gIGNvbnN0IG90aGVyUHJvcHMgPSBfZXh0ZW5kcyh7XG4gICAgYW5jaG9yRWwsXG4gICAgY29udGFpbmVyLFxuICAgIGRpc2FibGVQb3J0YWwsXG4gICAga2VlcE1vdW50ZWQsXG4gICAgbW9kaWZpZXJzLFxuICAgIG9wZW4sXG4gICAgcGxhY2VtZW50LFxuICAgIHBvcHBlck9wdGlvbnMsXG4gICAgcG9wcGVyUmVmLFxuICAgIHRyYW5zaXRpb25cbiAgfSwgb3RoZXIpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUG9wcGVyUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBjb21wb25lbnQsXG4gICAgZGlyZWN0aW9uOiB0aGVtZSA9PSBudWxsID8gdm9pZCAwIDogdGhlbWUuZGlyZWN0aW9uLFxuICAgIHNsb3RzOiB7XG4gICAgICByb290OiBSb290Q29tcG9uZW50XG4gICAgfSxcbiAgICBzbG90UHJvcHM6IHNsb3RQcm9wcyAhPSBudWxsID8gc2xvdFByb3BzIDogY29tcG9uZW50c1Byb3BzXG4gIH0sIG90aGVyUHJvcHMsIHtcbiAgICByZWY6IHJlZlxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFBvcHBlci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgVHlwZVNjcmlwdCB0eXBlcyBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBbiBIVE1MIGVsZW1lbnQsIFt2aXJ0dWFsRWxlbWVudF0oaHR0cHM6Ly9wb3BwZXIuanMub3JnL2RvY3MvdjIvdmlydHVhbC1lbGVtZW50cy8pLFxuICAgKiBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBlaXRoZXIuXG4gICAqIEl0J3MgdXNlZCB0byBzZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3BwZXIuXG4gICAqIFRoZSByZXR1cm4gdmFsdWUgd2lsbCBwYXNzZWQgYXMgdGhlIHJlZmVyZW5jZSBvYmplY3Qgb2YgdGhlIFBvcHBlciBpbnN0YW5jZS5cbiAgICovXG4gIGFuY2hvckVsOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqXG4gICAqIFBvcHBlciByZW5kZXIgZnVuY3Rpb24gb3Igbm9kZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ub2RlLCBQcm9wVHlwZXMuZnVuY10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlIHRoZSBQb3BwZXIuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIFJvb3Q6IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBwcm9wcyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlIHRoZSBQb3BwZXIuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcm9vdDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxuICB9KSxcbiAgLyoqXG4gICAqIEFuIEhUTUwgZWxlbWVudCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lLlxuICAgKiBUaGUgYGNvbnRhaW5lcmAgd2lsbCBoYXZlIHRoZSBwb3J0YWwgY2hpbGRyZW4gYXBwZW5kZWQgdG8gaXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGl0IHVzZXMgdGhlIGJvZHkgb2YgdGhlIHRvcC1sZXZlbCBkb2N1bWVudCBvYmplY3QsXG4gICAqIHNvIGl0J3Mgc2ltcGx5IGBkb2N1bWVudC5ib2R5YCBtb3N0IG9mIHRoZSB0aW1lLlxuICAgKi9cbiAgY29udGFpbmVyOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqXG4gICAqIFRoZSBgY2hpbGRyZW5gIHdpbGwgYmUgdW5kZXIgdGhlIERPTSBoaWVyYXJjaHkgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEFsd2F5cyBrZWVwIHRoZSBjaGlsZHJlbiBpbiB0aGUgRE9NLlxuICAgKiBUaGlzIHByb3AgY2FuIGJlIHVzZWZ1bCBpbiBTRU8gc2l0dWF0aW9uIG9yXG4gICAqIHdoZW4geW91IHdhbnQgdG8gbWF4aW1pemUgdGhlIHJlc3BvbnNpdmVuZXNzIG9mIHRoZSBQb3BwZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBrZWVwTW91bnRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBQb3BwZXIuanMgaXMgYmFzZWQgb24gYSBcInBsdWdpbi1saWtlXCIgYXJjaGl0ZWN0dXJlLFxuICAgKiBtb3N0IG9mIGl0cyBmZWF0dXJlcyBhcmUgZnVsbHkgZW5jYXBzdWxhdGVkIFwibW9kaWZpZXJzXCIuXG4gICAqXG4gICAqIEEgbW9kaWZpZXIgaXMgYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBlYWNoIHRpbWUgUG9wcGVyLmpzIG5lZWRzIHRvXG4gICAqIGNvbXB1dGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb3BwZXIuXG4gICAqIEZvciB0aGlzIHJlYXNvbiwgbW9kaWZpZXJzIHNob3VsZCBiZSB2ZXJ5IHBlcmZvcm1hbnQgdG8gYXZvaWQgYm90dGxlbmVja3MuXG4gICAqIFRvIGxlYXJuIGhvdyB0byBjcmVhdGUgYSBtb2RpZmllciwgW3JlYWQgdGhlIG1vZGlmaWVycyBkb2N1bWVudGF0aW9uXShodHRwczovL3BvcHBlci5qcy5vcmcvZG9jcy92Mi9tb2RpZmllcnMvKS5cbiAgICovXG4gIG1vZGlmaWVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGVmZmVjdDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZm46IFByb3BUeXBlcy5mdW5jLFxuICAgIG5hbWU6IFByb3BUeXBlcy5hbnksXG4gICAgb3B0aW9uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBwaGFzZTogUHJvcFR5cGVzLm9uZU9mKFsnYWZ0ZXJNYWluJywgJ2FmdGVyUmVhZCcsICdhZnRlcldyaXRlJywgJ2JlZm9yZU1haW4nLCAnYmVmb3JlUmVhZCcsICdiZWZvcmVXcml0ZScsICdtYWluJywgJ3JlYWQnLCAnd3JpdGUnXSksXG4gICAgcmVxdWlyZXM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpLFxuICAgIHJlcXVpcmVzSWZFeGlzdHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpXG4gIH0pKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBzaG93bi5cbiAgICovXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBQb3BwZXIgcGxhY2VtZW50LlxuICAgKiBAZGVmYXVsdCAnYm90dG9tJ1xuICAgKi9cbiAgcGxhY2VtZW50OiBQcm9wVHlwZXMub25lT2YoWydhdXRvLWVuZCcsICdhdXRvLXN0YXJ0JywgJ2F1dG8nLCAnYm90dG9tLWVuZCcsICdib3R0b20tc3RhcnQnLCAnYm90dG9tJywgJ2xlZnQtZW5kJywgJ2xlZnQtc3RhcnQnLCAnbGVmdCcsICdyaWdodC1lbmQnLCAncmlnaHQtc3RhcnQnLCAncmlnaHQnLCAndG9wLWVuZCcsICd0b3Atc3RhcnQnLCAndG9wJ10pLFxuICAvKipcbiAgICogT3B0aW9ucyBwcm92aWRlZCB0byB0aGUgW2BQb3BwZXIuanNgXShodHRwczovL3BvcHBlci5qcy5vcmcvZG9jcy92Mi9jb25zdHJ1Y3RvcnMvI29wdGlvbnMpIGluc3RhbmNlLlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgcG9wcGVyT3B0aW9uczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtb2RpZmllcnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBvbkZpcnN0VXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwbGFjZW1lbnQ6IFByb3BUeXBlcy5vbmVPZihbJ2F1dG8tZW5kJywgJ2F1dG8tc3RhcnQnLCAnYXV0bycsICdib3R0b20tZW5kJywgJ2JvdHRvbS1zdGFydCcsICdib3R0b20nLCAnbGVmdC1lbmQnLCAnbGVmdC1zdGFydCcsICdsZWZ0JywgJ3JpZ2h0LWVuZCcsICdyaWdodC1zdGFydCcsICdyaWdodCcsICd0b3AtZW5kJywgJ3RvcC1zdGFydCcsICd0b3AnXSksXG4gICAgc3RyYXRlZ3k6IFByb3BUeXBlcy5vbmVPZihbJ2Fic29sdXRlJywgJ2ZpeGVkJ10pXG4gIH0pLFxuICAvKipcbiAgICogQSByZWYgdGhhdCBwb2ludHMgdG8gdGhlIHVzZWQgcG9wcGVyIGluc3RhbmNlLlxuICAgKi9cbiAgcG9wcGVyUmVmOiByZWZUeXBlLFxuICAvKipcbiAgICogVGhlIHByb3BzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUgdGhlIFBvcHBlci5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICByb290OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZSB0aGUgUG9wcGVyLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgcm9vdDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogSGVscCBzdXBwb3J0aW5nIGEgcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9UcmFuc2l0aW9uIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHRyYW5zaXRpb246IFByb3BUeXBlcy5ib29sXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgUG9wcGVyOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUeXBvZ3JhcGh5Jywgc2xvdCk7XG59XG5jb25zdCB0eXBvZ3JhcGh5Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVR5cG9ncmFwaHknLCBbJ3Jvb3QnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMicsICdib2R5MScsICdib2R5MicsICdpbmhlcml0JywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ292ZXJsaW5lJywgJ2FsaWduTGVmdCcsICdhbGlnblJpZ2h0JywgJ2FsaWduQ2VudGVyJywgJ2FsaWduSnVzdGlmeScsICdub1dyYXAnLCAnZ3V0dGVyQm90dG9tJywgJ3BhcmFncmFwaCddKTtcbmV4cG9ydCBkZWZhdWx0IHR5cG9ncmFwaHlDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFsaWduXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZ3V0dGVyQm90dG9tXCIsIFwibm9XcmFwXCIsIFwicGFyYWdyYXBoXCIsIFwidmFyaWFudFwiLCBcInZhcmlhbnRNYXBwaW5nXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfZXh0ZW5kU3hQcm9wIGFzIGV4dGVuZFN4UHJvcCB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB7IGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3R5cG9ncmFwaHlDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWxpZ24sXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgYGFsaWduJHtjYXBpdGFsaXplKGFsaWduKX1gLCBndXR0ZXJCb3R0b20gJiYgJ2d1dHRlckJvdHRvbScsIG5vV3JhcCAmJiAnbm9XcmFwJywgcGFyYWdyYXBoICYmICdwYXJhZ3JhcGgnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmV4cG9ydCBjb25zdCBUeXBvZ3JhcGh5Um9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVR5cG9ncmFwaHknLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2BhbGlnbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmFsaWduKX1gXSwgb3duZXJTdGF0ZS5ub1dyYXAgJiYgc3R5bGVzLm5vV3JhcCwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYgc3R5bGVzLmd1dHRlckJvdHRvbSwgb3duZXJTdGF0ZS5wYXJhZ3JhcGggJiYgc3R5bGVzLnBhcmFncmFwaF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG1hcmdpbjogMFxufSwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHRoZW1lLnR5cG9ncmFwaHlbb3duZXJTdGF0ZS52YXJpYW50XSwgb3duZXJTdGF0ZS5hbGlnbiAhPT0gJ2luaGVyaXQnICYmIHtcbiAgdGV4dEFsaWduOiBvd25lclN0YXRlLmFsaWduXG59LCBvd25lclN0YXRlLm5vV3JhcCAmJiB7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xufSwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYge1xuICBtYXJnaW5Cb3R0b206ICcwLjM1ZW0nXG59LCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiB7XG4gIG1hcmdpbkJvdHRvbTogMTZcbn0pKTtcbmNvbnN0IGRlZmF1bHRWYXJpYW50TWFwcGluZyA9IHtcbiAgaDE6ICdoMScsXG4gIGgyOiAnaDInLFxuICBoMzogJ2gzJyxcbiAgaDQ6ICdoNCcsXG4gIGg1OiAnaDUnLFxuICBoNjogJ2g2JyxcbiAgc3VidGl0bGUxOiAnaDYnLFxuICBzdWJ0aXRsZTI6ICdoNicsXG4gIGJvZHkxOiAncCcsXG4gIGJvZHkyOiAncCcsXG4gIGluaGVyaXQ6ICdwJ1xufTtcblxuLy8gVE9ETyB2NjogZGVwcmVjYXRlIHRoZXNlIGNvbG9yIHZhbHVlcyBpbiB2NS54IGFuZCByZW1vdmUgdGhlIHRyYW5zZm9ybWF0aW9uIGluIHY2XG5jb25zdCBjb2xvclRyYW5zZm9ybWF0aW9ucyA9IHtcbiAgcHJpbWFyeTogJ3ByaW1hcnkubWFpbicsXG4gIHRleHRQcmltYXJ5OiAndGV4dC5wcmltYXJ5JyxcbiAgc2Vjb25kYXJ5OiAnc2Vjb25kYXJ5Lm1haW4nLFxuICB0ZXh0U2Vjb25kYXJ5OiAndGV4dC5zZWNvbmRhcnknLFxuICBlcnJvcjogJ2Vycm9yLm1haW4nXG59O1xuY29uc3QgdHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyA9IGNvbG9yID0+IHtcbiAgcmV0dXJuIGNvbG9yVHJhbnNmb3JtYXRpb25zW2NvbG9yXSB8fCBjb2xvcjtcbn07XG5jb25zdCBUeXBvZ3JhcGh5ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVHlwb2dyYXBoeShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWVQcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUeXBvZ3JhcGh5J1xuICB9KTtcbiAgY29uc3QgY29sb3IgPSB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzKHRoZW1lUHJvcHMuY29sb3IpO1xuICBjb25zdCBwcm9wcyA9IGV4dGVuZFN4UHJvcChfZXh0ZW5kcyh7fSwgdGhlbWVQcm9wcywge1xuICAgIGNvbG9yXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgICAgYWxpZ24gPSAnaW5oZXJpdCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQsXG4gICAgICBndXR0ZXJCb3R0b20gPSBmYWxzZSxcbiAgICAgIG5vV3JhcCA9IGZhbHNlLFxuICAgICAgcGFyYWdyYXBoID0gZmFsc2UsXG4gICAgICB2YXJpYW50ID0gJ2JvZHkxJyxcbiAgICAgIHZhcmlhbnRNYXBwaW5nID0gZGVmYXVsdFZhcmlhbnRNYXBwaW5nXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBhbGlnbixcbiAgICBjb2xvcixcbiAgICBjbGFzc05hbWUsXG4gICAgY29tcG9uZW50LFxuICAgIGd1dHRlckJvdHRvbSxcbiAgICBub1dyYXAsXG4gICAgcGFyYWdyYXBoLFxuICAgIHZhcmlhbnQsXG4gICAgdmFyaWFudE1hcHBpbmdcbiAgfSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IGNvbXBvbmVudCB8fCAocGFyYWdyYXBoID8gJ3AnIDogdmFyaWFudE1hcHBpbmdbdmFyaWFudF0gfHwgZGVmYXVsdFZhcmlhbnRNYXBwaW5nW3ZhcmlhbnRdKSB8fCAnc3Bhbic7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFR5cG9ncmFwaHlSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IENvbXBvbmVudCxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSlcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVHlwb2dyYXBoeS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRleHQtYWxpZ24gb24gdGhlIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2luaGVyaXQnLCAnanVzdGlmeScsICdsZWZ0JywgJ3JpZ2h0J10pLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBoYXZlIGEgYm90dG9tIG1hcmdpbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGd1dHRlckJvdHRvbTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0ZXh0IHdpbGwgbm90IHdyYXAsIGJ1dCBpbnN0ZWFkIHdpbGwgdHJ1bmNhdGUgd2l0aCBhIHRleHQgb3ZlcmZsb3cgZWxsaXBzaXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0ZXh0IG92ZXJmbG93IGNhbiBvbmx5IGhhcHBlbiB3aXRoIGJsb2NrIG9yIGlubGluZS1ibG9jayBsZXZlbCBlbGVtZW50c1xuICAgKiAodGhlIGVsZW1lbnQgbmVlZHMgdG8gaGF2ZSBhIHdpZHRoIGluIG9yZGVyIHRvIG92ZXJmbG93KS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG5vV3JhcDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBlbGVtZW50IHdpbGwgYmUgYSBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHBhcmFncmFwaDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSB0aGVtZSB0eXBvZ3JhcGh5IHN0eWxlcy5cbiAgICogQGRlZmF1bHQgJ2JvZHkxJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydib2R5MScsICdib2R5MicsICdidXR0b24nLCAnY2FwdGlvbicsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdpbmhlcml0JywgJ292ZXJsaW5lJywgJ3N1YnRpdGxlMScsICdzdWJ0aXRsZTInXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgbWFwcyB0aGUgdmFyaWFudCBwcm9wIHRvIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IEhUTUwgZWxlbWVudCB0eXBlcy5cbiAgICogRm9yIGluc3RhbmNlLCBzdWJ0aXRsZTEgdG8gYDxoNj5gLlxuICAgKiBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhhdCBtYXBwaW5nLCB5b3UgY2FuIHByb3ZpZGUgeW91ciBvd24uXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgY29tcG9uZW50YCBwcm9wLlxuICAgKiBAZGVmYXVsdCB7XG4gICAqICAgaDE6ICdoMScsXG4gICAqICAgaDI6ICdoMicsXG4gICAqICAgaDM6ICdoMycsXG4gICAqICAgaDQ6ICdoNCcsXG4gICAqICAgaDU6ICdoNScsXG4gICAqICAgaDY6ICdoNicsXG4gICAqICAgc3VidGl0bGUxOiAnaDYnLFxuICAgKiAgIHN1YnRpdGxlMjogJ2g2JyxcbiAgICogICBib2R5MTogJ3AnLFxuICAgKiAgIGJvZHkyOiAncCcsXG4gICAqICAgaW5oZXJpdDogJ3AnLFxuICAgKiB9XG4gICAqL1xuICB2YXJpYW50TWFwcGluZzogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub2JqZWN0XG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVHlwb2dyYXBoeTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlkIGFzIHVzZUlkIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBnbG9iYWxJZCA9IDA7XG5mdW5jdGlvbiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKSB7XG4gIGNvbnN0IFtkZWZhdWx0SWQsIHNldERlZmF1bHRJZF0gPSBSZWFjdC51c2VTdGF0ZShpZE92ZXJyaWRlKTtcbiAgY29uc3QgaWQgPSBpZE92ZXJyaWRlIHx8IGRlZmF1bHRJZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdElkID09IG51bGwpIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHRoaXMgZGVmYXVsdCBpZCB3aGVuIHBvc3NpYmxlLlxuICAgICAgLy8gVXNlIHRoZSBpbmNyZW1lbnRpbmcgdmFsdWUgZm9yIGNsaWVudC1zaWRlIHJlbmRlcmluZyBvbmx5LlxuICAgICAgLy8gV2UgY2FuJ3QgdXNlIGl0IHNlcnZlci1zaWRlLlxuICAgICAgLy8gSWYgeW91IHdhbnQgdG8gdXNlIHJhbmRvbSB2YWx1ZXMgcGxlYXNlIGNvbnNpZGVyIHRoZSBCaXJ0aGRheSBQcm9ibGVtOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaXJ0aGRheV9wcm9ibGVtXG4gICAgICBnbG9iYWxJZCArPSAxO1xuICAgICAgc2V0RGVmYXVsdElkKGBtdWktJHtnbG9iYWxJZH1gKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0SWRdKTtcbiAgcmV0dXJuIGlkO1xufVxuXG4vLyBkb3duc3RyZWFtIGJ1bmRsZXJzIG1heSByZW1vdmUgdW5uZWNlc3NhcnkgY29uY2F0ZW5hdGlvbiwgYnV0IHdvbid0IHJlbW92ZSB0b1N0cmluZyBjYWxsIC0tIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svaXNzdWVzLzE0ODE0XG5jb25zdCBtYXliZVJlYWN0VXNlSWQgPSBSZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldO1xuLyoqXG4gKlxuICogQGV4YW1wbGUgPGRpdiBpZD17dXNlSWQoKX0gLz5cbiAqIEBwYXJhbSBpZE92ZXJyaWRlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VJZChpZE92ZXJyaWRlKSB7XG4gIGlmIChtYXliZVJlYWN0VXNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHJlYWN0SWQgPSBtYXliZVJlYWN0VXNlSWQoKTtcbiAgICByZXR1cm4gaWRPdmVycmlkZSAhPSBudWxsID8gaWRPdmVycmlkZSA6IHJlYWN0SWQ7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIC0tIGBSZWFjdC51c2VJZGAgaXMgaW52YXJpYW50IGF0IHJ1bnRpbWUuXG4gIHJldHVybiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKTtcbn0iXSwibmFtZXMiOlsiZ2V0V2luZG93Iiwibm9kZSIsIndpbmRvdyIsInRvU3RyaW5nIiwib3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3IiwiaXNFbGVtZW50IiwiRWxlbWVudCIsImlzSFRNTEVsZW1lbnQiLCJIVE1MRWxlbWVudCIsImlzU2hhZG93Um9vdCIsIlNoYWRvd1Jvb3QiLCJNYXRoIiwibWF4IiwibWluIiwicm91bmQiLCJnZXRVQVN0cmluZyIsInVhRGF0YSIsIm5hdmlnYXRvciIsInVzZXJBZ2VudERhdGEiLCJicmFuZHMiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJpdGVtIiwiYnJhbmQiLCJ2ZXJzaW9uIiwiam9pbiIsInVzZXJBZ2VudCIsImlzTGF5b3V0Vmlld3BvcnQiLCJ0ZXN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZWxlbWVudCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZVgiLCJzY2FsZVkiLCJvZmZzZXRXaWR0aCIsIndpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiaGVpZ2h0IiwidmlzdWFsVmlld3BvcnQiLCJhZGRWaXN1YWxPZmZzZXRzIiwieCIsImxlZnQiLCJvZmZzZXRMZWZ0IiwieSIsInRvcCIsIm9mZnNldFRvcCIsInJpZ2h0IiwiYm90dG9tIiwiZ2V0V2luZG93U2Nyb2xsIiwid2luIiwic2Nyb2xsTGVmdCIsInBhZ2VYT2Zmc2V0Iiwic2Nyb2xsVG9wIiwicGFnZVlPZmZzZXQiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJnZXREb2N1bWVudEVsZW1lbnQiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImdldFdpbmRvd1Njcm9sbEJhclgiLCJnZXRDb21wdXRlZFN0eWxlIiwiaXNTY3JvbGxQYXJlbnQiLCJfZ2V0Q29tcHV0ZWRTdHlsZSIsIm92ZXJmbG93Iiwib3ZlcmZsb3dYIiwib3ZlcmZsb3dZIiwiZ2V0Q29tcG9zaXRlUmVjdCIsImVsZW1lbnRPclZpcnR1YWxFbGVtZW50Iiwib2Zmc2V0UGFyZW50IiwiaXNGaXhlZCIsImlzT2Zmc2V0UGFyZW50QW5FbGVtZW50Iiwib2Zmc2V0UGFyZW50SXNTY2FsZWQiLCJyZWN0IiwiaXNFbGVtZW50U2NhbGVkIiwic2Nyb2xsIiwib2Zmc2V0cyIsImNsaWVudExlZnQiLCJjbGllbnRUb3AiLCJnZXRMYXlvdXRSZWN0IiwiYWJzIiwiZ2V0UGFyZW50Tm9kZSIsImFzc2lnbmVkU2xvdCIsInBhcmVudE5vZGUiLCJob3N0IiwiZ2V0U2Nyb2xsUGFyZW50IiwiaW5kZXhPZiIsImJvZHkiLCJsaXN0U2Nyb2xsUGFyZW50cyIsImxpc3QiLCJfZWxlbWVudCRvd25lckRvY3VtZW4iLCJzY3JvbGxQYXJlbnQiLCJpc0JvZHkiLCJ0YXJnZXQiLCJjb25jYXQiLCJ1cGRhdGVkTGlzdCIsImlzVGFibGVFbGVtZW50IiwiZ2V0VHJ1ZU9mZnNldFBhcmVudCIsInBvc2l0aW9uIiwiZ2V0T2Zmc2V0UGFyZW50IiwiaXNGaXJlZm94IiwiY3VycmVudE5vZGUiLCJjc3MiLCJ0cmFuc2Zvcm0iLCJwZXJzcGVjdGl2ZSIsImNvbnRhaW4iLCJ3aWxsQ2hhbmdlIiwiZmlsdGVyIiwiZ2V0Q29udGFpbmluZ0Jsb2NrIiwiYXV0byIsImJhc2VQbGFjZW1lbnRzIiwic3RhcnQiLCJlbmQiLCJ2aWV3cG9ydCIsInBvcHBlciIsInZhcmlhdGlvblBsYWNlbWVudHMiLCJyZWR1Y2UiLCJhY2MiLCJwbGFjZW1lbnQiLCJtb2RpZmllclBoYXNlcyIsIm9yZGVyIiwibW9kaWZpZXJzIiwiTWFwIiwidmlzaXRlZCIsIlNldCIsInJlc3VsdCIsInNvcnQiLCJtb2RpZmllciIsImFkZCIsIm5hbWUiLCJyZXF1aXJlcyIsInJlcXVpcmVzSWZFeGlzdHMiLCJmb3JFYWNoIiwiZGVwIiwiaGFzIiwiZGVwTW9kaWZpZXIiLCJnZXQiLCJwdXNoIiwic2V0IiwiREVGQVVMVF9PUFRJT05TIiwic3RyYXRlZ3kiLCJhcmVWYWxpZEVsZW1lbnRzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJfa2V5Iiwic29tZSIsInBvcHBlckdlbmVyYXRvciIsImdlbmVyYXRvck9wdGlvbnMiLCJfZ2VuZXJhdG9yT3B0aW9ucyIsIl9nZW5lcmF0b3JPcHRpb25zJGRlZiIsImRlZmF1bHRNb2RpZmllcnMiLCJfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyIiwiZGVmYXVsdE9wdGlvbnMiLCJyZWZlcmVuY2UiLCJvcHRpb25zIiwiZm4iLCJwZW5kaW5nIiwic3RhdGUiLCJvcmRlcmVkTW9kaWZpZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwibW9kaWZpZXJzRGF0YSIsImVsZW1lbnRzIiwiYXR0cmlidXRlcyIsInN0eWxlcyIsImVmZmVjdENsZWFudXBGbnMiLCJpc0Rlc3Ryb3llZCIsImluc3RhbmNlIiwic2V0T3B0aW9ucyIsInNldE9wdGlvbnNBY3Rpb24iLCJjbGVhbnVwTW9kaWZpZXJFZmZlY3RzIiwic2Nyb2xsUGFyZW50cyIsImNvbnRleHRFbGVtZW50IiwibWVyZ2VkIiwicGhhc2UiLCJvcmRlck1vZGlmaWVycyIsImN1cnJlbnQiLCJleGlzdGluZyIsImRhdGEiLCJrZXlzIiwia2V5IiwibSIsImVuYWJsZWQiLCJfcmVmIiwiX3JlZiRvcHRpb25zIiwiZWZmZWN0IiwiY2xlYW51cEZuIiwidXBkYXRlIiwiZm9yY2VVcGRhdGUiLCJfc3RhdGUkZWxlbWVudHMiLCJyZWN0cyIsInJlc2V0IiwiaW5kZXgiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUiLCJfc3RhdGUkb3JkZXJlZE1vZGlmaWUyIiwiX29wdGlvbnMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJ1bmRlZmluZWQiLCJkZXN0cm95Iiwib25GaXJzdFVwZGF0ZSIsInBhc3NpdmUiLCJnZXRCYXNlUGxhY2VtZW50Iiwic3BsaXQiLCJnZXRWYXJpYXRpb24iLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlT2Zmc2V0cyIsImJhc2VQbGFjZW1lbnQiLCJ2YXJpYXRpb24iLCJjb21tb25YIiwiY29tbW9uWSIsIm1haW5BeGlzIiwibGVuIiwidW5zZXRTaWRlcyIsIm1hcFRvU3R5bGVzIiwiX3JlZjIiLCJfT2JqZWN0JGFzc2lnbjIiLCJwb3BwZXJSZWN0IiwiZ3B1QWNjZWxlcmF0aW9uIiwiYWRhcHRpdmUiLCJyb3VuZE9mZnNldHMiLCJfb2Zmc2V0cyR4IiwiX29mZnNldHMkeSIsIl9yZWYzIiwiaGFzWCIsImhhc093blByb3BlcnR5IiwiaGFzWSIsInNpZGVYIiwic2lkZVkiLCJoZWlnaHRQcm9wIiwid2lkdGhQcm9wIiwiX09iamVjdCRhc3NpZ24iLCJjb21tb25TdHlsZXMiLCJfcmVmNCIsImRwciIsImRldmljZVBpeGVsUmF0aW8iLCJyb3VuZE9mZnNldHNCeURQUiIsImhhc2giLCJnZXRPcHBvc2l0ZVBsYWNlbWVudCIsInJlcGxhY2UiLCJtYXRjaGVkIiwiZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQiLCJjb250YWlucyIsInBhcmVudCIsImNoaWxkIiwicm9vdE5vZGUiLCJnZXRSb290Tm9kZSIsIm5leHQiLCJpc1NhbWVOb2RlIiwicmVjdFRvQ2xpZW50UmVjdCIsImdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlIiwiY2xpcHBpbmdQYXJlbnQiLCJodG1sIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJsYXlvdXRWaWV3cG9ydCIsImdldFZpZXdwb3J0UmVjdCIsImdldElubmVyQm91bmRpbmdDbGllbnRSZWN0Iiwid2luU2Nyb2xsIiwic2Nyb2xsV2lkdGgiLCJzY3JvbGxIZWlnaHQiLCJkaXJlY3Rpb24iLCJnZXREb2N1bWVudFJlY3QiLCJtZXJnZVBhZGRpbmdPYmplY3QiLCJwYWRkaW5nT2JqZWN0IiwiZXhwYW5kVG9IYXNoTWFwIiwidmFsdWUiLCJoYXNoTWFwIiwiZGV0ZWN0T3ZlcmZsb3ciLCJfb3B0aW9ucyRwbGFjZW1lbnQiLCJfb3B0aW9ucyRzdHJhdGVneSIsIl9vcHRpb25zJGJvdW5kYXJ5IiwiYm91bmRhcnkiLCJfb3B0aW9ucyRyb290Qm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJfb3B0aW9ucyRlbGVtZW50Q29udGUiLCJlbGVtZW50Q29udGV4dCIsIl9vcHRpb25zJGFsdEJvdW5kYXJ5IiwiYWx0Qm91bmRhcnkiLCJfb3B0aW9ucyRwYWRkaW5nIiwicGFkZGluZyIsImFsdENvbnRleHQiLCJjbGlwcGluZ0NsaWVudFJlY3QiLCJtYWluQ2xpcHBpbmdQYXJlbnRzIiwiY2xpcHBpbmdQYXJlbnRzIiwiY2xpcHBlckVsZW1lbnQiLCJnZXRDbGlwcGluZ1BhcmVudHMiLCJmaXJzdENsaXBwaW5nUGFyZW50IiwiY2xpcHBpbmdSZWN0IiwiYWNjUmVjdCIsImdldENsaXBwaW5nUmVjdCIsInJlZmVyZW5jZUNsaWVudFJlY3QiLCJwb3BwZXJPZmZzZXRzIiwicG9wcGVyQ2xpZW50UmVjdCIsImVsZW1lbnRDbGllbnRSZWN0Iiwib3ZlcmZsb3dPZmZzZXRzIiwib2Zmc2V0RGF0YSIsIm9mZnNldCIsIm11bHRpcGx5IiwiYXhpcyIsIndpdGhpbiIsImdldFNpZGVPZmZzZXRzIiwicHJldmVudGVkT2Zmc2V0cyIsImlzQW55U2lkZUZ1bGx5Q2xpcHBlZCIsInNpZGUiLCJfb3B0aW9ucyRzY3JvbGwiLCJfb3B0aW9ucyRyZXNpemUiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9yZWY1IiwiX29wdGlvbnMkZ3B1QWNjZWxlcmF0IiwiX29wdGlvbnMkYWRhcHRpdmUiLCJfb3B0aW9ucyRyb3VuZE9mZnNldHMiLCJhcnJvdyIsInN0eWxlIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwiaW5pdGlhbFN0eWxlcyIsIm1hcmdpbiIsInByb3BlcnR5IiwiYXR0cmlidXRlIiwiX29wdGlvbnMkb2Zmc2V0IiwiaW52ZXJ0RGlzdGFuY2UiLCJza2lkZGluZyIsImRpc3RhbmNlIiwiZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkiLCJfZGF0YSRzdGF0ZSRwbGFjZW1lbnQiLCJfc2tpcCIsIl9vcHRpb25zJG1haW5BeGlzIiwiY2hlY2tNYWluQXhpcyIsIl9vcHRpb25zJGFsdEF4aXMiLCJhbHRBeGlzIiwiY2hlY2tBbHRBeGlzIiwic3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIiwiZmFsbGJhY2tQbGFjZW1lbnRzIiwiX29wdGlvbnMkZmxpcFZhcmlhdGlvIiwiZmxpcFZhcmlhdGlvbnMiLCJhbGxvd2VkQXV0b1BsYWNlbWVudHMiLCJwcmVmZXJyZWRQbGFjZW1lbnQiLCJvcHBvc2l0ZVBsYWNlbWVudCIsImdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIl9vcHRpb25zJGFsbG93ZWRBdXRvUCIsImFsbG93ZWRQbGFjZW1lbnRzIiwib3ZlcmZsb3dzIiwiYSIsImIiLCJjb21wdXRlQXV0b1BsYWNlbWVudCIsInJlZmVyZW5jZVJlY3QiLCJjaGVja3NNYXAiLCJtYWtlRmFsbGJhY2tDaGVja3MiLCJmaXJzdEZpdHRpbmdQbGFjZW1lbnQiLCJpIiwiX2Jhc2VQbGFjZW1lbnQiLCJpc1N0YXJ0VmFyaWF0aW9uIiwiaXNWZXJ0aWNhbCIsIm1haW5WYXJpYXRpb25TaWRlIiwiYWx0VmFyaWF0aW9uU2lkZSIsImNoZWNrcyIsImV2ZXJ5IiwiY2hlY2siLCJfbG9vcCIsIl9pIiwiZml0dGluZ1BsYWNlbWVudCIsImZpbmQiLCJzbGljZSIsIl9vcHRpb25zJHRldGhlciIsInRldGhlciIsIl9vcHRpb25zJHRldGhlck9mZnNldCIsInRldGhlck9mZnNldCIsImlzQmFzZVBsYWNlbWVudCIsInRldGhlck9mZnNldFZhbHVlIiwibm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlIiwib2Zmc2V0TW9kaWZpZXJTdGF0ZSIsIl9vZmZzZXRNb2RpZmllclN0YXRlJCIsIm1haW5TaWRlIiwiYWx0U2lkZSIsImFkZGl0aXZlIiwibWluTGVuIiwibWF4TGVuIiwiYXJyb3dFbGVtZW50IiwiYXJyb3dSZWN0IiwiYXJyb3dQYWRkaW5nT2JqZWN0IiwiYXJyb3dQYWRkaW5nTWluIiwiYXJyb3dQYWRkaW5nTWF4IiwiYXJyb3dMZW4iLCJtaW5PZmZzZXQiLCJtYXhPZmZzZXQiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudE9mZnNldCIsIm9mZnNldE1vZGlmaWVyVmFsdWUiLCJ0ZXRoZXJNYXgiLCJwcmV2ZW50ZWRPZmZzZXQiLCJfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIiwiX21haW5TaWRlIiwiX2FsdFNpZGUiLCJfb2Zmc2V0IiwiX21pbiIsIl9tYXgiLCJpc09yaWdpblNpZGUiLCJfb2Zmc2V0TW9kaWZpZXJWYWx1ZSIsIl90ZXRoZXJNaW4iLCJfdGV0aGVyTWF4IiwiX3ByZXZlbnRlZE9mZnNldCIsInYiLCJ3aXRoaW5NYXhDbGFtcCIsIl9zdGF0ZSRtb2RpZmllcnNEYXRhJCIsInRvUGFkZGluZ09iamVjdCIsIm1pblByb3AiLCJtYXhQcm9wIiwiZW5kRGlmZiIsInN0YXJ0RGlmZiIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImNlbnRlciIsImF4aXNQcm9wIiwiY2VudGVyT2Zmc2V0IiwiX29wdGlvbnMkZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJwcmV2ZW50T3ZlcmZsb3ciLCJyZWZlcmVuY2VPdmVyZmxvdyIsInBvcHBlckFsdE92ZXJmbG93IiwicmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzIiwicG9wcGVyRXNjYXBlT2Zmc2V0cyIsImlzUmVmZXJlbmNlSGlkZGVuIiwiaGFzUG9wcGVyRXNjYXBlZCIsImdldFBvcHBlclV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsIl9leGNsdWRlZCIsIl9leGNsdWRlZDIiLCJyZXNvbHZlQW5jaG9yRWwiLCJhbmNob3JFbCIsImRlZmF1bHRQb3BwZXJPcHRpb25zIiwiUG9wcGVyVG9vbHRpcCIsInByb3BzIiwiZm9yd2FyZGVkUmVmIiwiX3Nsb3RzJHJvb3QiLCJjaGlsZHJlbiIsImRpc2FibGVQb3J0YWwiLCJvcGVuIiwiaW5pdGlhbFBsYWNlbWVudCIsInBvcHBlck9wdGlvbnMiLCJwb3BwZXJSZWYiLCJwb3BwZXJSZWZQcm9wIiwic2xvdFByb3BzIiwic2xvdHMiLCJUcmFuc2l0aW9uUHJvcHMiLCJvdGhlciIsInRvb2x0aXBSZWYiLCJvd25SZWYiLCJ1c2VGb3JrUmVmIiwiaGFuZGxlUG9wcGVyUmVmIiwiaGFuZGxlUG9wcGVyUmVmUmVmIiwidXNlRW5oYW5jZWRFZmZlY3QiLCJydGxQbGFjZW1lbnQiLCJmbGlwUGxhY2VtZW50Iiwic2V0UGxhY2VtZW50IiwicmVzb2x2ZWRBbmNob3JFbGVtZW50Iiwic2V0UmVzb2x2ZWRBbmNob3JFbGVtZW50IiwicG9wcGVyTW9kaWZpZXJzIiwiY2hpbGRQcm9wcyIsImNsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInJvb3QiLCJSb290Iiwicm9vdFByb3BzIiwidXNlU2xvdFByb3BzIiwiZWxlbWVudFR5cGUiLCJleHRlcm5hbFNsb3RQcm9wcyIsImV4dGVybmFsRm9yd2FyZGVkUHJvcHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJyb2xlIiwicmVmIiwib3duZXJTdGF0ZSIsImNsYXNzTmFtZSIsImNvbnRhaW5lciIsImNvbnRhaW5lclByb3AiLCJrZWVwTW91bnRlZCIsInRyYW5zaXRpb24iLCJleGl0ZWQiLCJzZXRFeGl0ZWQiLCJyZXNvbHZlZEFuY2hvckVsIiwibm9kZVR5cGUiLCJkaXNwbGF5IiwidHJhbnNpdGlvblByb3BzIiwiaW4iLCJvbkVudGVyIiwib25FeGl0ZWQiLCJQb3J0YWwiLCJQb3BwZXJSb290Iiwic3R5bGVkIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJpblByb3BzIiwidGhlbWUiLCJ1c2VUaGVtZVByb3BzIiwiY29tcG9uZW50IiwiY29tcG9uZW50cyIsImNvbXBvbmVudHNQcm9wcyIsIlJvb3RDb21wb25lbnQiLCJvdGhlclByb3BzIiwiYXMiLCJnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIlR5cG9ncmFwaHlSb290IiwidmFyaWFudCIsImFsaWduIiwiY2FwaXRhbGl6ZSIsIm5vV3JhcCIsImd1dHRlckJvdHRvbSIsInBhcmFncmFwaCIsInR5cG9ncmFwaHkiLCJ0ZXh0QWxpZ24iLCJ0ZXh0T3ZlcmZsb3ciLCJ3aGl0ZVNwYWNlIiwibWFyZ2luQm90dG9tIiwiZGVmYXVsdFZhcmlhbnRNYXBwaW5nIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Iiwic3VidGl0bGUxIiwic3VidGl0bGUyIiwiYm9keTEiLCJib2R5MiIsImluaGVyaXQiLCJjb2xvclRyYW5zZm9ybWF0aW9ucyIsInByaW1hcnkiLCJ0ZXh0UHJpbWFyeSIsInNlY29uZGFyeSIsInRleHRTZWNvbmRhcnkiLCJlcnJvciIsInRoZW1lUHJvcHMiLCJjb2xvciIsInRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnMiLCJleHRlbmRTeFByb3AiLCJ2YXJpYW50TWFwcGluZyIsIkNvbXBvbmVudCIsInVzZVV0aWxpdHlDbGFzc2VzIiwiZ2xvYmFsSWQiLCJtYXliZVJlYWN0VXNlSWQiLCJ1c2VJZCIsImlkT3ZlcnJpZGUiLCJyZWFjdElkIiwiZGVmYXVsdElkIiwic2V0RGVmYXVsdElkIiwiaWQiLCJ1c2VHbG9iYWxJZCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4241.1932f39d.js b/react_frontend/static/react_frontend/js/4241.1932f39d.js new file mode 100644 index 000000000..3be621c5d --- /dev/null +++ b/react_frontend/static/react_frontend/js/4241.1932f39d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4241],{4241:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4300.763d0006.js b/react_frontend/static/react_frontend/js/4300.763d0006.js new file mode 100644 index 000000000..c8062ef47 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4300.763d0006.js @@ -0,0 +1,3 @@ +/*! For license information please see 4300.763d0006.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4300,4075],{1919:(t,e,s)=>{s.r(e),s.d(e,{default:()=>c}),s(6540);var n=s(4075),r=s(4848);const c=function(t){var e=t.editorSettings,s=t.dispatch,c=e.modalScreenState;return(0,r.jsxs)("div",{className:"flex flex-col items-center justify-start pt-10 gap-2 w-[120px] h-full bg-[#383838] rounded-xl select-none",children:[(0,r.jsxs)("div",{className:"flex items-center justify-center gap-1 w-[100px] h-7 rounded-full cursor-pointer ".concat("shortcuts"===c?"bg-[#FFA726]":""),onClick:function(){return s({type:"changeModalScreenState",payload:{screen:"shortcuts"}})},children:[(0,r.jsx)(n.KeyboardIcon,{cssClass:""}),(0,r.jsx)("span",{className:"text-[#fcfcfc] text-sm",children:"shortcuts"})]}),(0,r.jsxs)("div",{className:"flex items-center justify-center gap-1 w-[100px] h-7 rounded-full cursor-pointer ".concat("widgets"===c?"bg-[#FFA726]":""),onClick:function(){return s({type:"changeModalScreenState",payload:{screen:"widgets"}})},children:[(0,r.jsx)(n.WidgetsIcon,{cssClass:""}),(0,r.jsx)("span",{className:"text-[#fcfcfc] text-sm",children:"widgets"})]})]})}},4075:(t,e,s)=>{s.r(e),s.d(e,{AlignIcon:()=>o,CloseIcon:()=>h,InfoIcon:()=>l,KeyboardIcon:()=>q,WidgetsIcon:()=>i,ZoomInIcon:()=>c,ZoomOutIcon:()=>r});var n=s(4848),r=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M268.02-444q-15.02 0-25.52-10.29t-10.5-25.5q0-15.21 10.35-25.71T268-516h423.98q15.02 0 25.52 10.29t10.5 25.5q0 15.21-10.35 25.71T692-444H268.02Z"})})},c=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z"})})},o=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M144-144v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Z"})})},l=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M444-288h72v-240h-72v240Zm35.79-312q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm.49 504Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"})})},h=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#898989",children:(0,n.jsx)("path",{d:"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z"})})},q=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,n.jsx)("path",{d:"M168-240q-29.7 0-50.85-21.15Q96-282.3 96-312v-336q0-29.7 21.15-50.85Q138.3-720 168-720h624q29.7 0 50.85 21.15Q864-677.7 864-648v336q0 29.7-21.15 50.85Q821.7-240 792-240H168Zm0-72h624v-336H168v336Zm203.96-24h215.76q15.28 0 25.78-10.29 10.5-10.29 10.5-25.5t-10.34-25.71Q603.32-408 588.04-408H372.28q-15.28 0-25.78 10.29-10.5 10.29-10.5 25.5t10.34 25.71q10.34 10.5 25.62 10.5ZM168-312v-336 336Zm107.79-240q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm-408 96q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z"})})},i=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,n.jsx)("path",{d:"M610-458 457.39-611q-5.39-5.4-7.89-11.7-2.5-6.3-2.5-13.5t2.5-13.5Q452-656 457-661l153-153q5-5 12-8t14.2-3q7.2 0 13.5 3t11.3 8l152.61 153q5.39 5.4 7.89 11.7 2.5 6.3 2.5 13.5t-2.5 13.5Q819-616 814-611L661-458q-5 5-11.3 8-6.3 3-13.5 3t-14.2-3q-7-3-12-8ZM144-563.96v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm384 384v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H564.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm-384 0v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62ZM216-600h144v-144H216v144Zm420 66 101-102-101-102-102 102 102 102Zm-36 318h144v-144H600v144Zm-384 0h144v-144H216v144Zm144-384Zm174-36ZM360-360Zm240 0Z"})})}},1020:(t,e,s)=>{var n=s(6540),r=Symbol.for("react.element"),c=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,h={key:!0,ref:!0,__self:!0,__source:!0};function q(t,e,s){var n,c={},q=null,i=null;for(n in void 0!==s&&(q=""+s),void 0!==e.key&&(q=""+e.key),void 0!==e.ref&&(i=e.ref),e)o.call(e,n)&&!h.hasOwnProperty(n)&&(c[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps)void 0===c[n]&&(c[n]=e[n]);return{$$typeof:r,type:t,key:q,ref:i,props:c,_owner:l.current}}e.Fragment=c,e.jsx=q,e.jsxs=q},4848:(t,e,s)=>{t.exports=s(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0NBQ0osa0JDdEVLLElBQUlXLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFaEMsRUFBRSxDQUFDLEVBQUVpQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUYsVUFBaEYsSUFBU0QsSUFBSUUsRUFBRSxHQUFHRixRQUFHLElBQVNELEVBQUVOLE1BQU1TLEVBQUUsR0FBR0gsRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNUyxFQUFFSixFQUFFTCxLQUFjSyxFQUFFZCxFQUFFbUIsS0FBS0wsRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS2hDLEVBQUVnQyxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVPLGFBQWEsSUFBSUosS0FBS0YsRUFBRUQsRUFBRU8sa0JBQWUsSUFBU3BDLEVBQUVnQyxLQUFLaEMsRUFBRWdDLEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDSyxTQUFTekIsRUFBRXpCLEtBQUswQyxFQUFFTCxJQUFJUyxFQUFFUixJQUFJUyxFQUFFSSxNQUFNdEMsRUFBRXVDLE9BQU9uQixFQUFFb0IsUUFBUSxDQUFDQyxFQUFRQyxTQUFTM0IsRUFBRTBCLEVBQVFFLElBQUlmLEVBQUVhLEVBQVFHLEtBQUtoQixrQkNQeFdpQixFQUFPSixRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvZWRpdG9yLWluZm8vTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvaWNvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgS2V5Ym9hcmRJY29uLCBXaWRnZXRzSWNvbiB9IGZyb20gXCIuLi9pY29uc1wiO1xyXG5cclxuY29uc3QgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIgPSAoeyBlZGl0b3JTZXR0aW5ncywgZGlzcGF0Y2ggfSkgPT4ge1xyXG4gIGNvbnN0IHsgbW9kYWxTY3JlZW5TdGF0ZSB9ID0gZWRpdG9yU2V0dGluZ3M7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBwdC0xMCBnYXAtMiB3LVsxMjBweF0gaC1mdWxsIGJnLVsjMzgzODM4XSByb3VuZGVkLXhsICBzZWxlY3Qtbm9uZVwiPlxyXG4gICAgICB7Lyogc2hvcnRjdXRzICovfVxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgIGdhcC0xIHctWzEwMHB4XSBoLTcgcm91bmRlZC1mdWxsIGN1cnNvci1wb2ludGVyICR7XHJcbiAgICAgICAgICBtb2RhbFNjcmVlblN0YXRlID09PSBcInNob3J0Y3V0c1wiID8gYGJnLVsjRkZBNzI2XWAgOiBgYFxyXG4gICAgICAgIH1gfVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiY2hhbmdlTW9kYWxTY3JlZW5TdGF0ZVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7IHNjcmVlbjogXCJzaG9ydGN1dHNcIiB9LFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8S2V5Ym9hcmRJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsjZmNmY2ZjXSB0ZXh0LXNtXCI+c2hvcnRjdXRzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIHdpZGdldHMgKi99XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciAgZ2FwLTEgdy1bMTAwcHhdIGgtNyByb3VuZGVkLWZ1bGwgY3Vyc29yLXBvaW50ZXIgJHtcclxuICAgICAgICAgIG1vZGFsU2NyZWVuU3RhdGUgPT09IFwid2lkZ2V0c1wiID8gYGJnLVsjRkZBNzI2XWAgOiBgYFxyXG4gICAgICAgIH1gfVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiY2hhbmdlTW9kYWxTY3JlZW5TdGF0ZVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7IHNjcmVlbjogXCJ3aWRnZXRzXCIgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFdpZGdldHNJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsjZmNmY2ZjXSB0ZXh0LXNtXCI+d2lkZ2V0czwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXI7XHJcbiIsImV4cG9ydCBjb25zdCBab29tT3V0SWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0yNjguMDItNDQ0cS0xNS4wMiAwLTI1LjUyLTEwLjI5dC0xMC41LTI1LjVxMC0xNS4yMSAxMC4zNS0yNS43MVQyNjgtNTE2aDQyMy45OHExNS4wMiAwIDI1LjUyIDEwLjI5dDEwLjUgMjUuNXEwIDE1LjIxLTEwLjM1IDI1LjcxVDY5Mi00NDRIMjY4LjAyWlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbmV4cG9ydCBjb25zdCBab29tSW5JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC00NDRIMjQwdi03MmgyMDR2LTIwNGg3MnYyMDRoMjA0djcySDUxNnYyMDRoLTcydi0yMDRaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuZXhwb3J0IGNvbnN0IEFsaWduSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0xNDQtMTQ0di03Mmg2NzJ2NzJIMTQ0Wm0wLTE1MHYtNzJoNDgwdjcySDE0NFptMC0xNTB2LTcyaDY3MnY3MkgxNDRabTAtMTUwdi03Mmg0ODB2NzJIMTQ0Wm0wLTE1MHYtNzJoNjcydjcySDE0NFpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEluZm9JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC0yODhoNzJ2LTI0MGgtNzJ2MjQwWm0zNS43OS0zMTJxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabS40OSA1MDRRNDAxLTk2IDMzMS0xMjZ0LTEyMi41LTgyLjVRMTU2LTI2MSAxMjYtMzMwLjk2dC0zMC0xNDkuNVE5Ni01NjAgMTI2LTYyOS41cTMwLTY5LjUgODIuNS0xMjJUMzMwLjk2LTgzNHE2OS45Ni0zMCAxNDkuNS0zMHQxNDkuMDQgMzBxNjkuNSAzMCAxMjIgODIuNVQ4MzQtNjI5LjI4cTMwIDY5LjczIDMwIDE0OVE4NjQtNDAxIDgzNC0zMzF0LTgyLjUgMTIyLjVRNjk5LTE1NiA2MjkuMjgtMTI2cS02OS43MyAzMC0xNDkgMzBabS0uMjgtNzJxMTMwIDAgMjIxLTkxdDkxLTIyMXEwLTEzMC05MS0yMjF0LTIyMS05MXEtMTMwIDAtMjIxIDkxdC05MSAyMjFxMCAxMzAgOTEgMjIxdDIyMSA5MVptMC0zMTJaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBDbG9zZUljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiM4OTg5ODlcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJtMjkxLTI0MC01MS01MSAxODktMTg5LTE4OS0xODkgNTEtNTEgMTg5IDE4OSAxODktMTg5IDUxIDUxLTE4OSAxODkgMTg5IDE4OS01MSA1MS0xODktMTg5LTE4OSAxODlaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBLZXlib2FyZEljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNmY2ZjZmNcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNMTY4LTI0MHEtMjkuNyAwLTUwLjg1LTIxLjE1UTk2LTI4Mi4zIDk2LTMxMnYtMzM2cTAtMjkuNyAyMS4xNS01MC44NVExMzguMy03MjAgMTY4LTcyMGg2MjRxMjkuNyAwIDUwLjg1IDIxLjE1UTg2NC02NzcuNyA4NjQtNjQ4djMzNnEwIDI5LjctMjEuMTUgNTAuODVRODIxLjctMjQwIDc5Mi0yNDBIMTY4Wm0wLTcyaDYyNHYtMzM2SDE2OHYzMzZabTIwMy45Ni0yNGgyMTUuNzZxMTUuMjggMCAyNS43OC0xMC4yOSAxMC41LTEwLjI5IDEwLjUtMjUuNXQtMTAuMzQtMjUuNzFRNjAzLjMyLTQwOCA1ODguMDQtNDA4SDM3Mi4yOHEtMTUuMjggMC0yNS43OCAxMC4yOS0xMC41IDEwLjI5LTEwLjUgMjUuNXQxMC4zNCAyNS43MXExMC4zNCAxMC41IDI1LjYyIDEwLjVaTTE2OC0zMTJ2LTMzNiAzMzZabTEwNy43OS0yNDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0tNDA4IDk2cTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IFdpZGdldHNJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjZmNmY2ZjXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTYxMC00NTggNDU3LjM5LTYxMXEtNS4zOS01LjQtNy44OS0xMS43LTIuNS02LjMtMi41LTEzLjV0Mi41LTEzLjVRNDUyLTY1NiA0NTctNjYxbDE1My0xNTNxNS01IDEyLTh0MTQuMi0zcTcuMiAwIDEzLjUgM3QxMS4zIDhsMTUyLjYxIDE1M3E1LjM5IDUuNCA3Ljg5IDExLjcgMi41IDYuMyAyLjUgMTMuNXQtMi41IDEzLjVRODE5LTYxNiA4MTQtNjExTDY2MS00NThxLTUgNS0xMS4zIDgtNi4zIDMtMTMuNSAzdC0xNC4yLTNxLTctMy0xMi04Wk0xNDQtNTYzLjk2di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUgxODAuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0zODQgMzg0di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUg1NjQuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0tMzg0IDB2LTIxNS43NnEwLTE1LjI4IDEwLjM0LTI1Ljc4IDEwLjM0LTEwLjUgMjUuNjItMTAuNWgyMTUuNzZxMTUuMjggMCAyNS43OCAxMC4zNCAxMC41IDEwLjM0IDEwLjUgMjUuNjJ2MjE1Ljc2cTAgMTUuMjgtMTAuMzQgMjUuNzgtMTAuMzQgMTAuNS0yNS42MiAxMC41SDE4MC4yOHEtMTUuMjggMC0yNS43OC0xMC4zNC0xMC41LTEwLjM0LTEwLjUtMjUuNjJaTTIxNi02MDBoMTQ0di0xNDRIMjE2djE0NFptNDIwIDY2IDEwMS0xMDItMTAxLTEwMi0xMDIgMTAyIDEwMiAxMDJabS0zNiAzMThoMTQ0di0xNDRINjAwdjE0NFptLTM4NCAwaDE0NHYtMTQ0SDIxNnYxNDRabTE0NC0zODRabTE3NC0zNlpNMzYwLTM2MFptMjQwIDBaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIl9yZWYiLCJlZGl0b3JTZXR0aW5ncyIsImRpc3BhdGNoIiwibW9kYWxTY3JlZW5TdGF0ZSIsIl9qc3hzIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJjb25jYXQiLCJvbkNsaWNrIiwidHlwZSIsInBheWxvYWQiLCJzY3JlZW4iLCJfanN4IiwiS2V5Ym9hcmRJY29uIiwiY3NzQ2xhc3MiLCJXaWRnZXRzSWNvbiIsIlpvb21PdXRJY29uIiwieG1sbnMiLCJoZWlnaHQiLCJ2aWV3Qm94Iiwid2lkdGgiLCJmaWxsIiwiZCIsIlpvb21Jbkljb24iLCJfcmVmMiIsIkFsaWduSWNvbiIsIl9yZWYzIiwiSW5mb0ljb24iLCJfcmVmNCIsIkNsb3NlSWNvbiIsIl9yZWY1IiwiX3JlZjYiLCJfcmVmNyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInByb3BzIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4300.763d0006.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4300.763d0006.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4300.763d0006.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4313.ba7a0c5a.js b/react_frontend/static/react_frontend/js/4313.ba7a0c5a.js new file mode 100644 index 000000000..f1d6337e3 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4313.ba7a0c5a.js @@ -0,0 +1,3 @@ +/*! For license information please see 4313.ba7a0c5a.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4313,3344,7385],{41:(e,t,r)=>{function n(e,t,r){var n="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "})),n}r.d(t,{Rk:()=>n,SF:()=>a,sk:()=>o});var a=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},o=function(e,t,r){a(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+n:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},4719:(e,t,r)=>{r.d(t,{A:()=>l});var n=r(7413),a=r(9071),o=r(6544),i=r(8312);const s=(0,o.A)(),l=(0,n.A)({themeId:i.A,defaultTheme:s,defaultClassName:"MuiBox-root",generateClassName:a.A.generate})},9359:(e,t,r)=>{r.d(t,{Ay:()=>b,q_:()=>v});var n=r(8168),a=r(6540),o=r(6289),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,o.A)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=r(5684),c=r(41),u=r(6899),d=r(1287),p=s,m=function(e){return"theme"!==e},f=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:m},g=function(e,t,r){var n;if(t){var a=t.shouldForwardProp;n=e.__emotion_forwardProp&&a?function(t){return e.__emotion_forwardProp(t)&&a(t)}:a}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},h=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,c.SF)(t,r,n),(0,d.s)((function(){return(0,c.sk)(t,r,n)})),null},y=function e(t,r){var o,i,s=t.__emotion_real===t,d=s&&t.__emotion_base||t;void 0!==r&&(o=r.label,i=r.target);var p=g(t,r,s),m=p||f(d),y=!m("as");return function(){var b=arguments,v=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==o&&v.push("label:"+o+";"),null==b[0]||void 0===b[0].raw)v.push.apply(v,b);else{v.push(b[0][0]);for(var k=b.length,A=1;A{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},7413:(e,t,r)=>{r.d(t,{A:()=>m});var n=r(8168),a=r(8587),o=r(6540),i=r(53),s=r(9359),l=r(3571),c=r(9599),u=r(2858),d=r(4848);const p=["className","component"];function m(e={}){const{themeId:t,defaultTheme:r,defaultClassName:m="MuiBox-root",generateClassName:f}=e,g=(0,s.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.A);return o.forwardRef((function(e,o){const s=(0,u.A)(r),l=(0,c.A)(e),{className:h,component:y="div"}=l,b=(0,a.A)(l,p);return(0,d.jsx)(g,(0,n.A)({as:y,ref:o,className:(0,i.A)(h,f?f(m):m),theme:t&&s[t]||s},b))}))}},9599:(e,t,r)=>{r.d(t,{A:()=>c});var n=r(8168),a=r(8587),o=r(3272),i=r(4188);const s=["sx"],l=e=>{var t,r;const n={systemProps:{},otherProps:{}},a=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:i.A;return Object.keys(e).forEach((t=>{a[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]})),n};function c(e){const{sx:t}=e,r=(0,a.A)(e,s),{systemProps:i,otherProps:c}=l(r);let u;return u=Array.isArray(t)?[i,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,o.Q)(r)?(0,n.A)({},i,r):i}:(0,n.A)({},i,t),(0,n.A)({},c,{sx:u})}},2858:(e,t,r)=>{r.d(t,{A:()=>i});var n=r(3221),a=r(3951);const o=(0,n.A)(),i=function(e=o){return(0,a.A)(e)}},9071:(e,t,r)=>{r.d(t,{A:()=>a});const n=e=>e,a=(()=>{let e=n;return{configure(t){e=t},generate:t=>e(t),reset(){e=n}}})()},3288:(e,t,r)=>{r.r(t),r.d(t,{default:()=>g});var n=r(6540),a=r(4719),o=r(3344),i=r(7385);const s=r.p+"90999a7c98c1d14e2348.png",l=r.p+"d11c46b809e74e2f83fe.png",c=r.p+"e0742232b0207d6b3b58.png",u=r.p+"4bda41d8cb629c0f2675.png";var d=r(4848);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],l=!0,c=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{getCarPose:()=>n});var n=function(e,t){var r,n,a,o,i=e.includes("ack"),s=1,l=t.substring(1,t.length-1).split(",").map((function(e){return parseFloat(e)}));switch(i&&(e=e.replace(" ack",""),s=5),e){case"default":default:n=1.25,o=77,r=-2.6,a=151;break;case"montmelo":n=2.1,o=77,r=-1.3,a=151;break;case"montreal":n=.685,o=77,r=-.48,a=151;break;case"ngb":n=1.5,o=77,r=-1.495,a=151}return[Math.round(l[0])*r/s+a,Math.round(l[1])*n/s+o]}},7385:(e,t,r)=>{r.r(t),r.d(t,{displayLapTime:()=>n});var n=function(e){var t=e.split(":"),r=t[2].split("."),n=3600*Number(t[0])+60*Number(t[1])+Number(r[0]),a=Number(r[1].slice(0,2));return"".concat(n,".").concat(a.toString().padStart(2,0))}},53:(e,t,r)=>{function n(e){var t,r,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,r=0,a="";r{function n(e){var t,a=document.getElementById("gui-canvas"),n=JSON.parse(e.user_map),r=(t=n.user_map,decodeURIComponent(escape(t))),s=n.shape;""!=r&&s instanceof Array&&(a.src="data:user_map/jpeg;base64,"+r,a.width=s[1],a.height=s[0])}a.r(t),a.d(t,{addToPath:()=>s,drawImage:()=>n,updatePath:()=>r}),new Image;var r=function(e,t,a,n){for(var r="M ",s=0;s0&&t(r)},s=function(e,t,a){a.includes([e,t])||a.push([e,t])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDM0NS5kNmIyMzZjZS5qcyIsIm1hcHBpbmdzIjoiZ0hBT08sU0FBU0EsRUFBVUMsR0FDeEIsSUFHcUJDLEVBSGpCQyxFQUFTQyxTQUFTQyxlQUFlLGNBUWpDQyxFQUFhQyxLQUFLQyxNQUFNUCxFQUFLUSxVQUMvQkMsR0FObUJSLEVBTUVJLEVBQVdHLFNBTHZCRSxtQkFBbUJDLE9BQU9WLEtBTW5DVyxFQUFRUCxFQUFXTyxNQUVQLElBQVZILEdBQWdCRyxhQUFpQkMsUUFDbkNYLEVBQU9ZLElBQU0sNkJBQStCTCxFQUM1Q1AsRUFBT2EsTUFBUUgsRUFBTSxHQUNyQlYsRUFBT2MsT0FBU0osRUFBTSxHQUUxQixDLGlFQXBCWSxJQUFJSyxNQXNCVCxJQUFNQyxFQUFhLFNBQUNDLEVBQU9DLEVBQWlCSixFQUFRRCxHQUd6RCxJQUZBLElBQUlNLEVBQVUsS0FFTEMsRUFBUSxFQUFHQSxFQUFRSCxFQUFNSSxPQUFRRCxJQUFTLENBQ2pELElBQU1FLEVBQVVMLEVBQU1HLEdBQ2xCRyxFQUFPRCxFQUFRLEdBQUtSLEVBQ3BCVSxFQUFPRixFQUFRLEdBQUtULEVBQ1YsSUFBVk8sSUFDRkQsR0FBV0ssRUFBS0MsV0FBWSxJQUFNRixFQUFJRSxZQUV4Q04sR0FBVyxNQUFRSyxFQUFLQyxXQUFhLElBQU1GLEVBQUlFLFVBQ2pELENBRUlSLEVBQU1JLE9BQVMsR0FDakJILEVBQWdCQyxFQUVwQixFQUVhTyxFQUFZLFNBQUNDLEVBQUdDLEVBQUdYLEdBQ3pCQSxFQUFNWSxTQUFTLENBQUNGLEVBQUdDLEtBQ3RCWCxFQUFNYSxLQUFLLENBQUNILEVBQUdDLEdBRW5CLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9sYXNlcl9tYXBwaW5nL3JlYWN0LWNvbXBvbmVudHMvaGVscGVycy9zaG93SW1hZ2VWaXN1YWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7XHJcbn1cclxuXHJcbmxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZShkYXRhKSB7XHJcbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpLWNhbnZhc1wiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLnVzZXJfbWFwKSxcclxuICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEudXNlcl9tYXApLFxyXG4gICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTp1c2VyX21hcC9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHVwZGF0ZVBhdGggPSAodHJhaWwsIHNldFBhdGhDYWxsYmFjaywgaGVpZ2h0LCB3aWR0aCkgPT4ge1xyXG4gIHZhciBuZXdQYXRoID0gXCJNIFwiO1xyXG5cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhaWwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdHJhaWxbaW5kZXhdO1xyXG4gICAgdmFyIHRvcCAgPSBlbGVtZW50WzBdICogaGVpZ2h0O1xyXG4gICAgdmFyIGxlZnQgPSBlbGVtZW50WzFdICogd2lkdGg7XHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgbmV3UGF0aCArPSBsZWZ0LnRvU3RyaW5nKCkrIFwiLFwiICsgdG9wLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBuZXdQYXRoICs9IFwiIEwgXCIgKyBsZWZ0LnRvU3RyaW5nKCkgKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRyYWlsLmxlbmd0aCA+IDApIHtcclxuICAgIHNldFBhdGhDYWxsYmFjayhuZXdQYXRoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFRvUGF0aCA9ICh4LCB5LCB0cmFpbCkgPT4ge1xyXG4gIGlmICghdHJhaWwuaW5jbHVkZXMoW3gsIHldKSkge1xyXG4gICAgdHJhaWwucHVzaChbeCwgeV0pO1xyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOlsiZHJhd0ltYWdlIiwiZGF0YSIsInMiLCJjYW52YXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsInVzZXJfbWFwIiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJBcnJheSIsInNyYyIsIndpZHRoIiwiaGVpZ2h0IiwiSW1hZ2UiLCJ1cGRhdGVQYXRoIiwidHJhaWwiLCJzZXRQYXRoQ2FsbGJhY2siLCJuZXdQYXRoIiwiaW5kZXgiLCJsZW5ndGgiLCJlbGVtZW50IiwidG9wIiwibGVmdCIsInRvU3RyaW5nIiwiYWRkVG9QYXRoIiwieCIsInkiLCJpbmNsdWRlcyIsInB1c2giXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4363.53fc5a8b.js b/react_frontend/static/react_frontend/js/4363.53fc5a8b.js new file mode 100644 index 000000000..902a4533b --- /dev/null +++ b/react_frontend/static/react_frontend/js/4363.53fc5a8b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4363],{6744:(e,a,t)=>{function n(e){return decodeURIComponent(escape(e))}t.r(a),t.d(a,{drawImage:()=>o,drawLeftImage:()=>d});var i=new Image,r=new Image;function o(e){var a=document.getElementById("gui_canvas_right"),t=a.getContext("2d");function r(){window.requestAnimationFrame(r),t.drawImage(i,0,0)}i.onload=function(){r()};var o=JSON.parse(e.image),d=n(o.image),g=o.shape;""!=d&&(i.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}function d(e){var a=document.getElementById("gui_canvas_left"),t=a.getContext("2d");function i(){window.requestAnimationFrame(i),t.drawImage(r,0,0)}r.onload=function(){i()};var o=JSON.parse(e.image_left),d=n(o.image_left),g=o.shape;""!=d&&(r.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDM2My5kZDFhZDhlNy5qcyIsIm1hcHBpbmdzIjoiZ0hBQ0EsU0FBU0EsRUFBWUMsR0FDakIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNyQyxDLG9EQUVBLElBQUlHLEVBQVEsSUFBSUMsTUFDWkMsRUFBYSxJQUFJRCxNQUVkLFNBQVNFLEVBQVdDLEdBQ3ZCLElBQUlDLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0xDLE9BQU9DLHNCQUFzQkYsR0FDN0JGLEVBQVFMLFVBQVVILEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNYSxPQUFTLFdBQ1hILEdBQ0osRUFTQSxJQUFJSSxFQUFhQyxLQUFLQyxNQUFNWixFQUFLSixPQUM3QmlCLEVBQVNyQixFQUFZa0IsRUFBV2QsT0FDaENrQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NqQixFQUFNbUIsSUFBTSwwQkFBNEJGLEVBQ3hDWixFQUFPZSxNQUFRRixFQUFNLEdBQ3JCYixFQUFPZ0IsT0FBU0gsRUFBTSxHQUU5QixDQUVPLFNBQVNJLEVBQWVsQixHQUMzQixJQUFJbUIsRUFBY2pCLFNBQVNDLGVBQWUsbUJBQzFDaUIsRUFBZUQsRUFBWWQsV0FBVyxNQVF0QyxTQUFTZ0IsSUFDTGQsT0FBT0Msc0JBQXNCYSxHQUM3QkQsRUFBYXJCLFVBQVVELEVBQVksRUFBRyxFQUMxQyxDQVJBQSxFQUFXVyxPQUFTLFdBQ2hCWSxHQUNKLEVBU0EsSUFBSVgsRUFBYUMsS0FBS0MsTUFBTVosRUFBS0YsWUFDN0JlLEVBQVNyQixFQUFZa0IsRUFBV1osWUFDaENnQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NmLEVBQVdpQixJQUFNLDBCQUE0QkYsRUFDN0NNLEVBQVlILE1BQVFGLEVBQU0sR0FDMUJLLEVBQVlGLE9BQVNILEVBQU0sR0FFbkMsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhYnlyaW50aF9lc2NhcGVfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc0xhYnlyaW50aEVzY2FwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iXSwibmFtZXMiOlsiZGVjb2RlX3V0ZjgiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwiaW1hZ2UiLCJJbWFnZSIsImltYWdlX2xlZnQiLCJkcmF3SW1hZ2UiLCJkYXRhIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwidXBkYXRlX2ltYWdlIiwid2luZG93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib25sb2FkIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsInNvdXJjZSIsInNoYXBlIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiLCJkcmF3TGVmdEltYWdlIiwiY2FudmFzX2xlZnQiLCJjb250ZXh0X2xlZnQiLCJ1cGRhdGVfbGVmdF9pbWFnZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4399.11b72ac2.js b/react_frontend/static/react_frontend/js/4399.11b72ac2.js new file mode 100644 index 000000000..a446848b3 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4399.11b72ac2.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4399],{3034:(t,e,n)=>{n.d(e,{A:()=>r});const r=n(1547).A},6852:(t,e,n)=>{n.d(e,{A:()=>r});const r=n(1523).A},1544:(t,e,n)=>{n.d(e,{A:()=>d});var r=n(6540);let o,c=!0,i=!1;const a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(t){t.metaKey||t.altKey||t.ctrlKey||(c=!0)}function u(){c=!1}function l(){"hidden"===this.visibilityState&&i&&(c=!0)}const d=function(){const t=r.useCallback((t=>{var e;null!=t&&((e=t.ownerDocument).addEventListener("keydown",s,!0),e.addEventListener("mousedown",u,!0),e.addEventListener("pointerdown",u,!0),e.addEventListener("touchstart",u,!0),e.addEventListener("visibilitychange",l,!0))}),[]),e=r.useRef(!1);return{isFocusVisibleRef:e,onFocus:function(t){return!!function(t){const{target:e}=t;try{return e.matches(":focus-visible")}catch(t){}return c||function(t){const{type:e,tagName:n}=t;return!("INPUT"!==n||!a[e]||t.readOnly)||"TEXTAREA"===n&&!t.readOnly||!!t.isContentEditable}(e)}(t)&&(e.current=!0,!0)},onBlur:function(){return!!e.current&&(i=!0,window.clearTimeout(o),o=window.setTimeout((()=>{i=!1}),100),e.current=!1,!0)},ref:t}}},989:(t,e,n)=>{function r(t,e){"function"==typeof t?t(e):t&&(t.current=e)}n.d(e,{A:()=>r})},1529:(t,e,n)=>{n.d(e,{A:()=>o});var r=n(6540);const o="undefined"!=typeof window?r.useLayoutEffect:r.useEffect},1547:(t,e,n)=>{n.d(e,{A:()=>c});var r=n(6540),o=n(1529);const c=function(t){const e=r.useRef(t);return(0,o.A)((()=>{e.current=t})),r.useCallback(((...t)=>(0,e.current)(...t)),[])}},1523:(t,e,n)=>{n.d(e,{A:()=>c});var r=n(6540),o=n(989);function c(...t){return r.useMemo((()=>t.every((t=>null==t))?null:e=>{t.forEach((t=>{(0,o.A)(t,e)}))}),t)}},2401:(t,e,n)=>{n.r(e),n.d(e,{default:()=>u});var r=n(6540),o=n(7839),c=n(4719),i=n(4073),a=n(4848);function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n{n.d(e,{A:()=>r});const r=n(6540).createContext(null)},5540:(t,e,n)=>{function r(t,e){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},r(t,e)}function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,r(t,e)}n.d(e,{A:()=>o})}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QXZCQSxFQUFRQyxLQUFLQyxPQUNmTCxHQUFzQixFQUUxQixFQU1BLE9BTEFqQixPQUFPdUIsMkJBQTJCQyxhQUFhQyxVQUM3QyxDQUFDekIsT0FBT3VCLDJCQUEyQkMsYUFBYUUsT0FBT0MsZUFDdkRSLEdBR0ssV0FDTG5CLE9BQU91QiwyQkFBMkJDLGFBQWFJLFlBQzdDLENBQUM1QixPQUFPdUIsMkJBQTJCQyxhQUFhRSxPQUFPQyxlQUN2RFIsRUFFSixDQUNGLEdBQUcsS0FHRFUsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsRUFBTyxDQUFDQyxNQUFNLG1CQUFrQkMsVUFDL0JDLEVBQUFBLEVBQUFBLE1BQUNDLEVBQUFBLEVBQUcsQ0FBQ0MsVUFBV25CLEVBQXFCLFFBQVUsVUFBVWdCLFNBQUEsRUFDdkRILEVBQUFBLEVBQUFBLEtBQUEsS0FBR00sVUFBVSxRQUFPSCxTQUFDLFNBQ3JCSCxFQUFBQSxFQUFBQSxLQUFDTyxFQUFBQSxFQUFVLENBQUNDLEdBQUksQ0FBRUMsU0FBVSxVQUFZSCxVQUFVLE9BQU1ILFNBQ3JEaEIsRUFBcUIsUUFBVSxnQkFLMUMsQyxrQ0NuQ0EsUSxRQUFlLGNBQW9CLEssaUJDRG5DLFNBQVN1QixFQUFnQkMsRUFBR0MsR0FDMUIsT0FBT0YsRUFBa0JHLE9BQU9DLGVBQWlCRCxPQUFPQyxlQUFlQyxPQUFTLFNBQVVKLEVBQUdDLEdBQzNGLE9BQU9ELEVBQUVLLFVBQVlKLEVBQUdELENBQzFCLEVBQUdELEVBQWdCQyxFQUFHQyxFQUN4QixDQ0hBLFNBQVNLLEVBQWVOLEVBQUdPLEdBQ3pCUCxFQUFFUSxVQUFZTixPQUFPTyxPQUFPRixFQUFFQyxXQUFZUixFQUFFUSxVQUFVRSxZQUFjVixFQUFHLEVBQWVBLEVBQUdPLEVBQzNGLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUV2ZW50Q2FsbGJhY2suanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VGb3JrUmVmLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlzRm9jdXNWaXNpYmxlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlSXNGb2N1c1Zpc2libGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vc2V0UmVmLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUVuaGFuY2VkRWZmZWN0L3VzZUVuaGFuY2VkRWZmZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUV2ZW50Q2FsbGJhY2svdXNlRXZlbnRDYWxsYmFjay5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VGb3JrUmVmL3VzZUZvcmtSZWYuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy92aXN1YWxpemVycy9WaXN1YWxpemF0aW9uSW5kaWNhdG9yLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUV2ZW50Q2FsbGJhY2sgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRXZlbnRDYWxsYmFjazsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUZvcmtSZWYgYXMgdXNlRm9ya1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ya1JlZjsiLCIndXNlIGNsaWVudCc7XG5cbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL2ZvY3VzLXZpc2libGUvYmxvYi92NC4xLjUvc3JjL2ZvY3VzLXZpc2libGUuanNcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBoYWRLZXlib2FyZEV2ZW50ID0gdHJ1ZTtcbmxldCBoYWRGb2N1c1Zpc2libGVSZWNlbnRseSA9IGZhbHNlO1xubGV0IGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dDtcbmNvbnN0IGlucHV0VHlwZXNXaGl0ZWxpc3QgPSB7XG4gIHRleHQ6IHRydWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdXJsOiB0cnVlLFxuICB0ZWw6IHRydWUsXG4gIGVtYWlsOiB0cnVlLFxuICBwYXNzd29yZDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBkYXRlOiB0cnVlLFxuICBtb250aDogdHJ1ZSxcbiAgd2VlazogdHJ1ZSxcbiAgdGltZTogdHJ1ZSxcbiAgZGF0ZXRpbWU6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWVcbn07XG5cbi8qKlxuICogQ29tcHV0ZXMgd2hldGhlciB0aGUgZ2l2ZW4gZWxlbWVudCBzaG91bGQgYXV0b21hdGljYWxseSB0cmlnZ2VyIHRoZVxuICogYGZvY3VzLXZpc2libGVgIGNsYXNzIGJlaW5nIGFkZGVkLCBpLmUuIHdoZXRoZXIgaXQgc2hvdWxkIGFsd2F5cyBtYXRjaFxuICogYDpmb2N1cy12aXNpYmxlYCB3aGVuIGZvY3VzZWQuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eShub2RlKSB7XG4gIGNvbnN0IHtcbiAgICB0eXBlLFxuICAgIHRhZ05hbWVcbiAgfSA9IG5vZGU7XG4gIGlmICh0YWdOYW1lID09PSAnSU5QVVQnICYmIGlucHV0VHlwZXNXaGl0ZWxpc3RbdHlwZV0gJiYgIW5vZGUucmVhZE9ubHkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyAmJiAhbm9kZS5yZWFkT25seSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChub2RlLmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEtlZXAgdHJhY2sgb2Ygb3VyIGtleWJvYXJkIG1vZGFsaXR5IHN0YXRlIHdpdGggYGhhZEtleWJvYXJkRXZlbnRgLlxuICogSWYgdGhlIG1vc3QgcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gd2FzIHZpYSB0aGUga2V5Ym9hcmQ7XG4gKiBhbmQgdGhlIGtleSBwcmVzcyBkaWQgbm90IGluY2x1ZGUgYSBtZXRhLCBhbHQvb3B0aW9uLCBvciBjb250cm9sIGtleTtcbiAqIHRoZW4gdGhlIG1vZGFsaXR5IGlzIGtleWJvYXJkLiBPdGhlcndpc2UsIHRoZSBtb2RhbGl0eSBpcyBub3Qga2V5Ym9hcmQuXG4gKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50XG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaGFkS2V5Ym9hcmRFdmVudCA9IHRydWU7XG59XG5cbi8qKlxuICogSWYgYXQgYW55IHBvaW50IGEgdXNlciBjbGlja3Mgd2l0aCBhIHBvaW50aW5nIGRldmljZSwgZW5zdXJlIHRoYXQgd2UgY2hhbmdlXG4gKiB0aGUgbW9kYWxpdHkgYXdheSBmcm9tIGtleWJvYXJkLlxuICogVGhpcyBhdm9pZHMgdGhlIHNpdHVhdGlvbiB3aGVyZSBhIHVzZXIgcHJlc3NlcyBhIGtleSBvbiBhbiBhbHJlYWR5IGZvY3VzZWRcbiAqIGVsZW1lbnQsIGFuZCB0aGVuIGNsaWNrcyBvbiBhIGRpZmZlcmVudCBlbGVtZW50LCBmb2N1c2luZyBpdCB3aXRoIGFcbiAqIHBvaW50aW5nIGRldmljZSwgd2hpbGUgd2Ugc3RpbGwgdGhpbmsgd2UncmUgaW4ga2V5Ym9hcmQgbW9kYWxpdHkuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJEb3duKCkge1xuICBoYWRLZXlib2FyZEV2ZW50ID0gZmFsc2U7XG59XG5mdW5jdGlvbiBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCkge1xuICBpZiAodGhpcy52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgLy8gSWYgdGhlIHRhYiBiZWNvbWVzIGFjdGl2ZSBhZ2FpbiwgdGhlIGJyb3dzZXIgd2lsbCBoYW5kbGUgY2FsbGluZyBmb2N1c1xuICAgIC8vIG9uIHRoZSBlbGVtZW50IChTYWZhcmkgYWN0dWFsbHkgY2FsbHMgaXQgdHdpY2UpLlxuICAgIC8vIElmIHRoaXMgdGFiIGNoYW5nZSBjYXVzZWQgYSBibHVyIG9uIGFuIGVsZW1lbnQgd2l0aCBmb2N1cy12aXNpYmxlLFxuICAgIC8vIHJlLWFwcGx5IHRoZSBjbGFzcyB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzIGJhY2sgdG8gdGhlIHRhYi5cbiAgICBpZiAoaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkpIHtcbiAgICAgIGhhZEtleWJvYXJkRXZlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlcGFyZShkb2MpIHtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZWFyZG93bihkb2MpIHtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNWaXNpYmxlKGV2ZW50KSB7XG4gIGNvbnN0IHtcbiAgICB0YXJnZXRcbiAgfSA9IGV2ZW50O1xuICB0cnkge1xuICAgIHJldHVybiB0YXJnZXQubWF0Y2hlcygnOmZvY3VzLXZpc2libGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBCcm93c2VycyBub3QgaW1wbGVtZW50aW5nIDpmb2N1cy12aXNpYmxlIHdpbGwgdGhyb3cgYSBTeW50YXhFcnJvci5cbiAgICAvLyBXZSB1c2Ugb3VyIG93biBoZXVyaXN0aWMgZm9yIHRob3NlIGJyb3dzZXJzLlxuICAgIC8vIFJldGhyb3cgbWlnaHQgYmUgYmV0dGVyIGlmIGl0J3Mgbm90IHRoZSBleHBlY3RlZCBlcnJvciBidXQgZG8gd2UgcmVhbGx5XG4gICAgLy8gd2FudCB0byBjcmFzaCBpZiBmb2N1cy12aXNpYmxlIG1hbGZ1bmN0aW9uZWQ/XG4gIH1cblxuICAvLyBObyBuZWVkIGZvciB2YWxpZEZvY3VzVGFyZ2V0IGNoZWNrLiBUaGUgdXNlciBkb2VzIHRoYXQgYnkgYXR0YWNoaW5nIGl0IHRvXG4gIC8vIGZvY3VzYWJsZSBldmVudHMgb25seS5cbiAgcmV0dXJuIGhhZEtleWJvYXJkRXZlbnQgfHwgZm9jdXNUcmlnZ2Vyc0tleWJvYXJkTW9kYWxpdHkodGFyZ2V0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUlzRm9jdXNWaXNpYmxlKCkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPSBudWxsKSB7XG4gICAgICBwcmVwYXJlKG5vZGUub3duZXJEb2N1bWVudCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IGlzRm9jdXNWaXNpYmxlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcblxuICAvKipcbiAgICogU2hvdWxkIGJlIGNhbGxlZCBpZiBhIGJsdXIgZXZlbnQgaXMgZmlyZWRcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUJsdXJWaXNpYmxlKCkge1xuICAgIC8vIGNoZWNraW5nIGFnYWluc3QgcG90ZW50aWFsIHN0YXRlIHZhcmlhYmxlIGRvZXMgbm90IHN1ZmZpY2UgaWYgd2UgZm9jdXMgYW5kIGJsdXIgc3luY2hyb25vdXNseS5cbiAgICAvLyBSZWFjdCB3b3VsZG4ndCBoYXZlIHRpbWUgdG8gdHJpZ2dlciBhIHJlLXJlbmRlciBzbyBgZm9jdXNWaXNpYmxlYCB3b3VsZCBiZSBzdGFsZS5cbiAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGFkanVzdCBgaXNGb2N1c1Zpc2libGUoZXZlbnQpYCB0byBsb29rIGF0IGByZWxhdGVkVGFyZ2V0YCBmb3IgYmx1ciBldmVudHMuXG4gICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsgaW4gSUUxMSBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zNzUxXG4gICAgLy8gVE9ETzogY2hlY2sgYWdhaW4gaWYgUmVhY3QgcmVsZWFzZXMgdGhlaXIgaW50ZXJuYWwgY2hhbmdlcyB0byBmb2N1cyBldmVudCBoYW5kbGluZyAoaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMTkxODYpLlxuICAgIGlmIChpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBUbyBkZXRlY3QgYSB0YWIvd2luZG93IHN3aXRjaCwgd2UgbG9vayBmb3IgYSBibHVyIGV2ZW50IGZvbGxvd2VkXG4gICAgICAvLyByYXBpZGx5IGJ5IGEgdmlzaWJpbGl0eSBjaGFuZ2UuXG4gICAgICAvLyBJZiB3ZSBkb24ndCBzZWUgYSB2aXNpYmlsaXR5IGNoYW5nZSB3aXRoaW4gMTAwbXMsIGl0J3MgcHJvYmFibHkgYVxuICAgICAgLy8gcmVndWxhciBmb2N1cyBjaGFuZ2UuXG4gICAgICBoYWRGb2N1c1Zpc2libGVSZWNlbnRseSA9IHRydWU7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dCk7XG4gICAgICBoYWRGb2N1c1Zpc2libGVSZWNlbnRseVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gZmFsc2U7XG4gICAgICB9LCAxMDApO1xuICAgICAgaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgY2FsbGVkIGlmIGEgYmx1ciBldmVudCBpcyBmaXJlZFxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlRm9jdXNWaXNpYmxlKGV2ZW50KSB7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlKGV2ZW50KSkge1xuICAgICAgaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNGb2N1c1Zpc2libGVSZWYsXG4gICAgb25Gb2N1czogaGFuZGxlRm9jdXNWaXNpYmxlLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1clZpc2libGUsXG4gICAgcmVmXG4gIH07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VJc0ZvY3VzVmlzaWJsZSBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlSXNGb2N1c1Zpc2libGU7IiwiLyoqXG4gKiBUT0RPIHY1OiBjb25zaWRlciBtYWtpbmcgaXQgcHJpdmF0ZVxuICpcbiAqIHBhc3NlcyB7dmFsdWV9IHRvIHtyZWZ9XG4gKlxuICogV0FSTklORzogQmUgc3VyZSB0byBvbmx5IGNhbGwgdGhpcyBpbnNpZGUgYSBjYWxsYmFjayB0aGF0IGlzIHBhc3NlZCBhcyBhIHJlZi5cbiAqIE90aGVyd2lzZSwgbWFrZSBzdXJlIHRvIGNsZWFudXAgdGhlIHByZXZpb3VzIHtyZWZ9IGlmIGl0IGNoYW5nZXMuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvMTM1MzlcbiAqXG4gKiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZSByZWYgb2YgYW4gaW5uZXIgY29tcG9uZW50IHRvIHRoZSBwdWJsaWMgQVBJXG4gKiB3aGlsZSBzdGlsbCB1c2luZyBpdCBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSByZWYgQSByZWYgY2FsbGJhY2sgb3IgcmVmIG9iamVjdC4gSWYgYW55dGhpbmcgZmFsc3ksIHRoaXMgaXMgYSBuby1vcC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0UmVmKHJlZiwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYodmFsdWUpO1xuICB9IGVsc2UgaWYgKHJlZikge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH1cbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IHVzZUVuaGFuY2VkRWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiBSZWFjdC51c2VFZmZlY3Q7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFbmhhbmNlZEVmZmVjdCBmcm9tICcuLi91c2VFbmhhbmNlZEVmZmVjdCc7XG5cbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNDA5OSNpc3N1ZWNvbW1lbnQtNDQwMDEzODkyXG4gKi9cblxuZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoZm4pO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBmbjtcbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjaygoLi4uYXJncykgPT5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBoaWRlIGB0aGlzYFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLWNvbW1hLW9wZXJhdG9yXG4gICgwLCByZWYuY3VycmVudCkoLi4uYXJncyksIFtdKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZUV2ZW50Q2FsbGJhY2s7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc2V0UmVmIGZyb20gJy4uL3NldFJlZic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VGb3JrUmVmKC4uLnJlZnMpIHtcbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gaWYgdGhlIHJlZnMgcGFzc2VkIHRvIHRoaXMgaG9vayBjaGFuZ2UgYW5kIGFyZSBhbGwgZGVmaW5lZC5cbiAgICogVGhpcyBtZWFucyByZWFjdCB3aWxsIGNhbGwgdGhlIG9sZCBmb3JrUmVmIHdpdGggYG51bGxgIGFuZCB0aGUgbmV3IGZvcmtSZWZcbiAgICogd2l0aCB0aGUgcmVmLiBDbGVhbnVwIG5hdHVyYWxseSBlbWVyZ2VzIGZyb20gdGhpcyBiZWhhdmlvci5cbiAgICovXG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmcy5ldmVyeShyZWYgPT4gcmVmID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlID0+IHtcbiAgICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBzZXRSZWYocmVmLCBpbnN0YW5jZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgcmVmcyk7XG59IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL0luZGljYXRvci5jc3NcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFZpc3VhbGl6YXRpb25JbmRpY2F0b3IocHJvcHMpIHtcclxuICBjb25zdCBbdmlzdWFsaXphdGlvblJlYWR5LCBzZXRWaXN1YWxpemF0aW9uUmVhZHldID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZiAobWVzc2FnZS5kYXRhLnN0YXRlID09PSBcInRvb2xzX3JlYWR5XCIpIHtcclxuICAgICAgICBzZXRWaXN1YWxpemF0aW9uUmVhZHkodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8VG9vbHRpcCB0aXRsZT1cIlJvYm90aWNzIEJhY2tlbmRcIj5cclxuICAgICAgPEJveCBjbGFzc05hbWU9e3Zpc3VhbGl6YXRpb25SZWFkeSA/IFwicmVhZHlcIiA6IFwid2FpdGluZ1wifT5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0aXRsZVwiPkdVSTwvcD5cclxuICAgICAgICA8VHlwb2dyYXBoeSBzeD17eyBmb250U2l6ZTogXCIwLjhyZW1cIiB9fSBjbGFzc05hbWU9XCJ3b3JkXCI+XHJcbiAgICAgICAgICB7dmlzdWFsaXphdGlvblJlYWR5ID8gXCJyZWFkeVwiIDogXCJ3YWl0aW5nXCJ9XHJcbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICA8L0JveD5cclxuICAgIDwvVG9vbHRpcD5cclxuICApO1xyXG59XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBSZWFjdC5jcmVhdGVDb250ZXh0KG51bGwpOyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfc2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2UodCwgbykge1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoby5wcm90b3R5cGUpLCB0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHQsIHNldFByb3RvdHlwZU9mKHQsIG8pO1xufVxuZXhwb3J0IHsgX2luaGVyaXRzTG9vc2UgYXMgZGVmYXVsdCB9OyJdLCJuYW1lcyI6WyJoYWRGb2N1c1Zpc2libGVSZWNlbnRseVRpbWVvdXQiLCJoYWRLZXlib2FyZEV2ZW50IiwiaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkiLCJpbnB1dFR5cGVzV2hpdGVsaXN0IiwidGV4dCIsInNlYXJjaCIsInVybCIsInRlbCIsImVtYWlsIiwicGFzc3dvcmQiLCJudW1iZXIiLCJkYXRlIiwibW9udGgiLCJ3ZWVrIiwidGltZSIsImRhdGV0aW1lIiwiaGFuZGxlS2V5RG93biIsImV2ZW50IiwibWV0YUtleSIsImFsdEtleSIsImN0cmxLZXkiLCJoYW5kbGVQb2ludGVyRG93biIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJ0aGlzIiwidmlzaWJpbGl0eVN0YXRlIiwicmVmIiwibm9kZSIsImRvYyIsIm93bmVyRG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwiaXNGb2N1c1Zpc2libGVSZWYiLCJvbkZvY3VzIiwidGFyZ2V0IiwibWF0Y2hlcyIsImVycm9yIiwidHlwZSIsInRhZ05hbWUiLCJyZWFkT25seSIsImlzQ29udGVudEVkaXRhYmxlIiwiZm9jdXNUcmlnZ2Vyc0tleWJvYXJkTW9kYWxpdHkiLCJpc0ZvY3VzVmlzaWJsZSIsImN1cnJlbnQiLCJvbkJsdXIiLCJ3aW5kb3ciLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0Iiwic2V0UmVmIiwidmFsdWUiLCJmbiIsImFyZ3MiLCJ1c2VGb3JrUmVmIiwicmVmcyIsImV2ZXJ5IiwiaW5zdGFuY2UiLCJmb3JFYWNoIiwiVmlzdWFsaXphdGlvbkluZGljYXRvciIsInByb3BzIiwiX3VzZVN0YXRlMiIsInVzZVN0YXRlIiwidmlzdWFsaXphdGlvblJlYWR5Iiwic2V0VmlzdWFsaXphdGlvblJlYWR5IiwidXNlRWZmZWN0IiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInN0YXRlIiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJTVEFURV9DSEFOR0VEIiwidW5zdWJzY3JpYmUiLCJfanN4IiwiVG9vbHRpcCIsInRpdGxlIiwiY2hpbGRyZW4iLCJfanN4cyIsIkJveCIsImNsYXNzTmFtZSIsIlR5cG9ncmFwaHkiLCJzeCIsImZvbnRTaXplIiwiX3NldFByb3RvdHlwZU9mIiwidCIsImUiLCJPYmplY3QiLCJzZXRQcm90b3R5cGVPZiIsImJpbmQiLCJfX3Byb3RvX18iLCJfaW5oZXJpdHNMb29zZSIsIm8iLCJwcm90b3R5cGUiLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4404.8a39fd42.js b/react_frontend/static/react_frontend/js/4404.8a39fd42.js new file mode 100644 index 000000000..3afc96265 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4404.8a39fd42.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4404,718,2725],{9596:(e,t,n)=>{"use strict";n.r(t),n.d(t,{PlayCar:()=>s});var r=n(1224),o=n(6540),a=n(4848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";n.r(t),n.d(t,{ResetCar:()=>s});var r=n(1224),o=n(6540),a=n(4848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";n.r(t),n.d(t,{default:()=>d});var r=n(6540),o=n(5556),a=n.n(o),i=n(2725),s=n(9596),c=n(718),u=n(9869),l=n(4848);function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";n.r(t),n.d(t,{StopCar:()=>s});var r=n(1224),o=n(6540),a=n(4848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";function r(e){return decodeURIComponent(escape(e))}n.r(t),n.d(t,{drawImage:()=>i,drawLeftImage:()=>s});var o=new Image,a=new Image;function i(e){var t=document.getElementById("gui_canvas_right"),n=t.getContext("2d");function a(){window.requestAnimationFrame(a),n.drawImage(o,0,0)}o.onload=function(){a()};var i=JSON.parse(e.image),s=r(i.image),c=i.shape;""!=s&&(o.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}function s(e){var t=document.getElementById("gui_canvas_left"),n=t.getContext("2d");function o(){window.requestAnimationFrame(o),n.drawImage(a,0,0)}a.onload=function(){o()};var i=JSON.parse(e.image_left),s=r(i.image_left),c=i.shape;""!=s&&(a.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMxQkUsRUFBWXRCLE9BQVNvQixFQUFNLEdBRW5DLEMsOEJDbkRBLElBQUlLLEVBQXVCLEVBQVEsTUFFbkMsU0FBU0MsSUFBaUIsQ0FDMUIsU0FBU0MsSUFBMEIsQ0FDbkNBLEVBQXVCQyxrQkFBb0JGLEVBRTNDRyxFQUFPQyxRQUFVLFdBQ2YsU0FBU0MsRUFBS3BELEVBQU9xRCxFQUFVQyxFQUFlQyxFQUFVQyxFQUFjQyxHQUNwRSxHQUFJQSxJQUFXWCxFQUFmLENBSUEsSUFBSVksRUFBTSxJQUFJQyxNQUNaLG1MQUtGLE1BREFELEVBQUlFLEtBQU8sc0JBQ0xGLENBUE4sQ0FRRixDQUVBLFNBQVNHLElBQ1AsT0FBT1QsQ0FDVCxDQUhBQSxFQUFLVSxXQUFhVixFQU1sQixJQUFJVyxFQUFpQixDQUNuQkMsTUFBT1osRUFDUGEsT0FBUWIsRUFDUmMsS0FBTWQsRUFDTmUsS0FBTWYsRUFDTmdCLE9BQVFoQixFQUNSaUIsT0FBUWpCLEVBQ1JrQixPQUFRbEIsRUFDUm1CLE9BQVFuQixFQUVSb0IsSUFBS3BCLEVBQ0xxQixRQUFTWixFQUNUYSxRQUFTdEIsRUFDVHVCLFlBQWF2QixFQUNid0IsV0FBWWYsRUFDWmdCLEtBQU16QixFQUNOMEIsU0FBVWpCLEVBQ1ZrQixNQUFPbEIsRUFDUG1CLFVBQVduQixFQUNYcEIsTUFBT29CLEVBQ1BvQixNQUFPcEIsRUFFUHFCLGVBQWdCbEMsRUFDaEJDLGtCQUFtQkYsR0FLckIsT0FGQWdCLEVBQWV0QyxVQUFZc0MsRUFFcEJBLENBQ1QsQyxpQkMvQ0ViLEVBQU9DLFFBQVUsRUFBUSxLQUFSLEUsd0JDTm5CRCxFQUFPQyxRQUZvQiw4QyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Zpc3VhbF9sYW5kZXJfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL1BsYXlDYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmlzdWFsX2xhbmRlcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvUmVzZXRDYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmlzdWFsX2xhbmRlcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNWaXN1YWxMYW5kZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmlzdWFsX2xhbmRlcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvU3RvcENhci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy92aXN1YWxfbGFuZGVyX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZXNWaXN1YWxMYW5kZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcclxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuXHJcbmV4cG9ydCBjb25zdCBQbGF5Q2FyID0gKCkgPT4ge1xyXG4gIGNvbnN0IFtkaXNhYmxlZCwgc2V0RGlzYWJsZWRdID0gdXNlU3RhdGUodHJ1ZSlcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCBzdGF0ZSA9IG1lc3NhZ2UuZGF0YS5zdGF0ZTtcclxuICAgICAgaWYgKHN0YXRlID09PSBcInJ1bm5pbmdcIiB8fCBzdGF0ZSA9PT0gXCJwYXVzZWRcIil7XHJcbiAgICAgICAgc2V0RGlzYWJsZWQoZmFsc2UpXHJcbiAgICAgIH1cclxuXHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuICAgIGNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXJcclxuICAgICAgICAgIC5zZW5kKFwiI2d1aVwiLCB7XHJcbiAgICAgICAgICAgIG1zZzogXCIjY2FyM1wiLFxyXG4gICAgICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxCdXR0b24gdmFyaWFudD1cIm91dGxpbmVkXCIgb25DbGljaz17aGFuZGxlQ2xpY2t9IHN4PXt7Y29sb3I6IFwiYmx1ZVwiLCBib3JkZXJDb2xvcjogXCJibHVlXCJ9fSBkaXNhYmxlZD17ZGlzYWJsZWR9PlBsYXkgQ2FyPC9CdXR0b24+XHJcbiAgICApXHJcbn0iLCJpbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcclxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuXHJcbmV4cG9ydCBjb25zdCBSZXNldENhciA9ICgpID0+IHtcclxuICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IHVzZVN0YXRlKHRydWUpXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSBtZXNzYWdlLmRhdGEuc3RhdGU7XHJcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJydW5uaW5nXCIgfHwgc3RhdGUgPT09IFwicGF1c2VkXCIpe1xyXG4gICAgICAgIHNldERpc2FibGVkKGZhbHNlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcclxuICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyXHJcbiAgICAgICAgICAuc2VuZChcIiNndWlcIiwge1xyXG4gICAgICAgICAgICBtc2c6IFwiI3JzdFwiLFxyXG4gICAgICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBvbkNsaWNrPXtoYW5kbGVDbGlja30gc3g9e3tjb2xvcjogXCJibHVlXCIsIGJvcmRlckNvbG9yOiBcImJsdWVcIn19IGRpc2FibGVkPXtkaXNhYmxlZH0+UmVzZXQgQ2FyPC9CdXR0b24+XHJcbiAgICApXHJcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgeyBkcmF3SW1hZ2UsIGRyYXdMZWZ0SW1hZ2V9IGZyb20gXCIuL2hlbHBlcnMvc2hvd0ltYWdlc1Zpc3VhbExhbmRlclwiO1xyXG5pbXBvcnQgeyBQbGF5Q2FyIH0gZnJvbSBcIi4vUGxheUNhclwiO1xyXG5pbXBvcnQgeyBTdG9wQ2FyIH0gZnJvbSBcIi4vU3RvcENhclwiO1xyXG5pbXBvcnQgeyBSZXNldENhciB9IGZyb20gXCIuL1Jlc2V0Q2FyXCI7XHJcblxyXG5cclxuZnVuY3Rpb24gU3BlY2lmaWNWaXN1YWxMYW5kZXIocHJvcHMpIHtcclxuICBjb25zdCBbaW1hZ2UsIHNldEltYWdlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gc3Vic2NyaWJpbmcgdG8gWyd1cGRhdGUnXSBldmVudHNcIik7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGlmKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2Upe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdpbWFnZScpXHJcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBKU09OLnBhcnNlKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2UpXHJcbiAgICAgICAgaWYoaW1hZ2UuaW1hZ2Upe1xyXG4gICAgICAgICAgZHJhd0ltYWdlKG1lc3NhZ2UuZGF0YS51cGRhdGUpXHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG4gICAgICBpZihtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlX2xlZnQpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdpbWFnZV9sZWZ0JylcclxuICAgICAgICBjb25zdCBpbWFnZSA9IEpTT04ucGFyc2UobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZV9sZWZ0KVxyXG4gICAgICAgIGlmKGltYWdlLmltYWdlX2xlZnQpe1xyXG4gICAgICAgICAgZHJhd0xlZnRJbWFnZShtZXNzYWdlLmRhdGEudXBkYXRlKVxyXG4gICAgICAgIH0gXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIFxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG5cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDw+ICAgICAgXHJcbiAgICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsIGdhcDogXCIxMHB4XCJ9fT5cclxuICAgICAgICA8UGxheUNhcj48L1BsYXlDYXI+XHJcbiAgICAgICAgPFN0b3BDYXI+PC9TdG9wQ2FyPlxyXG4gICAgICAgIDxSZXNldENhcj48L1Jlc2V0Q2FyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICBoZWlnaHQ6IFwiMTAwJVwifX0+ICAgICAgXHJcbiAgICAgIDxjYW52YXMgaWQ9XCJndWlfY2FudmFzX2xlZnRcIj48L2NhbnZhcz5cclxuICAgICAgPGNhbnZhcyBpZD1cImd1aV9jYW52YXNfcmlnaHRcIj48L2NhbnZhcz5cclxuICAgIDwvZGl2PlxyXG4gICAgPC8+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNWaXN1YWxMYW5kZXIucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY1Zpc3VhbExhbmRlclxyXG4iLCJpbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcclxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgU3RvcENhciA9ICgpID0+IHtcclxuICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IHVzZVN0YXRlKHRydWUpXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSBtZXNzYWdlLmRhdGEuc3RhdGU7XHJcbiAgICAgIGlmIChzdGF0ZSA9PT0gXCJydW5uaW5nXCIgfHwgc3RhdGUgPT09IFwicGF1c2VkXCIpe1xyXG4gICAgICAgIHNldERpc2FibGVkKGZhbHNlKVxyXG4gICAgICB9XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcbiAgICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcclxuICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyXHJcbiAgICAgICAgICAuc2VuZChcIiNndWlcIiwge1xyXG4gICAgICAgICAgICBtc2c6IFwiI3N0cFwiLFxyXG4gICAgICAgICAgfSlcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvbiB2YXJpYW50PVwib3V0bGluZWRcIiBvbkNsaWNrPXtoYW5kbGVDbGlja30gc3g9e3tjb2xvcjogXCJibHVlXCIsIGJvcmRlckNvbG9yOiBcImJsdWVcIn19IGRpc2FibGVkPXtkaXNhYmxlZH0+U3RvcCBDYXI8L0J1dHRvbj5cclxuICAgIClcclxufSIsIi8vIFRvIGRlY29kZSB0aGUgaW1hZ2Ugc3RyaW5nIHdlIHdpbGwgcmVjZWl2ZSBmcm9tIHNlcnZlclxyXG5mdW5jdGlvbiBkZWNvZGVfdXRmOChzKXtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKVxyXG59XHJcblxyXG5sZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxubGV0IGltYWdlX2xlZnQgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3SW1hZ2UgKGRhdGEpe1xyXG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKSxcclxuICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2ltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgZnVuY3Rpb24gdXBkYXRlX2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuICAgIFxyXG4gICAgaWYoc291cmNlICE9IFwiXCIpe1xyXG4gICAgICAgIGltYWdlLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICB9ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3TGVmdEltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXNfbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19sZWZ0XCIpLFxyXG4gICAgY29udGV4dF9sZWZ0ID0gY2FudmFzX2xlZnQuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlX2xlZnQub25sb2FkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICB1cGRhdGVfbGVmdF9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9sZWZ0X2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfbGVmdF9pbWFnZSk7XHJcbiAgICAgICAgY29udGV4dF9sZWZ0LmRyYXdJbWFnZShpbWFnZV9sZWZ0LCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZV9sZWZ0LnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXNfbGVmdC53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgIGNhbnZhc19sZWZ0LmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIl0sIm5hbWVzIjpbIlBsYXlDYXIiLCJfdXNlU3RhdGUyIiwidXNlU3RhdGUiLCJkaXNhYmxlZCIsInNldERpc2FibGVkIiwidXNlRWZmZWN0IiwiY2FsbGJhY2siLCJtZXNzYWdlIiwic3RhdGUiLCJkYXRhIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJTVEFURV9DSEFOR0VEIiwidW5zdWJzY3JpYmUiLCJfanN4IiwiQnV0dG9uIiwidmFyaWFudCIsIm9uQ2xpY2siLCJzZW5kIiwibXNnIiwic3giLCJjb2xvciIsImJvcmRlckNvbG9yIiwiY2hpbGRyZW4iLCJSZXNldENhciIsIlNwZWNpZmljVmlzdWFsTGFuZGVyIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiUmVhY3QiLCJjb25zb2xlIiwibG9nIiwidXBkYXRlIiwiaW1hZ2UiLCJKU09OIiwicGFyc2UiLCJkcmF3SW1hZ2UiLCJpbWFnZV9sZWZ0IiwiZHJhd0xlZnRJbWFnZSIsIlVQREFURSIsIl9qc3hzIiwiX0ZyYWdtZW50Iiwic3R5bGUiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJnYXAiLCJTdG9wQ2FyIiwid2lkdGgiLCJoZWlnaHQiLCJpZCIsInByb3BUeXBlcyIsImNpcmN1aXQiLCJQcm9wVHlwZXMiLCJkZWNvZGVfdXRmOCIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJJbWFnZSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsImltYWdlX2RhdGEiLCJzb3VyY2UiLCJzaGFwZSIsInNyYyIsImNhbnZhc19sZWZ0IiwiY29udGV4dF9sZWZ0IiwidXBkYXRlX2xlZnRfaW1hZ2UiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4411.38c0bb0b.js b/react_frontend/static/react_frontend/js/4411.38c0bb0b.js new file mode 100644 index 000000000..7fe6b7732 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4411.38c0bb0b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4411],{4411:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4471.2cc9991d.js b/react_frontend/static/react_frontend/js/4471.2cc9991d.js new file mode 100644 index 000000000..9bf38dedd --- /dev/null +++ b/react_frontend/static/react_frontend/js/4471.2cc9991d.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4471],{4471:(t,e,n)=>{n.r(e),n.d(e,{monacoEditorScroll:()=>o});var o=function(t){var e=t.editor;e.getDomNode().addEventListener("wheel",(function(t){var n=e.getOption(monaco.editor.EditorOption.fontSize);t.ctrlKey&&(t.preventDefault(),t.deltaY<0?e.updateOptions({fontSize:Math.min(100,n+1)}):e.updateOptions({fontSize:Math.max(10,n-1)}))}))}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDQ3MS41NDUyOTIyYi5qcyIsIm1hcHBpbmdzIjoieUpBQU8sSUFBTUEsRUFBcUIsU0FBSEMsR0FBbUIsSUFBYkMsRUFBTUQsRUFBTkMsT0FDbkJBLEVBQU9DLGFBQ2ZDLGlCQUFpQixTQUFTLFNBQUNDLEdBQ2pDLElBQU1DLEVBQWtCSixFQUFPSyxVQUM3QkMsT0FBT04sT0FBT08sYUFBYUMsVUFJekJMLEVBQU1NLFVBQ1JOLEVBQU1PLGlCQUVGUCxFQUFNUSxPQUFTLEVBQ2pCWCxFQUFPWSxjQUFjLENBQ25CSixTQUFVSyxLQUFLQyxJQUFJLElBQUtWLEVBQWtCLEtBRzVDSixFQUFPWSxjQUFjLENBQ25CSixTQUFVSyxLQUFLRSxJQUFJLEdBQUlYLEVBQWtCLEtBSWpELEdBQ0YsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2hlbHBlci9tb25hY29FZGl0b3JTY3JvbGwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IG1vbmFjb0VkaXRvclNjcm9sbCA9ICh7IGVkaXRvciB9KSA9PiB7XHJcbiAgY29uc3QgZG9tTm9kZSA9IGVkaXRvci5nZXREb21Ob2RlKCk7XHJcbiAgZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKFwid2hlZWxcIiwgKGV2ZW50KSA9PiB7XHJcbiAgICBjb25zdCBjdXJyZW50Rm9udFNpemUgPSBlZGl0b3IuZ2V0T3B0aW9uKFxyXG4gICAgICBtb25hY28uZWRpdG9yLkVkaXRvck9wdGlvbi5mb250U2l6ZVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBmb250IHNpemUgYmV0d2VlbiAxMCBhbmQgMTAwXHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSkge1xyXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgaWYgKGV2ZW50LmRlbHRhWSA8IDApIHtcclxuICAgICAgICBlZGl0b3IudXBkYXRlT3B0aW9ucyh7XHJcbiAgICAgICAgICBmb250U2l6ZTogTWF0aC5taW4oMTAwLCBjdXJyZW50Rm9udFNpemUgKyAxKSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlZGl0b3IudXBkYXRlT3B0aW9ucyh7XHJcbiAgICAgICAgICBmb250U2l6ZTogTWF0aC5tYXgoMTAsIGN1cnJlbnRGb250U2l6ZSAtIDEpLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn07XHJcbiJdLCJuYW1lcyI6WyJtb25hY29FZGl0b3JTY3JvbGwiLCJfcmVmIiwiZWRpdG9yIiwiZ2V0RG9tTm9kZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImN1cnJlbnRGb250U2l6ZSIsImdldE9wdGlvbiIsIm1vbmFjbyIsIkVkaXRvck9wdGlvbiIsImZvbnRTaXplIiwiY3RybEtleSIsInByZXZlbnREZWZhdWx0IiwiZGVsdGFZIiwidXBkYXRlT3B0aW9ucyIsIk1hdGgiLCJtaW4iLCJtYXgiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4481.c24392f1.js b/react_frontend/static/react_frontend/js/4481.c24392f1.js new file mode 100644 index 000000000..7c53248ce --- /dev/null +++ b/react_frontend/static/react_frontend/js/4481.c24392f1.js @@ -0,0 +1,3 @@ +/*! For license information please see 4481.c24392f1.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4481,4075],{4481:(t,e,s)=>{s.r(e),s.d(e,{default:()=>o}),s(6540);var n=s(4075),r=s(4848);const o=function(t){var e=t.editorSettings,s=t.dispatch,o=t.handleFontZoom,l=t.handleFormatCode,i=e.isModalOpen,c=e.isCodeFormatEnable,h=e.isZoomingEnable;return(0,r.jsxs)("div",{className:"absolute bottom-3 right-3 flex justify-between items-center gap-1 h-9 bg-[#2D2D2D] rounded-full border-[#464646] border-[1px] ".concat(c||h?"px-[4px]":"px-[2px] w-[36px]"," duration-300 select-none"),style:{zIndex:"10"},children:[h&&(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsxs)("div",{className:"flex justify-center items-center h-7 rounded-full cursor-pointer gap-0.5",children:[(0,r.jsx)("div",{className:"flex justify-center items-center w-[30px] h-7 bg-[#474747] rounded-tl-full rounded-bl-full duration-100 ",onClick:function(){return o("up")},title:"Zoom In",children:(0,r.jsx)(n.ZoomInIcon,{cssClass:""})}),(0,r.jsx)("div",{className:"flex justify-center items-center w-[30px] h-7 bg-[#474747] rounded-tr-full rounded-br-full duration-100 ",onClick:function(){return o("down")},title:"Zoom Out",children:(0,r.jsx)(n.ZoomOutIcon,{cssClass:""})})]}),(0,r.jsx)("div",{className:"h-6 w-[2px] bg-[#464646]"})]}),c&&(0,r.jsxs)("div",{className:"flex items-center gap-1",children:[(0,r.jsx)("div",{className:"flex justify-center items-center w-7 h-7 rounded-full hover:bg-[#474747] duration-100 cursor-pointer",onClick:function(){return l()},title:"Format Code",children:(0,r.jsx)(n.AlignIcon,{cssClass:""})}),(0,r.jsx)("div",{className:"h-6 w-[2px] bg-[#464646]"})]}),(0,r.jsx)("div",{className:"flex justify-center items-center w-7 h-7 rounded-full hover:bg-[#474747] duration-100 cursor-pointer",onClick:function(){return s({type:"changeSettingsModalState",payload:{isModalOpen:!i}})},title:"More Info",children:(0,r.jsx)(n.InfoIcon,{cssClass:""})})]})}},4075:(t,e,s)=>{s.r(e),s.d(e,{AlignIcon:()=>l,CloseIcon:()=>c,InfoIcon:()=>i,KeyboardIcon:()=>h,WidgetsIcon:()=>d,ZoomInIcon:()=>o,ZoomOutIcon:()=>r});var n=s(4848),r=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M268.02-444q-15.02 0-25.52-10.29t-10.5-25.5q0-15.21 10.35-25.71T268-516h423.98q15.02 0 25.52 10.29t10.5 25.5q0 15.21-10.35 25.71T692-444H268.02Z"})})},o=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z"})})},l=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M144-144v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Z"})})},i=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,n.jsx)("path",{d:"M444-288h72v-240h-72v240Zm35.79-312q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm.49 504Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"})})},c=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#898989",children:(0,n.jsx)("path",{d:"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z"})})},h=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,n.jsx)("path",{d:"M168-240q-29.7 0-50.85-21.15Q96-282.3 96-312v-336q0-29.7 21.15-50.85Q138.3-720 168-720h624q29.7 0 50.85 21.15Q864-677.7 864-648v336q0 29.7-21.15 50.85Q821.7-240 792-240H168Zm0-72h624v-336H168v336Zm203.96-24h215.76q15.28 0 25.78-10.29 10.5-10.29 10.5-25.5t-10.34-25.71Q603.32-408 588.04-408H372.28q-15.28 0-25.78 10.29-10.5 10.29-10.5 25.5t10.34 25.71q10.34 10.5 25.62 10.5ZM168-312v-336 336Zm107.79-240q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm-408 96q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z"})})},d=function(t){return t.cssClass,(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,n.jsx)("path",{d:"M610-458 457.39-611q-5.39-5.4-7.89-11.7-2.5-6.3-2.5-13.5t2.5-13.5Q452-656 457-661l153-153q5-5 12-8t14.2-3q7.2 0 13.5 3t11.3 8l152.61 153q5.39 5.4 7.89 11.7 2.5 6.3 2.5 13.5t-2.5 13.5Q819-616 814-611L661-458q-5 5-11.3 8-6.3 3-13.5 3t-14.2-3q-7-3-12-8ZM144-563.96v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm384 384v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H564.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm-384 0v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62ZM216-600h144v-144H216v144Zm420 66 101-102-101-102-102 102 102 102Zm-36 318h144v-144H600v144Zm-384 0h144v-144H216v144Zm144-384Zm174-36ZM360-360Zm240 0Z"})})}},1020:(t,e,s)=>{var n=s(6540),r=Symbol.for("react.element"),o=Symbol.for("react.fragment"),l=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function h(t,e,s){var n,o={},h=null,d=null;for(n in void 0!==s&&(h=""+s),void 0!==e.key&&(h=""+e.key),void 0!==e.ref&&(d=e.ref),e)l.call(e,n)&&!c.hasOwnProperty(n)&&(o[n]=e[n]);if(t&&t.defaultProps)for(n in e=t.defaultProps)void 0===o[n]&&(o[n]=e[n]);return{$$typeof:r,type:t,key:h,ref:d,props:o,_owner:i.current}}e.Fragment=o,e.jsx=h,e.jsxs=h},4848:(t,e,s)=>{t.exports=s(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSxJQUFJLEdBQUdILEdBQUdBLEVBQUVPLGFBQWEsSUFBSUosS0FBS0YsRUFBRUQsRUFBRU8sa0JBQWUsSUFBU25DLEVBQUUrQixLQUFLL0IsRUFBRStCLEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDSyxTQUFTekIsRUFBRW5CLEtBQUtvQyxFQUFFTCxJQUFJUyxFQUFFUixJQUFJUyxFQUFFSSxNQUFNckMsRUFBRXNDLE9BQU9uQixFQUFFb0IsUUFBUSxDQUFDQyxFQUFRQyxTQUFTM0IsRUFBRTBCLEVBQVFFLElBQUlmLEVBQUVhLEVBQVFHLEtBQUtoQixrQkNQeFdpQixFQUFPSixRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvZWRpdG9yLWluZm8vTW9uYWNvRWRpdG9ySW5mb0J1dHRvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvaWNvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQWxpZ25JY29uLCBJbmZvSWNvbiwgWm9vbUluSWNvbiwgWm9vbU91dEljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcclxuXHJcbmNvbnN0IE1vbmFjb0VkaXRvckluZm9CdXR0b25zID0gKHtcclxuICBlZGl0b3JTZXR0aW5ncyxcclxuICBkaXNwYXRjaCxcclxuICBoYW5kbGVGb250Wm9vbSxcclxuICBoYW5kbGVGb3JtYXRDb2RlLFxyXG59KSA9PiB7XHJcbiAgY29uc3QgeyBpc01vZGFsT3BlbiwgaXNDb2RlRm9ybWF0RW5hYmxlLCBpc1pvb21pbmdFbmFibGUgfSA9IGVkaXRvclNldHRpbmdzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIGJvdHRvbS0zIHJpZ2h0LTMgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0xIGgtOSBiZy1bIzJEMkQyRF0gcm91bmRlZC1mdWxsIGJvcmRlci1bIzQ2NDY0Nl0gYm9yZGVyLVsxcHhdICR7XHJcbiAgICAgICAgaXNDb2RlRm9ybWF0RW5hYmxlIHx8IGlzWm9vbWluZ0VuYWJsZSA/IGBweC1bNHB4XWAgOiBgcHgtWzJweF0gdy1bMzZweF1gXHJcbiAgICAgIH0gZHVyYXRpb24tMzAwICBzZWxlY3Qtbm9uZWB9XHJcbiAgICAgIHN0eWxlPXt7ekluZGV4OiBcIjEwXCJ9fVxyXG4gICAgPlxyXG4gICAgICB7LyogZm9udCBzaXplICovfVxyXG4gICAgICB7aXNab29taW5nRW5hYmxlICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyICBoLTcgcm91bmRlZC1mdWxsIGN1cnNvci1wb2ludGVyIGdhcC0wLjVcIj5cclxuICAgICAgICAgICAgey8qIHpvb20gaW4gKi99XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciAgdy1bMzBweF0gaC03IGJnLVsjNDc0NzQ3XSByb3VuZGVkLXRsLWZ1bGwgcm91bmRlZC1ibC1mdWxsIGR1cmF0aW9uLTEwMCBcIlxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUZvbnRab29tKFwidXBcIil9XHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJab29tIEluXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxab29tSW5JY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHsvKiB6b29tIG91dCAqL31cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyICB3LVszMHB4XSBoLTcgYmctWyM0NzQ3NDddIHJvdW5kZWQtdHItZnVsbCByb3VuZGVkLWJyLWZ1bGwgZHVyYXRpb24tMTAwIFwiXHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRm9udFpvb20oXCJkb3duXCIpfVxyXG4gICAgICAgICAgICAgIHRpdGxlPVwiWm9vbSBPdXRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFpvb21PdXRJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IHctWzJweF0gYmctWyM0NjQ2NDZdXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBjb2RlIGZvcm1hdCBpY29uICovfVxyXG4gICAgICB7aXNDb2RlRm9ybWF0RW5hYmxlICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHctNyBoLTcgcm91bmRlZC1mdWxsIGhvdmVyOmJnLVsjNDc0NzQ3XSBkdXJhdGlvbi0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGb3JtYXRDb2RlKCl9XHJcbiAgICAgICAgICAgIHRpdGxlPVwiRm9ybWF0IENvZGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QWxpZ25JY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IHctWzJweF0gYmctWyM0NjQ2NDZdXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBxdWVzdGlvbiBtYXJrICovfVxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy03IGgtNyByb3VuZGVkLWZ1bGwgaG92ZXI6YmctWyM0NzQ3NDddIGR1cmF0aW9uLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjaGFuZ2VTZXR0aW5nc01vZGFsU3RhdGVcIixcclxuICAgICAgICAgICAgcGF5bG9hZDogeyBpc01vZGFsT3BlbjogIWlzTW9kYWxPcGVuIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aXRsZT1cIk1vcmUgSW5mb1wiXHJcbiAgICAgID5cclxuICAgICAgICA8SW5mb0ljb24gY3NzQ2xhc3M9XCJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb25hY29FZGl0b3JJbmZvQnV0dG9ucztcclxuIiwiZXhwb3J0IGNvbnN0IFpvb21PdXRJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTI2OC4wMi00NDRxLTE1LjAyIDAtMjUuNTItMTAuMjl0LTEwLjUtMjUuNXEwLTE1LjIxIDEwLjM1LTI1LjcxVDI2OC01MTZoNDIzLjk4cTE1LjAyIDAgMjUuNTIgMTAuMjl0MTAuNSAyNS41cTAgMTUuMjEtMTAuMzUgMjUuNzFUNjkyLTQ0NEgyNjguMDJaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuZXhwb3J0IGNvbnN0IFpvb21Jbkljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNEQUE1MjBcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNNDQ0LTQ0NEgyNDB2LTcyaDIwNHYtMjA0aDcydjIwNGgyMDR2NzJINTE2djIwNGgtNzJ2LTIwNFpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5leHBvcnQgY29uc3QgQWxpZ25JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTE0NC0xNDR2LTcyaDY3MnY3MkgxNDRabTAtMTUwdi03Mmg0ODB2NzJIMTQ0Wm0wLTE1MHYtNzJoNjcydjcySDE0NFptMC0xNTB2LTcyaDQ4MHY3MkgxNDRabTAtMTUwdi03Mmg2NzJ2NzJIMTQ0WlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgSW5mb0ljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNEQUE1MjBcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNNDQ0LTI4OGg3MnYtMjQwaC03MnYyNDBabTM1Ljc5LTMxMnExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptLjQ5IDUwNFE0MDEtOTYgMzMxLTEyNnQtMTIyLjUtODIuNVExNTYtMjYxIDEyNi0zMzAuOTZ0LTMwLTE0OS41UTk2LTU2MCAxMjYtNjI5LjVxMzAtNjkuNSA4Mi41LTEyMlQzMzAuOTYtODM0cTY5Ljk2LTMwIDE0OS41LTMwdDE0OS4wNCAzMHE2OS41IDMwIDEyMiA4Mi41VDgzNC02MjkuMjhxMzAgNjkuNzMgMzAgMTQ5UTg2NC00MDEgODM0LTMzMXQtODIuNSAxMjIuNVE2OTktMTU2IDYyOS4yOC0xMjZxLTY5LjczIDMwLTE0OSAzMFptLS4yOC03MnExMzAgMCAyMjEtOTF0OTEtMjIxcTAtMTMwLTkxLTIyMXQtMjIxLTkxcS0xMzAgMC0yMjEgOTF0LTkxIDIyMXEwIDEzMCA5MSAyMjF0MjIxIDkxWm0wLTMxMlpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IENsb3NlSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiIzg5ODk4OVwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIm0yOTEtMjQwLTUxLTUxIDE4OS0xODktMTg5LTE4OSA1MS01MSAxODkgMTg5IDE4OS0xODkgNTEgNTEtMTg5IDE4OSAxODkgMTg5LTUxIDUxLTE4OS0xODktMTg5IDE4OVpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEtleWJvYXJkSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI2ZjZmNmY1wiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0xNjgtMjQwcS0yOS43IDAtNTAuODUtMjEuMTVROTYtMjgyLjMgOTYtMzEydi0zMzZxMC0yOS43IDIxLjE1LTUwLjg1UTEzOC4zLTcyMCAxNjgtNzIwaDYyNHEyOS43IDAgNTAuODUgMjEuMTVRODY0LTY3Ny43IDg2NC02NDh2MzM2cTAgMjkuNy0yMS4xNSA1MC44NVE4MjEuNy0yNDAgNzkyLTI0MEgxNjhabTAtNzJoNjI0di0zMzZIMTY4djMzNlptMjAzLjk2LTI0aDIxNS43NnExNS4yOCAwIDI1Ljc4LTEwLjI5IDEwLjUtMTAuMjkgMTAuNS0yNS41dC0xMC4zNC0yNS43MVE2MDMuMzItNDA4IDU4OC4wNC00MDhIMzcyLjI4cS0xNS4yOCAwLTI1Ljc4IDEwLjI5LTEwLjUgMTAuMjktMTAuNSAyNS41dDEwLjM0IDI1LjcxcTEwLjM0IDEwLjUgMjUuNjIgMTAuNVpNMTY4LTMxMnYtMzM2IDMzNlptMTA3Ljc5LTI0MHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabS00MDggOTZxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41WlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgV2lkZ2V0c0ljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNmY2ZjZmNcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNNjEwLTQ1OCA0NTcuMzktNjExcS01LjM5LTUuNC03Ljg5LTExLjctMi41LTYuMy0yLjUtMTMuNXQyLjUtMTMuNVE0NTItNjU2IDQ1Ny02NjFsMTUzLTE1M3E1LTUgMTItOHQxNC4yLTNxNy4yIDAgMTMuNSAzdDExLjMgOGwxNTIuNjEgMTUzcTUuMzkgNS40IDcuODkgMTEuNyAyLjUgNi4zIDIuNSAxMy41dC0yLjUgMTMuNVE4MTktNjE2IDgxNC02MTFMNjYxLTQ1OHEtNSA1LTExLjMgOC02LjMgMy0xMy41IDN0LTE0LjItM3EtNy0zLTEyLThaTTE0NC01NjMuOTZ2LTIxNS43NnEwLTE1LjI4IDEwLjM0LTI1Ljc4IDEwLjM0LTEwLjUgMjUuNjItMTAuNWgyMTUuNzZxMTUuMjggMCAyNS43OCAxMC4zNCAxMC41IDEwLjM0IDEwLjUgMjUuNjJ2MjE1Ljc2cTAgMTUuMjgtMTAuMzQgMjUuNzgtMTAuMzQgMTAuNS0yNS42MiAxMC41SDE4MC4yOHEtMTUuMjggMC0yNS43OC0xMC4zNC0xMC41LTEwLjM0LTEwLjUtMjUuNjJabTM4NCAzODR2LTIxNS43NnEwLTE1LjI4IDEwLjM0LTI1Ljc4IDEwLjM0LTEwLjUgMjUuNjItMTAuNWgyMTUuNzZxMTUuMjggMCAyNS43OCAxMC4zNCAxMC41IDEwLjM0IDEwLjUgMjUuNjJ2MjE1Ljc2cTAgMTUuMjgtMTAuMzQgMjUuNzgtMTAuMzQgMTAuNS0yNS42MiAxMC41SDU2NC4yOHEtMTUuMjggMC0yNS43OC0xMC4zNC0xMC41LTEwLjM0LTEwLjUtMjUuNjJabS0zODQgMHYtMjE1Ljc2cTAtMTUuMjggMTAuMzQtMjUuNzggMTAuMzQtMTAuNSAyNS42Mi0xMC41aDIxNS43NnExNS4yOCAwIDI1Ljc4IDEwLjM0IDEwLjUgMTAuMzQgMTAuNSAyNS42MnYyMTUuNzZxMCAxNS4yOC0xMC4zNCAyNS43OC0xMC4zNCAxMC41LTI1LjYyIDEwLjVIMTgwLjI4cS0xNS4yOCAwLTI1Ljc4LTEwLjM0LTEwLjUtMTAuMzQtMTAuNS0yNS42MlpNMjE2LTYwMGgxNDR2LTE0NEgyMTZ2MTQ0Wm00MjAgNjYgMTAxLTEwMi0xMDEtMTAyLTEwMiAxMDIgMTAyIDEwMlptLTM2IDMxOGgxNDR2LTE0NEg2MDB2MTQ0Wm0tMzg0IDBoMTQ0di0xNDRIMjE2djE0NFptMTQ0LTM4NFptMTc0LTM2Wk0zNjAtMzYwWm0yNDAgMFpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsiX3JlZiIsImVkaXRvclNldHRpbmdzIiwiZGlzcGF0Y2giLCJoYW5kbGVGb250Wm9vbSIsImhhbmRsZUZvcm1hdENvZGUiLCJpc01vZGFsT3BlbiIsImlzQ29kZUZvcm1hdEVuYWJsZSIsImlzWm9vbWluZ0VuYWJsZSIsIl9qc3hzIiwiY2xhc3NOYW1lIiwiY29uY2F0Iiwic3R5bGUiLCJ6SW5kZXgiLCJjaGlsZHJlbiIsIl9qc3giLCJvbkNsaWNrIiwidGl0bGUiLCJab29tSW5JY29uIiwiY3NzQ2xhc3MiLCJab29tT3V0SWNvbiIsIkFsaWduSWNvbiIsInR5cGUiLCJwYXlsb2FkIiwiSW5mb0ljb24iLCJ4bWxucyIsImhlaWdodCIsInZpZXdCb3giLCJ3aWR0aCIsImZpbGwiLCJkIiwiX3JlZjIiLCJfcmVmMyIsIl9yZWY0IiwiQ2xvc2VJY29uIiwiX3JlZjUiLCJLZXlib2FyZEljb24iLCJfcmVmNiIsIldpZGdldHNJY29uIiwiX3JlZjciLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJwcm9wcyIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4481.c24392f1.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4481.c24392f1.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4481.c24392f1.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4517.d8886e91.js b/react_frontend/static/react_frontend/js/4517.d8886e91.js new file mode 100644 index 000000000..45b9fb32e --- /dev/null +++ b/react_frontend/static/react_frontend/js/4517.d8886e91.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4517],{2183:(e,t,a)=>{var o=a(4994);t.A=void 0;var n=o(a(2032)),r=a(4848),i=(0,n.default)((0,r.jsx)("path",{d:"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"}),"FilterList");t.A=i},4745:(e,t,a)=>{var o=a(4994);t.A=void 0;var n=o(a(2032)),r=a(4848),i=(0,n.default)((0,r.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"}),"Search");t.A=i},4389:(e,t,a)=>{a.d(t,{A:()=>j});var o=a(8587),n=a(8168),r=a(6540),i=a(53),s=a(5659),c=a(4279),d=a(8466),l=a(7577),u=a(1159),p=a(9716),m=a(6606),v=a(8413),h=a(1609);function b(e){return(0,h.A)("PrivateSwitchBase",e)}(0,v.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var f=a(4848);const g=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],A=(0,l.Ay)(m.A)((({ownerState:e})=>(0,n.A)({padding:9,borderRadius:"50%"},"start"===e.edge&&{marginLeft:"small"===e.size?-3:-12},"end"===e.edge&&{marginRight:"small"===e.size?-3:-12}))),y=(0,l.Ay)("input")({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),x=r.forwardRef((function(e,t){const{autoFocus:a,checked:r,checkedIcon:c,className:l,defaultChecked:m,disabled:v,disableFocusRipple:h=!1,edge:x=!1,icon:k,id:C,inputProps:$,inputRef:I,name:S,onBlur:w,onChange:M,onFocus:z,readOnly:R,required:O=!1,tabIndex:B,type:F,value:j}=e,V=(0,o.A)(e,g),[N,P]=(0,u.A)({controlled:r,default:Boolean(m),name:"SwitchBase",state:"checked"}),L=(0,p.A)();let H=v;L&&void 0===H&&(H=L.disabled);const G="checkbox"===F||"radio"===F,E=(0,n.A)({},e,{checked:N,disabled:H,disableFocusRipple:h,edge:x}),T=(e=>{const{classes:t,checked:a,disabled:o,edge:n}=e,r={root:["root",a&&"checked",o&&"disabled",n&&`edge${(0,d.A)(n)}`],input:["input"]};return(0,s.A)(r,b,t)})(E);return(0,f.jsxs)(A,(0,n.A)({component:"span",className:(0,i.A)(T.root,l),centerRipple:!0,focusRipple:!h,disabled:H,tabIndex:null,role:void 0,onFocus:e=>{z&&z(e),L&&L.onFocus&&L.onFocus(e)},onBlur:e=>{w&&w(e),L&&L.onBlur&&L.onBlur(e)},ownerState:E,ref:t},V,{children:[(0,f.jsx)(y,(0,n.A)({autoFocus:a,checked:r,defaultChecked:m,className:T.input,disabled:H,id:G?C:void 0,name:S,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;P(t),M&&M(e,t)},readOnly:R,ref:I,required:O,ownerState:E,tabIndex:B,type:F},"checkbox"===F&&void 0===j?{}:{value:j},$)),N?c:k]}))}));var k=a(5003);const C=(0,k.A)((0,f.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),$=(0,k.A)((0,f.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),I=(0,k.A)((0,f.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");var S=a(4409);function w(e){return(0,h.A)("MuiCheckbox",e)}const M=(0,v.A)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary"]),z=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],R=(0,l.Ay)(x,{shouldForwardProp:e=>(0,l.ep)(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.indeterminate&&t.indeterminate,"default"!==a.color&&t[`color${(0,d.A)(a.color)}`]]}})((({theme:e,ownerState:t})=>(0,n.A)({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${"default"===t.color?e.vars.palette.action.activeChannel:e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)("default"===t.color?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==t.color&&{[`&.${M.checked}, &.${M.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${M.disabled}`]:{color:(e.vars||e).palette.action.disabled}}))),O=(0,f.jsx)($,{}),B=(0,f.jsx)(C,{}),F=(0,f.jsx)(I,{}),j=r.forwardRef((function(e,t){var a,c;const l=(0,S.A)({props:e,name:"MuiCheckbox"}),{checkedIcon:u=O,color:p="primary",icon:m=B,indeterminate:v=!1,indeterminateIcon:h=F,inputProps:b,size:g="medium",className:A}=l,y=(0,o.A)(l,z),x=v?h:m,k=v?h:u,C=(0,n.A)({},l,{color:p,indeterminate:v,size:g}),$=(e=>{const{classes:t,indeterminate:a,color:o}=e,r={root:["root",a&&"indeterminate",`color${(0,d.A)(o)}`]},i=(0,s.A)(r,w,t);return(0,n.A)({},t,i)})(C);return(0,f.jsx)(R,(0,n.A)({type:"checkbox",inputProps:(0,n.A)({"data-indeterminate":v},b),icon:r.cloneElement(x,{fontSize:null!=(a=x.props.fontSize)?a:g}),checkedIcon:r.cloneElement(k,{fontSize:null!=(c=k.props.fontSize)?c:g}),ownerState:C,ref:t,className:(0,i.A)($.root,A)},y,{classes:$}))}))},1347:(e,t,a)=>{a.d(t,{A:()=>i,K:()=>r});var o=a(8413),n=a(1609);function r(e){return(0,n.A)("MuiDivider",e)}const i=(0,o.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"])},6554:(e,t,a)=>{a.d(t,{A:()=>I});var o=a(8587),n=a(8168),r=a(6540),i=a(53),s=a(5659),c=a(4279),d=a(7577),l=a(4409),u=a(2850),p=a(6606),m=a(2778),v=a(6852),h=a(1347),b=a(8413);const f=(0,b.A)("MuiListItemIcon",["root","alignItemsFlexStart"]),g=(0,b.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);var A=a(1609);function y(e){return(0,A.A)("MuiMenuItem",e)}const x=(0,b.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);var k=a(4848);const C=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],$=(0,d.Ay)(p.A,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:a}=e;return[t.root,a.dense&&t.dense,a.divider&&t.divider,!a.disableGutters&&t.gutters]}})((({theme:e,ownerState:t})=>(0,n.A)({},e.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!t.disableGutters&&{paddingLeft:16,paddingRight:16},t.divider&&{borderBottom:`1px solid ${(e.vars||e).palette.divider}`,backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${x.selected}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,c.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${x.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,c.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}},[`&.${x.selected}:hover`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,c.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,c.X4)(e.palette.primary.main,e.palette.action.selectedOpacity)}},[`&.${x.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${x.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`& + .${h.A.root}`]:{marginTop:e.spacing(1),marginBottom:e.spacing(1)},[`& + .${h.A.inset}`]:{marginLeft:52},[`& .${g.root}`]:{marginTop:0,marginBottom:0},[`& .${g.inset}`]:{paddingLeft:36},[`& .${f.root}`]:{minWidth:36}},!t.dense&&{[e.breakpoints.up("sm")]:{minHeight:"auto"}},t.dense&&(0,n.A)({minHeight:32,paddingTop:4,paddingBottom:4},e.typography.body2,{[`& .${f.root} svg`]:{fontSize:"1.25rem"}})))),I=r.forwardRef((function(e,t){const a=(0,l.A)({props:e,name:"MuiMenuItem"}),{autoFocus:c=!1,component:d="li",dense:p=!1,divider:h=!1,disableGutters:b=!1,focusVisibleClassName:f,role:g="menuitem",tabIndex:A,className:x}=a,I=(0,o.A)(a,C),S=r.useContext(u.A),w=r.useMemo((()=>({dense:p||S.dense||!1,disableGutters:b})),[S.dense,p,b]),M=r.useRef(null);(0,m.A)((()=>{c&&M.current&&M.current.focus()}),[c]);const z=(0,n.A)({},a,{dense:w.dense,divider:h,disableGutters:b}),R=(e=>{const{disabled:t,dense:a,divider:o,disableGutters:r,selected:i,classes:c}=e,d={root:["root",a&&"dense",t&&"disabled",!r&&"gutters",o&&"divider",i&&"selected"]},l=(0,s.A)(d,y,c);return(0,n.A)({},c,l)})(a),O=(0,v.A)(M,t);let B;return a.disabled||(B=void 0!==A?A:-1),(0,k.jsx)(u.A.Provider,{value:w,children:(0,k.jsx)($,(0,n.A)({ref:O,role:g,tabIndex:B,component:d,focusVisibleClassName:(0,i.A)(R.focusVisible,f),className:(0,i.A)(R.root,x)},I,{ownerState:z,classes:R}))})}))},1668:(e,t,a)=>{a.d(t,{A:()=>o});const o=a(4661).A},4661:(e,t,a)=>{var o;a.d(t,{A:()=>s});var n=a(6540);let r=0;const i=(o||(o=a.t(n,2)))["useId".toString()];function s(e){if(void 0!==i){const t=i();return null!=e?e:t}return function(e){const[t,a]=n.useState(e),o=e||t;return n.useEffect((()=>{null==t&&(r+=1,a(`mui-${r}`))}),[t]),o}(e)}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q00sSUFDR3BJLENBQ1QsQ0FnQlNzSSxDQUFZSixFQUNyQixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3dpdGNoQmFzZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9pbnRlcm5hbC9Td2l0Y2hCYXNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3ZnLWljb25zL0NoZWNrQm94T3V0bGluZUJsYW5rLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3ZnLWljb25zL0NoZWNrQm94LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3ZnLWljb25zL0luZGV0ZXJtaW5hdGVDaGVja0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NoZWNrYm94L2NoZWNrYm94Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NoZWNrYm94L0NoZWNrYm94LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRGl2aWRlci9kaXZpZGVyQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0xpc3RJdGVtSWNvbi9saXN0SXRlbUljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvTGlzdEl0ZW1UZXh0L2xpc3RJdGVtVGV4dENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9NZW51SXRlbS9tZW51SXRlbUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9NZW51SXRlbS9NZW51SXRlbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlkL3VzZUlkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXCJ1c2UgY2xpZW50XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfY3JlYXRlU3ZnSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvY3JlYXRlU3ZnSWNvblwiKSk7XG52YXIgX2pzeFJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG52YXIgX2RlZmF1bHQgPSAoMCwgX2NyZWF0ZVN2Z0ljb24uZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcInBhdGhcIiwge1xuICBkOiBcIk0xMCAxOGg0di0yaC00djJ6TTMgNnYyaDE4VjZIM3ptMyA3aDEydi0ySDZ2MnpcIlxufSksICdGaWx0ZXJMaXN0Jyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblwidXNlIGNsaWVudFwiO1xuXG52YXIgX2ludGVyb3BSZXF1aXJlRGVmYXVsdCA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdFwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG52YXIgX2NyZWF0ZVN2Z0ljb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL3V0aWxzL2NyZWF0ZVN2Z0ljb25cIikpO1xudmFyIF9qc3hSdW50aW1lID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpO1xudmFyIF9kZWZhdWx0ID0gKDAsIF9jcmVhdGVTdmdJY29uLmRlZmF1bHQpKCAvKiNfX1BVUkVfXyovKDAsIF9qc3hSdW50aW1lLmpzeCkoXCJwYXRoXCIsIHtcbiAgZDogXCJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHpcIlxufSksICdTZWFyY2gnKTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRTd2l0Y2hCYXNlVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdQcml2YXRlU3dpdGNoQmFzZScsIHNsb3QpO1xufVxuY29uc3Qgc3dpdGNoQmFzZUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdQcml2YXRlU3dpdGNoQmFzZScsIFsncm9vdCcsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lucHV0JywgJ2VkZ2VTdGFydCcsICdlZGdlRW5kJ10pO1xuZXhwb3J0IGRlZmF1bHQgc3dpdGNoQmFzZUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXV0b0ZvY3VzXCIsIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRJY29uXCIsIFwiY2xhc3NOYW1lXCIsIFwiZGVmYXVsdENoZWNrZWRcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVGb2N1c1JpcHBsZVwiLCBcImVkZ2VcIiwgXCJpY29uXCIsIFwiaWRcIiwgXCJpbnB1dFByb3BzXCIsIFwiaW5wdXRSZWZcIiwgXCJuYW1lXCIsIFwib25CbHVyXCIsIFwib25DaGFuZ2VcIiwgXCJvbkZvY3VzXCIsIFwicmVhZE9ubHlcIiwgXCJyZXF1aXJlZFwiLCBcInRhYkluZGV4XCIsIFwidHlwZVwiLCBcInZhbHVlXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZUNvbnRyb2xsZWQgZnJvbSAnLi4vdXRpbHMvdXNlQ29udHJvbGxlZCc7XG5pbXBvcnQgdXNlRm9ybUNvbnRyb2wgZnJvbSAnLi4vRm9ybUNvbnRyb2wvdXNlRm9ybUNvbnRyb2wnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgeyBnZXRTd2l0Y2hCYXNlVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9zd2l0Y2hCYXNlQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgY2hlY2tlZCxcbiAgICBkaXNhYmxlZCxcbiAgICBlZGdlXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBjaGVja2VkICYmICdjaGVja2VkJywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJywgZWRnZSAmJiBgZWRnZSR7Y2FwaXRhbGl6ZShlZGdlKX1gXSxcbiAgICBpbnB1dDogWydpbnB1dCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0U3dpdGNoQmFzZVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgU3dpdGNoQmFzZVJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBwYWRkaW5nOiA5LFxuICBib3JkZXJSYWRpdXM6ICc1MCUnXG59LCBvd25lclN0YXRlLmVkZ2UgPT09ICdzdGFydCcgJiYge1xuICBtYXJnaW5MZWZ0OiBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgPyAtMyA6IC0xMlxufSwgb3duZXJTdGF0ZS5lZGdlID09PSAnZW5kJyAmJiB7XG4gIG1hcmdpblJpZ2h0OiBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgPyAtMyA6IC0xMlxufSkpO1xuY29uc3QgU3dpdGNoQmFzZUlucHV0ID0gc3R5bGVkKCdpbnB1dCcpKHtcbiAgY3Vyc29yOiAnaW5oZXJpdCcsXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICBvcGFjaXR5OiAwLFxuICB3aWR0aDogJzEwMCUnLFxuICBoZWlnaHQ6ICcxMDAlJyxcbiAgdG9wOiAwLFxuICBsZWZ0OiAwLFxuICBtYXJnaW46IDAsXG4gIHBhZGRpbmc6IDAsXG4gIHpJbmRleDogMVxufSk7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgU3dpdGNoQmFzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFN3aXRjaEJhc2UocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgICBhdXRvRm9jdXMsXG4gICAgICBjaGVja2VkOiBjaGVja2VkUHJvcCxcbiAgICAgIGNoZWNrZWRJY29uLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGVmYXVsdENoZWNrZWQsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWRQcm9wLFxuICAgICAgZGlzYWJsZUZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBlZGdlID0gZmFsc2UsXG4gICAgICBpY29uLFxuICAgICAgaWQsXG4gICAgICBpbnB1dFByb3BzLFxuICAgICAgaW5wdXRSZWYsXG4gICAgICBuYW1lLFxuICAgICAgb25CbHVyLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbkZvY3VzLFxuICAgICAgcmVhZE9ubHksXG4gICAgICByZXF1aXJlZCA9IGZhbHNlLFxuICAgICAgdGFiSW5kZXgsXG4gICAgICB0eXBlLFxuICAgICAgdmFsdWVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgW2NoZWNrZWQsIHNldENoZWNrZWRTdGF0ZV0gPSB1c2VDb250cm9sbGVkKHtcbiAgICBjb250cm9sbGVkOiBjaGVja2VkUHJvcCxcbiAgICBkZWZhdWx0OiBCb29sZWFuKGRlZmF1bHRDaGVja2VkKSxcbiAgICBuYW1lOiAnU3dpdGNoQmFzZScsXG4gICAgc3RhdGU6ICdjaGVja2VkJ1xuICB9KTtcbiAgY29uc3QgbXVpRm9ybUNvbnRyb2wgPSB1c2VGb3JtQ29udHJvbCgpO1xuICBjb25zdCBoYW5kbGVGb2N1cyA9IGV2ZW50ID0+IHtcbiAgICBpZiAob25Gb2N1cykge1xuICAgICAgb25Gb2N1cyhldmVudCk7XG4gICAgfVxuICAgIGlmIChtdWlGb3JtQ29udHJvbCAmJiBtdWlGb3JtQ29udHJvbC5vbkZvY3VzKSB7XG4gICAgICBtdWlGb3JtQ29udHJvbC5vbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUJsdXIgPSBldmVudCA9PiB7XG4gICAgaWYgKG9uQmx1cikge1xuICAgICAgb25CbHVyKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKG11aUZvcm1Db250cm9sICYmIG11aUZvcm1Db250cm9sLm9uQmx1cikge1xuICAgICAgbXVpRm9ybUNvbnRyb2wub25CbHVyKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gZXZlbnQgPT4ge1xuICAgIC8vIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvOTAyM1xuICAgIGlmIChldmVudC5uYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG5ld0NoZWNrZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcbiAgICBzZXRDaGVja2VkU3RhdGUobmV3Q2hlY2tlZCk7XG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICAvLyBUT0RPIHY2OiByZW1vdmUgdGhlIHNlY29uZCBhcmd1bWVudC5cbiAgICAgIG9uQ2hhbmdlKGV2ZW50LCBuZXdDaGVja2VkKTtcbiAgICB9XG4gIH07XG4gIGxldCBkaXNhYmxlZCA9IGRpc2FibGVkUHJvcDtcbiAgaWYgKG11aUZvcm1Db250cm9sKSB7XG4gICAgaWYgKHR5cGVvZiBkaXNhYmxlZCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGRpc2FibGVkID0gbXVpRm9ybUNvbnRyb2wuZGlzYWJsZWQ7XG4gICAgfVxuICB9XG4gIGNvbnN0IGhhc0xhYmVsRm9yID0gdHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0eXBlID09PSAncmFkaW8nO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY2hlY2tlZCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZWRnZVxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFN3aXRjaEJhc2VSb290LCBfZXh0ZW5kcyh7XG4gICAgY29tcG9uZW50OiBcInNwYW5cIixcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNlbnRlclJpcHBsZTogdHJ1ZSxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgdGFiSW5kZXg6IG51bGwsXG4gICAgcm9sZTogdW5kZWZpbmVkLFxuICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1cixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIHJlZjogcmVmXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChTd2l0Y2hCYXNlSW5wdXQsIF9leHRlbmRzKHtcbiAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgY2hlY2tlZDogY2hlY2tlZFByb3AsXG4gICAgICBkZWZhdWx0Q2hlY2tlZDogZGVmYXVsdENoZWNrZWQsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuaW5wdXQsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICBpZDogaGFzTGFiZWxGb3IgPyBpZCA6IHVuZGVmaW5lZCxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBvbkNoYW5nZTogaGFuZGxlSW5wdXRDaGFuZ2UsXG4gICAgICByZWFkT25seTogcmVhZE9ubHksXG4gICAgICByZWY6IGlucHV0UmVmLFxuICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgIHR5cGU6IHR5cGVcbiAgICB9LCB0eXBlID09PSAnY2hlY2tib3gnICYmIHZhbHVlID09PSB1bmRlZmluZWQgPyB7fSA6IHtcbiAgICAgIHZhbHVlXG4gICAgfSwgaW5wdXRQcm9wcykpLCBjaGVja2VkID8gY2hlY2tlZEljb24gOiBpY29uXVxuICB9KSk7XG59KTtcblxuLy8gTkI6IElmIGNoYW5nZWQsIHBsZWFzZSB1cGRhdGUgQ2hlY2tib3gsIFN3aXRjaCBhbmQgUmFkaW9cbi8vIHNvIHRoYXQgdGhlIEFQSSBkb2N1bWVudGF0aW9uIGlzIHVwZGF0ZWQuXG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBTd2l0Y2hCYXNlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgZWxlbWVudCBpcyBmb2N1c2VkIGR1cmluZyB0aGUgZmlyc3QgbW91bnQuXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGNoZWNrZWQuXG4gICAqL1xuICBjaGVja2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGRpc3BsYXkgd2hlbiB0aGUgY29tcG9uZW50IGlzIGNoZWNrZWQuXG4gICAqL1xuICBjaGVja2VkSWNvbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogU2VlIFtDU1MgQVBJXSgjY3NzKSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGRlZmF1bHRDaGVja2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlICBrZXlib2FyZCBmb2N1cyByaXBwbGUgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgZ2l2ZW4sIHVzZXMgYSBuZWdhdGl2ZSBtYXJnaW4gdG8gY291bnRlcmFjdCB0aGUgcGFkZGluZyBvbiBvbmVcbiAgICogc2lkZSAodGhpcyBpcyBvZnRlbiBoZWxwZnVsIGZvciBhbGlnbmluZyB0aGUgbGVmdCBvciByaWdodFxuICAgKiBzaWRlIG9mIHRoZSBpY29uIHdpdGggY29udGVudCBhYm92ZSBvciBiZWxvdywgd2l0aG91dCBydWluaW5nIHRoZSBib3JkZXJcbiAgICogc2l6ZSBhbmQgc2hhcGUpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZWRnZTogUHJvcFR5cGVzLm9uZU9mKFsnZW5kJywgJ3N0YXJ0JywgZmFsc2VdKSxcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGRpc3BsYXkgd2hlbiB0aGUgY29tcG9uZW50IGlzIHVuY2hlY2tlZC5cbiAgICovXG4gIGljb246IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogW0F0dHJpYnV0ZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNBdHRyaWJ1dGVzKSBhcHBsaWVkIHRvIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBpbnB1dFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogUGFzcyBhIHJlZiB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgaW5wdXRSZWY6IHJlZlR5cGUsXG4gIC8qXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgc3RhdGUgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKiBZb3UgY2FuIHB1bGwgb3V0IHRoZSBuZXcgY2hlY2tlZCBzdGF0ZSBieSBhY2Nlc3NpbmcgYGV2ZW50LnRhcmdldC5jaGVja2VkYCAoYm9vbGVhbikuXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEl0IHByZXZlbnRzIHRoZSB1c2VyIGZyb20gY2hhbmdpbmcgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZFxuICAgKiAobm90IGZyb20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZmllbGQpLlxuICAgKi9cbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCBlbGVtZW50IGlzIHJlcXVpcmVkLlxuICAgKi9cbiAgcmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgY29tcG9uZW50IHByb3AgYHR5cGVgLlxuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLmFueVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFN3aXRjaEJhc2U7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlU3ZnSWNvbiBmcm9tICcuLi8uLi91dGlscy9jcmVhdGVTdmdJY29uJztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3ZnSWNvbiggLyojX19QVVJFX18qL19qc3goXCJwYXRoXCIsIHtcbiAgZDogXCJNMTkgNXYxNEg1VjVoMTRtMC0ySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpcIlxufSksICdDaGVja0JveE91dGxpbmVCbGFuaycpOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN2Z0ljb24oIC8qI19fUFVSRV9fKi9fanN4KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTkgMTRsLTUtNSAxLjQxLTEuNDFMMTAgMTQuMTdsNy41OS03LjU5TDE5IDhsLTkgOXpcIlxufSksICdDaGVja0JveCcpOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN2Z0ljb24oIC8qI19fUFVSRV9fKi9fanN4KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6XCJcbn0pLCAnSW5kZXRlcm1pbmF0ZUNoZWNrQm94Jyk7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENoZWNrYm94VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlDaGVja2JveCcsIHNsb3QpO1xufVxuY29uc3QgY2hlY2tib3hDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2hlY2tib3gnLCBbJ3Jvb3QnLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdpbmRldGVybWluYXRlJywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeSddKTtcbmV4cG9ydCBkZWZhdWx0IGNoZWNrYm94Q2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGVja2VkSWNvblwiLCBcImNvbG9yXCIsIFwiaWNvblwiLCBcImluZGV0ZXJtaW5hdGVcIiwgXCJpbmRldGVybWluYXRlSWNvblwiLCBcImlucHV0UHJvcHNcIiwgXCJzaXplXCIsIFwiY2xhc3NOYW1lXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgU3dpdGNoQmFzZSBmcm9tICcuLi9pbnRlcm5hbC9Td2l0Y2hCYXNlJztcbmltcG9ydCBDaGVja0JveE91dGxpbmVCbGFua0ljb24gZnJvbSAnLi4vaW50ZXJuYWwvc3ZnLWljb25zL0NoZWNrQm94T3V0bGluZUJsYW5rJztcbmltcG9ydCBDaGVja0JveEljb24gZnJvbSAnLi4vaW50ZXJuYWwvc3ZnLWljb25zL0NoZWNrQm94JztcbmltcG9ydCBJbmRldGVybWluYXRlQ2hlY2tCb3hJY29uIGZyb20gJy4uL2ludGVybmFsL3N2Zy1pY29ucy9JbmRldGVybWluYXRlQ2hlY2tCb3gnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IGNoZWNrYm94Q2xhc3NlcywgeyBnZXRDaGVja2JveFV0aWxpdHlDbGFzcyB9IGZyb20gJy4vY2hlY2tib3hDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBpbmRldGVybWluYXRlLFxuICAgIGNvbG9yXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBpbmRldGVybWluYXRlICYmICdpbmRldGVybWluYXRlJywgYGNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gXVxuICB9O1xuICBjb25zdCBjb21wb3NlZENsYXNzZXMgPSBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0Q2hlY2tib3hVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgQ2hlY2tib3hSb290ID0gc3R5bGVkKFN3aXRjaEJhc2UsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcm9vdFNob3VsZEZvcndhcmRQcm9wKHByb3ApIHx8IHByb3AgPT09ICdjbGFzc2VzJyxcbiAgbmFtZTogJ011aUNoZWNrYm94JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuaW5kZXRlcm1pbmF0ZSAmJiBzdHlsZXMuaW5kZXRlcm1pbmF0ZSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF1dO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5zZWNvbmRhcnlcbn0sICFvd25lclN0YXRlLmRpc2FibGVSaXBwbGUgJiYge1xuICAnJjpob3Zlcic6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke293bmVyU3RhdGUuY29sb3IgPT09ICdkZWZhdWx0JyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uYWN0aXZlQ2hhbm5lbCA6IHRoZW1lLnZhcnMucGFsZXR0ZS5wcmltYXJ5Lm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYShvd25lclN0YXRlLmNvbG9yID09PSAnZGVmYXVsdCcgPyB0aGVtZS5wYWxldHRlLmFjdGlvbi5hY3RpdmUgOiB0aGVtZS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICB9XG4gIH1cbn0sIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiB7XG4gIFtgJi4ke2NoZWNrYm94Q2xhc3Nlcy5jaGVja2VkfSwgJi4ke2NoZWNrYm94Q2xhc3Nlcy5pbmRldGVybWluYXRlfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbiAgfSxcbiAgW2AmLiR7Y2hlY2tib3hDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICB9XG59KSk7XG5jb25zdCBkZWZhdWx0Q2hlY2tlZEljb24gPSAvKiNfX1BVUkVfXyovX2pzeChDaGVja0JveEljb24sIHt9KTtcbmNvbnN0IGRlZmF1bHRJY29uID0gLyojX19QVVJFX18qL19qc3goQ2hlY2tCb3hPdXRsaW5lQmxhbmtJY29uLCB7fSk7XG5jb25zdCBkZWZhdWx0SW5kZXRlcm1pbmF0ZUljb24gPSAvKiNfX1BVUkVfXyovX2pzeChJbmRldGVybWluYXRlQ2hlY2tCb3hJY29uLCB7fSk7XG5jb25zdCBDaGVja2JveCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIENoZWNrYm94KGluUHJvcHMsIHJlZikge1xuICB2YXIgX2ljb24kcHJvcHMkZm9udFNpemUsIF9pbmRldGVybWluYXRlSWNvbiRwcjtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQ2hlY2tib3gnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGVja2VkSWNvbiA9IGRlZmF1bHRDaGVja2VkSWNvbixcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgaWNvbjogaWNvblByb3AgPSBkZWZhdWx0SWNvbixcbiAgICAgIGluZGV0ZXJtaW5hdGUgPSBmYWxzZSxcbiAgICAgIGluZGV0ZXJtaW5hdGVJY29uOiBpbmRldGVybWluYXRlSWNvblByb3AgPSBkZWZhdWx0SW5kZXRlcm1pbmF0ZUljb24sXG4gICAgICBpbnB1dFByb3BzLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nLFxuICAgICAgY2xhc3NOYW1lXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGljb24gPSBpbmRldGVybWluYXRlID8gaW5kZXRlcm1pbmF0ZUljb25Qcm9wIDogaWNvblByb3A7XG4gIGNvbnN0IGluZGV0ZXJtaW5hdGVJY29uID0gaW5kZXRlcm1pbmF0ZSA/IGluZGV0ZXJtaW5hdGVJY29uUHJvcCA6IGNoZWNrZWRJY29uO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgaW5kZXRlcm1pbmF0ZSxcbiAgICBzaXplXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDaGVja2JveFJvb3QsIF9leHRlbmRzKHtcbiAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgaW5wdXRQcm9wczogX2V4dGVuZHMoe1xuICAgICAgJ2RhdGEtaW5kZXRlcm1pbmF0ZSc6IGluZGV0ZXJtaW5hdGVcbiAgICB9LCBpbnB1dFByb3BzKSxcbiAgICBpY29uOiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGljb24sIHtcbiAgICAgIGZvbnRTaXplOiAoX2ljb24kcHJvcHMkZm9udFNpemUgPSBpY29uLnByb3BzLmZvbnRTaXplKSAhPSBudWxsID8gX2ljb24kcHJvcHMkZm9udFNpemUgOiBzaXplXG4gICAgfSksXG4gICAgY2hlY2tlZEljb246IC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoaW5kZXRlcm1pbmF0ZUljb24sIHtcbiAgICAgIGZvbnRTaXplOiAoX2luZGV0ZXJtaW5hdGVJY29uJHByID0gaW5kZXRlcm1pbmF0ZUljb24ucHJvcHMuZm9udFNpemUpICE9IG51bGwgPyBfaW5kZXRlcm1pbmF0ZUljb24kcHIgOiBzaXplXG4gICAgfSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpXG4gIH0sIG90aGVyLCB7XG4gICAgY2xhc3NlczogY2xhc3Nlc1xuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IENoZWNrYm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBjaGVja2VkLlxuICAgKi9cbiAgY2hlY2tlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBkaXNwbGF5IHdoZW4gdGhlIGNvbXBvbmVudCBpcyBjaGVja2VkLlxuICAgKiBAZGVmYXVsdCA8Q2hlY2tCb3hJY29uIC8+XG4gICAqL1xuICBjaGVja2VkSWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZGVmYXVsdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY2hlY2tlZCBzdGF0ZS4gVXNlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgY29udHJvbGxlZC5cbiAgICovXG4gIGRlZmF1bHRDaGVja2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGRpc3BsYXkgd2hlbiB0aGUgY29tcG9uZW50IGlzIHVuY2hlY2tlZC5cbiAgICogQGRlZmF1bHQgPENoZWNrQm94T3V0bGluZUJsYW5rSWNvbiAvPlxuICAgKi9cbiAgaWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGFwcGVhcnMgaW5kZXRlcm1pbmF0ZS5cbiAgICogVGhpcyBkb2VzIG5vdCBzZXQgdGhlIG5hdGl2ZSBpbnB1dCBlbGVtZW50IHRvIGluZGV0ZXJtaW5hdGUgZHVlXG4gICAqIHRvIGluY29uc2lzdGVudCBiZWhhdmlvciBhY3Jvc3MgYnJvd3NlcnMuXG4gICAqIEhvd2V2ZXIsIHdlIHNldCBhIGBkYXRhLWluZGV0ZXJtaW5hdGVgIGF0dHJpYnV0ZSBvbiB0aGUgYGlucHV0YC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGluZGV0ZXJtaW5hdGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGljb24gdG8gZGlzcGxheSB3aGVuIHRoZSBjb21wb25lbnQgaXMgaW5kZXRlcm1pbmF0ZS5cbiAgICogQGRlZmF1bHQgPEluZGV0ZXJtaW5hdGVDaGVja0JveEljb24gLz5cbiAgICovXG4gIGluZGV0ZXJtaW5hdGVJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFtBdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjQXR0cmlidXRlcykgYXBwbGllZCB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFBhc3MgYSByZWYgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIGlucHV0UmVmOiByZWZUeXBlLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgc3RhdGUgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50Pn0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqIFlvdSBjYW4gcHVsbCBvdXQgdGhlIG5ldyBjaGVja2VkIHN0YXRlIGJ5IGFjY2Vzc2luZyBgZXZlbnQudGFyZ2V0LmNoZWNrZWRgIChib29sZWFuKS5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgZWxlbWVudCBpcyByZXF1aXJlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIGBzbWFsbGAgaXMgZXF1aXZhbGVudCB0byB0aGUgZGVuc2UgY2hlY2tib3ggc3R5bGluZy5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnbWVkaXVtJywgJ3NtYWxsJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC4gVGhlIERPTSBBUEkgY2FzdHMgdGhpcyB0byBhIHN0cmluZy5cbiAgICogVGhlIGJyb3dzZXIgdXNlcyBcIm9uXCIgYXMgdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLmFueVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXREaXZpZGVyVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlEaXZpZGVyJywgc2xvdCk7XG59XG5jb25zdCBkaXZpZGVyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aURpdmlkZXInLCBbJ3Jvb3QnLCAnYWJzb2x1dGUnLCAnZnVsbFdpZHRoJywgJ2luc2V0JywgJ21pZGRsZScsICdmbGV4SXRlbScsICdsaWdodCcsICd2ZXJ0aWNhbCcsICd3aXRoQ2hpbGRyZW4nLCAnd2l0aENoaWxkcmVuVmVydGljYWwnLCAndGV4dEFsaWduUmlnaHQnLCAndGV4dEFsaWduTGVmdCcsICd3cmFwcGVyJywgJ3dyYXBwZXJWZXJ0aWNhbCddKTtcbmV4cG9ydCBkZWZhdWx0IGRpdmlkZXJDbGFzc2VzOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRMaXN0SXRlbUljb25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUxpc3RJdGVtSWNvbicsIHNsb3QpO1xufVxuY29uc3QgbGlzdEl0ZW1JY29uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUxpc3RJdGVtSWNvbicsIFsncm9vdCcsICdhbGlnbkl0ZW1zRmxleFN0YXJ0J10pO1xuZXhwb3J0IGRlZmF1bHQgbGlzdEl0ZW1JY29uQ2xhc3NlczsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlzdEl0ZW1UZXh0VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlMaXN0SXRlbVRleHQnLCBzbG90KTtcbn1cbmNvbnN0IGxpc3RJdGVtVGV4dENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlMaXN0SXRlbVRleHQnLCBbJ3Jvb3QnLCAnbXVsdGlsaW5lJywgJ2RlbnNlJywgJ2luc2V0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pO1xuZXhwb3J0IGRlZmF1bHQgbGlzdEl0ZW1UZXh0Q2xhc3NlczsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVudUl0ZW1VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aU1lbnVJdGVtJywgc2xvdCk7XG59XG5jb25zdCBtZW51SXRlbUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlNZW51SXRlbScsIFsncm9vdCcsICdmb2N1c1Zpc2libGUnLCAnZGVuc2UnLCAnZGlzYWJsZWQnLCAnZGl2aWRlcicsICdndXR0ZXJzJywgJ3NlbGVjdGVkJ10pO1xuZXhwb3J0IGRlZmF1bHQgbWVudUl0ZW1DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImF1dG9Gb2N1c1wiLCBcImNvbXBvbmVudFwiLCBcImRlbnNlXCIsIFwiZGl2aWRlclwiLCBcImRpc2FibGVHdXR0ZXJzXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwicm9sZVwiLCBcInRhYkluZGV4XCIsIFwiY2xhc3NOYW1lXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IExpc3RDb250ZXh0IGZyb20gJy4uL0xpc3QvTGlzdENvbnRleHQnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgdXNlRW5oYW5jZWRFZmZlY3QgZnJvbSAnLi4vdXRpbHMvdXNlRW5oYW5jZWRFZmZlY3QnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgeyBkaXZpZGVyQ2xhc3NlcyB9IGZyb20gJy4uL0RpdmlkZXInO1xuaW1wb3J0IHsgbGlzdEl0ZW1JY29uQ2xhc3NlcyB9IGZyb20gJy4uL0xpc3RJdGVtSWNvbic7XG5pbXBvcnQgeyBsaXN0SXRlbVRleHRDbGFzc2VzIH0gZnJvbSAnLi4vTGlzdEl0ZW1UZXh0JztcbmltcG9ydCBtZW51SXRlbUNsYXNzZXMsIHsgZ2V0TWVudUl0ZW1VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL21lbnVJdGVtQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGNvbnN0IG92ZXJyaWRlc1Jlc29sdmVyID0gKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgY29uc3Qge1xuICAgIG93bmVyU3RhdGVcbiAgfSA9IHByb3BzO1xuICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmRlbnNlICYmIHN0eWxlcy5kZW5zZSwgb3duZXJTdGF0ZS5kaXZpZGVyICYmIHN0eWxlcy5kaXZpZGVyLCAhb3duZXJTdGF0ZS5kaXNhYmxlR3V0dGVycyAmJiBzdHlsZXMuZ3V0dGVyc107XG59O1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGRpc2FibGVkLFxuICAgIGRlbnNlLFxuICAgIGRpdmlkZXIsXG4gICAgZGlzYWJsZUd1dHRlcnMsXG4gICAgc2VsZWN0ZWQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgZGVuc2UgJiYgJ2RlbnNlJywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJywgIWRpc2FibGVHdXR0ZXJzICYmICdndXR0ZXJzJywgZGl2aWRlciAmJiAnZGl2aWRlcicsIHNlbGVjdGVkICYmICdzZWxlY3RlZCddXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRNZW51SXRlbVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBNZW51SXRlbVJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpTWVudUl0ZW0nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyXG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYm9keTEsIHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gIG1pbkhlaWdodDogNDgsXG4gIHBhZGRpbmdUb3A6IDYsXG4gIHBhZGRpbmdCb3R0b206IDYsXG4gIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xufSwgIW93bmVyU3RhdGUuZGlzYWJsZUd1dHRlcnMgJiYge1xuICBwYWRkaW5nTGVmdDogMTYsXG4gIHBhZGRpbmdSaWdodDogMTZcbn0sIG93bmVyU3RhdGUuZGl2aWRlciAmJiB7XG4gIGJvcmRlckJvdHRvbTogYDFweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmRpdmlkZXJ9YCxcbiAgYmFja2dyb3VuZENsaXA6ICdwYWRkaW5nLWJveCdcbn0sIHtcbiAgJyY6aG92ZXInOiB7XG4gICAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5ob3ZlcixcbiAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgIH1cbiAgfSxcbiAgW2AmLiR7bWVudUl0ZW1DbGFzc2VzLnNlbGVjdGVkfWBdOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUucHJpbWFyeS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eSksXG4gICAgW2AmLiR7bWVudUl0ZW1DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUucHJpbWFyeS5tYWluQ2hhbm5lbH0gLyBjYWxjKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9ICsgJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmZvY3VzT3BhY2l0eX0pKWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5ICsgdGhlbWUucGFsZXR0ZS5hY3Rpb24uZm9jdXNPcGFjaXR5KVxuICAgIH1cbiAgfSxcbiAgW2AmLiR7bWVudUl0ZW1DbGFzc2VzLnNlbGVjdGVkfTpob3ZlcmBdOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUucHJpbWFyeS5tYWluQ2hhbm5lbH0gLyBjYWxjKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9ICsgJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pKWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5ICsgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLnByaW1hcnkubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHkpXG4gICAgfVxuICB9LFxuICBbYCYuJHttZW51SXRlbUNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZm9jdXNcbiAgfSxcbiAgW2AmLiR7bWVudUl0ZW1DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgb3BhY2l0eTogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkT3BhY2l0eVxuICB9LFxuICBbYCYgKyAuJHtkaXZpZGVyQ2xhc3Nlcy5yb290fWBdOiB7XG4gICAgbWFyZ2luVG9wOiB0aGVtZS5zcGFjaW5nKDEpLFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZygxKVxuICB9LFxuICBbYCYgKyAuJHtkaXZpZGVyQ2xhc3Nlcy5pbnNldH1gXToge1xuICAgIG1hcmdpbkxlZnQ6IDUyXG4gIH0sXG4gIFtgJiAuJHtsaXN0SXRlbVRleHRDbGFzc2VzLnJvb3R9YF06IHtcbiAgICBtYXJnaW5Ub3A6IDAsXG4gICAgbWFyZ2luQm90dG9tOiAwXG4gIH0sXG4gIFtgJiAuJHtsaXN0SXRlbVRleHRDbGFzc2VzLmluc2V0fWBdOiB7XG4gICAgcGFkZGluZ0xlZnQ6IDM2XG4gIH0sXG4gIFtgJiAuJHtsaXN0SXRlbUljb25DbGFzc2VzLnJvb3R9YF06IHtcbiAgICBtaW5XaWR0aDogMzZcbiAgfVxufSwgIW93bmVyU3RhdGUuZGVuc2UgJiYge1xuICBbdGhlbWUuYnJlYWtwb2ludHMudXAoJ3NtJyldOiB7XG4gICAgbWluSGVpZ2h0OiAnYXV0bydcbiAgfVxufSwgb3duZXJTdGF0ZS5kZW5zZSAmJiBfZXh0ZW5kcyh7XG4gIG1pbkhlaWdodDogMzIsXG4gIC8vIGh0dHBzOi8vbTIubWF0ZXJpYWwuaW8vY29tcG9uZW50cy9tZW51cyNzcGVjcyA+IERlbnNlXG4gIHBhZGRpbmdUb3A6IDQsXG4gIHBhZGRpbmdCb3R0b206IDRcbn0sIHRoZW1lLnR5cG9ncmFwaHkuYm9keTIsIHtcbiAgW2AmIC4ke2xpc3RJdGVtSWNvbkNsYXNzZXMucm9vdH0gc3ZnYF06IHtcbiAgICBmb250U2l6ZTogJzEuMjVyZW0nXG4gIH1cbn0pKSk7XG5jb25zdCBNZW51SXRlbSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIE1lbnVJdGVtKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlNZW51SXRlbSdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICAgICAgY29tcG9uZW50ID0gJ2xpJyxcbiAgICAgIGRlbnNlID0gZmFsc2UsXG4gICAgICBkaXZpZGVyID0gZmFsc2UsXG4gICAgICBkaXNhYmxlR3V0dGVycyA9IGZhbHNlLFxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgICAgcm9sZSA9ICdtZW51aXRlbScsXG4gICAgICB0YWJJbmRleDogdGFiSW5kZXhQcm9wLFxuICAgICAgY2xhc3NOYW1lXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VDb250ZXh0KExpc3RDb250ZXh0KTtcbiAgY29uc3QgY2hpbGRDb250ZXh0ID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGRlbnNlOiBkZW5zZSB8fCBjb250ZXh0LmRlbnNlIHx8IGZhbHNlLFxuICAgIGRpc2FibGVHdXR0ZXJzXG4gIH0pLCBbY29udGV4dC5kZW5zZSwgZGVuc2UsIGRpc2FibGVHdXR0ZXJzXSk7XG4gIGNvbnN0IG1lbnVJdGVtUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGF1dG9Gb2N1cykge1xuICAgICAgaWYgKG1lbnVJdGVtUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgbWVudUl0ZW1SZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ01VSTogVW5hYmxlIHRvIHNldCBmb2N1cyB0byBhIE1lbnVJdGVtIHdob3NlIGNvbXBvbmVudCBoYXMgbm90IGJlZW4gcmVuZGVyZWQuJyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbYXV0b0ZvY3VzXSk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBkZW5zZTogY2hpbGRDb250ZXh0LmRlbnNlLFxuICAgIGRpdmlkZXIsXG4gICAgZGlzYWJsZUd1dHRlcnNcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhwcm9wcyk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYobWVudUl0ZW1SZWYsIHJlZik7XG4gIGxldCB0YWJJbmRleDtcbiAgaWYgKCFwcm9wcy5kaXNhYmxlZCkge1xuICAgIHRhYkluZGV4ID0gdGFiSW5kZXhQcm9wICE9PSB1bmRlZmluZWQgPyB0YWJJbmRleFByb3AgOiAtMTtcbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTGlzdENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY2hpbGRDb250ZXh0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChNZW51SXRlbVJvb3QsIF9leHRlbmRzKHtcbiAgICAgIHJlZjogaGFuZGxlUmVmLFxuICAgICAgcm9sZTogcm9sZSxcbiAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuZm9jdXNWaXNpYmxlLCBmb2N1c1Zpc2libGVDbGFzc05hbWUpLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKVxuICAgIH0sIG90aGVyLCB7XG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2xhc3NlczogY2xhc3Nlc1xuICAgIH0pKVxuICB9KTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gTWVudUl0ZW0ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbGlzdCBpdGVtIGlzIGZvY3VzZWQgZHVyaW5nIHRoZSBmaXJzdCBtb3VudC5cbiAgICogRm9jdXMgd2lsbCBhbHNvIGJlIHRyaWdnZXJlZCBpZiB0aGUgdmFsdWUgY2hhbmdlcyBmcm9tIGZhbHNlIHRvIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBjb21wYWN0IHZlcnRpY2FsIHBhZGRpbmcgZGVzaWduZWQgZm9yIGtleWJvYXJkIGFuZCBtb3VzZSBpbnB1dCBpcyB1c2VkLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBNZW51IGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlbnNlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhZGRpbmcgaXMgcmVtb3ZlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVHdXR0ZXJzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYSAxcHggbGlnaHQgYm9yZGVyIGlzIGFkZGVkIHRvIHRoZSBib3R0b20gb2YgdGhlIG1lbnUgaXRlbS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpdmlkZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhpcyBwcm9wIGNhbiBoZWxwIGlkZW50aWZ5IHdoaWNoIGVsZW1lbnQgaGFzIGtleWJvYXJkIGZvY3VzLlxuICAgKiBUaGUgY2xhc3MgbmFtZSB3aWxsIGJlIGFwcGxpZWQgd2hlbiB0aGUgZWxlbWVudCBnYWlucyB0aGUgZm9jdXMgdGhyb3VnaCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICogSXQncyBhIHBvbHlmaWxsIGZvciB0aGUgW0NTUyA6Zm9jdXMtdmlzaWJsZSBzZWxlY3Rvcl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3NlbGVjdG9ycy00LyN0aGUtZm9jdXMtdmlzaWJsZS1wc2V1ZG8pLlxuICAgKiBUaGUgcmF0aW9uYWxlIGZvciB1c2luZyB0aGlzIGZlYXR1cmUgW2lzIGV4cGxhaW5lZCBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vV0lDRy9mb2N1cy12aXNpYmxlL2Jsb2IvSEVBRC9leHBsYWluZXIubWQpLlxuICAgKiBBIFtwb2x5ZmlsbCBjYW4gYmUgdXNlZF0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZSkgdG8gYXBwbHkgYSBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgdG8gb3RoZXIgY29tcG9uZW50c1xuICAgKiBpZiBuZWVkZWQuXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByb2xlOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2VsZWN0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzZWxlY3RlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICB0YWJJbmRleDogUHJvcFR5cGVzLm51bWJlclxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IE1lbnVJdGVtOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlSWQgYXMgdXNlSWQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUlkOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xubGV0IGdsb2JhbElkID0gMDtcbmZ1bmN0aW9uIHVzZUdsb2JhbElkKGlkT3ZlcnJpZGUpIHtcbiAgY29uc3QgW2RlZmF1bHRJZCwgc2V0RGVmYXVsdElkXSA9IFJlYWN0LnVzZVN0YXRlKGlkT3ZlcnJpZGUpO1xuICBjb25zdCBpZCA9IGlkT3ZlcnJpZGUgfHwgZGVmYXVsdElkO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0SWQgPT0gbnVsbCkge1xuICAgICAgLy8gRmFsbGJhY2sgdG8gdGhpcyBkZWZhdWx0IGlkIHdoZW4gcG9zc2libGUuXG4gICAgICAvLyBVc2UgdGhlIGluY3JlbWVudGluZyB2YWx1ZSBmb3IgY2xpZW50LXNpZGUgcmVuZGVyaW5nIG9ubHkuXG4gICAgICAvLyBXZSBjYW4ndCB1c2UgaXQgc2VydmVyLXNpZGUuXG4gICAgICAvLyBJZiB5b3Ugd2FudCB0byB1c2UgcmFuZG9tIHZhbHVlcyBwbGVhc2UgY29uc2lkZXIgdGhlIEJpcnRoZGF5IFByb2JsZW06IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpcnRoZGF5X3Byb2JsZW1cbiAgICAgIGdsb2JhbElkICs9IDE7XG4gICAgICBzZXREZWZhdWx0SWQoYG11aS0ke2dsb2JhbElkfWApO1xuICAgIH1cbiAgfSwgW2RlZmF1bHRJZF0pO1xuICByZXR1cm4gaWQ7XG59XG5cbi8vIGRvd25zdHJlYW0gYnVuZGxlcnMgbWF5IHJlbW92ZSB1bm5lY2Vzc2FyeSBjb25jYXRlbmF0aW9uLCBidXQgd29uJ3QgcmVtb3ZlIHRvU3RyaW5nIGNhbGwgLS0gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay9pc3N1ZXMvMTQ4MTRcbmNvbnN0IG1heWJlUmVhY3RVc2VJZCA9IFJlYWN0Wyd1c2VJZCcudG9TdHJpbmcoKV07XG4vKipcbiAqXG4gKiBAZXhhbXBsZSA8ZGl2IGlkPXt1c2VJZCgpfSAvPlxuICogQHBhcmFtIGlkT3ZlcnJpZGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUlkKGlkT3ZlcnJpZGUpIHtcbiAgaWYgKG1heWJlUmVhY3RVc2VJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcmVhY3RJZCA9IG1heWJlUmVhY3RVc2VJZCgpO1xuICAgIHJldHVybiBpZE92ZXJyaWRlICE9IG51bGwgPyBpZE92ZXJyaWRlIDogcmVhY3RJZDtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MgLS0gYFJlYWN0LnVzZUlkYCBpcyBpbnZhcmlhbnQgYXQgcnVudGltZS5cbiAgcmV0dXJuIHVzZUdsb2JhbElkKGlkT3ZlcnJpZGUpO1xufSJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwiZ2V0U3dpdGNoQmFzZVV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJTd2l0Y2hCYXNlUm9vdCIsInN0eWxlZCIsIkJ1dHRvbkJhc2UiLCJvd25lclN0YXRlIiwicGFkZGluZyIsImJvcmRlclJhZGl1cyIsImVkZ2UiLCJtYXJnaW5MZWZ0Iiwic2l6ZSIsIm1hcmdpblJpZ2h0IiwiU3dpdGNoQmFzZUlucHV0IiwiY3Vyc29yIiwicG9zaXRpb24iLCJvcGFjaXR5Iiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0IiwibWFyZ2luIiwiekluZGV4IiwicHJvcHMiLCJyZWYiLCJhdXRvRm9jdXMiLCJjaGVja2VkIiwiY2hlY2tlZFByb3AiLCJjaGVja2VkSWNvbiIsImNsYXNzTmFtZSIsImRlZmF1bHRDaGVja2VkIiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJkaXNhYmxlRm9jdXNSaXBwbGUiLCJpY29uIiwiaWQiLCJpbnB1dFByb3BzIiwiaW5wdXRSZWYiLCJuYW1lIiwib25CbHVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwicmVhZE9ubHkiLCJyZXF1aXJlZCIsInRhYkluZGV4IiwidHlwZSIsInZhbHVlIiwib3RoZXIiLCJzZXRDaGVja2VkU3RhdGUiLCJ1c2VDb250cm9sbGVkIiwiY29udHJvbGxlZCIsIkJvb2xlYW4iLCJzdGF0ZSIsIm11aUZvcm1Db250cm9sIiwidXNlRm9ybUNvbnRyb2wiLCJoYXNMYWJlbEZvciIsImNsYXNzZXMiLCJzbG90cyIsInJvb3QiLCJjYXBpdGFsaXplIiwiaW5wdXQiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiY29tcG9uZW50IiwiY2VudGVyUmlwcGxlIiwiZm9jdXNSaXBwbGUiLCJyb2xlIiwidW5kZWZpbmVkIiwiZXZlbnQiLCJjaGlsZHJlbiIsIm5hdGl2ZUV2ZW50IiwiZGVmYXVsdFByZXZlbnRlZCIsIm5ld0NoZWNrZWQiLCJ0YXJnZXQiLCJjcmVhdGVTdmdJY29uIiwiZ2V0Q2hlY2tib3hVdGlsaXR5Q2xhc3MiLCJDaGVja2JveFJvb3QiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJvdmVycmlkZXNSZXNvbHZlciIsInN0eWxlcyIsImluZGV0ZXJtaW5hdGUiLCJjb2xvciIsInRoZW1lIiwidmFycyIsInBhbGV0dGUiLCJ0ZXh0Iiwic2Vjb25kYXJ5IiwiZGlzYWJsZVJpcHBsZSIsImJhY2tncm91bmRDb2xvciIsImFjdGlvbiIsImFjdGl2ZUNoYW5uZWwiLCJwcmltYXJ5IiwibWFpbkNoYW5uZWwiLCJob3Zlck9wYWNpdHkiLCJhY3RpdmUiLCJtYWluIiwiZGVmYXVsdENoZWNrZWRJY29uIiwiQ2hlY2tCb3giLCJkZWZhdWx0SWNvbiIsIkNoZWNrQm94T3V0bGluZUJsYW5rIiwiZGVmYXVsdEluZGV0ZXJtaW5hdGVJY29uIiwiSW5kZXRlcm1pbmF0ZUNoZWNrQm94IiwiaW5Qcm9wcyIsIl9pY29uJHByb3BzJGZvbnRTaXplIiwiX2luZGV0ZXJtaW5hdGVJY29uJHByIiwidXNlVGhlbWVQcm9wcyIsImljb25Qcm9wIiwiaW5kZXRlcm1pbmF0ZUljb24iLCJpbmRldGVybWluYXRlSWNvblByb3AiLCJjb21wb3NlZENsYXNzZXMiLCJmb250U2l6ZSIsImdldERpdmlkZXJVdGlsaXR5Q2xhc3MiLCJnZXRNZW51SXRlbVV0aWxpdHlDbGFzcyIsIk1lbnVJdGVtUm9vdCIsImRlbnNlIiwiZGl2aWRlciIsImRpc2FibGVHdXR0ZXJzIiwiZ3V0dGVycyIsInR5cG9ncmFwaHkiLCJib2R5MSIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJ0ZXh0RGVjb3JhdGlvbiIsIm1pbkhlaWdodCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm94U2l6aW5nIiwid2hpdGVTcGFjZSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiYm9yZGVyQm90dG9tIiwiYmFja2dyb3VuZENsaXAiLCJob3ZlciIsInNlbGVjdGVkIiwic2VsZWN0ZWRPcGFjaXR5IiwiZm9jdXNWaXNpYmxlIiwiZm9jdXNPcGFjaXR5IiwiZm9jdXMiLCJkaXNhYmxlZE9wYWNpdHkiLCJkaXZpZGVyQ2xhc3NlcyIsIm1hcmdpblRvcCIsInNwYWNpbmciLCJtYXJnaW5Cb3R0b20iLCJpbnNldCIsIm1pbldpZHRoIiwiYnJlYWtwb2ludHMiLCJ1cCIsImJvZHkyIiwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lIiwidGFiSW5kZXhQcm9wIiwiY29udGV4dCIsIkxpc3RDb250ZXh0IiwiY2hpbGRDb250ZXh0IiwibWVudUl0ZW1SZWYiLCJ1c2VFbmhhbmNlZEVmZmVjdCIsImN1cnJlbnQiLCJoYW5kbGVSZWYiLCJ1c2VGb3JrUmVmIiwiUHJvdmlkZXIiLCJnbG9iYWxJZCIsIm1heWJlUmVhY3RVc2VJZCIsInRvU3RyaW5nIiwidXNlSWQiLCJpZE92ZXJyaWRlIiwicmVhY3RJZCIsImRlZmF1bHRJZCIsInNldERlZmF1bHRJZCIsInVzZUdsb2JhbElkIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4566.bf37125f.js b/react_frontend/static/react_frontend/js/4566.bf37125f.js new file mode 100644 index 000000000..d45ba53a5 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4566.bf37125f.js @@ -0,0 +1,3 @@ +/*! For license information please see 4566.bf37125f.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4566,7115],{9262:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var n=r(6540),o=r(5556),s=r.n(o);const a=r.p+"f1161e013312668b9ed4.png",i=r.p+"b5c6f9dd7b4e71f2532b.svg";var c=r(7115),u=r(4848);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,s,a,i=[],c=!0,u=!1;try{if(s=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=s.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";r.r(t),r.d(t,{drawImage:()=>o});var n=new Image;function o(e){var t=document.getElementById("gui_canvas_right"),r=t.getContext("2d");function o(){window.requestAnimationFrame(o),r.drawImage(n,0,0)}n.onload=function(){o()};var s,a=JSON.parse(e.image),i=(s=a.image,decodeURIComponent(escape(s))),c=a.shape;""!=i&&(n.src="data:image/jpeg;base64,"+i,t.width=c[1],t.height=c[0])}},2694:(e,t,r)=>{"use strict";var n=r(6925);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,s,a){if(a!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:o};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,s={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)a.call(t,n)&&!c.hasOwnProperty(n)&&(s[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===s[n]&&(s[n]=t[n]);return{$$typeof:o,type:e,key:u,ref:l,props:s,_owner:i.current}}t.Fragment=s,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDU2Ni5iOWJkNTA1ZS5qcyIsIm1hcHBpbmdzIjoiO294Q0FRQSxTQUFTQSxFQUE0QkMsR0FDbkMsSUFBd0RDLEVBQUFDLEVBQXBCQyxFQUFBQSxTQUFlLE1BQUssR0FBakRDLEVBQVVILEVBQUEsR0FBRUksRUFBYUosRUFBQSxHQUNvQkssRUFBQUosRUFBcEJDLEVBQUFBLFNBQWUsTUFBSyxHQUE3Q0ksRUFBUUQsRUFBQSxHQUFFRSxFQUFXRixFQUFBLEdBQzRCRyxFQUFBUCxFQUFsQkMsRUFBQUEsU0FBZSxJQUFHLEdBQWpETyxFQUFhRCxFQUFBLEdBQUVFLEVBQVlGLEVBQUEsR0FFOUJHLE9BQWVDLEVBQ2ZDLE9BQWVELEVBRWJFLEVBQWlCLElBQUlDLGdCQUFlLFNBQUNDLEdBQ3pDLElBQUlDLEVBQU1ELEVBQVEsR0FBR0UsT0FFakJDLEVBQVMsS0FBTyxLQUFRLEtBQU1GLEVBQUlHLGFBQ2xDQyxFQUFVLEtBQU8sS0FBUSxLQUFNSixFQUFJSyxjQUVuQ1gsR0FDRlAsRUFBYyxDQUFDTyxFQUFhLEdBQUdVLEVBQU9WLEVBQWEsR0FBR1EsR0FBUVIsRUFBYSxLQUd6RUUsR0FDRk4sRUFBWSxDQUFDTSxFQUFhLEdBQUdRLEVBQU9SLEVBQWEsR0FBR00sR0FBUU4sRUFBYSxLQUczRUgsRUFBYSxHQUNmLElBNkZBLE9BM0ZBUixFQUFBQSxXQUFnQixXQUNkcUIsUUFBUUMsSUFBSSxtREFFWixJQUFNQyxFQUFXLFNBQUNDLEdBQ2hCLElBQU1DLEVBQWFELEVBQVFFLEtBQUtDLE9BRzVCRixFQUFXRyxPQUNDQyxLQUFLQyxNQUFNTCxFQUFXRyxPQUMxQkEsUUFDTkcsRUFBQUEsRUFBQUEsV0FBVU4sR0FLaEIsSUFBSVYsRUFBTWlCLFNBQVNDLGVBQWUsZ0JBQzlCaEIsRUFBUyxLQUFPLEtBQVEsS0FBTUYsRUFBSUcsYUFDbENDLEVBQVUsS0FBTyxLQUFRLEtBQU1KLEVBQUlLLGNBRXZDLEdBQUlLLEVBQVdTLElBQUssQ0FDbEIsSUFDTUMsRUFET1YsRUFBV1MsSUFBSUUsVUFBVSxFQUFHWCxFQUFXUyxJQUFJRyxPQUFTLEdBQzVDQyxNQUFNLEtBQUtKLEtBQUksU0FBQUssR0FBSSxPQUFJQyxXQUFXRCxFQUFLLElBRXRERSxFQURXaEIsRUFBV2lCLEtBQUtOLFVBQVUsRUFBR1gsRUFBV2lCLEtBQUtMLE9BQVMsR0FDMUNDLE1BQU0sS0FBS0osS0FBSSxTQUFBSyxHQUFJLE9BQUlDLFdBQVdELEVBQUssSUFFcEU5QixFQUFlMEIsRUFFZmpDLEVBQWMsQ0FBQ2lDLEVBQVEsR0FBR2hCLEVBQU9nQixFQUFRLEdBQUdsQixHQUFRa0IsRUFBUSxLQUM1RGQsUUFBUUMsSUFBSW1CLEdBRWEsSUFBbkJBLEVBQVksSUFBK0IsSUFBbkJBLEVBQVksSUFBK0IsSUFBbkJBLEVBQVksS0FDaEU5QixFQUFlOEIsRUFDZnBDLEVBQVksQ0FBQ29DLEVBQVksR0FBR3RCLEVBQU9zQixFQUFZLEdBQUd4QixHQUFRd0IsRUFBWSxLQUUxRSxDQUVBLEdBQUloQixFQUFXa0IsVUFBVSxDQUN2QixJQUFNQSxFQUFZZCxLQUFLQyxNQUFNTCxFQUFXa0IsV0FDeEMsR0FBZ0IsSUFBYkEsRUFBaUIsQ0FDbEIsSUFBSUMsRUFBZ0IsR0FDcEJELEVBQVVFLFNBQVEsU0FBQUMsR0FDaEJGLEVBQWNHLEtBQUssQ0FBQ0QsRUFBUSxHQUFHM0IsRUFBUTJCLEVBQVEsR0FBRzdCLEdBQVE2QixFQUFRLEdBQUlBLEVBQVEsSUFDaEYsSUFDQXRDLEVBQWFvQyxFQUNmLENBQ0YsQ0FHQUksT0FBT0MsMkJBQTJCQyxhQUFhQyxLQUFLLE1BQU8sTUFDN0QsRUFTQSxPQVBBSCxPQUFPQywyQkFBMkJDLGFBQWFFLFVBQzdDLENBQUNKLE9BQU9DLDJCQUEyQkMsYUFBYUcsT0FBT0MsUUFDdkQvQixHQUdGWCxFQUFlMkMsUUFBUXZCLFNBQVNDLGVBQWUsaUJBRXhDLFdBQ0xaLFFBQVFDLElBQUksOERBQ1owQixPQUFPQywyQkFBMkJDLGFBQWFNLFlBQzdDLENBQUNSLE9BQU9DLDJCQUEyQkMsYUFBYUcsT0FBT0MsUUFDdkQvQixFQUVKLENBQ0YsR0FBRyxJQUVIdkIsRUFBQUEsV0FBZ0IsV0FDZCxJQUFNdUIsRUFBVyxTQUFDQyxHQUNXLGdCQUF2QkEsRUFBUUUsS0FBSytCLFFBQ2Z2RCxFQUFjLE1BQ2RHLEVBQVksTUFDWkcsRUFBYSxJQUNiQyxPQUFlQyxFQUNmQyxPQUFlRCxFQUVuQixFQU1BLE9BTEFzQyxPQUFPQywyQkFBMkJDLGFBQWFFLFVBQzdDLENBQUNKLE9BQU9DLDJCQUEyQkMsYUFBYUcsT0FBT0ssZUFDdkRuQyxHQUdLLFdBQ0xGLFFBQVFDLElBQUksOERBQ1owQixPQUFPQywyQkFBMkJDLGFBQWFNLFlBQzdDLENBQUNSLE9BQU9DLDJCQUEyQkMsYUFBYUcsT0FBT0ssZUFDdkRuQyxFQUVKLENBQ0YsR0FBRyxLQUdEb0MsRUFBQUEsRUFBQUEsTUFBQSxPQUFLQyxNQUFPLENBQUNDLFFBQVMsT0FBUTVDLE1BQU8sT0FBUUUsT0FBUSxPQUFRMkMsU0FBUyxZQUFZQyxTQUFBLEVBQ2hGQyxFQUFBQSxFQUFBQSxLQUFBLE9BQUtDLElBQUtDLEVBQVVDLElBQUksR0FBR0MsVUFBVSxrQkFBa0JDLEdBQUcsa0JBQzFEVixFQUFBQSxFQUFBQSxNQUFBLE9BQUtTLFVBQVUsVUFBVUMsR0FBRyxnQkFBZU4sU0FBQSxDQUN4QzlELElBQ0MwRCxFQUFBQSxFQUFBQSxNQUFBLE9BQUtVLEdBQUcsYUFBYVQsTUFBTyxDQUFDVSxPQUFRLEtBQU1yRSxFQUFXLEdBQUcsTUFBT3NFLElBQUt0RSxFQUFXLEdBQUksR0FBS3VFLEtBQU12RSxFQUFXLEdBQUksSUFBSThELFNBQUEsRUFDaEhDLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsSUFBS1EsRUFBUUosR0FBRyxnQkFDckJMLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0ksVUFBVSx3QkFHbEJoRSxJQUNDdUQsRUFBQUEsRUFBQUEsTUFBQSxPQUFLVSxHQUFHLFdBQVdULE1BQU8sQ0FBQ1UsT0FBUSxLQUFNbEUsRUFBUyxHQUFHLE1BQU9tRSxJQUFLbkUsRUFBUyxHQUFJLEdBQUtvRSxLQUFNcEUsRUFBUyxHQUFJLElBQUkyRCxTQUFBLEVBQ3hHQyxFQUFBQSxFQUFBQSxLQUFBLE9BQUtDLElBQUtRLEVBQVFKLEdBQUcsY0FDckJMLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0ksVUFBVSx3QkFHbEI3RCxFQUFjMkIsS0FBSSxTQUFBWSxHQUNmLE9BQ0VrQixFQUFBQSxFQUFBQSxLQUFBLE9BQUtJLFVBQVUsV0FBV1IsTUFBTyxDQUFDVSxPQUFRLEtBQU14QixFQUFRLEdBQUcsTUFBT3lCLElBQUt6QixFQUFRLEdBQUksRUFBRzBCLEtBQU0xQixFQUFRLEdBQUksRUFBRzRCLFFBQVM1QixFQUFRLElBQUlpQixVQUM5SEMsRUFBQUEsRUFBQUEsS0FBQSxPQUFLSSxVQUFVLG9CQUVwQixRQUdMSixFQUFBQSxFQUFBQSxLQUFBLFVBQVFJLFVBQVUsUUFBUUMsR0FBRyxtQkFBbUJULE1BQU8sQ0FBQ1ksS0FBTSxXQUdwRSxDQUdBNUUsRUFBNEIrRSxVQUFZLENBQ3RDQyxRQUFTQyxJQUFBQSxRQUdYLHVFQ3pKQSxJQUFJakQsRUFBUSxJQUFJa0QsTUFHVCxTQUFTL0MsRUFBV0wsR0FDdkIsSUFBSXFELEVBQVMvQyxTQUFTQyxlQUFlLG9CQUNyQytDLEVBQVVELEVBQU9FLFdBQVcsTUFRNUIsU0FBU0MsSUFDTGxDLE9BQU9tQyxzQkFBc0JELEdBQzdCRixFQUFRakQsVUFBVUgsRUFBTyxFQUFHLEVBQ2hDLENBUkFBLEVBQU13RCxPQUFTLFdBQ1hGLEdBQ0osRUFTQSxJQXZCaUJHLEVBdUJiQyxFQUFhekQsS0FBS0MsTUFBTUosRUFBS0UsT0FDN0IyRCxHQXhCYUYsRUF3QlFDLEVBQVcxRCxNQXZCN0I0RCxtQkFBbUJDLE9BQU9KLEtBd0I3QkssRUFBUUosRUFBV0ksTUFFVixJQUFWSCxJQUNDM0QsRUFBTXFDLElBQU0sMEJBQTRCc0IsRUFDeENSLEVBQU85RCxNQUFReUUsRUFBTSxHQUNyQlgsRUFBTzVELE9BQVN1RSxFQUFNLEdBRTlCLCtCQ3hCQSxJQUFJQyxFQUF1QixFQUFRLE1BRW5DLFNBQVNDLElBQWlCLENBQzFCLFNBQVNDLElBQTBCLENBQ25DQSxFQUF1QkMsa0JBQW9CRixFQUUzQ0csRUFBT0MsUUFBVSxXQUNmLFNBQVNDLEVBQUtwRyxFQUFPcUcsRUFBVUMsRUFBZUMsRUFBVUMsRUFBY0MsR0FDcEUsR0FBSUEsSUFBV1gsRUFBZixDQUlBLElBQUlZLEVBQU0sSUFBSUMsTUFDWixtTEFLRixNQURBRCxFQUFJRSxLQUFPLHNCQUNMRixDQVBOLENBUUYsQ0FFQSxTQUFTRyxJQUNQLE9BQU9ULENBQ1QsQ0FIQUEsRUFBS1UsV0FBYVYsRUFNbEIsSUFBSVcsRUFBaUIsQ0FDbkJDLE1BQU9aLEVBQ1BhLE9BQVFiLEVBQ1JjLEtBQU1kLEVBQ05lLEtBQU1mLEVBQ05nQixPQUFRaEIsRUFDUmlCLE9BQVFqQixFQUNSa0IsT0FBUWxCLEVBQ1JtQixPQUFRbkIsRUFFUm9CLElBQUtwQixFQUNMcUIsUUFBU1osRUFDVDVELFFBQVNtRCxFQUNUc0IsWUFBYXRCLEVBQ2J1QixXQUFZZCxFQUNaZSxLQUFNeEIsRUFDTnlCLFNBQVVoQixFQUNWaUIsTUFBT2pCLEVBQ1BrQixVQUFXbEIsRUFDWGhCLE1BQU9nQixFQUNQbUIsTUFBT25CLEVBRVBvQixlQUFnQmpDLEVBQ2hCQyxrQkFBbUJGLEdBS3JCLE9BRkFnQixFQUFlL0IsVUFBWStCLEVBRXBCQSxDQUNULGtCQy9DRWIsRUFBT0MsUUFBVSxFQUFRLEtBQVIsMEJDTm5CRCxFQUFPQyxRQUZvQiw0RUNBZCxJQUFJK0IsRUFBRSxFQUFRLE1BQVNDLEVBQUVDLE9BQU9DLElBQUksaUJBQWlCQyxFQUFFRixPQUFPQyxJQUFJLGtCQUFrQkUsRUFBRUMsT0FBT0MsVUFBVUMsZUFBZUMsRUFBRVQsRUFBRVUsbURBQW1EQyxrQkFBa0JDLEVBQUUsQ0FBQ0MsS0FBSSxFQUFHQyxLQUFJLEVBQUdDLFFBQU8sRUFBR0MsVUFBUyxHQUNoUCxTQUFTQyxFQUFFQyxFQUFFQyxFQUFFQyxHQUFHLElBQUlDLEVBQUVDLEVBQUUsQ0FBQyxFQUFFQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUgsVUFBaEYsSUFBU0QsSUFBSUcsRUFBRSxHQUFHSCxRQUFHLElBQVNELEVBQUVOLE1BQU1VLEVBQUUsR0FBR0osRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNVSxFQUFFTCxFQUFFTCxLQUFjSyxFQUFFZCxFQUFFb0IsS0FBS04sRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFUSxhQUFhLElBQUlMLEtBQUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTMUIsRUFBRTJCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUUxSixNQUFNd0osRUFBRU8sT0FBT3BCLEVBQUVxQixRQUFRLENBQUM3RCxFQUFROEQsU0FBUzNCLEVBQUVuQyxFQUFRK0QsSUFBSWYsRUFBRWhELEVBQVFnRSxLQUFLaEIsK0JDUHhXakQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL1NwZWNpZmljTW9udGVjYXJsb1Zpc3VhbExvYy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9tb250ZWNhcmxvX3Zpc3VhbF9sb2MvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZU1vbnRlY2FybG8uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IGhvdXNlTWFwIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL0dVSV9tYXBncmFubnlhbm5pZS5wbmdcIjtcclxuaW1wb3J0IFZhY3V1bSBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy92YWN1dW0uc3ZnXCI7XHJcbmltcG9ydCB7IGRyYXdJbWFnZSB9IGZyb20gXCIuL2hlbHBlcnMvc2hvd0ltYWdlTW9udGVjYXJsb1wiXHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCI7XHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY01vbnRlY2FybG9WaXN1YWxMb2MocHJvcHMpIHtcclxuICBjb25zdCBbdmFjdXVtUG9zZSwgc2V0VmFjdXVtUG9zZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxyXG4gIGNvbnN0IFt1c2VyUG9zZSwgc2V0VXNlclBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbdXNlclBhcnRpY2xlcywgc2V0UGFydGljbGVzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG5cclxuICB2YXIgbGFzdFJlYWxQb3NlID0gdW5kZWZpbmVkO1xyXG4gIHZhciBsYXN0VXNlclBvc2UgPSB1bmRlZmluZWQ7XHJcblxyXG4gIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICB2YXIgaW1nID0gZW50cmllc1swXS50YXJnZXQ7IFxyXG4gICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgdmFyIHdpZHRoID0gKDEwMTMgLyAzMDApIC8gKDEwMTMgL2ltZy5jbGllbnRXaWR0aCk7XHJcbiAgICB2YXIgaGVpZ2h0ID0gKDEwMTIgLyAxNTApIC8gKDEwMTIgL2ltZy5jbGllbnRIZWlnaHQpO1xyXG5cclxuICAgIGlmIChsYXN0UmVhbFBvc2UpIHtcclxuICAgICAgc2V0VmFjdXVtUG9zZShbbGFzdFJlYWxQb3NlWzFdKmhlaWdodCxsYXN0UmVhbFBvc2VbMF0qd2lkdGgsIC1sYXN0UmVhbFBvc2VbMl1dKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobGFzdFVzZXJQb3NlKSB7XHJcbiAgICAgIHNldFVzZXJQb3NlKFtsYXN0VXNlclBvc2VbMV0qaGVpZ2h0LGxhc3RVc2VyUG9zZVswXSp3aWR0aCwgLWxhc3RVc2VyUG9zZVsyXV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlcyhbXSlcclxuICB9KTtcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gc3Vic2NyaWJpbmcgdG8gWyd1cGRhdGUnXSBldmVudHNcIik7XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGVEYXRhID0gbWVzc2FnZS5kYXRhLnVwZGF0ZTtcclxuICAgICAgXHJcbiAgICAgIC8vIEzDs2dpY2EgcGFyYSBtYW5lamFyIGxhIGltw6FnZW5cclxuICAgICAgaWYgKHVwZGF0ZURhdGEuaW1hZ2UpIHtcclxuICAgICAgICBjb25zdCBpbWFnZSA9IEpTT04ucGFyc2UodXBkYXRlRGF0YS5pbWFnZSlcclxuICAgICAgICBpZiAoaW1hZ2UuaW1hZ2UpIHtcclxuICAgICAgICAgICAgZHJhd0ltYWdlKHVwZGF0ZURhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgLy8gTMOzZ2ljYSBwYXJhIG1hbmVqYXIgZWwgbWFwYVxyXG4gICAgICB2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4ZXJjaXNlLWltZycpOyBcclxuICAgICAgdmFyIHdpZHRoID0gKDEwMTIgLyAzMDApIC8gKDEwMTIgL2ltZy5jbGllbnRXaWR0aCk7XHJcbiAgICAgIHZhciBoZWlnaHQgPSAoMTAxMiAvIDE1MCkgLyAoMTAxMiAvaW1nLmNsaWVudEhlaWdodCk7XHJcblxyXG4gICAgICBpZiAodXBkYXRlRGF0YS5tYXApIHtcclxuICAgICAgICBjb25zdCBwb3NlID0gdXBkYXRlRGF0YS5tYXAuc3Vic3RyaW5nKDEsIHVwZGF0ZURhdGEubWFwLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBwb3NlLnNwbGl0KFwiLFwiKS5tYXAoaXRlbSA9PiBwYXJzZUZsb2F0KGl0ZW0pKTtcclxuICAgICAgICBjb25zdCBwb3NlVXNlciA9IHVwZGF0ZURhdGEudXNlci5zdWJzdHJpbmcoMSwgdXBkYXRlRGF0YS51c2VyLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIGNvbnN0IHVzZXJDb250ZW50ID0gcG9zZVVzZXIuc3BsaXQoXCIsXCIpLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbSkpO1xyXG5cclxuICAgICAgICBsYXN0UmVhbFBvc2UgPSBjb250ZW50O1xyXG5cclxuICAgICAgICBzZXRWYWN1dW1Qb3NlKFtjb250ZW50WzFdKmhlaWdodCxjb250ZW50WzBdKndpZHRoLCAtY29udGVudFsyXV0pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHVzZXJDb250ZW50KVxyXG5cclxuICAgICAgICBpZiAoISh1c2VyQ29udGVudFswXSA9PT0gMCAmJiB1c2VyQ29udGVudFsxXSA9PT0gMCAmJiB1c2VyQ29udGVudFsyXSA9PT0gMCkpIHtcclxuICAgICAgICAgIGxhc3RVc2VyUG9zZSA9IHVzZXJDb250ZW50O1xyXG4gICAgICAgICAgc2V0VXNlclBvc2UoW3VzZXJDb250ZW50WzFdKmhlaWdodCx1c2VyQ29udGVudFswXSp3aWR0aCwgLXVzZXJDb250ZW50WzJdXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodXBkYXRlRGF0YS5wYXJ0aWNsZXMpe1xyXG4gICAgICAgIGNvbnN0IHBhcnRpY2xlcyA9IEpTT04ucGFyc2UodXBkYXRlRGF0YS5wYXJ0aWNsZXMpO1xyXG4gICAgICAgIGlmKHBhcnRpY2xlcyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICB2YXIgbmV3X3BhcnRpY2xlcyA9IFtdO1xyXG4gICAgICAgICAgcGFydGljbGVzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIG5ld19wYXJ0aWNsZXMucHVzaChbZWxlbWVudFsxXSpoZWlnaHQsIGVsZW1lbnRbMF0qd2lkdGgsIC1lbGVtZW50WzJdLCBlbGVtZW50WzNdXSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgc2V0UGFydGljbGVzKG5ld19wYXJ0aWNsZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZW5kIHRoZSBBQ0sgb2YgdGhlIG1zZ1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJhY2tcIik7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJykpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEuc3RhdGUgPT09IFwidG9vbHNfcmVhZHlcIikge1xyXG4gICAgICAgIHNldFZhY3V1bVBvc2UobnVsbClcclxuICAgICAgICBzZXRVc2VyUG9zZShudWxsKVxyXG4gICAgICAgIHNldFBhcnRpY2xlcyhbXSlcclxuICAgICAgICBsYXN0UmVhbFBvc2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgbGFzdFVzZXJQb3NlID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIsIHBvc2l0aW9uOlwicmVsYXRpdmVcIn19PlxyXG4gICAgICA8aW1nIHNyYz17aG91c2VNYXB9IGFsdD1cIlwiIGNsYXNzTmFtZT1cImV4ZXJjaXNlLWNhbnZhc1wiIGlkPVwiZXhlcmNpc2UtaW1nXCIvPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJsYXlcIiBpZD1cIm1hcC1jb250YWluZXJcIj5cclxuICAgICAgICB7dmFjdXVtUG9zZSAmJlxyXG4gICAgICAgICAgPGRpdiBpZD1cInZhY3V1bS1wb3NcIiBzdHlsZT17e3JvdGF0ZTogXCJ6IFwiKyB2YWN1dW1Qb3NlWzJdK1wicmFkXCIsIHRvcDogdmFjdXVtUG9zZVswXSAtMTUgLCBsZWZ0OiB2YWN1dW1Qb3NlWzFdIC0xNX19PlxyXG4gICAgICAgICAgICA8aW1nIHNyYz17VmFjdXVtfSBpZD1cInZhY3V1bS1wb3NcIi8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXJyb3cgYXJyb3ctcmVhbFwiLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB7dXNlclBvc2UgJiZcclxuICAgICAgICAgIDxkaXYgaWQ9XCJ1c2VyLXBvc1wiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIHVzZXJQb3NlWzJdK1wicmFkXCIsIHRvcDogdXNlclBvc2VbMF0gLTE1ICwgbGVmdDogdXNlclBvc2VbMV0gLTE1fX0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPXtWYWN1dW19IGlkPVwidXNlci1wb3NcIi8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXJyb3cgYXJyb3ctdXNlclwiLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB7dXNlclBhcnRpY2xlcy5tYXAoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYXJ0aWNsZVwiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIGVsZW1lbnRbMl0rXCJyYWRcIiwgdG9wOiBlbGVtZW50WzBdIC01LCBsZWZ0OiBlbGVtZW50WzFdIC01LCBvcGFjaXR5OiBlbGVtZW50WzNdfX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBhcnRpY2xlLWFycm93XCIvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX0pXHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNhbnZhcyBjbGFzc05hbWU9XCJpbWFnZVwiIGlkPVwiZ3VpX2NhbnZhc19yaWdodFwiIHN0eWxlPXt7bGVmdDogXCI1MCVcIn19Lz5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcblxyXG5TcGVjaWZpY01vbnRlY2FybG9WaXN1YWxMb2MucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY01vbnRlY2FybG9WaXN1YWxMb2NcclxuIiwiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpe1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbn1cclxuXHJcbmxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3SW1hZ2UgKGRhdGEpe1xyXG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKSxcclxuICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2ltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgZnVuY3Rpb24gdXBkYXRlX2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuICAgIFxyXG4gICAgaWYoc291cmNlICE9IFwiXCIpe1xyXG4gICAgICAgIGltYWdlLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICB9ICAgXHJcbn1cclxuXHJcbiAgICBcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsiU3BlY2lmaWNNb250ZWNhcmxvVmlzdWFsTG9jIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdCIsInZhY3V1bVBvc2UiLCJzZXRWYWN1dW1Qb3NlIiwiX1JlYWN0JHVzZVN0YXRlNCIsInVzZXJQb3NlIiwic2V0VXNlclBvc2UiLCJfUmVhY3QkdXNlU3RhdGU2IiwidXNlclBhcnRpY2xlcyIsInNldFBhcnRpY2xlcyIsImxhc3RSZWFsUG9zZSIsInVuZGVmaW5lZCIsImxhc3RVc2VyUG9zZSIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiaW1nIiwidGFyZ2V0Iiwid2lkdGgiLCJjbGllbnRXaWR0aCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsImNvbnNvbGUiLCJsb2ciLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJ1cGRhdGVEYXRhIiwiZGF0YSIsInVwZGF0ZSIsImltYWdlIiwiSlNPTiIsInBhcnNlIiwiZHJhd0ltYWdlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsIm1hcCIsImNvbnRlbnQiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJzcGxpdCIsIml0ZW0iLCJwYXJzZUZsb2F0IiwidXNlckNvbnRlbnQiLCJ1c2VyIiwicGFydGljbGVzIiwibmV3X3BhcnRpY2xlcyIsImZvckVhY2giLCJlbGVtZW50IiwicHVzaCIsIndpbmRvdyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic2VuZCIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsIm9ic2VydmUiLCJ1bnN1YnNjcmliZSIsInN0YXRlIiwiU1RBVEVfQ0hBTkdFRCIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJjaGlsZHJlbiIsIl9qc3giLCJzcmMiLCJob3VzZU1hcCIsImFsdCIsImNsYXNzTmFtZSIsImlkIiwicm90YXRlIiwidG9wIiwibGVmdCIsIlZhY3V1bSIsIm9wYWNpdHkiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwiSW1hZ2UiLCJjYW52YXMiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsInMiLCJpbWFnZV9kYXRhIiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4566.bf37125f.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4566.bf37125f.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4566.bf37125f.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4582.e9e4b09b.js b/react_frontend/static/react_frontend/js/4582.e9e4b09b.js new file mode 100644 index 000000000..526f0b3a2 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4582.e9e4b09b.js @@ -0,0 +1,3 @@ +/*! For license information please see 4582.e9e4b09b.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4582],{4625:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var r=n(6540),o=n(5556),s=n.n(o),i=function(e,t,n,r){for(var o="M ",s=0;s0&&t(o)},a=function(e,t,n){n.includes([e,t])||n.push([e,t])};n.p;const c=n.p+"730897011f0108f00b00.png",u=n.p+"b5c6f9dd7b4e71f2532b.svg";var l=n(4848);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,s,i,a=[],c=!0,u=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";var r=n(6925);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,s,i){if(i!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,s={},u=null,l=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,r)&&!c.hasOwnProperty(r)&&(s[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===s[r]&&(s[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:l,props:s,_owner:a.current}}t.Fragment=s,t.jsx=u,t.jsxs=u},4848:(e,t,n)=>{"use strict";e.exports=n(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQWlGLElBQUlGLFVBQWhGLElBQVNELElBQUlFLEVBQUUsR0FBR0YsUUFBRyxJQUFTRCxFQUFFTixNQUFNUyxFQUFFLEdBQUdILEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVMsRUFBRUosRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW1CLEtBQUtMLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtuRSxFQUFFbUUsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFTyxhQUFhLElBQUlKLEtBQUtGLEVBQUVELEVBQUVPLGtCQUFlLElBQVN2RSxFQUFFbUUsS0FBS25FLEVBQUVtRSxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ0ssU0FBU3pCLEVBQUUwQixLQUFLVCxFQUFFTCxJQUFJUyxFQUFFUixJQUFJUyxFQUFFdEQsTUFBTWYsRUFBRTBFLE9BQU9uQixFQUFFb0IsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMxQixFQUFFckMsRUFBUWdFLElBQUlkLEVBQUVsRCxFQUFRaUUsS0FBS2YsK0JDUHhXbkQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3ZhY3V1bV9jbGVhbmVyL3JlYWN0LWNvbXBvbmVudHMvaGVscGVycy9WYWN1dW1DbGVhbmVySGVscGVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3ZhY3V1bV9jbGVhbmVyL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNWYWN1dW1DbGVhbmVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1cGRhdGVQYXRoID0gKHRyYWlsLCBzZXRQYXRoQ2FsbGJhY2ssIGhlaWdodCwgd2lkdGgpID0+IHtcclxuICB2YXIgbmV3UGF0aCA9IFwiTSBcIjtcclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRyYWlsLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRyYWlsW2luZGV4XTtcclxuICAgIHZhciB0b3AgID0gZWxlbWVudFswXSAqIGhlaWdodDtcclxuICAgIHZhciBsZWZ0ID0gZWxlbWVudFsxXSAqIHdpZHRoO1xyXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIG5ld1BhdGggKz0gbGVmdC50b1N0cmluZygpKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbmV3UGF0aCArPSBcIiBMIFwiICsgbGVmdC50b1N0cmluZygpICsgXCIsXCIgKyB0b3AudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGlmICh0cmFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICBzZXRQYXRoQ2FsbGJhY2sobmV3UGF0aClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhZGRUb1BhdGggPSAoeCwgeSwgdHJhaWwpID0+IHtcclxuICBpZiAoIXRyYWlsLmluY2x1ZGVzKFt4LCB5XSkpIHtcclxuICAgIHRyYWlsLnB1c2goW3gsIHldKTtcclxuICB9XHJcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQge3VwZGF0ZVBhdGgsIGFkZFRvUGF0aH0gZnJvbSBcIi4vaGVscGVycy9WYWN1dW1DbGVhbmVySGVscGVyXCI7XHJcbmltcG9ydCBob3VzZU1hcENsZWFuIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL21hcGdyYW5ueWFubmllX2NsZWFuLnBuZ1wiO1xyXG5pbXBvcnQgaG91c2VNYXBEaXJ0eSBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy9tYXBncmFubnlhbm5pZV9kaXJ0eS5wbmdcIjtcclxuaW1wb3J0IFZhY3V1bSBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy92YWN1dW0uc3ZnXCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGVjaWZpY0xvY1ZhY3V1bUNsZWFuZXIoKSB7XHJcbiAgY29uc3QgW3ZhY3V1bVBvc2UsIHNldFZhY3V1bVBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbcGF0aCwgc2V0UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKVxyXG4gIHZhciB0cmFpbCA9IFtdO1xyXG4gIHZhciBsYXN0UG9zZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgIHZhciBpbWcgPSBlbnRyaWVzWzBdLnRhcmdldDsgXHJcbiAgICAvL29yIGhvd2V2ZXIgeW91IGdldCBhIGhhbmRsZSB0byB0aGUgSU1HXHJcbiAgICB2YXIgd2lkdGggPSAoMTAxMyAvIDMwMCkgLyAoMTAxMyAvaW1nLmNsaWVudFdpZHRoKTtcclxuICAgIHZhciBoZWlnaHQgPSAoMTAxMiAvIDE1MCkgLyAoMTAxMiAvaW1nLmNsaWVudEhlaWdodCk7XHJcblxyXG4gICAgdXBkYXRlUGF0aCh0cmFpbCwgc2V0UGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgICBpZiAobGFzdFBvc2UpIHtcclxuICAgICAgc2V0VmFjdXVtUG9zZShbbGFzdFBvc2VbMV0qaGVpZ2h0LGxhc3RQb3NlWzBdKndpZHRoLCAtbGFzdFBvc2VbMl1dKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gc3Vic2NyaWJpbmcgdG8gWyd1cGRhdGUnXSBldmVudHNcIik7XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGVEYXRhID0gbWVzc2FnZS5kYXRhLnVwZGF0ZTtcclxuICAgICAgLy8gTMOzZ2ljYSBwYXJhIG1hbmVqYXIgZWwgbWFwYVxyXG4gICAgICBpZiAodXBkYXRlRGF0YS5tYXApIHtcclxuICAgICAgICBjb25zdCBwb3NlID0gdXBkYXRlRGF0YS5tYXAuc3Vic3RyaW5nKDEsIHVwZGF0ZURhdGEubWFwLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBwb3NlLnNwbGl0KFwiLFwiKS5tYXAoaXRlbSA9PiBwYXJzZUZsb2F0KGl0ZW0pKTtcclxuICAgICAgICBsYXN0UG9zZSA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJyk7IFxyXG4gICAgICAgIC8vb3IgaG93ZXZlciB5b3UgZ2V0IGEgaGFuZGxlIHRvIHRoZSBJTUdcclxuICAgICAgICB2YXIgd2lkdGggPSAoMTAxMiAvIDMwMCkgLyAoMTAxMiAvaW1nLmNsaWVudFdpZHRoKTtcclxuICAgICAgICB2YXIgaGVpZ2h0ID0gKDEwMTIgLyAxNTApIC8gKDEwMTIgL2ltZy5jbGllbnRIZWlnaHQpO1xyXG5cclxuICAgICAgICB1cGRhdGVQYXRoKHRyYWlsLCBzZXRQYXRoLCBoZWlnaHQsIHdpZHRoKTtcclxuXHJcbiAgICAgICAgc2V0VmFjdXVtUG9zZShbY29udGVudFsxXSpoZWlnaHQsY29udGVudFswXSp3aWR0aCwgLWNvbnRlbnRbMl1dKTtcclxuICAgICAgICBhZGRUb1BhdGgoY29udGVudFsxXSwgY29udGVudFswXSwgdHJhaWwpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZW5kIHRoZSBBQ0sgb2YgdGhlIG1zZ1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJhY2tcIik7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJykpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xyXG4gICAgICBpZiAobWVzc2FnZS5kYXRhLnN0YXRlID09PSBcInRvb2xzX3JlYWR5XCIpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgc2V0UGF0aChcIlwiKVxyXG4gICAgICAgICAgdHJhaWwgPSBbXVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIsIHBvc2l0aW9uOlwicmVsYXRpdmVcIn19PlxyXG4gICAgICA8aW1nIHNyYz17aG91c2VNYXBEaXJ0eX0gYWx0PVwiXCIgY2xhc3NOYW1lPVwiZXhlcmNpc2UtY2FudmFzXCIgaWQ9XCJleGVyY2lzZS1pbWdcIi8+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3ZlcmxheVwiIGlkPVwibWFwLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIHt2YWN1dW1Qb3NlICYmXHJcbiAgICAgICAgICA8ZGl2IGlkPVwidmFjdXVtLXBvc1wiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIHZhY3V1bVBvc2VbMl0rXCJyYWRcIiwgdG9wOiB2YWN1dW1Qb3NlWzBdIC0xNSAsIGxlZnQ6IHZhY3V1bVBvc2VbMV0gLTE1fX0+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPXtWYWN1dW19IGlkPVwidmFjdXVtLXBvc1wiLz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcnJvd1wiLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIH1cclxuICAgICAgICB7LyogPHN2ZyBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPG1hc2sgaWQ9XCJzdmctZHJhd1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAge3BhdGggPyAoXHJcbiAgICAgICAgICAgICAgPHBhdGggeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGQ9e3BhdGh9IHN0eWxlPXt7c3Ryb2tlV2lkdGg6IFwiMzBweFwiLCBzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsIHN0cm9rZTogXCJ3aGl0ZVwiLCBmaWxsOiBcIm5vbmVcIn19Lz5cclxuICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPC9tYXNrPlxyXG4gICAgICAgICAgPGltYWdlIGhyZWY9e2hvdXNlTWFwQ2xlYW59IGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiBtYXNrPVwidXJsKCNzdmctZHJhdylcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPjwvaW1hZ2U+XHJcbiAgICAgICAgPC9zdmc+ICovfVxyXG4gICAgICAgIHtwYXRoICYmXHJcbiAgICAgICAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9e3t6SW5kZXg6MiwgcG9zaXRpb246XCJhYnNvbHV0ZVwifX0+XHJcbiAgICAgICAgICAgIDxwYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBkPXtwYXRofSBcclxuICAgICAgICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOiBcIjMwcHhcIiwgc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLCBzdHJva2U6IFwid2hpdGVcIiwgZmlsbDogXCJub25lXCJ9fVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuXHJcblNwZWNpZmljTG9jVmFjdXVtQ2xlYW5lci5wcm9wVHlwZXMgPSB7XHJcbiAgY2lyY3VpdDogUHJvcFR5cGVzLnN0cmluZyxcclxufTtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsidXBkYXRlUGF0aCIsInRyYWlsIiwic2V0UGF0aENhbGxiYWNrIiwiaGVpZ2h0Iiwid2lkdGgiLCJuZXdQYXRoIiwiaW5kZXgiLCJsZW5ndGgiLCJlbGVtZW50IiwidG9wIiwibGVmdCIsInRvU3RyaW5nIiwiYWRkVG9QYXRoIiwieCIsInkiLCJpbmNsdWRlcyIsInB1c2giLCJTcGVjaWZpY0xvY1ZhY3V1bUNsZWFuZXIiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdCIsInZhY3V1bVBvc2UiLCJzZXRWYWN1dW1Qb3NlIiwiX1JlYWN0JHVzZVN0YXRlNCIsInBhdGgiLCJzZXRQYXRoIiwibGFzdFBvc2UiLCJ1bmRlZmluZWQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImltZyIsInRhcmdldCIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsInVwZGF0ZURhdGEiLCJkYXRhIiwidXBkYXRlIiwibWFwIiwiY29udGVudCIsInN1YnN0cmluZyIsInNwbGl0IiwiaXRlbSIsInBhcnNlRmxvYXQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzZW5kIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiVVBEQVRFIiwib2JzZXJ2ZSIsInVuc3Vic2NyaWJlIiwic3RhdGUiLCJlcnJvciIsIlNUQVRFX0NIQU5HRUQiLCJfanN4cyIsInN0eWxlIiwiZGlzcGxheSIsInBvc2l0aW9uIiwiY2hpbGRyZW4iLCJfanN4Iiwic3JjIiwiaG91c2VNYXBEaXJ0eSIsImFsdCIsImNsYXNzTmFtZSIsImlkIiwicm90YXRlIiwiVmFjdXVtIiwieG1sbnMiLCJ6SW5kZXgiLCJkIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZSIsImZpbGwiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wcyIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4582.e9e4b09b.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4582.e9e4b09b.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4582.e9e4b09b.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4668.1221dcf8.js b/react_frontend/static/react_frontend/js/4668.1221dcf8.js new file mode 100644 index 000000000..b33280d24 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4668.1221dcf8.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4668],{7437:(e,t,o)=>{o.d(t,{AH:()=>d,i7:()=>c,mL:()=>s});var a=o(5684),n=o(6540),r=o(41),i=o(1287),l=o(6899),s=(o(4300),o(4146),(0,a.w)((function(e,t){var o=e.styles,s=(0,l.J)([o],void 0,n.useContext(a.T));if(!a.i){for(var d,c=s.name,p=s.styles,u=s.next;void 0!==u;)c+=" "+u.name,p+=u.styles,u=u.next;var v=!0===t.compat,h=t.insert("",{name:c,styles:p},t.sheet,v);return v?null:n.createElement("style",((d={})["data-emotion"]=t.key+"-global "+c,d.dangerouslySetInnerHTML={__html:h},d.nonce=t.sheet.nonce,d))}var m=n.useRef();return(0,i.i)((function(){var e=t.key+"-global",o=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),a=!1,n=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(o.before=t.sheet.tags[0]),null!==n&&(a=!0,n.setAttribute("data-emotion",e),o.hydrate([n])),m.current=[o,a],function(){o.flush()}}),[t]),(0,i.i)((function(){var e=m.current,o=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,r.sk)(t,s.next,!0),o.tags.length){var a=o.tags[o.tags.length-1].nextElementSibling;o.before=a,o.flush()}t.insert("",s,o,!1)}}),[t,s.name]),null})));function d(){for(var e=arguments.length,t=new Array(e),o=0;o{o.d(t,{A:()=>C});var a=o(8587),n=o(8168),r=o(6540),i=o(53),l=o(3726),s=o(5659),d=o(4279),c=o(7577),p=o(4409),u=o(6606),v=o(8466),h=o(8413),m=o(1609);function g(e){return(0,m.A)("MuiButton",e)}const b=(0,h.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var x=o(1848),y=o(4848);const S=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],f=e=>(0,n.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),z=(0,c.Ay)(u.A,{shouldForwardProp:e=>(0,c.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,v.A)(o.color)}`],t[`size${(0,v.A)(o.size)}`],t[`${o.variant}Size${(0,v.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,a;const r="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,n.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,n.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,n.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${b.focusVisible}`]:(0,n.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${b.disabled}`]:(0,n.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,d.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(a=e.palette).getContrastText)?void 0:o.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:r,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${b.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${b.disabled}`]:{boxShadow:"none"}})),A=(0,c.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,n.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},f(e)))),w=(0,c.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,n.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},f(e)))),C=r.forwardRef((function(e,t){const o=r.useContext(x.A),d=(0,l.A)(o,e),c=(0,p.A)({props:d,name:"MuiButton"}),{children:u,color:h="primary",component:m="button",className:b,disabled:f=!1,disableElevation:C=!1,disableFocusRipple:$=!1,endIcon:k,focusVisibleClassName:I,fullWidth:R=!1,size:E="medium",startIcon:M,type:W,variant:B="text"}=c,L=(0,a.A)(c,S),T=(0,n.A)({},c,{color:h,component:m,disabled:f,disableElevation:C,disableFocusRipple:$,fullWidth:R,size:E,type:W,variant:B}),N=(e=>{const{color:t,disableElevation:o,fullWidth:a,size:r,variant:i,classes:l}=e,d={root:["root",i,`${i}${(0,v.A)(t)}`,`size${(0,v.A)(r)}`,`${i}Size${(0,v.A)(r)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",a&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,v.A)(r)}`],endIcon:["endIcon",`iconSize${(0,v.A)(r)}`]},c=(0,s.A)(d,g,l);return(0,n.A)({},l,c)})(T),_=M&&(0,y.jsx)(A,{className:N.startIcon,ownerState:T,children:M}),O=k&&(0,y.jsx)(w,{className:N.endIcon,ownerState:T,children:k});return(0,y.jsxs)(z,(0,n.A)({ownerState:T,className:(0,i.A)(o.className,N.root,b),component:m,disabled:f,focusRipple:!$,focusVisibleClassName:(0,i.A)(N.focusVisible,I),ref:t,type:W},L,{classes:N,children:[_,u,O]}))}))},1848:(e,t,o)=>{o.d(t,{A:()=>a});const a=o(6540).createContext({})}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdBQzVCK0QsRUFBWW1CLElBQThCLFNBQUtwQixFQUFpQixDQUNwRWdCLFVBQVdPLEVBQVF0QixVQUNuQi9ELFdBQVlBLEVBQ1o0RSxTQUFVTSxJQUVOZCxFQUFVWSxJQUE0QixTQUFLYixFQUFlLENBQzlEVyxVQUFXTyxFQUFRakIsUUFDbkJwRSxXQUFZQSxFQUNaNEUsU0FBVUksSUFFWixPQUFvQixVQUFNN0UsR0FBWSxPQUFTLENBQzdDSCxXQUFZQSxFQUNaOEUsV0FBVyxPQUFLUCxFQUFhTyxVQUFXTyxFQUFRNUUsS0FBTXFFLEdBQ3RERCxVQUFXQSxFQUNYeEIsU0FBVUEsRUFDVnNDLGFBQWNaLEVBQ2RFLHVCQUF1QixPQUFLSSxFQUFRakMsYUFBYzZCLEdBQ2xEWCxJQUFLQSxFQUNMYSxLQUFNQSxHQUNMQyxFQUFPLENBQ1JDLFFBQVNBLEVBQ1RULFNBQVUsQ0FBQ2IsRUFBV2EsRUFBVVIsS0FFcEMsRyxrQ0NoUkEsUSxRQUp3QyxjQUFvQixDQUFDLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b24vYnV0dG9uQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQnV0dG9uJywgc2xvdCk7XG59XG5jb25zdCBidXR0b25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQnV0dG9uJywgWydyb290JywgJ3RleHQnLCAndGV4dEluaGVyaXQnLCAndGV4dFByaW1hcnknLCAndGV4dFNlY29uZGFyeScsICd0ZXh0U3VjY2VzcycsICd0ZXh0RXJyb3InLCAndGV4dEluZm8nLCAndGV4dFdhcm5pbmcnLCAnb3V0bGluZWQnLCAnb3V0bGluZWRJbmhlcml0JywgJ291dGxpbmVkUHJpbWFyeScsICdvdXRsaW5lZFNlY29uZGFyeScsICdvdXRsaW5lZFN1Y2Nlc3MnLCAnb3V0bGluZWRFcnJvcicsICdvdXRsaW5lZEluZm8nLCAnb3V0bGluZWRXYXJuaW5nJywgJ2NvbnRhaW5lZCcsICdjb250YWluZWRJbmhlcml0JywgJ2NvbnRhaW5lZFByaW1hcnknLCAnY29udGFpbmVkU2Vjb25kYXJ5JywgJ2NvbnRhaW5lZFN1Y2Nlc3MnLCAnY29udGFpbmVkRXJyb3InLCAnY29udGFpbmVkSW5mbycsICdjb250YWluZWRXYXJuaW5nJywgJ2Rpc2FibGVFbGV2YXRpb24nLCAnZm9jdXNWaXNpYmxlJywgJ2Rpc2FibGVkJywgJ2NvbG9ySW5oZXJpdCcsICd0ZXh0U2l6ZVNtYWxsJywgJ3RleHRTaXplTWVkaXVtJywgJ3RleHRTaXplTGFyZ2UnLCAnb3V0bGluZWRTaXplU21hbGwnLCAnb3V0bGluZWRTaXplTWVkaXVtJywgJ291dGxpbmVkU2l6ZUxhcmdlJywgJ2NvbnRhaW5lZFNpemVTbWFsbCcsICdjb250YWluZWRTaXplTWVkaXVtJywgJ2NvbnRhaW5lZFNpemVMYXJnZScsICdzaXplTWVkaXVtJywgJ3NpemVTbWFsbCcsICdzaXplTGFyZ2UnLCAnZnVsbFdpZHRoJywgJ3N0YXJ0SWNvbicsICdlbmRJY29uJywgJ2ljb25TaXplU21hbGwnLCAnaWNvblNpemVNZWRpdW0nLCAnaWNvblNpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IGJ1dHRvbkNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjb2xvclwiLCBcImNvbXBvbmVudFwiLCBcImNsYXNzTmFtZVwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZUVsZXZhdGlvblwiLCBcImRpc2FibGVGb2N1c1JpcHBsZVwiLCBcImVuZEljb25cIiwgXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIiwgXCJmdWxsV2lkdGhcIiwgXCJzaXplXCIsIFwic3RhcnRJY29uXCIsIFwidHlwZVwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBpbnRlcm5hbF9yZXNvbHZlUHJvcHMgYXMgcmVzb2x2ZVByb3BzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IGJ1dHRvbkNsYXNzZXMsIHsgZ2V0QnV0dG9uVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9idXR0b25DbGFzc2VzJztcbmltcG9ydCBCdXR0b25Hcm91cENvbnRleHQgZnJvbSAnLi4vQnV0dG9uR3JvdXAvQnV0dG9uR3JvdXBDb250ZXh0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3IsXG4gICAgZGlzYWJsZUVsZXZhdGlvbixcbiAgICBmdWxsV2lkdGgsXG4gICAgc2l6ZSxcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIGAke3ZhcmlhbnR9JHtjYXBpdGFsaXplKGNvbG9yKX1gLCBgc2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gLCBgJHt2YXJpYW50fVNpemUke2NhcGl0YWxpemUoc2l6ZSl9YCwgY29sb3IgPT09ICdpbmhlcml0JyAmJiAnY29sb3JJbmhlcml0JywgZGlzYWJsZUVsZXZhdGlvbiAmJiAnZGlzYWJsZUVsZXZhdGlvbicsIGZ1bGxXaWR0aCAmJiAnZnVsbFdpZHRoJ10sXG4gICAgbGFiZWw6IFsnbGFiZWwnXSxcbiAgICBzdGFydEljb246IFsnc3RhcnRJY29uJywgYGljb25TaXplJHtjYXBpdGFsaXplKHNpemUpfWBdLFxuICAgIGVuZEljb246IFsnZW5kSWNvbicsIGBpY29uU2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXVxuICB9O1xuICBjb25zdCBjb21wb3NlZENsYXNzZXMgPSBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0QnV0dG9uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBjbGFzc2VzLCBjb21wb3NlZENsYXNzZXMpO1xufTtcbmNvbnN0IGNvbW1vbkljb25TdHlsZXMgPSBvd25lclN0YXRlID0+IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICAnJiA+ICo6bnRoLW9mLXR5cGUoMSknOiB7XG4gICAgZm9udFNpemU6IDE4XG4gIH1cbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ21lZGl1bScgJiYge1xuICAnJiA+ICo6bnRoLW9mLXR5cGUoMSknOiB7XG4gICAgZm9udFNpemU6IDIwXG4gIH1cbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMjJcbiAgfVxufSk7XG5jb25zdCBCdXR0b25Sb290ID0gc3R5bGVkKEJ1dHRvbkJhc2UsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcm9vdFNob3VsZEZvcndhcmRQcm9wKHByb3ApIHx8IHByb3AgPT09ICdjbGFzc2VzJyxcbiAgbmFtZTogJ011aUJ1dHRvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgc3R5bGVzW2Ake293bmVyU3RhdGUudmFyaWFudH0ke2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF0sIHN0eWxlc1tgc2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdLCBzdHlsZXNbYCR7b3duZXJTdGF0ZS52YXJpYW50fVNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2luaGVyaXQnICYmIHN0eWxlcy5jb2xvckluaGVyaXQsIG93bmVyU3RhdGUuZGlzYWJsZUVsZXZhdGlvbiAmJiBzdHlsZXMuZGlzYWJsZUVsZXZhdGlvbiwgb3duZXJTdGF0ZS5mdWxsV2lkdGggJiYgc3R5bGVzLmZ1bGxXaWR0aF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkcGFsZXR0ZSRnZXRDb24sIF90aGVtZSRwYWxldHRlO1xuICBjb25zdCBpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yID0gdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gdGhlbWUucGFsZXR0ZS5ncmV5WzMwMF0gOiB0aGVtZS5wYWxldHRlLmdyZXlbODAwXTtcbiAgY29uc3QgaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yID0gdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gdGhlbWUucGFsZXR0ZS5ncmV5LkExMDAgOiB0aGVtZS5wYWxldHRlLmdyZXlbNzAwXTtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCB0aGVtZS50eXBvZ3JhcGh5LmJ1dHRvbiwge1xuICAgIG1pbldpZHRoOiA2NCxcbiAgICBwYWRkaW5nOiAnNnB4IDE2cHgnLFxuICAgIGJvcmRlclJhZGl1czogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYXBlLmJvcmRlclJhZGl1cyxcbiAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoWydiYWNrZ3JvdW5kLWNvbG9yJywgJ2JveC1zaGFkb3cnLCAnYm9yZGVyLWNvbG9yJywgJ2NvbG9yJ10sIHtcbiAgICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydFxuICAgIH0pLFxuICAgICcmOmhvdmVyJzogX2V4dGVuZHMoe1xuICAgICAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeUNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUudGV4dC5wcmltYXJ5LCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW59YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5CdXR0b24uaW5oZXJpdENvbnRhaW5lZEhvdmVyQmcgOiBpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzRdLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1syXSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5ncmV5WzMwMF1cbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmRhcmssXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbiAgICAgIH1cbiAgICB9KSxcbiAgICAnJjphY3RpdmUnOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzhdXG4gICAgfSksXG4gICAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5mb2N1c1Zpc2libGV9YF06IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbNl1cbiAgICB9KSxcbiAgICBbYCYuJHtidXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiBfZXh0ZW5kcyh7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZEJhY2tncm91bmR9YFxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZCxcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMF0sXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZEJhY2tncm91bmRcbiAgICB9KVxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzZweCA4cHgnXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnNXB4IDE1cHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCBjdXJyZW50Q29sb3InXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLFxuICAgIGJvcmRlcjogdGhlbWUudmFycyA/IGAxcHggc29saWQgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAwLjUpYCA6IGAxcHggc29saWQgJHthbHBoYSh0aGVtZS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sIDAuNSl9YFxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBjb2xvcjogdGhlbWUudmFycyA/XG4gICAgLy8gdGhpcyBpcyBzYWZlIGJlY2F1c2UgZ3JleSBkb2VzIG5vdCBjaGFuZ2UgYmV0d2VlbiBkZWZhdWx0IGxpZ2h0L2RhcmsgbW9kZVxuICAgIHRoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnkgOiAoX3RoZW1lJHBhbGV0dGUkZ2V0Q29uID0gKF90aGVtZSRwYWxldHRlID0gdGhlbWUucGFsZXR0ZSkuZ2V0Q29udHJhc3RUZXh0KSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHBhbGV0dGUkZ2V0Q29uLmNhbGwoX3RoZW1lJHBhbGV0dGUsIHRoZW1lLnBhbGV0dGUuZ3JleVszMDBdKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuQnV0dG9uLmluaGVyaXRDb250YWluZWRCZyA6IGluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1syXVxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmNvbnRyYXN0VGV4dCxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbiAgfSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgIGJvcmRlckNvbG9yOiAnY3VycmVudENvbG9yJ1xuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICAgIHBhZGRpbmc6ICc0cHggNXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICAgIHBhZGRpbmc6ICc4cHggMTFweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxNSlcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzNweCA5cHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc3cHggMjFweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxNSlcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc0cHggMTBweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc4cHggMjJweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxNSlcbiAgfSwgb3duZXJTdGF0ZS5mdWxsV2lkdGggJiYge1xuICAgIHdpZHRoOiAnMTAwJSdcbiAgfSk7XG59LCAoe1xuICBvd25lclN0YXRlXG59KSA9PiBvd25lclN0YXRlLmRpc2FibGVFbGV2YXRpb24gJiYge1xuICBib3hTaGFkb3c6ICdub25lJyxcbiAgJyY6aG92ZXInOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfSxcbiAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5mb2N1c1Zpc2libGV9YF06IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICAnJjphY3RpdmUnOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfSxcbiAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH1cbn0pO1xuY29uc3QgQnV0dG9uU3RhcnRJY29uID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ1N0YXJ0SWNvbicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMuc3RhcnRJY29uLCBzdHlsZXNbYGljb25TaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGRpc3BsYXk6ICdpbmhlcml0JyxcbiAgbWFyZ2luUmlnaHQ6IDgsXG4gIG1hcmdpbkxlZnQ6IC00XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICBtYXJnaW5MZWZ0OiAtMlxufSwgY29tbW9uSWNvblN0eWxlcyhvd25lclN0YXRlKSkpO1xuY29uc3QgQnV0dG9uRW5kSWNvbiA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbicsXG4gIHNsb3Q6ICdFbmRJY29uJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5lbmRJY29uLCBzdHlsZXNbYGljb25TaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGRpc3BsYXk6ICdpbmhlcml0JyxcbiAgbWFyZ2luUmlnaHQ6IC00LFxuICBtYXJnaW5MZWZ0OiA4XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICBtYXJnaW5SaWdodDogLTJcbn0sIGNvbW1vbkljb25TdHlsZXMob3duZXJTdGF0ZSkpKTtcbmNvbnN0IEJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJ1dHRvbihpblByb3BzLCByZWYpIHtcbiAgLy8gcHJvcHMgcHJpb3JpdHk6IGBpblByb3BzYCA+IGBjb250ZXh0UHJvcHNgID4gYHRoZW1lRGVmYXVsdFByb3BzYFxuICBjb25zdCBjb250ZXh0UHJvcHMgPSBSZWFjdC51c2VDb250ZXh0KEJ1dHRvbkdyb3VwQ29udGV4dCk7XG4gIGNvbnN0IHJlc29sdmVkUHJvcHMgPSByZXNvbHZlUHJvcHMoY29udGV4dFByb3BzLCBpblByb3BzKTtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogcmVzb2x2ZWRQcm9wcyxcbiAgICBuYW1lOiAnTXVpQnV0dG9uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgICAgIGNvbXBvbmVudCA9ICdidXR0b24nLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVFbGV2YXRpb24gPSBmYWxzZSxcbiAgICAgIGRpc2FibGVGb2N1c1JpcHBsZSA9IGZhbHNlLFxuICAgICAgZW5kSWNvbjogZW5kSWNvblByb3AsXG4gICAgICBmb2N1c1Zpc2libGVDbGFzc05hbWUsXG4gICAgICBmdWxsV2lkdGggPSBmYWxzZSxcbiAgICAgIHNpemUgPSAnbWVkaXVtJyxcbiAgICAgIHN0YXJ0SWNvbjogc3RhcnRJY29uUHJvcCxcbiAgICAgIHR5cGUsXG4gICAgICB2YXJpYW50ID0gJ3RleHQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUVsZXZhdGlvbixcbiAgICBkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdHlwZSxcbiAgICB2YXJpYW50XG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IHN0YXJ0SWNvbiA9IHN0YXJ0SWNvblByb3AgJiYgLyojX19QVVJFX18qL19qc3goQnV0dG9uU3RhcnRJY29uLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLnN0YXJ0SWNvbixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBzdGFydEljb25Qcm9wXG4gIH0pO1xuICBjb25zdCBlbmRJY29uID0gZW5kSWNvblByb3AgJiYgLyojX19QVVJFX18qL19qc3goQnV0dG9uRW5kSWNvbiwge1xuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5lbmRJY29uLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IGVuZEljb25Qcm9wXG4gIH0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKEJ1dHRvblJvb3QsIF9leHRlbmRzKHtcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjb250ZXh0UHJvcHMuY2xhc3NOYW1lLCBjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIGZvY3VzUmlwcGxlOiAhZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogY2xzeChjbGFzc2VzLmZvY3VzVmlzaWJsZSwgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICB0eXBlOiB0eXBlXG4gIH0sIG90aGVyLCB7XG4gICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICBjaGlsZHJlbjogW3N0YXJ0SWNvbiwgY2hpbGRyZW4sIGVuZEljb25dXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQnV0dG9uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdzdWNjZXNzJywgJ2Vycm9yJywgJ2luZm8nLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgbm8gZWxldmF0aW9uIGlzIHVzZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRWxldmF0aW9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlICBrZXlib2FyZCBmb2N1cyByaXBwbGUgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEVsZW1lbnQgcGxhY2VkIGFmdGVyIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGVuZEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYnV0dG9uIHdpbGwgdGFrZSB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBVUkwgdG8gbGluayB0byB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZC5cbiAgICogSWYgZGVmaW5lZCwgYW4gYGFgIGVsZW1lbnQgd2lsbCBiZSB1c2VkIGFzIHRoZSByb290IG5vZGUuXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogYHNtYWxsYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZW5zZSBidXR0b24gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBFbGVtZW50IHBsYWNlZCBiZWZvcmUgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgc3RhcnRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2J1dHRvbicsICdyZXNldCcsICdzdWJtaXQnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ3RleHQnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2NvbnRhaW5lZCcsICdvdXRsaW5lZCcsICd0ZXh0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCdXR0b247IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5jb25zdCBCdXR0b25Hcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBCdXR0b25Hcm91cENvbnRleHQuZGlzcGxheU5hbWUgPSAnQnV0dG9uR3JvdXBDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkdyb3VwQ29udGV4dDsiXSwibmFtZXMiOlsiR2xvYmFsIiwidyIsInByb3BzIiwiY2FjaGUiLCJzdHlsZXMiLCJzZXJpYWxpemVkIiwidW5kZWZpbmVkIiwiVCIsImkiLCJfcmVmIiwic2VyaWFsaXplZE5hbWVzIiwibmFtZSIsInNlcmlhbGl6ZWRTdHlsZXMiLCJuZXh0Iiwic2hvdWxkQ2FjaGUiLCJjb21wYXQiLCJydWxlcyIsImluc2VydCIsInNoZWV0Iiwia2V5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJub25jZSIsInNoZWV0UmVmIiwiY29uc3RydWN0b3IiLCJjb250YWluZXIiLCJzcGVlZHkiLCJpc1NwZWVkeSIsInJlaHlkcmF0aW5nIiwibm9kZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsInRhZ3MiLCJsZW5ndGgiLCJiZWZvcmUiLCJzZXRBdHRyaWJ1dGUiLCJoeWRyYXRlIiwiY3VycmVudCIsImZsdXNoIiwic2hlZXRSZWZDdXJyZW50IiwiZWxlbWVudCIsIm5leHRFbGVtZW50U2libGluZyIsImNzcyIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiQXJyYXkiLCJfa2V5Iiwia2V5ZnJhbWVzIiwiaW5zZXJ0YWJsZSIsImFwcGx5IiwiYW5pbSIsInRvU3RyaW5nIiwidGhpcyIsImdldEJ1dHRvblV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJjb21tb25JY29uU3R5bGVzIiwib3duZXJTdGF0ZSIsInNpemUiLCJmb250U2l6ZSIsIkJ1dHRvblJvb3QiLCJzdHlsZWQiLCJCdXR0b25CYXNlIiwic2hvdWxkRm9yd2FyZFByb3AiLCJwcm9wIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJyb290IiwidmFyaWFudCIsImNhcGl0YWxpemUiLCJjb2xvciIsImNvbG9ySW5oZXJpdCIsImRpc2FibGVFbGV2YXRpb24iLCJmdWxsV2lkdGgiLCJ0aGVtZSIsIl90aGVtZSRwYWxldHRlJGdldENvbiIsIl90aGVtZSRwYWxldHRlIiwiaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJtb2RlIiwiZ3JleSIsImluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciIsIkExMDAiLCJ0eXBvZ3JhcGh5IiwiYnV0dG9uIiwibWluV2lkdGgiLCJwYWRkaW5nIiwiYm9yZGVyUmFkaXVzIiwidmFycyIsInNoYXBlIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiZHVyYXRpb24iLCJzaG9ydCIsInRleHREZWNvcmF0aW9uIiwiYmFja2dyb3VuZENvbG9yIiwidGV4dCIsInByaW1hcnlDaGFubmVsIiwiYWN0aW9uIiwiaG92ZXJPcGFjaXR5IiwicHJpbWFyeSIsIm1haW5DaGFubmVsIiwibWFpbiIsImJvcmRlciIsIkJ1dHRvbiIsImluaGVyaXRDb250YWluZWRIb3ZlckJnIiwiYm94U2hhZG93Iiwic2hhZG93cyIsImRhcmsiLCJmb2N1c1Zpc2libGUiLCJkaXNhYmxlZCIsImRpc2FibGVkQmFja2dyb3VuZCIsImdldENvbnRyYXN0VGV4dCIsImNhbGwiLCJpbmhlcml0Q29udGFpbmVkQmciLCJjb250cmFzdFRleHQiLCJib3JkZXJDb2xvciIsInB4VG9SZW0iLCJ3aWR0aCIsIkJ1dHRvblN0YXJ0SWNvbiIsInN0YXJ0SWNvbiIsImRpc3BsYXkiLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJCdXR0b25FbmRJY29uIiwiZW5kSWNvbiIsImluUHJvcHMiLCJyZWYiLCJjb250ZXh0UHJvcHMiLCJCdXR0b25Hcm91cENvbnRleHQiLCJyZXNvbHZlZFByb3BzIiwicmVzb2x2ZVByb3BzIiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY29tcG9uZW50IiwiY2xhc3NOYW1lIiwiZGlzYWJsZUZvY3VzUmlwcGxlIiwiZW5kSWNvblByb3AiLCJmb2N1c1Zpc2libGVDbGFzc05hbWUiLCJzdGFydEljb25Qcm9wIiwidHlwZSIsIm90aGVyIiwiY2xhc3NlcyIsInNsb3RzIiwibGFiZWwiLCJjb21wb3NlZENsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiZm9jdXNSaXBwbGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4669.2e8a05f6.js b/react_frontend/static/react_frontend/js/4669.2e8a05f6.js new file mode 100644 index 000000000..c24537c37 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4669.2e8a05f6.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4669],{2032:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.createSvgIcon}});var n=r(8826)},1641:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var n=r(8587),o=r(8168),a=r(6540),i=r(53),l=r(5659),c=r(4279),s=r(7577),u=r(4409),d=r(6606),p=r(8466),f=r(8413),m=r(1609);function h(e){return(0,m.A)("MuiIconButton",e)}const b=(0,f.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]);var y=r(4848);const v=["edge","children","className","color","disabled","disableFocusRipple","size"],g=(0,s.Ay)(d.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"default"!==r.color&&t[`color${(0,p.A)(r.color)}`],r.edge&&t[`edge${(0,p.A)(r.edge)}`],t[`size${(0,p.A)(r.size)}`]]}})((({theme:e,ownerState:t})=>(0,o.A)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})),(({theme:e,ownerState:t})=>{var r;const n=null==(r=(e.vars||e).palette)?void 0:r[t.color];return(0,o.A)({},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"default"!==t.color&&(0,o.A)({color:null==n?void 0:n.main},!t.disableRipple&&{"&:hover":(0,o.A)({},n&&{backgroundColor:e.vars?`rgba(${n.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(n.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===t.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===t.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${b.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})})),A=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiIconButton"}),{edge:a=!1,children:c,className:s,color:d="default",disabled:f=!1,disableFocusRipple:m=!1,size:b="medium"}=r,A=(0,n.A)(r,v),x=(0,o.A)({},r,{edge:a,color:d,disabled:f,disableFocusRipple:m,size:b}),S=(e=>{const{classes:t,disabled:r,color:n,edge:o,size:a}=e,i={root:["root",r&&"disabled","default"!==n&&`color${(0,p.A)(n)}`,o&&`edge${(0,p.A)(o)}`,`size${(0,p.A)(a)}`]};return(0,l.A)(i,h,t)})(x);return(0,y.jsx)(g,(0,o.A)({className:(0,i.A)(S.root,s),centerRipple:!0,focusRipple:!m,disabled:f,ref:t,ownerState:x},A,{children:c}))}))},8826:(e,t,r)=>{"use strict";r.r(t),r.d(t,{capitalize:()=>o.A,createChainedFunction:()=>a,createSvgIcon:()=>i.A,debounce:()=>l.A,deprecatedPropType:()=>c,isMuiElement:()=>s.A,ownerDocument:()=>u.A,ownerWindow:()=>d.A,requirePropFactory:()=>p,setRef:()=>f,unstable_ClassNameGenerator:()=>x,unstable_useEnhancedEffect:()=>m.A,unstable_useId:()=>h.A,unsupportedProp:()=>b,useControlled:()=>y.A,useEventCallback:()=>v.A,useForkRef:()=>g.A,useIsFocusVisible:()=>A.A});var n=r(9071),o=r(8466);const a=r(1210).A;var i=r(5003),l=r(1935);const c=function(e,t){return()=>null};var s=r(5034),u=r(6248),d=r(3749);r(8168);const p=function(e,t){return()=>null},f=r(989).A;var m=r(2778),h=r(1668);const b=function(e,t,r,n,o){return null};var y=r(1159),v=r(3034),g=r(6852),A=r(1544);const x={configure:e=>{n.A.configure(e)}}},4337:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>j});var n=r(6540),o=r(7577),a=r(4279),i=r(4745),l=r(2183),c=r(4215),s=r(1641),u=r(9741),d=r(6554),p=r(4389),f=r(4719),m=r(8359),h=r(4848);function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";r.r(t),r.d(t,{HomepageProvider:()=>d,default:()=>p});var n=r(6540),o=r(5556),a=r.n(o),i=r(4848);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,l=[],c=!0,s=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw o}}return l}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";var n=r(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,a,i){if(i!==n){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNDY2OS41MjBlYjMzMC5qcyIsIm1hcHBpbmdzIjoiZ0hBR0FBLE9BQU9DLGVBQWVDLEVBQVMsYUFBYyxDQUMzQ0MsT0FBTyxJQUVUSCxPQUFPQyxlQUFlQyxFQUFTLFVBQVcsQ0FDeENFLFlBQVksRUFDWkMsSUFBSyxXQUNILE9BQU9DLEVBQU9DLGFBQ2hCLElBRUYsSUFBSUQsRUFBUyxFQUFRLEsseUtDVmQsU0FBU0UsRUFBMEJDLEdBQ3hDLE9BQU8sRUFBQUMsRUFBQSxHQUFxQixnQkFBaUJELEVBQy9DLENBQ0EsTUFDQSxHQUQwQixFQUFBRSxFQUFBLEdBQXVCLGdCQUFpQixDQUFDLE9BQVEsV0FBWSxlQUFnQixlQUFnQixpQkFBa0IsYUFBYyxZQUFhLGVBQWdCLGVBQWdCLFlBQWEsVUFBVyxZQUFhLGFBQWMsYyxjQ0R2UCxNQUFNQyxFQUFZLENBQUMsT0FBUSxXQUFZLFlBQWEsUUFBUyxXQUFZLHFCQUFzQixRQTBCekZDLEdBQWlCLEVBQUFDLEVBQUEsSUFBT0MsRUFBQSxFQUFZLENBQ3hDQyxLQUFNLGdCQUNOUCxLQUFNLE9BQ05RLGtCQUFtQixDQUFDQyxFQUFPQyxLQUN6QixNQUFNLFdBQ0pDLEdBQ0VGLEVBQ0osTUFBTyxDQUFDQyxFQUFPRSxLQUEyQixZQUFyQkQsRUFBV0UsT0FBdUJILEVBQU8sU0FBUSxFQUFBSSxFQUFBLEdBQVdILEVBQVdFLFVBQVdGLEVBQVdJLE1BQVFMLEVBQU8sUUFBTyxFQUFBSSxFQUFBLEdBQVdILEVBQVdJLFNBQVVMLEVBQU8sUUFBTyxFQUFBSSxFQUFBLEdBQVdILEVBQVdLLFNBQVMsR0FQbE0sRUFTcEIsRUFDREMsUUFDQU4saUJBQ0ksT0FBUyxDQUNiTyxVQUFXLFNBQ1hDLEtBQU0sV0FDTkMsU0FBVUgsRUFBTUksV0FBV0MsUUFBUSxJQUNuQ0MsUUFBUyxFQUNUQyxhQUFjLE1BQ2RDLFNBQVUsVUFFVlosT0FBUUksRUFBTVMsTUFBUVQsR0FBT1UsUUFBUUMsT0FBT0MsT0FDNUNDLFdBQVliLEVBQU1jLFlBQVlDLE9BQU8sbUJBQW9CLENBQ3ZEQyxTQUFVaEIsRUFBTWMsWUFBWUUsU0FBU0MsYUFFckN2QixFQUFXd0IsZUFBaUIsQ0FDOUIsVUFBVyxDQUNUQyxnQkFBaUJuQixFQUFNUyxLQUFPLFFBQVFULEVBQU1TLEtBQUtDLFFBQVFDLE9BQU9TLG1CQUFtQnBCLEVBQU1TLEtBQUtDLFFBQVFDLE9BQU9VLGlCQUFrQixRQUFNckIsRUFBTVUsUUFBUUMsT0FBT0MsT0FBUVosRUFBTVUsUUFBUUMsT0FBT1UsY0FFdkwsdUJBQXdCLENBQ3RCRixnQkFBaUIsaUJBR0EsVUFBcEJ6QixFQUFXSSxNQUFvQixDQUNoQ3dCLFdBQWdDLFVBQXBCNUIsRUFBV0ssTUFBb0IsR0FBSyxJQUMzQixRQUFwQkwsRUFBV0ksTUFBa0IsQ0FDOUJ5QixZQUFpQyxVQUFwQjdCLEVBQVdLLE1BQW9CLEdBQUssT0FDL0MsRUFDRkMsUUFDQU4saUJBRUEsSUFBSThCLEVBQ0osTUFBTWQsRUFBd0QsT0FBN0NjLEdBQVl4QixFQUFNUyxNQUFRVCxHQUFPVSxjQUFtQixFQUFTYyxFQUFTOUIsRUFBV0UsT0FDbEcsT0FBTyxPQUFTLENBQUMsRUFBd0IsWUFBckJGLEVBQVdFLE9BQXVCLENBQ3BEQSxNQUFPLFdBQ2UsWUFBckJGLEVBQVdFLE9BQTRDLFlBQXJCRixFQUFXRSxRQUF1QixPQUFTLENBQzlFQSxNQUFrQixNQUFYYyxPQUFrQixFQUFTQSxFQUFRZSxPQUN4Qy9CLEVBQVd3QixlQUFpQixDQUM5QixXQUFXLE9BQVMsQ0FBQyxFQUFHUixHQUFXLENBQ2pDUyxnQkFBaUJuQixFQUFNUyxLQUFPLFFBQVFDLEVBQVFnQixpQkFBaUIxQixFQUFNUyxLQUFLQyxRQUFRQyxPQUFPVSxpQkFBa0IsUUFBTVgsRUFBUWUsS0FBTXpCLEVBQU1VLFFBQVFDLE9BQU9VLGVBQ25KLENBRUQsdUJBQXdCLENBQ3RCRixnQkFBaUIsbUJBR0MsVUFBcEJ6QixFQUFXSyxNQUFvQixDQUNqQ08sUUFBUyxFQUNUSCxTQUFVSCxFQUFNSSxXQUFXQyxRQUFRLEtBQ2QsVUFBcEJYLEVBQVdLLE1BQW9CLENBQ2hDTyxRQUFTLEdBQ1RILFNBQVVILEVBQU1JLFdBQVdDLFFBQVEsS0FDbEMsQ0FDRCxDQUFDLEtBQUssRUFBa0JzQixZQUFhLENBQ25DUixnQkFBaUIsY0FDakJ2QixPQUFRSSxFQUFNUyxNQUFRVCxHQUFPVSxRQUFRQyxPQUFPZ0IsV0FFOUMsSUE0R0osRUFyR2dDLGNBQWlCLFNBQW9CQyxFQUFTQyxHQUM1RSxNQUFNckMsR0FBUSxFQUFBc0MsRUFBQSxHQUFjLENBQzFCdEMsTUFBT29DLEVBQ1B0QyxLQUFNLG1CQUVGLEtBQ0ZRLEdBQU8sRUFBSyxTQUNaaUMsRUFBUSxVQUNSQyxFQUFTLE1BQ1RwQyxFQUFRLFVBQVMsU0FDakIrQixHQUFXLEVBQUssbUJBQ2hCTSxHQUFxQixFQUFLLEtBQzFCbEMsRUFBTyxVQUNMUCxFQUNKMEMsR0FBUSxPQUE4QjFDLEVBQU9OLEdBQ3pDUSxHQUFhLE9BQVMsQ0FBQyxFQUFHRixFQUFPLENBQ3JDTSxPQUNBRixRQUNBK0IsV0FDQU0scUJBQ0FsQyxTQUVJb0MsRUE1R2tCekMsS0FDeEIsTUFBTSxRQUNKeUMsRUFBTyxTQUNQUixFQUFRLE1BQ1IvQixFQUFLLEtBQ0xFLEVBQUksS0FDSkMsR0FDRUwsRUFDRTBDLEVBQVEsQ0FDWnpDLEtBQU0sQ0FBQyxPQUFRZ0MsR0FBWSxXQUFzQixZQUFWL0IsR0FBdUIsU0FBUSxFQUFBQyxFQUFBLEdBQVdELEtBQVVFLEdBQVEsUUFBTyxFQUFBRCxFQUFBLEdBQVdDLEtBQVMsUUFBTyxFQUFBRCxFQUFBLEdBQVdFLE9BRWxKLE9BQU8sRUFBQXNDLEVBQUEsR0FBZUQsRUFBT3RELEVBQTJCcUQsRUFBUSxFQWlHaERHLENBQWtCNUMsR0FDbEMsT0FBb0IsU0FBS1AsR0FBZ0IsT0FBUyxDQUNoRDZDLFdBQVcsT0FBS0csRUFBUXhDLEtBQU1xQyxHQUM5Qk8sY0FBYyxFQUNkQyxhQUFjUCxFQUNkTixTQUFVQSxFQUNWRSxJQUFLQSxFQUNMbkMsV0FBWUEsR0FDWHdDLEVBQU8sQ0FDUkgsU0FBVUEsSUFFZCxHLHdlQ3ZJQSxRLFFBQW9DLEUsd0JDQXBDLFFDRGUsU0FBNEJVLEVBQVdDLEdBRWxELE1BQU8sSUFBTSxJQVVqQixFLDBDQ1hBLFFDQWUsU0FBNEJDLEVBQXNCQyxHQUU3RCxNQUFPLElBQU0sSUFvQmpCLEVDdEJBLEUsT0FBcUIsRSx3QkNBckIsUUNEZSxTQUF5QnBELEVBQU9xRCxFQUFVQyxFQUFlQyxFQUFVQyxHQUU5RSxPQUFPLElBT1gsRSw0Q0NhTyxNQUFNQyxFQUE4QixDQUN6Q0MsVUFBV0MsSUFJVEMsRUFBQSxFQUFtQkYsVUFBVUMsRUFBVSxFLDI1QkNiM0MsSUFBTUUsR0FBU2pFLEVBQUFBLEVBQUFBLElBQU8sTUFBUEEsRUFBYyxTQUFBa0UsR0FBQSxJQUFHdEQsRUFBS3NELEVBQUx0RCxNQUFLLE9BQUF1RCxFQUFBLENBQ25DQyxTQUFVLFdBQ1ZqRCxhQUFjUCxFQUFNeUQsTUFBTWxELGFBQzFCWSxpQkFBaUJ1QyxFQUFBQSxFQUFBQSxJQUFNMUQsRUFBTVUsUUFBUWlELE9BQU9DLE1BQU8sS0FDbkQsVUFBVyxDQUNUekMsaUJBQWlCdUMsRUFBQUEsRUFBQUEsSUFBTTFELEVBQU1VLFFBQVFpRCxPQUFPQyxNQUFPLE1BRXJEckMsWUFBYXZCLEVBQU02RCxRQUFRLEdBQzNCdkMsV0FBWSxFQUNad0MsTUFBTyxRQUNOOUQsRUFBTStELFlBQVlDLEdBQUcsTUFBUSxDQUM1QjFDLFdBQVl0QixFQUFNNkQsUUFBUSxHQUMxQkMsTUFBTyxRQUNSLElBR0dHLEdBQW9CN0UsRUFBQUEsRUFBQUEsSUFBTyxNQUFQQSxFQUFjLFNBQUE4RSxHQUFRLE1BQVEsQ0FDdEQ1RCxRQUQ4QzRELEVBQUxsRSxNQUMxQjZELFFBQVEsRUFBRyxHQUMxQk0sT0FBUSxPQUNSWCxTQUFVLFdBQ1ZZLGNBQWUsT0FDZkMsUUFBUyxPQUNUQyxXQUFZLFNBQ1pDLGVBQWdCLFNBQ2pCLElBRUtDLEdBQWtCcEYsRUFBQUEsRUFBQUEsSUFBT3FGLEVBQUFBLEdBQVByRixFQUFrQixTQUFBc0YsR0FBQSxJQUFHMUUsRUFBSzBFLEVBQUwxRSxNQUFLLE1BQVEsQ0FDeERKLE1BQU8sVUFDUCx3QkFBdUIyRCxFQUFBLENBQ3JCakQsUUFBU04sRUFBTTZELFFBQVEsRUFBRyxFQUFHLEVBQUcsR0FFaENjLFlBQWEsY0FBRkMsT0FBZ0I1RSxFQUFNNkQsUUFBUSxHQUFFLEtBQzNDaEQsV0FBWWIsRUFBTWMsWUFBWUMsT0FBTyxTQUNyQytDLE1BQU8sUUFDTjlELEVBQU0rRCxZQUFZQyxHQUFHLE1BQVEsQ0FDNUJGLE1BQU8sU0FHWixJQUVLZSxFQUFhLFdBQ2pCLEksSUFBUUMsRUFBcUJDLEVBQUFBLFdBQWlCQyxFQUFBQSxTQUF0Q0YsaUJBQzRDRyxHLEVBQXBCRixFQUFBQSxTQUFlLE0sRUFBSyxFLG80QkFBN0NHLEVBQVFELEVBQUEsR0FBRUUsRUFBV0YsRUFBQSxHQUN0QkcsRUFBT0MsUUFBUUgsR0FPZkksRUFBbUIsU0FBQ0MsR0FDeEIsSUFBTUMsRUFBT0QsRUFBRUUsT0FBT25HLEtBQ3RCd0YsRUFBaUJVLEVBQ25CLEVBRUEsT0FDRUUsRUFBQUEsRUFBQUEsTUFBQUMsRUFBQUEsU0FBQSxDQUFBNUQsU0FBQSxFQUNFNkQsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsRUFBVSxDQUNUQyxHQUFHLGVBQ0gsZ0JBQWVWLEVBQU8sa0JBQWVXLEVBQ3JDLGdCQUFjLE9BQ2QsZ0JBQWVYLEVBQU8sWUFBU1csRUFDL0JDLFFBbEJjLFNBQUNDLEdBQ25CZCxFQUFZYyxFQUFNQyxjQUNwQixFQWdCMkJuRSxVQUVyQjZELEVBQUFBLEVBQUFBLEtBQUNPLEVBQUFBLEVBQWMsT0FFakJULEVBQUFBLEVBQUFBLE1BQUNVLEVBQUFBLEVBQUksQ0FDSE4sR0FBRyxhQUNIWixTQUFVQSxFQUNWRSxLQUFNQSxFQUNOaUIsUUF2QmMsV0FDbEJsQixFQUFZLEtBQ2QsRUFxQjJCcEQsU0FBQSxFQUVyQjJELEVBQUFBLEVBQUFBLE1BQUNZLEVBQUFBLEVBQVEsQ0FBQ04sUUFBU1YsRUFBaUJ2RCxTQUFBLEVBQ2xDNkQsRUFBQUEsRUFBQUEsS0FBQ1csRUFBQUEsRUFBUSxDQUFDQyxnQkFBYyxFQUFDN0UsVUFBUSxFQUFDNUIsS0FBSyxRQUFRVCxLQUFNLFNBQVUsWUFFakVvRyxFQUFBQSxFQUFBQSxNQUFDWSxFQUFBQSxFQUFRLENBQUF2RSxTQUFBLEVBQ1A2RCxFQUFBQSxFQUFBQSxLQUFDVyxFQUFBQSxFQUFRLENBQ1BDLGdCQUFjLEVBQ2R6RyxLQUFLLFFBQ0xpRyxRQUFTVixFQUNUaEcsS0FBTSxTQUNOLFdBR0pvRyxFQUFBQSxFQUFBQSxNQUFDWSxFQUFBQSxFQUFRLENBQUF2RSxTQUFBLEVBQ1A2RCxFQUFBQSxFQUFBQSxLQUFDVyxFQUFBQSxFQUFRLENBQ1B4RyxLQUFLLFFBQ0xpRyxRQUFTVixFQUNUaEcsS0FBTSxnQkFDTCxJQUFJLGtCQUdUb0csRUFBQUEsRUFBQUEsTUFBQ1ksRUFBQUEsRUFBUSxDQUFBdkUsU0FBQSxFQUNQNkQsRUFBQUEsRUFBQUEsS0FBQ1csRUFBQUEsRUFBUSxDQUFDeEcsS0FBSyxRQUFRaUcsUUFBU1YsRUFBa0JoRyxLQUFNLFdBQWEsSUFBSSxpQkFNbkYsRUErQkEsUUE5QmtCLFdBQ2hCLElBQVFtSCxFQUFxQjFCLEVBQUFBLFdBQWlCQyxFQUFBQSxTQUF0Q3lCLGlCQU1SLE9BQ0ViLEVBQUFBLEVBQUFBLEtBQUNjLEVBQUFBLEVBQUcsQ0FDRkMsR0FBSSxDQUNGdEMsUUFBUyxPQUNUdUMsY0FBZSxNQUNmQyxVQUFXLElBQ1g5RSxVQUVGMkQsRUFBQUEsRUFBQUEsTUFBQ3JDLEVBQU0sQ0FBQXRCLFNBQUEsRUFDTDZELEVBQUFBLEVBQUFBLEtBQUMzQixFQUFpQixDQUFBbEMsVUFDaEI2RCxFQUFBQSxFQUFBQSxLQUFDa0IsRUFBQUEsRUFBVSxPQUVibEIsRUFBQUEsRUFBQUEsS0FBQ3BCLEVBQWUsQ0FDZHVDLFlBQVksVUFDWkMsU0FuQlcsU0FBQ3pCLEdBQ2xCLElBQU0wQixFQUFZMUIsRUFBRUUsT0FBT2hILE1BQU15SSxjQUNqQ1QsRUFBaUJRLEVBQ25CLEVBaUJRRSxXQUFZLENBQUUsYUFBYyxhQUU5QnZCLEVBQUFBLEVBQUFBLEtBQUNmLEVBQVUsUUFJbkIsQyxpb0NDM0lBLElBQU1HLEdBQWtCb0MsRUFBQUEsRUFBQUEsaUJBRWpCLFNBQVNDLEVBQWdCL0QsR0FBZSxJQUFadkIsRUFBUXVCLEVBQVJ2QixTQUNhdUYsRUFBQUMsR0FBWkMsRUFBQUEsRUFBQUEsVUFBUyxJQUFHLEdBQXZDQyxFQUFTSCxFQUFBLEdBQUVJLEVBQVlKLEVBQUEsR0FDMENLLEVBQUFKLEdBQTFCQyxFQUFBQSxFQUFBQSxVQUFTLENBQUMsT0FBUSxTQUFRLEdBQWpFSSxFQUFlRCxFQUFBLEdBQUVFLEVBQWtCRixFQUFBLEdBZ0IxQyxPQUNFL0IsRUFBQUEsRUFBQUEsS0FBQ1osRUFBZ0I4QyxTQUFRLENBQ3ZCckosTUFBTyxDQUNMc0osaUJBakJtQixXQUFILE9BQVNOLENBQVMsRUFrQmxDaEIsaUJBaEJtQixTQUFDdUIsR0FDeEJOLEVBQWFNLEVBQ2YsRUFlTWxELGlCQWJtQixTQUFDVSxHLE1BQ3hCcUMsRUFDRUQsRUFBZ0JLLFNBQVN6QyxHQUNyQm9DLEVBQWdCTSxRQUFPLFNBQUNDLEdBQUMsT0FBS0EsSUFBTTNDLENBQUksSUFBQyxHQUFBWixPLCtDQUNyQ2dELEkscVNBQWUsQ0FBRXBDLElBRTdCLEVBUU00QyxtQkFmcUIsV0FBSCxPQUFTUixDQUFlLEdBZ0IxQzdGLFNBRURBLEdBR1AsQ0FFQXNGLEVBQWlCZ0IsVUFBWSxDQUMzQnRHLFNBQVV1RyxJQUFBQSxTQUdaLFMsOEJDaENBLElBQUlDLEVBQXVCLEVBQVEsTUFFbkMsU0FBU0MsSUFBaUIsQ0FDMUIsU0FBU0MsSUFBMEIsQ0FDbkNBLEVBQXVCQyxrQkFBb0JGLEVBRTNDRyxFQUFPbkssUUFBVSxXQUNmLFNBQVNvSyxFQUFLcEosRUFBT3FELEVBQVVDLEVBQWVDLEVBQVVDLEVBQWM2RixHQUNwRSxHQUFJQSxJQUFXTixFQUFmLENBSUEsSUFBSU8sRUFBTSxJQUFJQyxNQUNaLG1MQUtGLE1BREFELEVBQUl4SixLQUFPLHNCQUNMd0osQ0FQTixDQVFGLENBRUEsU0FBU0UsSUFDUCxPQUFPSixDQUNULENBSEFBLEVBQUtLLFdBQWFMLEVBTWxCLElBQUlNLEVBQWlCLENBQ25CQyxNQUFPUCxFQUNQUSxPQUFRUixFQUNSUyxLQUFNVCxFQUNOVSxLQUFNVixFQUNOVyxPQUFRWCxFQUNSWSxPQUFRWixFQUNSYSxPQUFRYixFQUNSYyxPQUFRZCxFQUVSZSxJQUFLZixFQUNMZ0IsUUFBU1osRUFDVGEsUUFBU2pCLEVBQ1RrQixZQUFhbEIsRUFDYm1CLFdBQVlmLEVBQ1pnQixLQUFNcEIsRUFDTnFCLFNBQVVqQixFQUNWa0IsTUFBT2xCLEVBQ1BtQixVQUFXbkIsRUFDWHZGLE1BQU91RixFQUNQb0IsTUFBT3BCLEVBRVBxQixlQUFnQjVCLEVBQ2hCQyxrQkFBbUJGLEdBS3JCLE9BRkFVLEVBQWVaLFVBQVlZLEVBRXBCQSxDQUNULEMsaUJDL0NFUCxFQUFPbkssUUFBVSxFQUFRLEtBQVIsRSx3QkNObkJtSyxFQUFPbkssUUFGb0IsOEMsV0NKM0JtSyxFQUFPbkssUUFMUCxTQUFnQytHLEdBQzlCLE9BQU9BLEdBQUtBLEVBQUUrRSxXQUFhL0UsRUFBSSxDQUM3QixRQUFXQSxFQUVmLEVBQ3lDb0QsRUFBT25LLFFBQVE4TCxZQUFhLEVBQU0zQixFQUFPbkssUUFBaUIsUUFBSW1LLEVBQU9uSyxPIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9pY29ucy1tYXRlcmlhbC91dGlscy9jcmVhdGVTdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbi9pY29uQnV0dG9uQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ljb25CdXR0b24vSWNvbkJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2NyZWF0ZUNoYWluZWRGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2RlcHJlY2F0ZWRQcm9wVHlwZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9kZXByZWNhdGVkUHJvcFR5cGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9yZXF1aXJlUHJvcEZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vcmVxdWlyZVByb3BGYWN0b3J5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvc2V0UmVmLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdW5zdXBwb3J0ZWRQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3Vuc3VwcG9ydGVkUHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvU2VhcmNoQmFyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbnRleHRzL0hvbWVwYWdlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuJ3VzZSBjbGllbnQnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfdXRpbHMuY3JlYXRlU3ZnSWNvbjtcbiAgfVxufSk7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXRpbHNcIik7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEljb25CdXR0b25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUljb25CdXR0b24nLCBzbG90KTtcbn1cbmNvbnN0IGljb25CdXR0b25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpSWNvbkJ1dHRvbicsIFsncm9vdCcsICdkaXNhYmxlZCcsICdjb2xvckluaGVyaXQnLCAnY29sb3JQcmltYXJ5JywgJ2NvbG9yU2Vjb25kYXJ5JywgJ2NvbG9yRXJyb3InLCAnY29sb3JJbmZvJywgJ2NvbG9yU3VjY2VzcycsICdjb2xvcldhcm5pbmcnLCAnZWRnZVN0YXJ0JywgJ2VkZ2VFbmQnLCAnc2l6ZVNtYWxsJywgJ3NpemVNZWRpdW0nLCAnc2l6ZUxhcmdlJ10pO1xuZXhwb3J0IGRlZmF1bHQgaWNvbkJ1dHRvbkNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiZWRnZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVGb2N1c1JpcHBsZVwiLCBcInNpemVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBjaGFpblByb3BUeXBlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBpY29uQnV0dG9uQ2xhc3NlcywgeyBnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9pY29uQnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgZGlzYWJsZWQsXG4gICAgY29sb3IsXG4gICAgZWRnZSxcbiAgICBzaXplXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBjb2xvciAhPT0gJ2RlZmF1bHQnICYmIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgZWRnZSAmJiBgZWRnZSR7Y2FwaXRhbGl6ZShlZGdlKX1gLCBgc2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEljb25CdXR0b25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IEljb25CdXR0b25Sb290ID0gc3R5bGVkKEJ1dHRvbkJhc2UsIHtcbiAgbmFtZTogJ011aUljb25CdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF0sIG93bmVyU3RhdGUuZWRnZSAmJiBzdHlsZXNbYGVkZ2Uke2NhcGl0YWxpemUob3duZXJTdGF0ZS5lZGdlKX1gXSwgc3R5bGVzW2BzaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF1dO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICBmbGV4OiAnMCAwIGF1dG8nLFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDI0KSxcbiAgcGFkZGluZzogOCxcbiAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgLy8gRXhwbGljaXRseSBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgdG8gc29sdmUgYSBidWcgb24gSUUxMS5cbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5hY3RpdmUsXG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnYmFja2dyb3VuZC1jb2xvcicsIHtcbiAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlc3RcbiAgfSlcbn0sICFvd25lclN0YXRlLmRpc2FibGVSaXBwbGUgJiYge1xuICAnJjpob3Zlcic6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uYWN0aXZlQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgfVxuICB9XG59LCBvd25lclN0YXRlLmVkZ2UgPT09ICdzdGFydCcgJiYge1xuICBtYXJnaW5MZWZ0OiBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgPyAtMyA6IC0xMlxufSwgb3duZXJTdGF0ZS5lZGdlID09PSAnZW5kJyAmJiB7XG4gIG1hcmdpblJpZ2h0OiBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgPyAtMyA6IC0xMlxufSksICh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfcGFsZXR0ZTtcbiAgY29uc3QgcGFsZXR0ZSA9IChfcGFsZXR0ZSA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl07XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogJ2luaGVyaXQnXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnZGVmYXVsdCcgJiYgX2V4dGVuZHMoe1xuICAgIGNvbG9yOiBwYWxldHRlID09IG51bGwgPyB2b2lkIDAgOiBwYWxldHRlLm1haW5cbiAgfSwgIW93bmVyU3RhdGUuZGlzYWJsZVJpcHBsZSAmJiB7XG4gICAgJyY6aG92ZXInOiBfZXh0ZW5kcyh7fSwgcGFsZXR0ZSAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3BhbGV0dGUubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHBhbGV0dGUubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KVxuICAgIH0sIHtcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0pXG4gIH0pLCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICAgIHBhZGRpbmc6IDUsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxOClcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIHtcbiAgICBwYWRkaW5nOiAxMixcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDI4KVxuICB9LCB7XG4gICAgW2AmLiR7aWNvbkJ1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRcbiAgICB9XG4gIH0pO1xufSk7XG5cbi8qKlxuICogUmVmZXIgdG8gdGhlIFtJY29uc10oL21hdGVyaWFsLXVpL2ljb25zLykgc2VjdGlvbiBvZiB0aGUgZG9jdW1lbnRhdGlvblxuICogcmVnYXJkaW5nIHRoZSBhdmFpbGFibGUgaWNvbiBvcHRpb25zLlxuICovXG5jb25zdCBJY29uQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gSWNvbkJ1dHRvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpSWNvbkJ1dHRvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGVkZ2UgPSBmYWxzZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAnZGVmYXVsdCcsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBzaXplID0gJ21lZGl1bSdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGVkZ2UsXG4gICAgY29sb3IsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIHNpemVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEljb25CdXR0b25Sb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBjZW50ZXJSaXBwbGU6IHRydWUsXG4gICAgZm9jdXNSaXBwbGU6ICFkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIHJlZjogcmVmLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBJY29uQnV0dG9uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGRpc3BsYXkuXG4gICAqL1xuICBjaGlsZHJlbjogY2hhaW5Qcm9wVHlwZXMoUHJvcFR5cGVzLm5vZGUsIHByb3BzID0+IHtcbiAgICBjb25zdCBmb3VuZCA9IFJlYWN0LkNoaWxkcmVuLnRvQXJyYXkocHJvcHMuY2hpbGRyZW4pLnNvbWUoY2hpbGQgPT4gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkKSAmJiBjaGlsZC5wcm9wcy5vbkNsaWNrKTtcbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoWydNVUk6IFlvdSBhcmUgcHJvdmlkaW5nIGFuIG9uQ2xpY2sgZXZlbnQgbGlzdGVuZXIgdG8gYSBjaGlsZCBvZiBhIGJ1dHRvbiBlbGVtZW50LicsICdQcmVmZXIgYXBwbHlpbmcgaXQgdG8gdGhlIEljb25CdXR0b24gZGlyZWN0bHkuJywgJ1RoaXMgZ3VhcmFudGVlcyB0aGF0IHRoZSB3aG9sZSA8YnV0dG9uPiB3aWxsIGJlIHJlc3BvbnNpdmUgdG8gY2xpY2sgZXZlbnRzLiddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAnZGVmYXVsdCdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAnZGVmYXVsdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgIGtleWJvYXJkIGZvY3VzIHJpcHBsZSBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVGb2N1c1JpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgZWZmZWN0IGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiDimqDvuI8gV2l0aG91dCBhIHJpcHBsZSB0aGVyZSBpcyBubyBzdHlsaW5nIGZvciA6Zm9jdXMtdmlzaWJsZSBieSBkZWZhdWx0LiBCZSBzdXJlXG4gICAqIHRvIGhpZ2hsaWdodCB0aGUgZWxlbWVudCBieSBhcHBseWluZyBzZXBhcmF0ZSBzdHlsZXMgd2l0aCB0aGUgYC5NdWktZm9jdXNWaXNpYmxlYCBjbGFzcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgZ2l2ZW4sIHVzZXMgYSBuZWdhdGl2ZSBtYXJnaW4gdG8gY291bnRlcmFjdCB0aGUgcGFkZGluZyBvbiBvbmVcbiAgICogc2lkZSAodGhpcyBpcyBvZnRlbiBoZWxwZnVsIGZvciBhbGlnbmluZyB0aGUgbGVmdCBvciByaWdodFxuICAgKiBzaWRlIG9mIHRoZSBpY29uIHdpdGggY29udGVudCBhYm92ZSBvciBiZWxvdywgd2l0aG91dCBydWluaW5nIHRoZSBib3JkZXJcbiAgICogc2l6ZSBhbmQgc2hhcGUpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZWRnZTogUHJvcFR5cGVzLm9uZU9mKFsnZW5kJywgJ3N0YXJ0JywgZmFsc2VdKSxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIGBzbWFsbGAgaXMgZXF1aXZhbGVudCB0byB0aGUgZGVuc2UgYnV0dG9uIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgSWNvbkJ1dHRvbjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9jcmVhdGVDaGFpbmVkRnVuY3Rpb24gYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVDaGFpbmVkRnVuY3Rpb247IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVwcmVjYXRlZFByb3BUeXBlIGFzIGRlcHJlY2F0ZWRQcm9wVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZGVwcmVjYXRlZFByb3BUeXBlOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlcHJlY2F0ZWRQcm9wVHlwZSh2YWxpZGF0b3IsIHJlYXNvbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG4gIHJldHVybiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSA9PiB7XG4gICAgY29uc3QgY29tcG9uZW50TmFtZVNhZmUgPSBjb21wb25lbnROYW1lIHx8ICc8PGFub255bW91cz4+JztcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlICR7bG9jYXRpb259IFxcYCR7cHJvcEZ1bGxOYW1lU2FmZX1cXGAgb2YgYCArIGBcXGAke2NvbXBvbmVudE5hbWVTYWZlfVxcYCBpcyBkZXByZWNhdGVkLiAke3JlYXNvbn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfcmVxdWlyZVByb3BGYWN0b3J5IGFzIHJlcXVpcmVQcm9wRmFjdG9yeSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgcmVxdWlyZVByb3BGYWN0b3J5OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVxdWlyZVByb3BGYWN0b3J5KGNvbXBvbmVudE5hbWVJbkVycm9yLCBDb21wb25lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mb3JiaWQtZm9yZWlnbi1wcm9wLXR5cGVzXG4gIGNvbnN0IHByZXZQcm9wVHlwZXMgPSBDb21wb25lbnQgPyBfZXh0ZW5kcyh7fSwgQ29tcG9uZW50LnByb3BUeXBlcykgOiBudWxsO1xuICBjb25zdCByZXF1aXJlUHJvcCA9IHJlcXVpcmVkUHJvcCA9PiAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKSA9PiB7XG4gICAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgICBjb25zdCBkZWZhdWx0VHlwZUNoZWNrZXIgPSBwcmV2UHJvcFR5cGVzID09IG51bGwgPyB2b2lkIDAgOiBwcmV2UHJvcFR5cGVzW3Byb3BGdWxsTmFtZVNhZmVdO1xuICAgIGlmIChkZWZhdWx0VHlwZUNoZWNrZXIpIHtcbiAgICAgIGNvbnN0IHR5cGVDaGVja2VyUmVzdWx0ID0gZGVmYXVsdFR5cGVDaGVja2VyKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgLi4uYXJncyk7XG4gICAgICBpZiAodHlwZUNoZWNrZXJSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVDaGVja2VyUmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIHByb3BzW3Byb3BOYW1lXSAhPT0gJ3VuZGVmaW5lZCcgJiYgIXByb3BzW3JlcXVpcmVkUHJvcF0pIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoYFRoZSBwcm9wIFxcYCR7cHJvcEZ1bGxOYW1lU2FmZX1cXGAgb2YgYCArIGBcXGAke2NvbXBvbmVudE5hbWVJbkVycm9yfVxcYCBjYW4gb25seSBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggdGhlIFxcYCR7cmVxdWlyZWRQcm9wfVxcYCBwcm9wLmApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbiAgcmV0dXJuIHJlcXVpcmVQcm9wO1xufSIsImltcG9ydCB7IHVuc3RhYmxlX3NldFJlZiBhcyBzZXRSZWYgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHNldFJlZjsiLCJpbXBvcnQgeyB1bnN0YWJsZV91bnN1cHBvcnRlZFByb3AgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1bnN1cHBvcnRlZFByb3A7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5zdXBwb3J0ZWRQcm9wKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBuZXcgRXJyb3IoYFRoZSBwcm9wIFxcYCR7cHJvcEZ1bGxOYW1lU2FmZX1cXGAgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHJlbW92ZSBpdC5gKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciBhcyBDbGFzc05hbWVHZW5lcmF0b3IgfSBmcm9tICdAbXVpL2Jhc2UvY2xhc3NOYW1lJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY2FwaXRhbGl6ZSB9IGZyb20gJy4vY2FwaXRhbGl6ZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiB9IGZyb20gJy4vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlU3ZnSWNvbiB9IGZyb20gJy4vY3JlYXRlU3ZnSWNvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlYm91bmNlIH0gZnJvbSAnLi9kZWJvdW5jZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRlcHJlY2F0ZWRQcm9wVHlwZSB9IGZyb20gJy4vZGVwcmVjYXRlZFByb3BUeXBlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgaXNNdWlFbGVtZW50IH0gZnJvbSAnLi9pc011aUVsZW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnLi9vd25lckRvY3VtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3duZXJXaW5kb3cgfSBmcm9tICcuL293bmVyV2luZG93JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnLi9yZXF1aXJlUHJvcEZhY3RvcnknO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXRSZWYgfSBmcm9tICcuL3NldFJlZic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IH0gZnJvbSAnLi91c2VFbmhhbmNlZEVmZmVjdCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc3RhYmxlX3VzZUlkIH0gZnJvbSAnLi91c2VJZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVuc3VwcG9ydGVkUHJvcCB9IGZyb20gJy4vdW5zdXBwb3J0ZWRQcm9wJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJy4vdXNlQ29udHJvbGxlZCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICcuL3VzZUV2ZW50Q2FsbGJhY2snO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VGb3JrUmVmIH0gZnJvbSAnLi91c2VGb3JrUmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlSXNGb2N1c1Zpc2libGUgfSBmcm9tICcuL3VzZUlzRm9jdXNWaXNpYmxlJztcbi8vIFRPRE86IHJlbW92ZSB0aGlzIGV4cG9ydCBvbmNlIENsYXNzTmFtZUdlbmVyYXRvciBpcyBzdGFibGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IgPSB7XG4gIGNvbmZpZ3VyZTogZ2VuZXJhdG9yID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKFsnTVVJOiBgQ2xhc3NOYW1lR2VuZXJhdG9yYCBpbXBvcnQgZnJvbSBgQG11aS9tYXRlcmlhbC91dGlsc2AgaXMgb3V0ZGF0ZWQgYW5kIG1pZ2h0IGNhdXNlIHVuZXhwZWN0ZWQgaXNzdWVzLicsICcnLCBcIllvdSBzaG91bGQgdXNlIGBpbXBvcnQgeyB1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IgfSBmcm9tICdAbXVpL21hdGVyaWFsL2NsYXNzTmFtZSdgIGluc3RlYWRcIiwgJycsICdUaGUgZGV0YWlsIG9mIHRoZSBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvMzAwMTEjaXNzdWVjb21tZW50LTEwMjQ5OTM0MDEnLCAnJywgJ1RoZSB1cGRhdGVkIGRvY3VtZW50YXRpb246IGh0dHBzOi8vbXVpLmNvbS9ndWlkZXMvY2xhc3NuYW1lLWdlbmVyYXRvci8nXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIENsYXNzTmFtZUdlbmVyYXRvci5jb25maWd1cmUoZ2VuZXJhdG9yKTtcbiAgfVxufTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgc3R5bGVkLCBhbHBoYSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xyXG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcclxuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcclxuaW1wb3J0IHtcclxuICBCb3gsXHJcbiAgQ2hlY2tib3gsXHJcbiAgSWNvbkJ1dHRvbixcclxuICBJbnB1dEJhc2UsXHJcbiAgTWVudSxcclxuICBNZW51SXRlbSxcclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgSG9tZXBhZ2VDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0cy9Ib21lcGFnZUNvbnRleHRcIjtcclxuXHJcbmNvbnN0IFNlYXJjaCA9IHN0eWxlZChcImRpdlwiKSgoeyB0aGVtZSB9KSA9PiAoe1xyXG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXHJcbiAgYm9yZGVyUmFkaXVzOiB0aGVtZS5zaGFwZS5ib3JkZXJSYWRpdXMsXHJcbiAgYmFja2dyb3VuZENvbG9yOiBhbHBoYSh0aGVtZS5wYWxldHRlLmNvbW1vbi53aGl0ZSwgMC4xNSksXHJcbiAgXCImOmhvdmVyXCI6IHtcclxuICAgIGJhY2tncm91bmRDb2xvcjogYWxwaGEodGhlbWUucGFsZXR0ZS5jb21tb24ud2hpdGUsIDAuMjUpLFxyXG4gIH0sXHJcbiAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMiksXHJcbiAgbWFyZ2luTGVmdDogMCxcclxuICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgW3RoZW1lLmJyZWFrcG9pbnRzLnVwKFwic21cIildOiB7XHJcbiAgICBtYXJnaW5MZWZ0OiB0aGVtZS5zcGFjaW5nKDMpLFxyXG4gICAgd2lkdGg6IFwiYXV0b1wiLFxyXG4gIH0sXHJcbn0pKTtcclxuXHJcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCh7IHRoZW1lIH0pID0+ICh7XHJcbiAgcGFkZGluZzogdGhlbWUuc3BhY2luZygwLCAyKSxcclxuICBoZWlnaHQ6IFwiMTAwJVwiLFxyXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgcG9pbnRlckV2ZW50czogXCJub25lXCIsXHJcbiAgZGlzcGxheTogXCJmbGV4XCIsXHJcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcclxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcclxufSkpO1xyXG5cclxuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKHsgdGhlbWUgfSkgPT4gKHtcclxuICBjb2xvcjogXCJpbmhlcml0XCIsXHJcbiAgXCImIC5NdWlJbnB1dEJhc2UtaW5wdXRcIjoge1xyXG4gICAgcGFkZGluZzogdGhlbWUuc3BhY2luZygxLCAxLCAxLCAwKSxcclxuICAgIC8vIHZlcnRpY2FsIHBhZGRpbmcgKyBmb250IHNpemUgZnJvbSBzZWFyY2hJY29uXHJcbiAgICBwYWRkaW5nTGVmdDogYGNhbGMoMWVtICsgJHt0aGVtZS5zcGFjaW5nKDQpfSlgLFxyXG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFwid2lkdGhcIiksXHJcbiAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICBbdGhlbWUuYnJlYWtwb2ludHMudXAoXCJtZFwiKV06IHtcclxuICAgICAgd2lkdGg6IFwiMjBjaFwiLFxyXG4gICAgfSxcclxuICB9LFxyXG59KSk7XHJcblxyXG5jb25zdCBGaWx0ZXJNZW51ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHsgYXBwZW5kRmlsdGVySXRlbSB9ID0gUmVhY3QudXNlQ29udGV4dChIb21lcGFnZUNvbnRleHQpO1xyXG4gIGNvbnN0IFthbmNob3JFbCwgc2V0QW5jaG9yRWxdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XHJcbiAgY29uc3Qgb3BlbiA9IEJvb2xlYW4oYW5jaG9yRWwpO1xyXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICBzZXRBbmNob3JFbChldmVudC5jdXJyZW50VGFyZ2V0KTtcclxuICB9O1xyXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xyXG4gICAgc2V0QW5jaG9yRWwobnVsbCk7XHJcbiAgfTtcclxuICBjb25zdCBoYW5kbGVGaWx0ZXJMaXN0ID0gKGUpID0+IHtcclxuICAgIGNvbnN0IGl0ZW0gPSBlLnRhcmdldC5uYW1lO1xyXG4gICAgYXBwZW5kRmlsdGVySXRlbShpdGVtKTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAgPEljb25CdXR0b25cclxuICAgICAgICBpZD1cImJhc2ljLWJ1dHRvblwiXHJcbiAgICAgICAgYXJpYS1jb250cm9scz17b3BlbiA/IFwiYmFzaWMtbWVudVwiIDogdW5kZWZpbmVkfVxyXG4gICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcclxuICAgICAgICBhcmlhLWV4cGFuZGVkPXtvcGVuID8gXCJ0cnVlXCIgOiB1bmRlZmluZWR9XHJcbiAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XHJcbiAgICAgID5cclxuICAgICAgICA8RmlsdGVyTGlzdEljb24gLz5cclxuICAgICAgPC9JY29uQnV0dG9uPlxyXG4gICAgICA8TWVudVxyXG4gICAgICAgIGlkPVwiYmFzaWMtbWVudVwiXHJcbiAgICAgICAgYW5jaG9yRWw9e2FuY2hvckVsfVxyXG4gICAgICAgIG9wZW49e29wZW59XHJcbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2V9XHJcbiAgICAgID5cclxuICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17aGFuZGxlRmlsdGVyTGlzdH0+XHJcbiAgICAgICAgICA8Q2hlY2tib3ggZGVmYXVsdENoZWNrZWQgZGlzYWJsZWQgc2l6ZT1cInNtYWxsXCIgbmFtZT17XCJuYW1lXCJ9IC8+IE5hbWVcclxuICAgICAgICA8L01lbnVJdGVtPlxyXG4gICAgICAgIDxNZW51SXRlbT5cclxuICAgICAgICAgIDxDaGVja2JveFxyXG4gICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZFxyXG4gICAgICAgICAgICBzaXplPVwic21hbGxcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJMaXN0fVxyXG4gICAgICAgICAgICBuYW1lPXtcInRhZ3NcIn1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICB0YWdzXHJcbiAgICAgICAgPC9NZW51SXRlbT5cclxuICAgICAgICA8TWVudUl0ZW0+XHJcbiAgICAgICAgICA8Q2hlY2tib3hcclxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRmlsdGVyTGlzdH1cclxuICAgICAgICAgICAgbmFtZT17XCJkZXNjcmlwdGlvblwifVxyXG4gICAgICAgICAgLz57XCIgXCJ9XHJcbiAgICAgICAgICBkZXNjcmlwdGlvblxyXG4gICAgICAgIDwvTWVudUl0ZW0+XHJcbiAgICAgICAgPE1lbnVJdGVtPlxyXG4gICAgICAgICAgPENoZWNrYm94IHNpemU9XCJzbWFsbFwiIG9uQ2xpY2s9e2hhbmRsZUZpbHRlckxpc3R9IG5hbWU9e1wic3RhdHVzXCJ9IC8+e1wiIFwifVxyXG4gICAgICAgICAgU3RhdHVzXHJcbiAgICAgICAgPC9NZW51SXRlbT5cclxuICAgICAgPC9NZW51PlxyXG4gICAgPC8+XHJcbiAgKTtcclxufTtcclxuY29uc3QgU2VhcmNoQmFyID0gKCkgPT4ge1xyXG4gIGNvbnN0IHsgc2V0U2VhcmNoQmFyVGV4dCB9ID0gUmVhY3QudXNlQ29udGV4dChIb21lcGFnZUNvbnRleHQpO1xyXG4gIGxldCBpbnB1dEhhbmRsZXIgPSAoZSkgPT4ge1xyXG4gICAgY29uc3QgbG93ZXJDYXNlID0gZS50YXJnZXQudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgIHNldFNlYXJjaEJhclRleHQobG93ZXJDYXNlKTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPEJveFxyXG4gICAgICBzeD17e1xyXG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXHJcbiAgICAgICAgbWF4SGVpZ2h0OiA0MCxcclxuICAgICAgfX1cclxuICAgID5cclxuICAgICAgPFNlYXJjaD5cclxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XHJcbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxyXG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XHJcbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2jigKZcIlxyXG4gICAgICAgICAgb25DaGFuZ2U9e2lucHV0SGFuZGxlcn1cclxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cclxuICAgICAgICAvPlxyXG4gICAgICAgIDxGaWx0ZXJNZW51IC8+XHJcbiAgICAgIDwvU2VhcmNoPlxyXG4gICAgPC9Cb3g+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFNlYXJjaEJhcjtcclxuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmNvbnN0IEhvbWVwYWdlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBIb21lcGFnZVByb3ZpZGVyKHsgY2hpbGRyZW4gfSkge1xyXG4gIGNvbnN0IFtpbnB1dFRleHQsIHNldElucHV0VGV4dF0gPSB1c2VTdGF0ZShcIlwiKTtcclxuICBjb25zdCBbZmlsdGVySXRlbXNMaXN0LCBzZXRGaWx0ZXJJdGVtc0xpc3RdID0gdXNlU3RhdGUoW1wibmFtZVwiLCBcInRhZ3NcIl0pO1xyXG5cclxuICBjb25zdCBnZXRTZWFyY2hCYXJUZXh0ID0gKCkgPT4gaW5wdXRUZXh0O1xyXG5cclxuICBjb25zdCBzZXRTZWFyY2hCYXJUZXh0ID0gKHRleHQpID0+IHtcclxuICAgIHNldElucHV0VGV4dCh0ZXh0KTtcclxuICB9O1xyXG4gIGNvbnN0IGdldEZpbHRlckl0ZW1zTGlzdCA9ICgpID0+IGZpbHRlckl0ZW1zTGlzdDtcclxuICBjb25zdCBhcHBlbmRGaWx0ZXJJdGVtID0gKGl0ZW0pID0+IHtcclxuICAgIHNldEZpbHRlckl0ZW1zTGlzdChcclxuICAgICAgZmlsdGVySXRlbXNMaXN0LmluY2x1ZGVzKGl0ZW0pXHJcbiAgICAgICAgPyBmaWx0ZXJJdGVtc0xpc3QuZmlsdGVyKChpKSA9PiBpICE9PSBpdGVtKVxyXG4gICAgICAgIDogWy4uLmZpbHRlckl0ZW1zTGlzdCwgaXRlbV1cclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxIb21lcGFnZUNvbnRleHQuUHJvdmlkZXJcclxuICAgICAgdmFsdWU9e3tcclxuICAgICAgICBnZXRTZWFyY2hCYXJUZXh0LFxyXG4gICAgICAgIHNldFNlYXJjaEJhclRleHQsXHJcbiAgICAgICAgYXBwZW5kRmlsdGVySXRlbSxcclxuICAgICAgICBnZXRGaWx0ZXJJdGVtc0xpc3QsXHJcbiAgICAgIH19XHJcbiAgICA+XHJcbiAgICAgIHtjaGlsZHJlbn1cclxuICAgIDwvSG9tZXBhZ2VDb250ZXh0LlByb3ZpZGVyPlxyXG4gICk7XHJcbn1cclxuXHJcbkhvbWVwYWdlUHJvdmlkZXIucHJvcFR5cGVzID0ge1xyXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuZWxlbWVudCxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEhvbWVwYWdlQ29udGV4dDtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHtcbiAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHtcbiAgICBcImRlZmF1bHRcIjogZVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl91dGlscyIsImNyZWF0ZVN2Z0ljb24iLCJnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsIkljb25CdXR0b25Sb290Iiwic3R5bGVkIiwiQnV0dG9uQmFzZSIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwib3duZXJTdGF0ZSIsInJvb3QiLCJjb2xvciIsImNhcGl0YWxpemUiLCJlZGdlIiwic2l6ZSIsInRoZW1lIiwidGV4dEFsaWduIiwiZmxleCIsImZvbnRTaXplIiwidHlwb2dyYXBoeSIsInB4VG9SZW0iLCJwYWRkaW5nIiwiYm9yZGVyUmFkaXVzIiwib3ZlcmZsb3ciLCJ2YXJzIiwicGFsZXR0ZSIsImFjdGlvbiIsImFjdGl2ZSIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImR1cmF0aW9uIiwic2hvcnRlc3QiLCJkaXNhYmxlUmlwcGxlIiwiYmFja2dyb3VuZENvbG9yIiwiYWN0aXZlQ2hhbm5lbCIsImhvdmVyT3BhY2l0eSIsIm1hcmdpbkxlZnQiLCJtYXJnaW5SaWdodCIsIl9wYWxldHRlIiwibWFpbiIsIm1haW5DaGFubmVsIiwiZGlzYWJsZWQiLCJpblByb3BzIiwicmVmIiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZGlzYWJsZUZvY3VzUmlwcGxlIiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiY2VudGVyUmlwcGxlIiwiZm9jdXNSaXBwbGUiLCJ2YWxpZGF0b3IiLCJyZWFzb24iLCJjb21wb25lbnROYW1lSW5FcnJvciIsIkNvbXBvbmVudCIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwidW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIiwiY29uZmlndXJlIiwiZ2VuZXJhdG9yIiwiQ2xhc3NOYW1lR2VuZXJhdG9yIiwiU2VhcmNoIiwiX3JlZiIsIl9kZWZpbmVQcm9wZXJ0eSIsInBvc2l0aW9uIiwic2hhcGUiLCJhbHBoYSIsImNvbW1vbiIsIndoaXRlIiwic3BhY2luZyIsIndpZHRoIiwiYnJlYWtwb2ludHMiLCJ1cCIsIlNlYXJjaEljb25XcmFwcGVyIiwiX3JlZjMiLCJoZWlnaHQiLCJwb2ludGVyRXZlbnRzIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsIklucHV0QmFzZSIsIl9yZWY0IiwicGFkZGluZ0xlZnQiLCJjb25jYXQiLCJGaWx0ZXJNZW51IiwiYXBwZW5kRmlsdGVySXRlbSIsIlJlYWN0IiwiSG9tZXBhZ2VDb250ZXh0IiwiX1JlYWN0JHVzZVN0YXRlMiIsImFuY2hvckVsIiwic2V0QW5jaG9yRWwiLCJvcGVuIiwiQm9vbGVhbiIsImhhbmRsZUZpbHRlckxpc3QiLCJlIiwiaXRlbSIsInRhcmdldCIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiX2pzeCIsIkljb25CdXR0b24iLCJpZCIsInVuZGVmaW5lZCIsIm9uQ2xpY2siLCJldmVudCIsImN1cnJlbnRUYXJnZXQiLCJGaWx0ZXJMaXN0SWNvbiIsIk1lbnUiLCJvbkNsb3NlIiwiTWVudUl0ZW0iLCJDaGVja2JveCIsImRlZmF1bHRDaGVja2VkIiwic2V0U2VhcmNoQmFyVGV4dCIsIkJveCIsInN4IiwiZmxleERpcmVjdGlvbiIsIm1heEhlaWdodCIsIlNlYXJjaEljb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwibG93ZXJDYXNlIiwidG9Mb3dlckNhc2UiLCJpbnB1dFByb3BzIiwiY3JlYXRlQ29udGV4dCIsIkhvbWVwYWdlUHJvdmlkZXIiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VTdGF0ZSIsImlucHV0VGV4dCIsInNldElucHV0VGV4dCIsIl91c2VTdGF0ZTQiLCJmaWx0ZXJJdGVtc0xpc3QiLCJzZXRGaWx0ZXJJdGVtc0xpc3QiLCJQcm92aWRlciIsImdldFNlYXJjaEJhclRleHQiLCJ0ZXh0IiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJpIiwiZ2V0RmlsdGVySXRlbXNMaXN0IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwic2hpbSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4707.c0883594.js b/react_frontend/static/react_frontend/js/4707.c0883594.js new file mode 100644 index 000000000..81ab206d8 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4707.c0883594.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4707],{1099:(t,r,e)=>{var n=e(4994);r.A=void 0;var a=n(e(2032)),o=e(4848),i=(0,a.default)((0,o.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3zM8 13h2.55v3h2.9v-3H16l-4-4z"}),"CloudUploadOutlined");r.A=i},4634:(t,r,e)=>{var n=e(4994);r.A=void 0;var a=n(e(2032)),o=e(4848),i=(0,a.default)((0,o.jsx)("path",{d:"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z"}),"Replay");r.A=i},8532:(t,r,e)=>{e.d(r,{A:()=>g});var n=e(8587),a=e(8168),o=e(6540),i=e(53),s=e(5659),l=e(4409),u=e(7577),c=e(8413),p=e(1609);function d(t){return(0,p.A)("MuiToolbar",t)}(0,c.A)("MuiToolbar",["root","gutters","regular","dense"]);var h=e(4848);const f=["className","component","disableGutters","variant"],m=(0,u.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(t,r)=>{const{ownerState:e}=t;return[r.root,!e.disableGutters&&r.gutters,r[e.variant]]}})((({theme:t,ownerState:r})=>(0,a.A)({position:"relative",display:"flex",alignItems:"center"},!r.disableGutters&&{paddingLeft:t.spacing(2),paddingRight:t.spacing(2),[t.breakpoints.up("sm")]:{paddingLeft:t.spacing(3),paddingRight:t.spacing(3)}},"dense"===r.variant&&{minHeight:48})),(({theme:t,ownerState:r})=>"regular"===r.variant&&t.mixins.toolbar)),g=o.forwardRef((function(t,r){const e=(0,l.A)({props:t,name:"MuiToolbar"}),{className:o,component:u="div",disableGutters:c=!1,variant:p="regular"}=e,g=(0,n.A)(e,f),v=(0,a.A)({},e,{component:u,disableGutters:c,variant:p}),y=(t=>{const{classes:r,disableGutters:e,variant:n}=t,a={root:["root",!e&&"gutters",n]};return(0,s.A)(a,d,r)})(v);return(0,h.jsx)(m,(0,a.A)({as:u,className:(0,i.A)(y.root,o),ref:r,ownerState:v},g))}))},4073:(t,r,e)=>{e.d(r,{A:()=>b});var n=e(8587),a=e(8168),o=e(6540),i=e(53),s=e(9599),l=e(5659),u=e(7577),c=e(4409),p=e(8466),d=e(8413),h=e(1609);function f(t){return(0,h.A)("MuiTypography",t)}(0,d.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var m=e(4848);const g=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],v=(0,u.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(t,r)=>{const{ownerState:e}=t;return[r.root,e.variant&&r[e.variant],"inherit"!==e.align&&r[`align${(0,p.A)(e.align)}`],e.noWrap&&r.noWrap,e.gutterBottom&&r.gutterBottom,e.paragraph&&r.paragraph]}})((({theme:t,ownerState:r})=>(0,a.A)({margin:0},r.variant&&t.typography[r.variant],"inherit"!==r.align&&{textAlign:r.align},r.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},r.gutterBottom&&{marginBottom:"0.35em"},r.paragraph&&{marginBottom:16}))),y={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},A={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},b=o.forwardRef((function(t,r){const e=(0,c.A)({props:t,name:"MuiTypography"}),o=(t=>A[t]||t)(e.color),u=(0,s.A)((0,a.A)({},e,{color:o})),{align:d="inherit",className:h,component:b,gutterBottom:x=!1,noWrap:j=!1,paragraph:S=!1,variant:w="body1",variantMapping:M=y}=u,B=(0,n.A)(u,g),C=(0,a.A)({},u,{align:d,color:o,className:h,component:b,gutterBottom:x,noWrap:j,paragraph:S,variant:w,variantMapping:M}),T=b||(S?"p":M[w]||y[w])||"span",N=(t=>{const{align:r,gutterBottom:e,noWrap:n,paragraph:a,variant:o,classes:i}=t,s={root:["root",o,"inherit"!==t.align&&`align${(0,p.A)(r)}`,e&&"gutterBottom",n&&"noWrap",a&&"paragraph"]};return(0,l.A)(s,f,i)})(C);return(0,m.jsx)(v,(0,a.A)({as:T,ref:r,ownerState:C,className:(0,i.A)(N.root,h)},B))}))},5793:(t,r,e)=>{e.d(r,{A:()=>y});var n=e(8168),a=e(8587),o=e(6540);const i=o.createContext(null);function s(){return o.useContext(i)}const l="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var u=e(4848);const c=function(t){const{children:r,theme:e}=t,a=s(),c=o.useMemo((()=>{const t=null===a?e:function(t,r){return"function"==typeof r?r(t):(0,n.A)({},t,r)}(a,e);return null!=t&&(t[l]=null!==a),t}),[e,a]);return(0,u.jsx)(i.Provider,{value:c,children:r})};var p=e(5684),d=e(3951);const h={};function f(t,r,e,a=!1){return o.useMemo((()=>{const o=t&&r[t]||r;if("function"==typeof e){const i=e(o),s=t?(0,n.A)({},r,{[t]:i}):i;return a?()=>s:s}return t?(0,n.A)({},r,{[t]:e}):(0,n.A)({},r,e)}),[t,r,e,a])}const m=function(t){const{children:r,theme:e,themeId:n}=t,a=(0,d.A)(h),o=s()||h,i=f(n,a,e),l=f(n,o,e,!0);return(0,u.jsx)(c,{theme:l,children:(0,u.jsx)(p.T.Provider,{value:i,children:r})})};var g=e(8312);const v=["theme"];function y(t){let{theme:r}=t,e=(0,a.A)(t,v);const o=r[g.A];return(0,u.jsx)(m,(0,n.A)({},e,{themeId:o?g.A:void 0,theme:o||r}))}},1668:(t,r,e)=>{e.d(r,{A:()=>n});const n=e(4661).A},4661:(t,r,e)=>{var n;e.d(r,{A:()=>s});var a=e(6540);let o=0;const i=(n||(n=e.t(a,2)))["useId".toString()];function s(t){if(void 0!==i){const r=i();return null!=t?t:r}return function(t){const[r,e]=a.useState(t),n=t||r;return a.useEffect((()=>{null==r&&(o+=1,e(`mui-${o}`))}),[r]),n}(t)}},2431:(t,r,e)=>{e.r(r),e.d(r,{default:()=>b});var n=e(6540),a=e(8532),o=e(4719),i=e(2230),s=e(5556),l=e.n(s),u=e(8729),c=e(8130),p=e(7229),d=e(8160),h=e(958),f=e(284),m=e(4078),g=e(4848);function v(t,r){return function(t){if(Array.isArray(t))return t}(t)||function(t,r){var e=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=e){var n,a,o,i,s=[],l=!0,u=!1;try{if(o=(e=e.call(t)).next,0===r){if(Object(e)!==e)return;l=!1}else for(;!(l=(n=o.call(e)).done)&&(s.push(n.value),s.length!==r);l=!0);}catch(t){u=!0,a=t}finally{try{if(!l&&null!=e.return&&(i=e.return(),Object(i)!==i))return}finally{if(u)throw a}}return s}}(t,r)||function(t,r){if(t){if("string"==typeof t)return y(t,r);var e={}.toString.call(t).slice(8,-1);return"Object"===e&&t.constructor&&(e=t.constructor.name),"Map"===e||"Set"===e?Array.from(t):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?y(t,r):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(t,r){(null==r||r>t.length)&&(r=t.length);for(var e=0,n=Array(r);e{"use strict";r.r(t),r.d(t,{default:()=>g});var n=r(6540),a=r(5556),s=r.n(a),o=r(7113),i=r(2597),c=r(4848);function p(e){return n.useEffect((function(){console.log("TestShowScreen subscribing to ['update'] events");var e=function(e){console.log(e),e.data.update.image_right&&(console.log("image_right"),(0,o.drawImage)(e.data.update)),e.data.update.image_left&&(console.log("image_left"),(0,o.drawLeftImage)(e.data.update)),window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),(0,c.jsxs)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative"},children:[(0,c.jsx)("img",{className:"image",id:"gui_canvas_left",style:{left:"0"},src:i}),(0,c.jsx)("img",{className:"image",id:"gui_canvas_right",style:{left:"50%"},src:i})]})}p.propTypes={circuit:s().string};const g=p},7113:(e,t,r)=>{"use strict";function n(e){var t,r=document.getElementById("gui_canvas_right"),n=JSON.parse(e.image_right),a=(t=n.image_right,decodeURIComponent(escape(t))),s=n.shape_right;""!=a&&s instanceof Array&&(r.src="data:image/jpeg;base64,"+a,r.width=s[1],r.height=s[0])}function a(e){var t,r=document.getElementById("gui_canvas_left"),n=JSON.parse(e.image_left),a=(t=n.image_left,decodeURIComponent(escape(t))),s=n.shape_left;""!=a&&s instanceof Array&&(r.src="data:image/jpeg;base64,"+a,r.width=s[1],r.height=s[0])}r.r(t),r.d(t,{drawImage:()=>n,drawLeftImage:()=>a}),new Image,new Image},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function s(){}s.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,s,o){if(o!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),s=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function p(e,t,r){var n,s={},p=null,g=null;for(n in void 0!==r&&(p=""+r),void 0!==t.key&&(p=""+t.key),void 0!==t.ref&&(g=t.ref),t)o.call(t,n)&&!c.hasOwnProperty(n)&&(s[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===s[n]&&(s[n]=t[n]);return{$$typeof:a,type:e,key:p,ref:g,props:s,_owner:i.current}}t.Fragment=s,t.jsx=p,t.jsxs=p},4848:(e,t,r)=>{"use strict";e.exports=r(1020)},2597:(e,t,r)=>{"use strict";e.exports=r.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9mb2xsb3dfcm9hZC9yZWFjdC1jb21wb25lbnRzL1NwZWNpZmljRm9sbG93Um9hZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9mb2xsb3dfcm9hZC9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc0ZvbGxvd1JvYWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IHsgZHJhd0ltYWdlLCBkcmF3TGVmdEltYWdlIH0gZnJvbSBcIi4vaGVscGVycy9zaG93SW1hZ2VzRm9sbG93Um9hZFwiO1xyXG5pbXBvcnQgbm9JbWFnZSBmcm9tIFwiLi4vLi4vYXNzZXRzL2ltZy9ub0ltYWdlLnBuZ1wiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvR1VJQ2FudmFzLmNzc1wiXHJcbmZ1bmN0aW9uIFNwZWNpZmljRm9sbG93Um9hZChwcm9wcykge1xyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuXHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlX3JpZ2h0KSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJpbWFnZV9yaWdodFwiKTtcclxuICAgICAgICBkcmF3SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfbGVmdCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiaW1hZ2VfbGVmdFwiKTtcclxuICAgICAgICBkcmF3TGVmdEltYWdlKG1lc3NhZ2UuZGF0YS51cGRhdGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZW5kIHRoZSBBQ0sgb2YgdGhlIG1zZ1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJhY2tcIik7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fT5cclxuICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWFnZVwiIGlkPVwiZ3VpX2NhbnZhc19sZWZ0XCIgc3R5bGU9e3tsZWZ0OiBcIjBcIn19XHJcbiAgICAgICAgc3JjPXtub0ltYWdlfS8+XHJcbiAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1hZ2VcIiBpZD1cImd1aV9jYW52YXNfcmlnaHRcIiBzdHlsZT17e2xlZnQ6IFwiNTAlXCJ9fVxyXG4gICAgICAgIHNyYz17bm9JbWFnZX0vPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNGb2xsb3dSb2FkLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNGb2xsb3dSb2FkO1xyXG4iLCIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocykge1xyXG4gIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKTtcclxufVxyXG5cclxubGV0IGltYWdlX3JpZ2h0ID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlKGRhdGEpIHtcclxuICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzX3JpZ2h0XCIpO1xyXG5cclxuICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgZnVuY3Rpb24gZGVjb2RlX3V0Zjgocykge1xyXG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxuICB9XHJcblxyXG4gIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2VfcmlnaHQpLFxyXG4gICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9yaWdodCksXHJcbiAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGVfcmlnaHQ7XHJcblxyXG4gIGlmIChzb3VyY2UgIT0gXCJcIiAmJiBzaGFwZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICBjYW52YXMuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZShkYXRhKSB7XHJcbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19sZWZ0XCIpO1xyXG5cclxuICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgZnVuY3Rpb24gZGVjb2RlX3V0Zjgocykge1xyXG4gICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxuICB9XHJcblxyXG4gIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlX2xlZnQ7XHJcblxyXG4gIGlmIChzb3VyY2UgIT0gXCJcIiAmJiBzaGFwZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICBjYW52YXMuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgfVxyXG59XHJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIlNwZWNpZmljRm9sbG93Um9hZCIsInByb3BzIiwiUmVhY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInVwZGF0ZSIsImltYWdlX3JpZ2h0IiwiZHJhd0ltYWdlIiwiaW1hZ2VfbGVmdCIsImRyYXdMZWZ0SW1hZ2UiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInNlbmQiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJwb3NpdGlvbiIsImNoaWxkcmVuIiwiX2pzeCIsImNsYXNzTmFtZSIsImlkIiwibGVmdCIsInNyYyIsIm5vSW1hZ2UiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwicyIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpbWFnZV9kYXRhIiwiSlNPTiIsInBhcnNlIiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJzaGFwZV9yaWdodCIsIkFycmF5Iiwic2hhcGVfbGVmdCIsIkltYWdlIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4800.c605bd0d.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4800.c605bd0d.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4800.c605bd0d.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/4996.a7388d59.js b/react_frontend/static/react_frontend/js/4996.a7388d59.js new file mode 100644 index 000000000..7d4c94162 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4996.a7388d59.js @@ -0,0 +1,3 @@ +/*! For license information please see 4996.a7388d59.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[4996],{4996:(e,r,t)=>{"use strict";t.r(r),t.d(r,{ViewProvider:()=>l,default:()=>f});var n=t(6540),o=t(5556),a=t.n(o),i=t(4848);function c(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,a,i,c=[],u=!0,s=!1;try{if(a=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;u=!1}else for(;!(u=(n=a.call(t)).done)&&(c.push(n.value),c.length!==r);u=!0);}catch(e){s=!0,o=e}finally{try{if(!u&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(s)throw o}}return c}}(e,r)||function(e,r){if(e){if("string"==typeof e)return u(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?u(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t{"use strict";var n=t(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,r,t,o,a,i){if(i!==n){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function r(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:r,element:e,elementType:e,instanceOf:r,node:e,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:a,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,r,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,r,t)=>{"use strict";var n=t(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,c=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,u={key:!0,ref:!0,__self:!0,__source:!0};function s(e,r,t){var n,a={},s=null,l=null;for(n in void 0!==t&&(s=""+t),void 0!==r.key&&(s=""+r.key),void 0!==r.ref&&(l=r.ref),r)i.call(r,n)&&!u.hasOwnProperty(n)&&(a[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===a[n]&&(a[n]=r[n]);return{$$typeof:o,type:e,key:s,ref:l,props:a,_owner:c.current}}r.Fragment=a,r.jsx=s,r.jsxs=s},4848:(e,r,t)=>{"use strict";e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFUSxhQUFhLElBQUlMLEtBQUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTMUIsRUFBRTJCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUV4RCxNQUFNc0QsRUFBRU8sT0FBT3BCLEVBQUVxQixRQUFRLENBQUNoRSxFQUFRaUUsU0FBUzNCLEVBQUV0QyxFQUFRa0UsSUFBSWYsRUFBRW5ELEVBQVFtRSxLQUFLaEIsK0JDUHhXcEQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbnRleHRzL1ZpZXdDb250ZXh0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuY29uc3QgVmlld0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gVmlld1Byb3ZpZGVyKHsgY2hpbGRyZW4gfSkge1xyXG4gIGNvbnN0IFt0aGVvcnlNb2RlLCBzZXRUaGVvcnlNb2RlXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICBjb25zdCBbY29kZU1vZGUsIHNldENvZGVNb2RlXSA9IHVzZVN0YXRlKHRydWUpO1xyXG4gIGNvbnN0IFtmb3J1bU1vZGUsIHNldEZvcnVtTW9kZV0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3Qgb3BlblRoZW9yeSA9ICgpID0+IHtcclxuICAgIGlmICghdGhlb3J5TW9kZSkge1xyXG4gICAgICBzZXRUaGVvcnlNb2RlKHRydWUpO1xyXG4gICAgICBzZXRDb2RlTW9kZShmYWxzZSk7XHJcbiAgICAgIHNldEZvcnVtTW9kZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfTtcclxuICBjb25zdCBvcGVuRXhlcmNpc2UgPSAoKSA9PiB7XHJcbiAgICBpZiAoIWNvZGVNb2RlKSB7XHJcbiAgICAgIHNldFRoZW9yeU1vZGUoZmFsc2UpO1xyXG4gICAgICBzZXRDb2RlTW9kZSh0cnVlKTtcclxuICAgICAgc2V0Rm9ydW1Nb2RlKGZhbHNlKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IG9wZW5Gb3J1bSA9ICgpID0+IHtcclxuICAgIGlmICghZm9ydW1Nb2RlKSB7XHJcbiAgICAgIHNldFRoZW9yeU1vZGUoZmFsc2UpO1xyXG4gICAgICBzZXRDb2RlTW9kZShmYWxzZSk7XHJcbiAgICAgIHNldEZvcnVtTW9kZSh0cnVlKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPFZpZXdDb250ZXh0LlByb3ZpZGVyXHJcbiAgICAgIHZhbHVlPXt7XHJcbiAgICAgICAgdGhlb3J5TW9kZSxcclxuICAgICAgICBjb2RlTW9kZSxcclxuICAgICAgICBmb3J1bU1vZGUsXHJcbiAgICAgICAgb3BlblRoZW9yeSxcclxuICAgICAgICBvcGVuRm9ydW0sXHJcbiAgICAgICAgb3BlbkV4ZXJjaXNlLFxyXG4gICAgICB9fVxyXG4gICAgPlxyXG4gICAgICB7Y2hpbGRyZW59XHJcbiAgICA8L1ZpZXdDb250ZXh0LlByb3ZpZGVyPlxyXG4gICk7XHJcbn1cclxuVmlld1Byb3ZpZGVyLnByb3BUeXBlcyA9IHtcclxuICBjaGlsZHJlbjogUHJvcFR5cGVzLmVsZW1lbnQsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBWaWV3Q29udGV4dDtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsiVmlld0NvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiVmlld1Byb3ZpZGVyIiwiX3JlZiIsImNoaWxkcmVuIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlU3RhdGUiLCJ0aGVvcnlNb2RlIiwic2V0VGhlb3J5TW9kZSIsIl91c2VTdGF0ZTQiLCJjb2RlTW9kZSIsInNldENvZGVNb2RlIiwiX3VzZVN0YXRlNiIsImZvcnVtTW9kZSIsInNldEZvcnVtTW9kZSIsIl9qc3giLCJQcm92aWRlciIsInZhbHVlIiwib3BlblRoZW9yeSIsIm9wZW5Gb3J1bSIsIm9wZW5FeGVyY2lzZSIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJzaGltIiwicHJvcHMiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/4996.a7388d59.js.LICENSE.txt b/react_frontend/static/react_frontend/js/4996.a7388d59.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/4996.a7388d59.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5008.47835eed.js b/react_frontend/static/react_frontend/js/5008.47835eed.js new file mode 100644 index 000000000..77cd50a3c --- /dev/null +++ b/react_frontend/static/react_frontend/js/5008.47835eed.js @@ -0,0 +1,3 @@ +/*! For license information please see 5008.47835eed.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5008,4345],{1336:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>h});var r=n(6540),s=n(5556),o=n.n(s),a=n(4345);n.p;const i=n.p+"c0453f604892db7d1b12.svg",c=n.p+"b978997e7f65a543a8bd.svg";var u=n(2597);const l=n.p+"0bc351912833f3417a22.png",p=n.p+"6307e69c307fde0efc6a.png";var d=n(4848);function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,s,o,a,i=[],c=!0,u=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(i.push(r.value),i.length!==t);c=!0);}catch(e){u=!0,s=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw s}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n40?((0,a.updatePath)(T,b,o,r),(0,a.addToPath)(i[0],i[1],T)):R+=1}if(t.noisy_pose){var c=t.noisy_pose.substring(1,t.noisy_pose.length-1).split(",").map((function(e){return parseFloat(e)}));C=c,m([c[0]*o,c[1]*r,3.14-c[2]]),R>40&&((0,a.updatePath)(j,x,o,r),(0,a.addToPath)(c[0],c[1],j))}t.user_map&&(0,a.drawImage)(t),window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),k.observe(document.getElementById("exercise-img")),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),r.useEffect((function(){var e=function(e){if("tools_ready"===e.data.state){try{s(null),m(null),b(""),x(""),T=[],j=[],document.getElementById("gui-canvas").src=u}catch(e){}switch(context.mapSelected){case"Laser Mapping Warehouse":E(l);break;case"Small Laser Mapping Warehouse":E(p)}}R=0};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.STATE_CHANGED],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.STATE_CHANGED],e)}}),[]),(0,d.jsxs)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative"},children:[(0,d.jsx)("img",{src:S,alt:"",className:"exercise-canvas",id:"exercise-img"}),(0,d.jsx)("img",{className:"image",id:"gui-canvas",style:{left:"50%"},src:u}),n&&(0,d.jsx)("div",{id:"real-pos",style:{rotate:"z "+n[2]+"rad",top:n[0]-10,left:n[1]-10},children:(0,d.jsx)("img",{src:i,id:"real-pos"})}),y&&(0,d.jsx)("svg",{height:"100%",width:"100%",xmlns:"http://www.w3.org/2000/svg",style:{zIndex:2,position:"absolute"},children:(0,d.jsx)("path",{xmlns:"http://www.w3.org/2000/svg",d:y,style:{strokeWidth:"1px",strokeLinejoin:"round",stroke:"green",fill:"none",opacity:"0.5"}})}),g&&(0,d.jsx)("div",{id:"noisy-pos",style:{rotate:"z "+g[2]+"rad",top:g[0]-10,left:g[1]-10},children:(0,d.jsx)("img",{src:c,id:"noisy-pos"})}),w&&(0,d.jsx)("svg",{height:"100%",width:"100%",xmlns:"http://www.w3.org/2000/svg",style:{zIndex:2,position:"absolute"},children:(0,d.jsx)("path",{xmlns:"http://www.w3.org/2000/svg",d:w,style:{strokeWidth:"1px",strokeLinejoin:"round",stroke:"blue",fill:"none",opacity:"0.5"}})})]})}m.propTypes={circuit:o().string};const h=m},4345:(e,t,n)=>{"use strict";function r(e){var t,n=document.getElementById("gui-canvas"),r=JSON.parse(e.user_map),s=(t=r.user_map,decodeURIComponent(escape(t))),o=r.shape;""!=s&&o instanceof Array&&(n.src="data:user_map/jpeg;base64,"+s,n.width=o[1],n.height=o[0])}n.r(t),n.d(t,{addToPath:()=>o,drawImage:()=>r,updatePath:()=>s}),new Image;var s=function(e,t,n,r){for(var s="M ",o=0;o0&&t(s)},o=function(e,t,n){n.includes([e,t])||n.push([e,t])}},2694:(e,t,n)=>{"use strict";var r=n(6925);function s(){}function o(){}o.resetWarningCache=s,e.exports=function(){function e(e,t,n,s,o,a){if(a!==r){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:s};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,n)=>{"use strict";var r=n(6540),s=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,i=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,o={},u=null,l=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)a.call(t,r)&&!c.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:s,type:e,key:u,ref:l,props:o,_owner:i.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},4848:(e,t,n)=>{"use strict";e.exports=n(1020)},2597:(e,t,n)=>{"use strict";e.exports=n.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNTAwOC4yNDNjMjQxNS5qcyIsIm1hcHBpbmdzIjoiOzgyQ0FZQSxTQUFTQSxFQUFxQkMsR0FDNUIsSUFBb0RDLEVBQUFDLEVBQXBCQyxFQUFBQSxTQUFlLE1BQUssR0FBN0NDLEVBQVFILEVBQUEsR0FBRUksRUFBV0osRUFBQSxHQUMwQkssRUFBQUosRUFBcEJDLEVBQUFBLFNBQWUsTUFBSyxHQUEvQ0ksRUFBU0QsRUFBQSxHQUFFRSxFQUFZRixFQUFBLEdBQ29CRyxFQUFBUCxFQUFsQkMsRUFBQUEsU0FBZSxJQUFHLEdBQTNDTyxFQUFRRCxFQUFBLEdBQUVFLEVBQVdGLEVBQUEsR0FDd0JHLEVBQUFWLEVBQWxCQyxFQUFBQSxTQUFlLElBQUcsR0FBN0NVLEVBQVNELEVBQUEsR0FBRUUsRUFBWUYsRUFBQSxHQUM0QkcsRUFBQWIsRUFBOUJDLEVBQUFBLFNBQWVhLEdBQWUsR0FBbkRDLEVBQU1GLEVBQUEsR0FBRUcsRUFBU0gsRUFBQSxHQUNwQkksRUFBWSxHQUNaQyxFQUFhLEdBQ2JDLE9BQWVDLEVBQ2ZDLE9BQWdCRCxFQUNoQkUsRUFBbUIsRUFJakJDLEVBQWlCLElBQUlDLGdCQUFlLFNBQUNDLEdBQ3pDLElBQUlDLEVBQU1ELEVBQVEsR0FBR0UsT0FFakJDLEVBQVNGLEVBQUlHLFlBQWMsS0FDM0JDLEVBQVVKLEVBQUlLLGFBQWUsS0FFakNDLEVBQUFBLEVBQUFBLFlBQVdmLEVBQVdSLEVBQWFxQixFQUFRRixJQUMzQ0ksRUFBQUEsRUFBQUEsWUFBV2QsRUFBWU4sRUFBY2tCLEVBQVFGLEdBRXpDVCxHQUNGaEIsRUFBWSxDQUFDZ0IsRUFBYSxHQUFHVyxFQUFPWCxFQUFhLEdBQUdTLEVBQU8sS0FBTVQsRUFBYSxLQUc1RUUsR0FDRmYsRUFBYSxDQUFDZSxFQUFjLEdBQUdTLEVBQU9ULEVBQWMsR0FBR08sRUFBTyxLQUFNUCxFQUFjLEtBR3BGQyxFQUFtQixDQUNyQixJQXFHQSxPQW5HQXJCLEVBQUFBLFdBQWdCLFdBQ2RnQyxRQUFRQyxJQUFJLG1EQUNaLElBQU1DLEVBQVcsU0FBQ0MsR0FDaEIsSUFBTUMsRUFBYUQsRUFBUUUsS0FBS0MsT0FFNUJiLEVBQU1jLFNBQVNDLGVBQWUsY0FFOUJiLEVBQVNGLEVBQUlHLFlBQWMsS0FDM0JDLEVBQVVKLEVBQUlLLGFBQWUsSUFFakMsR0FBSU0sRUFBV0ssVUFBVyxDQUN4QixJQUNNQyxFQURPTixFQUFXSyxVQUFVRSxVQUFVLEVBQUdQLEVBQVdLLFVBQVVHLE9BQVMsR0FDeERDLE1BQU0sS0FBS0MsS0FBSSxTQUFBQyxHQUFJLE9BQUlDLFdBQVdELEVBQUssSUFDNUQ3QixFQUFld0IsRUFFZnhDLEVBQVksQ0FBQ3dDLEVBQVEsR0FBR2IsRUFBT2EsRUFBUSxHQUFHZixFQUFPLEtBQU1lLEVBQVEsS0FDM0RyQixFQXRDTSxLQXVDUlUsRUFBQUEsRUFBQUEsWUFBV2YsRUFBV1IsRUFBYXFCLEVBQVFGLElBQzNDc0IsRUFBQUEsRUFBQUEsV0FBVVAsRUFBUSxHQUFJQSxFQUFRLEdBQUkxQixJQUVsQ0ssR0FBc0MsQ0FFMUMsQ0FFQSxHQUFJZSxFQUFXYyxXQUFZLENBQ3pCLElBQ01SLEVBRE9OLEVBQVdjLFdBQVdQLFVBQVUsRUFBR1AsRUFBV2MsV0FBV04sT0FBUyxHQUMxREMsTUFBTSxLQUFLQyxLQUFJLFNBQUFDLEdBQUksT0FBSUMsV0FBV0QsRUFBSyxJQUM1RDNCLEVBQWdCc0IsRUFFaEJyQyxFQUFhLENBQUNxQyxFQUFRLEdBQUdiLEVBQU9hLEVBQVEsR0FBR2YsRUFBTyxLQUFNZSxFQUFRLEtBQzVEckIsRUFwRE0sTUFxRFJVLEVBQUFBLEVBQUFBLFlBQVdkLEVBQVlOLEVBQWNrQixFQUFRRixJQUM3Q3NCLEVBQUFBLEVBQUFBLFdBQVVQLEVBQVEsR0FBSUEsRUFBUSxHQUFJekIsR0FFdEMsQ0FFSW1CLEVBQVdlLFdBQ2JDLEVBQUFBLEVBQUFBLFdBQVVoQixHQUlaaUIsT0FBT0MsMkJBQTJCQyxhQUFhQyxLQUFLLE1BQU8sTUFDN0QsRUFTQSxPQVBBSCxPQUFPQywyQkFBMkJDLGFBQWFFLFVBQzdDLENBQUNKLE9BQU9DLDJCQUEyQkMsYUFBYUcsT0FBT0MsUUFDdkR6QixHQUdGWixFQUFlc0MsUUFBUXJCLFNBQVNDLGVBQWUsaUJBRXhDLFdBQ0xSLFFBQVFDLElBQUksOERBQ1pvQixPQUFPQywyQkFBMkJDLGFBQWFNLFlBQzdDLENBQUNSLE9BQU9DLDJCQUEyQkMsYUFBYUcsT0FBT0MsUUFDdkR6QixFQUVKLENBQ0YsR0FBRyxJQUVIbEMsRUFBQUEsV0FBZ0IsV0FDZCxJQUFNa0MsRUFBVyxTQUFDQyxHQUNoQixHQUEyQixnQkFBdkJBLEVBQVFFLEtBQUt5QixNQUF5QixDQUN4QyxJQUNFNUQsRUFBWSxNQUNaRyxFQUFhLE1BQ2JHLEVBQVksSUFDWkcsRUFBYSxJQUNiSyxFQUFVLEdBQ1ZDLEVBQVcsR0FDRXNCLFNBQVNDLGVBQWUsY0FDOUJ1QixJQUFNQyxDQUNmLENBQUUsTUFBT0MsR0FDVCxDQUNBLE9BQVFDLFFBQVFDLGFBQ2QsSUFBSywwQkFDSHBELEVBQVVxRCxHQUNWLE1BQ0YsSUFBSyxnQ0FDSHJELEVBQVVGLEdBR2hCLENBQ0FRLEVBQW1CLENBQ3JCLEVBTUEsT0FMQWdDLE9BQU9DLDJCQUEyQkMsYUFBYUUsVUFDN0MsQ0FBQ0osT0FBT0MsMkJBQTJCQyxhQUFhRyxPQUFPVyxlQUN2RG5DLEdBR0ssV0FDTEYsUUFBUUMsSUFBSSw4REFDWm9CLE9BQU9DLDJCQUEyQkMsYUFBYU0sWUFDN0MsQ0FBQ1IsT0FBT0MsMkJBQTJCQyxhQUFhRyxPQUFPVyxlQUN2RG5DLEVBRUosQ0FDRixHQUFHLEtBR0RvQyxFQUFBQSxFQUFBQSxNQUFBLE9BQUtDLE1BQU8sQ0FBQ0MsUUFBUyxPQUFRN0MsTUFBTyxPQUFRRSxPQUFRLE9BQVE0QyxTQUFTLFlBQVlDLFNBQUEsRUFDaEZDLEVBQUFBLEVBQUFBLEtBQUEsT0FBS1osSUFBS2pELEVBQVE4RCxJQUFJLEdBQUdDLFVBQVUsa0JBQWtCQyxHQUFHLGtCQUN4REgsRUFBQUEsRUFBQUEsS0FBQSxPQUFLRSxVQUFVLFFBQVFDLEdBQUcsYUFBYVAsTUFBTyxDQUFDUSxLQUFNLE9BQ25EaEIsSUFBS0MsSUFDTi9ELElBQ0MwRSxFQUFBQSxFQUFBQSxLQUFBLE9BQUtHLEdBQUcsV0FBV1AsTUFBTyxDQUFDUyxPQUFRLEtBQU0vRSxFQUFTLEdBQUcsTUFBT2dGLElBQUtoRixFQUFTLEdBQUksR0FBSzhFLEtBQU05RSxFQUFTLEdBQUksSUFBSXlFLFVBQ3hHQyxFQUFBQSxFQUFBQSxLQUFBLE9BQUtaLElBQUttQixFQUFZSixHQUFHLGVBRzVCdkUsSUFDQ29FLEVBQUFBLEVBQUFBLEtBQUEsT0FBSzlDLE9BQU8sT0FBT0YsTUFBTSxPQUFPd0QsTUFBTSw2QkFBNkJaLE1BQU8sQ0FBQ2EsT0FBTyxFQUFHWCxTQUFTLFlBQVlDLFVBQ3hHQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU1RLE1BQU0sNkJBQTZCRSxFQUFHOUUsRUFDMUNnRSxNQUFPLENBQUNlLFlBQWEsTUFBT0MsZUFBZSxRQUFTQyxPQUFRLFFBQVNDLEtBQU0sT0FBUUMsUUFBUSxXQUloR3RGLElBQ0N1RSxFQUFBQSxFQUFBQSxLQUFBLE9BQUtHLEdBQUcsWUFBWVAsTUFBTyxDQUFDUyxPQUFRLEtBQU01RSxFQUFVLEdBQUcsTUFBTzZFLElBQUs3RSxFQUFVLEdBQUksR0FBSzJFLEtBQU0zRSxFQUFVLEdBQUksSUFBSXNFLFVBQzVHQyxFQUFBQSxFQUFBQSxLQUFBLE9BQUtaLElBQUs0QixFQUFXYixHQUFHLGdCQUczQnBFLElBQ0NpRSxFQUFBQSxFQUFBQSxLQUFBLE9BQUs5QyxPQUFPLE9BQU9GLE1BQU0sT0FBT3dELE1BQU0sNkJBQTZCWixNQUFPLENBQUNhLE9BQU8sRUFBR1gsU0FBUyxZQUFZQyxVQUN4R0MsRUFBQUEsRUFBQUEsS0FBQSxRQUFNUSxNQUFNLDZCQUE2QkUsRUFBRzNFLEVBQzFDNkQsTUFBTyxDQUFDZSxZQUFhLE1BQU9DLGVBQWUsUUFBU0MsT0FBUSxPQUFRQyxLQUFNLE9BQVFDLFFBQVEsYUFNdEcsQ0FFQTlGLEVBQXFCZ0csVUFBWSxDQUMvQkMsUUFBU0MsSUFBQUEsUUFHWCx1Q0MvS08sU0FBUzFDLEVBQVVmLEdBQ3hCLElBR3FCMEQsRUFIakJDLEVBQVN6RCxTQUFTQyxlQUFlLGNBUWpDeUQsRUFBYUMsS0FBS0MsTUFBTTlELEVBQUtjLFVBQy9CaUQsR0FObUJMLEVBTUVFLEVBQVc5QyxTQUx2QmtELG1CQUFtQkMsT0FBT1AsS0FNbkNRLEVBQVFOLEVBQVdNLE1BRVAsSUFBVkgsR0FBZ0JHLGFBQWlCQyxRQUNuQ1IsRUFBT2pDLElBQU0sNkJBQStCcUMsRUFDNUNKLEVBQU9yRSxNQUFRNEUsRUFBTSxHQUNyQlAsRUFBT25FLE9BQVMwRSxFQUFNLEdBRTFCLGtFQXBCWSxJQUFJRSxNQXNCVCxJQUFNMUUsRUFBYSxTQUFDMkUsRUFBT0MsRUFBaUI5RSxFQUFRRixHQUd6RCxJQUZBLElBQUlpRixFQUFVLEtBRUxDLEVBQVEsRUFBR0EsRUFBUUgsRUFBTTlELE9BQVFpRSxJQUFTLENBQ2pELElBQU1DLEVBQVVKLEVBQU1HLEdBQ2xCNUIsRUFBTzZCLEVBQVEsR0FBS2pGLEVBQ3BCa0QsRUFBTytCLEVBQVEsR0FBS25GLEVBQ1YsSUFBVmtGLElBQ0ZELEdBQVc3QixFQUFLZ0MsV0FBWSxJQUFNOUIsRUFBSThCLFlBRXhDSCxHQUFXLE1BQVE3QixFQUFLZ0MsV0FBYSxJQUFNOUIsRUFBSThCLFVBQ2pELENBRUlMLEVBQU05RCxPQUFTLEdBQ2pCK0QsRUFBZ0JDLEVBRXBCLEVBRWEzRCxFQUFZLFNBQUMrRCxFQUFHQyxFQUFHUCxHQUN6QkEsRUFBTVEsU0FBUyxDQUFDRixFQUFHQyxLQUN0QlAsRUFBTVMsS0FBSyxDQUFDSCxFQUFHQyxHQUVuQiwrQkN4Q0EsSUFBSUcsRUFBdUIsRUFBUSxNQUVuQyxTQUFTQyxJQUFpQixDQUMxQixTQUFTQyxJQUEwQixDQUNuQ0EsRUFBdUJDLGtCQUFvQkYsRUFFM0NHLEVBQU9DLFFBQVUsV0FDZixTQUFTQyxFQUFLN0gsRUFBTzhILEVBQVVDLEVBQWVDLEVBQVVDLEVBQWNDLEdBQ3BFLEdBQUlBLElBQVdYLEVBQWYsQ0FJQSxJQUFJWSxFQUFNLElBQUlDLE1BQ1osbUxBS0YsTUFEQUQsRUFBSUUsS0FBTyxzQkFDTEYsQ0FQTixDQVFGLENBRUEsU0FBU0csSUFDUCxPQUFPVCxDQUNULENBSEFBLEVBQUtVLFdBQWFWLEVBTWxCLElBQUlXLEVBQWlCLENBQ25CQyxNQUFPWixFQUNQYSxPQUFRYixFQUNSYyxLQUFNZCxFQUNOZSxLQUFNZixFQUNOZ0IsT0FBUWhCLEVBQ1JpQixPQUFRakIsRUFDUmtCLE9BQVFsQixFQUNSbUIsT0FBUW5CLEVBRVJvQixJQUFLcEIsRUFDTHFCLFFBQVNaLEVBQ1RyQixRQUFTWSxFQUNUc0IsWUFBYXRCLEVBQ2J1QixXQUFZZCxFQUNaZSxLQUFNeEIsRUFDTnlCLFNBQVVoQixFQUNWaUIsTUFBT2pCLEVBQ1BrQixVQUFXbEIsRUFDWDVCLE1BQU80QixFQUNQbUIsTUFBT25CLEVBRVBvQixlQUFnQmpDLEVBQ2hCQyxrQkFBbUJGLEdBS3JCLE9BRkFnQixFQUFldkMsVUFBWXVDLEVBRXBCQSxDQUNULGtCQy9DRWIsRUFBT0MsUUFBVSxFQUFRLEtBQVIsMEJDTm5CRCxFQUFPQyxRQUZvQiw0RUNBZCxJQUFJK0IsRUFBRSxFQUFRLE1BQVNDLEVBQUVDLE9BQU9DLElBQUksaUJBQWlCQyxFQUFFRixPQUFPQyxJQUFJLGtCQUFrQkUsRUFBRUMsT0FBT0MsVUFBVUMsZUFBZUMsRUFBRVQsRUFBRVUsbURBQW1EQyxrQkFBa0JDLEVBQUUsQ0FBQ0MsS0FBSSxFQUFHQyxLQUFJLEVBQUdDLFFBQU8sRUFBR0MsVUFBUyxHQUNoUCxTQUFTQyxFQUFFQyxFQUFFQyxFQUFFQyxHQUFHLElBQUlDLEVBQUV4RixFQUFFLENBQUMsRUFBRXlGLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJRixVQUFoRixJQUFTRCxJQUFJRSxFQUFFLEdBQUdGLFFBQUcsSUFBU0QsRUFBRU4sTUFBTVMsRUFBRSxHQUFHSCxFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1TLEVBQUVKLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVtQixLQUFLTCxFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLeEYsRUFBRXdGLEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRU8sYUFBYSxJQUFJSixLQUFLRixFQUFFRCxFQUFFTyxrQkFBZSxJQUFTNUYsRUFBRXdGLEtBQUt4RixFQUFFd0YsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNLLFNBQVN6QixFQUFFMEIsS0FBS1QsRUFBRUwsSUFBSVMsRUFBRVIsSUFBSVMsRUFBRWxMLE1BQU13RixFQUFFK0YsT0FBT25CLEVBQUVvQixRQUFRLENBQUM1RCxFQUFRNkQsU0FBUzFCLEVBQUVuQyxFQUFROEQsSUFBSWQsRUFBRWhELEVBQVErRCxLQUFLZiwrQkNQeFdqRCxFQUFPQyxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvbGFzZXJfbWFwcGluZy9yZWFjdC1jb21wb25lbnRzL1NwZWNpZmljTGFzZXJNYXBwaW5nLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhc2VyX21hcHBpbmcvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZVZpc3VhbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgeyBkcmF3SW1hZ2UsIHVwZGF0ZVBhdGgsIGFkZFRvUGF0aCB9IGZyb20gXCIuL2hlbHBlcnMvc2hvd0ltYWdlVmlzdWFsXCI7XHJcbmltcG9ydCBSb2JvdFJlZCBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy9yb2JvdF9yZWQuc3ZnXCI7XHJcbmltcG9ydCBSb2JvdEdyZWVuIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL3JvYm90X2dyZWVuLnN2Z1wiO1xyXG5pbXBvcnQgUm9ib3RCbHVlIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL3JvYm90X2JsdWUuc3ZnXCI7XHJcbmltcG9ydCBub0ltYWdlIGZyb20gXCIuLi8uLi9hc3NldHMvaW1nL25vSW1hZ2UucG5nXCI7XHJcblxyXG5pbXBvcnQgd2FyZWhvdXNlIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL21hcC5wbmdcIjtcclxuaW1wb3J0IHNtYWxsV2FyZWhvdXNlIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL3NtYWxsX21hcC5wbmdcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL0dVSUNhbnZhcy5jc3NcIlxyXG5mdW5jdGlvbiBTcGVjaWZpY0xhc2VyTWFwcGluZyhwcm9wcykge1xyXG4gIGNvbnN0IFtyZWFsUG9zZSwgc2V0UmVhbFBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbbm9pc3lQb3NlLCBzZXROb2lzeVBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbcmVhbFBhdGgsIHNldFJlYWxQYXRoXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpXHJcbiAgY29uc3QgW25vaXN5UGF0aCwgc2V0Tm9pc3lQYXRoXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpXHJcbiAgY29uc3QgW21hcEltZywgc2V0TWFwSW1nXSA9IFJlYWN0LnVzZVN0YXRlKHNtYWxsV2FyZWhvdXNlKTtcclxuICB2YXIgcmVhbFRyYWlsID0gW107XHJcbiAgdmFyIG5vaXN5VHJhaWwgPSBbXTtcclxuICB2YXIgcmVhbExhc3RQb3NlID0gdW5kZWZpbmVkO1xyXG4gIHZhciBub2lzeUxhc3RQb3NlID0gdW5kZWZpbmVkO1xyXG4gIHZhciB2YWx1ZXNVbnRpbFZhbGlkID0gMDtcclxuXHJcbiAgY29uc3QgdGltZW91dCA9IDQwO1xyXG5cclxuICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xyXG4gICAgdmFyIGltZyA9IGVudHJpZXNbMF0udGFyZ2V0OyBcclxuICAgIC8vb3IgaG93ZXZlciB5b3UgZ2V0IGEgaGFuZGxlIHRvIHRoZSBJTUdcclxuICAgIHZhciB3aWR0aCA9IChpbWcuY2xpZW50V2lkdGggLyAxNTAwKTtcclxuICAgIHZhciBoZWlnaHQgPSAoaW1nLmNsaWVudEhlaWdodCAvIDk3MCk7XHJcblxyXG4gICAgdXBkYXRlUGF0aChyZWFsVHJhaWwsIHNldFJlYWxQYXRoLCBoZWlnaHQsIHdpZHRoKTtcclxuICAgIHVwZGF0ZVBhdGgobm9pc3lUcmFpbCwgc2V0Tm9pc3lQYXRoLCBoZWlnaHQsIHdpZHRoKTtcclxuXHJcbiAgICBpZiAocmVhbExhc3RQb3NlKSB7XHJcbiAgICAgIHNldFJlYWxQb3NlKFtyZWFsTGFzdFBvc2VbMF0qaGVpZ2h0LHJlYWxMYXN0UG9zZVsxXSp3aWR0aCwgMy4xNCAtcmVhbExhc3RQb3NlWzJdXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5vaXN5TGFzdFBvc2UpIHtcclxuICAgICAgc2V0Tm9pc3lQb3NlKFtub2lzeUxhc3RQb3NlWzBdKmhlaWdodCxub2lzeUxhc3RQb3NlWzFdKndpZHRoLCAzLjE0IC1ub2lzeUxhc3RQb3NlWzJdXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsdWVzVW50aWxWYWxpZCA9IDA7XHJcbiAgfSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGVEYXRhID0gbWVzc2FnZS5kYXRhLnVwZGF0ZTtcclxuXHJcbiAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3VpLWNhbnZhcycpOyBcclxuICAgICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgICB2YXIgd2lkdGggPSAoaW1nLmNsaWVudFdpZHRoIC8gMTUwMCk7XHJcbiAgICAgIHZhciBoZWlnaHQgPSAoaW1nLmNsaWVudEhlaWdodCAvIDk3MCk7XHJcblxyXG4gICAgICBpZiAodXBkYXRlRGF0YS5yZWFsX3Bvc2UpIHtcclxuICAgICAgICBjb25zdCBwb3NlID0gdXBkYXRlRGF0YS5yZWFsX3Bvc2Uuc3Vic3RyaW5nKDEsIHVwZGF0ZURhdGEucmVhbF9wb3NlLmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBwb3NlLnNwbGl0KFwiLFwiKS5tYXAoaXRlbSA9PiBwYXJzZUZsb2F0KGl0ZW0pKTtcclxuICAgICAgICByZWFsTGFzdFBvc2UgPSBjb250ZW50XHJcblxyXG4gICAgICAgIHNldFJlYWxQb3NlKFtjb250ZW50WzBdKmhlaWdodCxjb250ZW50WzFdKndpZHRoLCAzLjE0IC1jb250ZW50WzJdXSk7XHJcbiAgICAgICAgaWYgKHZhbHVlc1VudGlsVmFsaWQgPiB0aW1lb3V0KSB7XHJcbiAgICAgICAgICB1cGRhdGVQYXRoKHJlYWxUcmFpbCwgc2V0UmVhbFBhdGgsIGhlaWdodCwgd2lkdGgpO1xyXG4gICAgICAgICAgYWRkVG9QYXRoKGNvbnRlbnRbMF0sIGNvbnRlbnRbMV0sIHJlYWxUcmFpbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbHVlc1VudGlsVmFsaWQgPSB2YWx1ZXNVbnRpbFZhbGlkICsgMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh1cGRhdGVEYXRhLm5vaXN5X3Bvc2UpIHtcclxuICAgICAgICBjb25zdCBwb3NlID0gdXBkYXRlRGF0YS5ub2lzeV9wb3NlLnN1YnN0cmluZygxLCB1cGRhdGVEYXRhLm5vaXN5X3Bvc2UubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHBvc2Uuc3BsaXQoXCIsXCIpLm1hcChpdGVtID0+IHBhcnNlRmxvYXQoaXRlbSkpO1xyXG4gICAgICAgIG5vaXN5TGFzdFBvc2UgPSBjb250ZW50XHJcblxyXG4gICAgICAgIHNldE5vaXN5UG9zZShbY29udGVudFswXSpoZWlnaHQsY29udGVudFsxXSp3aWR0aCwgMy4xNCAtY29udGVudFsyXV0pO1xyXG4gICAgICAgIGlmICh2YWx1ZXNVbnRpbFZhbGlkID4gdGltZW91dCkge1xyXG4gICAgICAgICAgdXBkYXRlUGF0aChub2lzeVRyYWlsLCBzZXROb2lzeVBhdGgsIGhlaWdodCwgd2lkdGgpO1xyXG4gICAgICAgICAgYWRkVG9QYXRoKGNvbnRlbnRbMF0sIGNvbnRlbnRbMV0sIG5vaXN5VHJhaWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHVwZGF0ZURhdGEudXNlcl9tYXApIHtcclxuICAgICAgICBkcmF3SW1hZ2UodXBkYXRlRGF0YSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNlbmQgdGhlIEFDSyBvZiB0aGUgbXNnXHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImFja1wiKTtcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGVyY2lzZS1pbWcnKSk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHNldFJlYWxQb3NlKG51bGwpXHJcbiAgICAgICAgICBzZXROb2lzeVBvc2UobnVsbClcclxuICAgICAgICAgIHNldFJlYWxQYXRoKFwiXCIpXHJcbiAgICAgICAgICBzZXROb2lzeVBhdGgoXCJcIilcclxuICAgICAgICAgIHJlYWxUcmFpbD1bXVxyXG4gICAgICAgICAgbm9pc3lUcmFpbD1bXVxyXG4gICAgICAgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpLWNhbnZhc1wiKTtcclxuICAgICAgICAgIGNhbnZhcy5zcmMgPSBub0ltYWdlO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAoY29udGV4dC5tYXBTZWxlY3RlZCkge1xyXG4gICAgICAgICAgY2FzZSBcIkxhc2VyIE1hcHBpbmcgV2FyZWhvdXNlXCI6XHJcbiAgICAgICAgICAgIHNldE1hcEltZyh3YXJlaG91c2UpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTbWFsbCBMYXNlciBNYXBwaW5nIFdhcmVob3VzZVwiOlxyXG4gICAgICAgICAgICBzZXRNYXBJbWcoc21hbGxXYXJlaG91c2UpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdmFsdWVzVW50aWxWYWxpZCA9IDA7XHJcbiAgICB9XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKVxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCB3aWR0aDogXCIxMDAlXCIsIGhlaWdodDogXCIxMDAlXCIsIHBvc2l0aW9uOlwicmVsYXRpdmVcIn19PlxyXG4gICAgICA8aW1nIHNyYz17bWFwSW1nfSBhbHQ9XCJcIiBjbGFzc05hbWU9XCJleGVyY2lzZS1jYW52YXNcIiBpZD1cImV4ZXJjaXNlLWltZ1wiLz5cclxuICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWFnZVwiIGlkPVwiZ3VpLWNhbnZhc1wiIHN0eWxlPXt7bGVmdDogXCI1MCVcIn19XHJcbiAgICAgICAgc3JjPXtub0ltYWdlfS8+XHJcbiAgICAgIHtyZWFsUG9zZSAmJlxyXG4gICAgICAgIDxkaXYgaWQ9XCJyZWFsLXBvc1wiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIHJlYWxQb3NlWzJdK1wicmFkXCIsIHRvcDogcmVhbFBvc2VbMF0gLTEwICwgbGVmdDogcmVhbFBvc2VbMV0gLTEwfX0+XHJcbiAgICAgICAgICA8aW1nIHNyYz17Um9ib3RHcmVlbn0gaWQ9XCJyZWFsLXBvc1wiLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgICB7cmVhbFBhdGggJiZcclxuICAgICAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9e3t6SW5kZXg6MiwgcG9zaXRpb246XCJhYnNvbHV0ZVwifX0+XHJcbiAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZD17cmVhbFBhdGh9IFxyXG4gICAgICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOiBcIjFweFwiLCBzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsIHN0cm9rZTogXCJncmVlblwiLCBmaWxsOiBcIm5vbmVcIiwgb3BhY2l0eTpcIjAuNVwifX1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIH1cclxuICAgICAge25vaXN5UG9zZSAmJlxyXG4gICAgICAgIDxkaXYgaWQ9XCJub2lzeS1wb3NcIiBzdHlsZT17e3JvdGF0ZTogXCJ6IFwiKyBub2lzeVBvc2VbMl0rXCJyYWRcIiwgdG9wOiBub2lzeVBvc2VbMF0gLTEwICwgbGVmdDogbm9pc3lQb3NlWzFdIC0xMH19PlxyXG4gICAgICAgICAgPGltZyBzcmM9e1JvYm90Qmx1ZX0gaWQ9XCJub2lzeS1wb3NcIi8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAge25vaXN5UGF0aCAmJlxyXG4gICAgICAgIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHlsZT17e3pJbmRleDoyLCBwb3NpdGlvbjpcImFic29sdXRlXCJ9fT5cclxuICAgICAgICAgIDxwYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBkPXtub2lzeVBhdGh9IFxyXG4gICAgICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOiBcIjFweFwiLCBzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsIHN0cm9rZTogXCJibHVlXCIsIGZpbGw6IFwibm9uZVwiLCBvcGFjaXR5OlwiMC41XCJ9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNMYXNlck1hcHBpbmcucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY0xhc2VyTWFwcGluZztcclxuIiwiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7XHJcbn1cclxuXHJcbmxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZShkYXRhKSB7XHJcbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpLWNhbnZhc1wiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLnVzZXJfbWFwKSxcclxuICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEudXNlcl9tYXApLFxyXG4gICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTp1c2VyX21hcC9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHVwZGF0ZVBhdGggPSAodHJhaWwsIHNldFBhdGhDYWxsYmFjaywgaGVpZ2h0LCB3aWR0aCkgPT4ge1xyXG4gIHZhciBuZXdQYXRoID0gXCJNIFwiO1xyXG5cclxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdHJhaWwubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gdHJhaWxbaW5kZXhdO1xyXG4gICAgdmFyIHRvcCAgPSBlbGVtZW50WzBdICogaGVpZ2h0O1xyXG4gICAgdmFyIGxlZnQgPSBlbGVtZW50WzFdICogd2lkdGg7XHJcbiAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgbmV3UGF0aCArPSBsZWZ0LnRvU3RyaW5nKCkrIFwiLFwiICsgdG9wLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBuZXdQYXRoICs9IFwiIEwgXCIgKyBsZWZ0LnRvU3RyaW5nKCkgKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHRyYWlsLmxlbmd0aCA+IDApIHtcclxuICAgIHNldFBhdGhDYWxsYmFjayhuZXdQYXRoKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGFkZFRvUGF0aCA9ICh4LCB5LCB0cmFpbCkgPT4ge1xyXG4gIGlmICghdHJhaWwuaW5jbHVkZXMoW3gsIHldKSkge1xyXG4gICAgdHJhaWwucHVzaChbeCwgeV0pO1xyXG4gIH1cclxufVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY0xhc2VyTWFwcGluZyIsInByb3BzIiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiUmVhY3QiLCJyZWFsUG9zZSIsInNldFJlYWxQb3NlIiwiX1JlYWN0JHVzZVN0YXRlNCIsIm5vaXN5UG9zZSIsInNldE5vaXN5UG9zZSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJyZWFsUGF0aCIsInNldFJlYWxQYXRoIiwiX1JlYWN0JHVzZVN0YXRlOCIsIm5vaXN5UGF0aCIsInNldE5vaXN5UGF0aCIsIl9SZWFjdCR1c2VTdGF0ZTEwIiwic21hbGxXYXJlaG91c2UiLCJtYXBJbWciLCJzZXRNYXBJbWciLCJyZWFsVHJhaWwiLCJub2lzeVRyYWlsIiwicmVhbExhc3RQb3NlIiwidW5kZWZpbmVkIiwibm9pc3lMYXN0UG9zZSIsInZhbHVlc1VudGlsVmFsaWQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImltZyIsInRhcmdldCIsIndpZHRoIiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ1cGRhdGVQYXRoIiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsInVwZGF0ZURhdGEiLCJkYXRhIiwidXBkYXRlIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInJlYWxfcG9zZSIsImNvbnRlbnQiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJzcGxpdCIsIm1hcCIsIml0ZW0iLCJwYXJzZUZsb2F0IiwiYWRkVG9QYXRoIiwibm9pc3lfcG9zZSIsInVzZXJfbWFwIiwiZHJhd0ltYWdlIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzZW5kIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiVVBEQVRFIiwib2JzZXJ2ZSIsInVuc3Vic2NyaWJlIiwic3RhdGUiLCJzcmMiLCJub0ltYWdlIiwiZXJyb3IiLCJjb250ZXh0IiwibWFwU2VsZWN0ZWQiLCJ3YXJlaG91c2UiLCJTVEFURV9DSEFOR0VEIiwiX2pzeHMiLCJzdHlsZSIsImRpc3BsYXkiLCJwb3NpdGlvbiIsImNoaWxkcmVuIiwiX2pzeCIsImFsdCIsImNsYXNzTmFtZSIsImlkIiwibGVmdCIsInJvdGF0ZSIsInRvcCIsIlJvYm90R3JlZW4iLCJ4bWxucyIsInpJbmRleCIsImQiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlIiwiZmlsbCIsIm9wYWNpdHkiLCJSb2JvdEJsdWUiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwicyIsImNhbnZhcyIsImltYWdlX2RhdGEiLCJKU09OIiwicGFyc2UiLCJzb3VyY2UiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJzaGFwZSIsIkFycmF5IiwiSW1hZ2UiLCJ0cmFpbCIsInNldFBhdGhDYWxsYmFjayIsIm5ld1BhdGgiLCJpbmRleCIsImVsZW1lbnQiLCJ0b1N0cmluZyIsIngiLCJ5IiwiaW5jbHVkZXMiLCJwdXNoIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5008.47835eed.js.LICENSE.txt b/react_frontend/static/react_frontend/js/5008.47835eed.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5008.47835eed.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5009.d97ecfc0.js b/react_frontend/static/react_frontend/js/5009.d97ecfc0.js new file mode 100644 index 000000000..7fa9842ab --- /dev/null +++ b/react_frontend/static/react_frontend/js/5009.d97ecfc0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5009],{5009:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5285.dd6ee246.js b/react_frontend/static/react_frontend/js/5285.dd6ee246.js new file mode 100644 index 000000000..c698ead0a --- /dev/null +++ b/react_frontend/static/react_frontend/js/5285.dd6ee246.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5285],{1099:(e,t,o)=>{var n=o(4994);t.A=void 0;var r=n(o(2032)),a=o(4848),i=(0,r.default)((0,a.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM19 18H6c-2.21 0-4-1.79-4-4 0-2.05 1.53-3.76 3.56-3.97l1.07-.11.5-.95C8.08 7.14 9.94 6 12 6c2.62 0 4.88 1.86 5.39 4.43l.3 1.5 1.53.11c1.56.1 2.78 1.41 2.78 2.96 0 1.65-1.35 3-3 3zM8 13h2.55v3h2.9v-3H16l-4-4z"}),"CloudUploadOutlined");t.A=i},4634:(e,t,o)=>{var n=o(4994);t.A=void 0;var r=n(o(2032)),a=o(4848),i=(0,r.default)((0,a.jsx)("path",{d:"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z"}),"Replay");t.A=i},4761:(e,t,o)=>{o.d(t,{A:()=>ne});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(5659),s=o(4661),p=o(2501);var c=o(1547),u=o(989);function d(e){return void 0!==e.normalize?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e}function g(e,t){for(let o=0;o{let p=i?l.trim():l;o&&(p=p.toLowerCase()),t&&(p=d(p));const c=p?e.filter((e=>{let n=(a||s)(e);return o&&(n=n.toLowerCase()),t&&(n=d(n)),"start"===r?0===n.indexOf(p):n.indexOf(p)>-1})):e;return"number"==typeof n?c.slice(0,n):c}}(),h=e=>{var t;return null!==e.current&&(null==(t=e.current.parentElement)?void 0:t.contains(document.activeElement))};function m(e){const{unstable_isActiveElementInListbox:t=h,unstable_classNamePrefix:o="Mui",autoComplete:n=!1,autoHighlight:i=!1,autoSelect:l=!1,blurOnSelect:d=!1,clearOnBlur:m=!e.freeSolo,clearOnEscape:b=!1,componentName:v="useAutocomplete",defaultValue:A=(e.multiple?[]:null),disableClearable:x=!1,disableCloseOnSelect:y=!1,disabled:S,disabledItemsFocusable:$=!1,disableListWrap:O=!1,filterOptions:I=f,filterSelectedOptions:C=!1,freeSolo:k=!1,getOptionDisabled:P,getOptionLabel:w=e=>{var t;return null!=(t=e.label)?t:e},groupBy:R,handleHomeEndKeys:L=!e.freeSolo,id:T,includeInputInList:M=!1,inputValue:z,isOptionEqualToValue:N=(e,t)=>e===t,multiple:E=!1,onChange:D,onClose:j,onHighlightChange:H,onInputChange:F,onOpen:V,open:W,openOnFocus:B=!1,options:G,readOnly:U=!1,selectOnFocus:_=!e.freeSolo,value:q}=e,K=(0,s.A)(T);let X=w;X=e=>{const t=w(e);return"string"!=typeof t?String(t):t};const J=a.useRef(!1),Q=a.useRef(!0),Y=a.useRef(null),Z=a.useRef(null),[ee,te]=a.useState(null),[oe,ne]=a.useState(-1),re=i?0:-1,ae=a.useRef(re),[ie,le]=(0,p.A)({controlled:q,default:A,name:v}),[se,pe]=(0,p.A)({controlled:z,default:"",name:v,state:"inputValue"}),[ce,ue]=a.useState(!1),de=a.useCallback(((e,t)=>{if(!(E?ie.length!C||!(E?ie:[ie]).some((t=>null!==t&&N(e,t))))),{inputValue:be&&he?"":se,getOptionLabel:X}):[],xe=(e=>{const t=a.useRef({});return a.useEffect((()=>{t.current=e})),t.current})({filteredOptions:Ae,value:ie,inputValue:se});a.useEffect((()=>{const e=ie!==xe.value;ce&&!e||k&&!e||de(null,ie)}),[ie,de,ce,xe.value,k]);const ye=ge&&Ae.length>0&&!U,Se=(0,c.A)((e=>{-1===e?Y.current.focus():ee.querySelector(`[data-tag-index="${e}"]`).focus()}));a.useEffect((()=>{E&&oe>ie.length-1&&(ne(-1),Se(-1))}),[ie,E,oe,Se]);const $e=(0,c.A)((({event:e,index:t,reason:n="auto"})=>{if(ae.current=t,-1===t?Y.current.removeAttribute("aria-activedescendant"):Y.current.setAttribute("aria-activedescendant",`${K}-option-${t}`),H&&H(e,-1===t?null:Ae[t],n),!Z.current)return;const r=Z.current.querySelector(`[role="option"].${o}-focused`);r&&(r.classList.remove(`${o}-focused`),r.classList.remove(`${o}-focusVisible`));let a=Z.current;if("listbox"!==Z.current.getAttribute("role")&&(a=Z.current.parentElement.querySelector('[role="listbox"]')),!a)return;if(-1===t)return void(a.scrollTop=0);const i=Z.current.querySelector(`[data-option-index="${t}"]`);if(i&&(i.classList.add(`${o}-focused`),"keyboard"===n&&i.classList.add(`${o}-focusVisible`),a.scrollHeight>a.clientHeight&&"mouse"!==n&&"touch"!==n)){const e=i,t=a.clientHeight+a.scrollTop,o=e.offsetTop+e.offsetHeight;o>t?a.scrollTop=o-a.clientHeight:e.offsetTop-e.offsetHeight*(R?1.3:0){if(!ve)return;const a=function(e,t){if(!Z.current||-1===e)return-1;let o=e;for(;;){if("next"===t&&o===Ae.length||"previous"===t&&-1===o)return-1;const e=Z.current.querySelector(`[data-option-index="${o}"]`),n=!$&&(!e||e.disabled||"true"===e.getAttribute("aria-disabled"));if(!(e&&!e.hasAttribute("tabindex")||n))return o;o+="next"===t?1:-1}}((()=>{const e=Ae.length-1;if("reset"===t)return re;if("start"===t)return 0;if("end"===t)return e;const o=ae.current+t;return o<0?-1===o&&M?-1:O&&-1!==ae.current||Math.abs(t)>1?0:e:o>e?o===e+1&&M?-1:O||Math.abs(t)>1?e:0:o})(),o);if($e({index:a,reason:r,event:e}),n&&"reset"!==t)if(-1===a)Y.current.value=se;else{const e=X(Ae[a]);Y.current.value=e,0===e.toLowerCase().indexOf(se.toLowerCase())&&se.length>0&&Y.current.setSelectionRange(se.length,e.length)}})),Ie=a.useCallback((()=>{if(!ve)return;if((()=>{if(-1!==ae.current&&xe.filteredOptions&&xe.filteredOptions.length!==Ae.length&&xe.inputValue===se&&(E?ie.length===xe.value.length&&xe.value.every(((e,t)=>X(ie[t])===X(e))):(e=xe.value,t=ie,(e?X(e):"")===(t?X(t):"")))){const e=xe.filteredOptions[ae.current];if(e&&Ae.some((t=>X(t)===X(e))))return!0}var e,t;return!1})())return;const e=E?ie[0]:ie;if(0!==Ae.length&&null!=e){if(Z.current)if(null==e)ae.current>=Ae.length-1?$e({index:Ae.length-1}):$e({index:ae.current});else{const t=Ae[ae.current];if(E&&t&&-1!==g(ie,(e=>N(t,e))))return;const o=g(Ae,(t=>N(t,e)));-1===o?Oe({diff:"reset"}):$e({index:o})}}else Oe({diff:"reset"})}),[Ae.length,!E&&ie,C,Oe,$e,ve,se,E]),Ce=(0,c.A)((e=>{(0,u.A)(Z,e),e&&Ie()}));a.useEffect((()=>{Ie()}),[Ie]);const ke=e=>{ge||(fe(!0),me(!0),V&&V(e))},Pe=(e,t)=>{ge&&(fe(!1),j&&j(e,t))},we=(e,t,o,n)=>{if(E){if(ie.length===t.length&&ie.every(((e,o)=>e===t[o])))return}else if(ie===t)return;D&&D(e,t,o,n),le(t)},Re=a.useRef(!1),Le=(e,t,o="selectOption",n="options")=>{let r=o,a=t;if(E){a=Array.isArray(ie)?ie.slice():[];const e=g(a,(e=>N(t,e)));-1===e?a.push(t):"freeSolo"!==n&&(a.splice(e,1),r="removeOption")}de(e,a),we(e,a,r,{option:t}),y||e&&(e.ctrlKey||e.metaKey)||Pe(e,r),(!0===d||"touch"===d&&Re.current||"mouse"===d&&!Re.current)&&Y.current.blur()},Te=(e,t)=>{if(!E)return;""===se&&Pe(e,"toggleInput");let o=oe;-1===oe?""===se&&"previous"===t&&(o=ie.length-1):(o+="next"===t?1:-1,o<0&&(o=0),o===ie.length&&(o=-1)),o=function(e,t){if(-1===e)return-1;let o=e;for(;;){if("next"===t&&o===ie.length||"previous"===t&&-1===o)return-1;const e=ee.querySelector(`[data-tag-index="${o}"]`);if(e&&e.hasAttribute("tabindex")&&!e.disabled&&"true"!==e.getAttribute("aria-disabled"))return o;o+="next"===t?1:-1}}(o,t),ne(o),Se(o)},Me=e=>{J.current=!0,pe(""),F&&F(e,"","clear"),we(e,E?[]:null,"clear")},ze=e=>t=>{if(e.onKeyDown&&e.onKeyDown(t),!t.defaultMuiPrevented&&(-1!==oe&&-1===["ArrowLeft","ArrowRight"].indexOf(t.key)&&(ne(-1),Se(-1)),229!==t.which))switch(t.key){case"Home":ve&&L&&(t.preventDefault(),Oe({diff:"start",direction:"next",reason:"keyboard",event:t}));break;case"End":ve&&L&&(t.preventDefault(),Oe({diff:"end",direction:"previous",reason:"keyboard",event:t}));break;case"PageUp":t.preventDefault(),Oe({diff:-5,direction:"previous",reason:"keyboard",event:t}),ke(t);break;case"PageDown":t.preventDefault(),Oe({diff:5,direction:"next",reason:"keyboard",event:t}),ke(t);break;case"ArrowDown":t.preventDefault(),Oe({diff:1,direction:"next",reason:"keyboard",event:t}),ke(t);break;case"ArrowUp":t.preventDefault(),Oe({diff:-1,direction:"previous",reason:"keyboard",event:t}),ke(t);break;case"ArrowLeft":Te(t,"previous");break;case"ArrowRight":Te(t,"next");break;case"Enter":if(-1!==ae.current&&ve){const e=Ae[ae.current],o=!!P&&P(e);if(t.preventDefault(),o)return;Le(t,e,"selectOption"),n&&Y.current.setSelectionRange(Y.current.value.length,Y.current.value.length)}else k&&""!==se&&!1===be&&(E&&t.preventDefault(),Le(t,se,"createOption","freeSolo"));break;case"Escape":ve?(t.preventDefault(),t.stopPropagation(),Pe(t,"escape")):b&&(""!==se||E&&ie.length>0)&&(t.preventDefault(),t.stopPropagation(),Me(t));break;case"Backspace":if(E&&!U&&""===se&&ie.length>0){const e=-1===oe?ie.length-1:oe,o=ie.slice();o.splice(e,1),we(t,o,"removeOption",{option:ie[e]})}break;case"Delete":if(E&&!U&&""===se&&ie.length>0&&-1!==oe){const e=oe,o=ie.slice();o.splice(e,1),we(t,o,"removeOption",{option:ie[e]})}}},Ne=e=>{ue(!0),B&&!J.current&&ke(e)},Ee=e=>{t(Z)?Y.current.focus():(ue(!1),Q.current=!0,J.current=!1,l&&-1!==ae.current&&ve?Le(e,Ae[ae.current],"blur"):l&&k&&""!==se?Le(e,se,"blur","freeSolo"):m&&de(e,ie),Pe(e,"blur"))},De=e=>{const t=e.target.value;se!==t&&(pe(t),me(!1),F&&F(e,t,"input")),""===t?x||E||we(e,null,"clear"):ke(e)},je=e=>{const t=Number(e.currentTarget.getAttribute("data-option-index"));ae.current!==t&&$e({event:e,index:t,reason:"mouse"})},He=e=>{$e({event:e,index:Number(e.currentTarget.getAttribute("data-option-index")),reason:"touch"}),Re.current=!0},Fe=e=>{const t=Number(e.currentTarget.getAttribute("data-option-index"));Le(e,Ae[t],"selectOption"),Re.current=!1},Ve=e=>t=>{const o=ie.slice();o.splice(e,1),we(t,o,"removeOption",{option:ie[e]})},We=e=>{ge?Pe(e,"toggleInput"):ke(e)},Be=e=>{e.currentTarget.contains(e.target)&&e.target.getAttribute("id")!==K&&e.preventDefault()},Ge=e=>{e.currentTarget.contains(e.target)&&(Y.current.focus(),_&&Q.current&&Y.current.selectionEnd-Y.current.selectionStart==0&&Y.current.select(),Q.current=!1)},Ue=e=>{""!==se&&ge||We(e)};let _e=k&&se.length>0;_e=_e||(E?ie.length>0:null!==ie);let qe=Ae;return R&&(new Map,qe=Ae.reduce(((e,t,o)=>{const n=R(t);return e.length>0&&e[e.length-1].group===n?e[e.length-1].options.push(t):e.push({key:o,index:o,group:n,options:[t]}),e}),[])),S&&ce&&Ee(),{getRootProps:(e={})=>(0,r.A)({"aria-owns":ye?`${K}-listbox`:null},e,{onKeyDown:ze(e),onMouseDown:Be,onClick:Ge}),getInputLabelProps:()=>({id:`${K}-label`,htmlFor:K}),getInputProps:()=>({id:K,value:se,onBlur:Ee,onFocus:Ne,onChange:De,onMouseDown:Ue,"aria-activedescendant":ve?"":null,"aria-autocomplete":n?"both":"list","aria-controls":ye?`${K}-listbox`:void 0,"aria-expanded":ye,autoComplete:"off",ref:Y,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:S}),getClearProps:()=>({tabIndex:-1,onClick:Me}),getPopupIndicatorProps:()=>({tabIndex:-1,onClick:We}),getTagProps:({index:e})=>(0,r.A)({key:e,"data-tag-index":e,tabIndex:-1},!U&&{onDelete:Ve(e)}),getListboxProps:()=>({role:"listbox",id:`${K}-listbox`,"aria-labelledby":`${K}-label`,ref:Ce,onMouseDown:e=>{e.preventDefault()}}),getOptionProps:({index:e,option:t})=>{const o=(E?ie:[ie]).some((e=>null!=e&&N(t,e))),n=!!P&&P(t);return{key:X(t),tabIndex:-1,role:"option",id:`${K}-option-${e}`,onMouseMove:je,onClick:Fe,onTouchStart:He,"data-option-index":e,"aria-disabled":n,"aria-selected":o}},id:K,inputValue:se,value:ie,dirty:_e,expanded:ve&&ee,popupOpen:ve,focused:ce||-1!==oe,anchorEl:ee,setAnchorEl:te,focusedTag:oe,groupedOptions:qe}}var b=o(4279),v=o(3879),A=o(7577),x=o(4409),y=o(8466),S=o(8413),$=o(1609);function O(e){return(0,$.A)("MuiListSubheader",e)}(0,S.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var I=o(4848);const C=["className","color","component","disableGutters","disableSticky","inset"],k=(0,A.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"default"!==o.color&&t[`color${(0,y.A)(o.color)}`],!o.disableGutters&&t.gutters,o.inset&&t.inset,!o.disableSticky&&t.sticky]}})((({theme:e,ownerState:t})=>(0,r.A)({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(e.vars||e).palette.text.secondary,fontFamily:e.typography.fontFamily,fontWeight:e.typography.fontWeightMedium,fontSize:e.typography.pxToRem(14)},"primary"===t.color&&{color:(e.vars||e).palette.primary.main},"inherit"===t.color&&{color:"inherit"},!t.disableGutters&&{paddingLeft:16,paddingRight:16},t.inset&&{paddingLeft:72},!t.disableSticky&&{position:"sticky",top:0,zIndex:1,backgroundColor:(e.vars||e).palette.background.paper}))),P=a.forwardRef((function(e,t){const o=(0,x.A)({props:e,name:"MuiListSubheader"}),{className:a,color:s="default",component:p="li",disableGutters:c=!1,disableSticky:u=!1,inset:d=!1}=o,g=(0,n.A)(o,C),f=(0,r.A)({},o,{color:s,component:p,disableGutters:c,disableSticky:u,inset:d}),h=(e=>{const{classes:t,color:o,disableGutters:n,inset:r,disableSticky:a}=e,i={root:["root","default"!==o&&`color${(0,y.A)(o)}`,!n&&"gutters",r&&"inset",!a&&"sticky"]};return(0,l.A)(i,O,t)})(f);return(0,I.jsx)(k,(0,r.A)({as:p,className:(0,i.A)(h.root,a),ref:t,ownerState:f},g))}));P.muiSkipListHighlight=!0;const w=P;var R=o(538),L=o(1641),T=o(2022),M=o(5571),z=o(1175),N=o(1023),E=o(6959),D=o(9350),j=o(602);function H(e){return(0,$.A)("MuiAutocomplete",e)}const F=(0,S.A)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]);var V,W,B=o(6852);const G=["autoComplete","autoHighlight","autoSelect","blurOnSelect","ChipProps","className","clearIcon","clearOnBlur","clearOnEscape","clearText","closeText","componentsProps","defaultValue","disableClearable","disableCloseOnSelect","disabled","disabledItemsFocusable","disableListWrap","disablePortal","filterOptions","filterSelectedOptions","forcePopupIcon","freeSolo","fullWidth","getLimitTagsText","getOptionDisabled","getOptionLabel","isOptionEqualToValue","groupBy","handleHomeEndKeys","id","includeInputInList","inputValue","limitTags","ListboxComponent","ListboxProps","loading","loadingText","multiple","noOptionsText","onChange","onClose","onHighlightChange","onInputChange","onOpen","open","openOnFocus","openText","options","PaperComponent","PopperComponent","popupIcon","readOnly","renderGroup","renderInput","renderOption","renderTags","selectOnFocus","size","slotProps","value"],U=["ref"],_=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e,{fullWidth:n,hasClearIcon:r,hasPopupIcon:a,inputFocused:i,size:l}=o;return[{[`& .${F.tag}`]:t.tag},{[`& .${F.tag}`]:t[`tagSize${(0,y.A)(l)}`]},{[`& .${F.inputRoot}`]:t.inputRoot},{[`& .${F.input}`]:t.input},{[`& .${F.input}`]:i&&t.inputFocused},t.root,n&&t.fullWidth,a&&t.hasPopupIcon,r&&t.hasClearIcon]}})((({ownerState:e})=>(0,r.A)({[`&.${F.focused} .${F.clearIndicator}`]:{visibility:"visible"},"@media (pointer: fine)":{[`&:hover .${F.clearIndicator}`]:{visibility:"visible"}}},e.fullWidth&&{width:"100%"},{[`& .${F.tag}`]:(0,r.A)({margin:3,maxWidth:"calc(100% - 6px)"},"small"===e.size&&{margin:2,maxWidth:"calc(100% - 4px)"}),[`& .${F.inputRoot}`]:{flexWrap:"wrap",[`.${F.hasPopupIcon}&, .${F.hasClearIcon}&`]:{paddingRight:30},[`.${F.hasPopupIcon}.${F.hasClearIcon}&`]:{paddingRight:56},[`& .${F.input}`]:{width:0,minWidth:30}},[`& .${M.A.root}`]:{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}},[`& .${M.A.root}.${z.A.sizeSmall}`]:{[`& .${M.A.input}`]:{padding:"2px 4px 3px 0"}},[`& .${N.A.root}`]:{padding:9,[`.${F.hasPopupIcon}&, .${F.hasClearIcon}&`]:{paddingRight:39},[`.${F.hasPopupIcon}.${F.hasClearIcon}&`]:{paddingRight:65},[`& .${F.input}`]:{padding:"7.5px 4px 7.5px 5px"},[`& .${F.endAdornment}`]:{right:9}},[`& .${N.A.root}.${z.A.sizeSmall}`]:{paddingTop:6,paddingBottom:6,paddingLeft:6,[`& .${F.input}`]:{padding:"2.5px 4px 2.5px 8px"}},[`& .${E.A.root}`]:{paddingTop:19,paddingLeft:8,[`.${F.hasPopupIcon}&, .${F.hasClearIcon}&`]:{paddingRight:39},[`.${F.hasPopupIcon}.${F.hasClearIcon}&`]:{paddingRight:65},[`& .${E.A.input}`]:{padding:"7px 4px"},[`& .${F.endAdornment}`]:{right:9}},[`& .${E.A.root}.${z.A.sizeSmall}`]:{paddingBottom:1,[`& .${E.A.input}`]:{padding:"2.5px 4px"}},[`& .${z.A.hiddenLabel}`]:{paddingTop:8},[`& .${E.A.root}.${z.A.hiddenLabel}`]:{paddingTop:0,paddingBottom:0,[`& .${F.input}`]:{paddingTop:16,paddingBottom:17}},[`& .${E.A.root}.${z.A.hiddenLabel}.${z.A.sizeSmall}`]:{[`& .${F.input}`]:{paddingTop:8,paddingBottom:9}},[`& .${F.input}`]:(0,r.A)({flexGrow:1,textOverflow:"ellipsis",opacity:0},e.inputFocused&&{opacity:1})}))),q=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:(e,t)=>t.endAdornment})({position:"absolute",right:0,top:"calc(50% - 14px)"}),K=(0,A.Ay)(L.A,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:(e,t)=>t.clearIndicator})({marginRight:-2,padding:4,visibility:"hidden"}),X=(0,A.Ay)(L.A,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:({ownerState:e},t)=>(0,r.A)({},t.popupIndicator,e.popupOpen&&t.popupIndicatorOpen)})((({ownerState:e})=>(0,r.A)({padding:2,marginRight:-2},e.popupOpen&&{transform:"rotate(180deg)"}))),J=(0,A.Ay)(v.A,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[{[`& .${F.option}`]:t.option},t.popper,o.disablePortal&&t.popperDisablePortal]}})((({theme:e,ownerState:t})=>(0,r.A)({zIndex:(e.vars||e).zIndex.modal},t.disablePortal&&{position:"absolute"}))),Q=(0,A.Ay)(R.A,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:(e,t)=>t.paper})((({theme:e})=>(0,r.A)({},e.typography.body1,{overflow:"auto"}))),Y=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:(e,t)=>t.loading})((({theme:e})=>({color:(e.vars||e).palette.text.secondary,padding:"14px 16px"}))),Z=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:(e,t)=>t.noOptions})((({theme:e})=>({color:(e.vars||e).palette.text.secondary,padding:"14px 16px"}))),ee=(0,A.Ay)("div",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:(e,t)=>t.listbox})((({theme:e})=>({listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative",[`& .${F.option}`]:{minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16,[e.breakpoints.up("sm")]:{minHeight:"auto"},[`&.${F.focused}`]:{backgroundColor:(e.vars||e).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},'&[aria-disabled="true"]':{opacity:(e.vars||e).palette.action.disabledOpacity,pointerEvents:"none"},[`&.${F.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},'&[aria-selected="true"]':{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / ${e.vars.palette.action.selectedOpacity})`:(0,b.X4)(e.palette.primary.main,e.palette.action.selectedOpacity),[`&.${F.focused}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.hoverOpacity}))`:(0,b.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(e.vars||e).palette.action.selected}},[`&.${F.focusVisible}`]:{backgroundColor:e.vars?`rgba(${e.vars.palette.primary.mainChannel} / calc(${e.vars.palette.action.selectedOpacity} + ${e.vars.palette.action.focusOpacity}))`:(0,b.X4)(e.palette.primary.main,e.palette.action.selectedOpacity+e.palette.action.focusOpacity)}}}}))),te=(0,A.Ay)(w,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:(e,t)=>t.groupLabel})((({theme:e})=>({backgroundColor:(e.vars||e).palette.background.paper,top:-8}))),oe=(0,A.Ay)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:(e,t)=>t.groupUl})({padding:0,[`& .${F.option}`]:{paddingLeft:24}}),ne=a.forwardRef((function(e,t){var o,s,p,c;const u=(0,x.A)({props:e,name:"MuiAutocomplete"}),{autoComplete:d=!1,autoHighlight:g=!1,autoSelect:f=!1,blurOnSelect:h=!1,ChipProps:b,className:A,clearIcon:S=V||(V=(0,I.jsx)(D.A,{fontSize:"small"})),clearOnBlur:$=!u.freeSolo,clearOnEscape:O=!1,clearText:C="Clear",closeText:k="Close",componentsProps:P={},defaultValue:w=(u.multiple?[]:null),disableClearable:L=!1,disableCloseOnSelect:M=!1,disabled:z=!1,disabledItemsFocusable:N=!1,disableListWrap:E=!1,disablePortal:F=!1,filterSelectedOptions:ne=!1,forcePopupIcon:re="auto",freeSolo:ae=!1,fullWidth:ie=!1,getLimitTagsText:le=e=>`+${e}`,getOptionLabel:se=e=>{var t;return null!=(t=e.label)?t:e},groupBy:pe,handleHomeEndKeys:ce=!u.freeSolo,includeInputInList:ue=!1,limitTags:de=-1,ListboxComponent:ge="ul",ListboxProps:fe,loading:he=!1,loadingText:me="Loading…",multiple:be=!1,noOptionsText:ve="No options",openOnFocus:Ae=!1,openText:xe="Open",PaperComponent:ye=R.A,PopperComponent:Se=v.A,popupIcon:$e=W||(W=(0,I.jsx)(j.A,{})),readOnly:Oe=!1,renderGroup:Ie,renderInput:Ce,renderOption:ke,renderTags:Pe,selectOnFocus:we=!u.freeSolo,size:Re="medium",slotProps:Le={}}=u,Te=(0,n.A)(u,G),{getRootProps:Me,getInputProps:ze,getInputLabelProps:Ne,getPopupIndicatorProps:Ee,getClearProps:De,getTagProps:je,getListboxProps:He,getOptionProps:Fe,value:Ve,dirty:We,expanded:Be,id:Ge,popupOpen:Ue,focused:_e,focusedTag:qe,anchorEl:Ke,setAnchorEl:Xe,inputValue:Je,groupedOptions:Qe}=m((0,r.A)({},u,{componentName:"Autocomplete"})),Ye=!L&&!z&&We&&!Oe,Ze=(!ae||!0===re)&&!1!==re,{onMouseDown:et}=ze(),{ref:tt}=null!=fe?fe:{},ot=He(),{ref:nt}=ot,rt=(0,n.A)(ot,U),at=(0,B.A)(nt,tt),it=(0,r.A)({},u,{disablePortal:F,expanded:Be,focused:_e,fullWidth:ie,hasClearIcon:Ye,hasPopupIcon:Ze,inputFocused:-1===qe,popupOpen:Ue,size:Re}),lt=(e=>{const{classes:t,disablePortal:o,expanded:n,focused:r,fullWidth:a,hasClearIcon:i,hasPopupIcon:s,inputFocused:p,popupOpen:c,size:u}=e,d={root:["root",n&&"expanded",r&&"focused",a&&"fullWidth",i&&"hasClearIcon",s&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",p&&"inputFocused"],tag:["tag",`tagSize${(0,y.A)(u)}`],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",c&&"popupIndicatorOpen"],popper:["popper",o&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,l.A)(d,H,t)})(it);let st;if(be&&Ve.length>0){const e=e=>(0,r.A)({className:lt.tag,disabled:z},je(e));st=Pe?Pe(Ve,e,it):Ve.map(((t,o)=>(0,I.jsx)(T.A,(0,r.A)({label:se(t),size:Re},e({index:o}),b))))}if(de>-1&&Array.isArray(st)){const e=st.length-de;!_e&&e>0&&(st=st.splice(0,de),st.push((0,I.jsx)("span",{className:lt.tag,children:le(e)},st.length)))}const pt=Ie||(e=>(0,I.jsxs)("li",{children:[(0,I.jsx)(te,{className:lt.groupLabel,ownerState:it,component:"div",children:e.group}),(0,I.jsx)(oe,{className:lt.groupUl,ownerState:it,children:e.children})]},e.key)),ct=ke||((e,t)=>(0,I.jsx)("li",(0,r.A)({},e,{children:se(t)}))),ut=(e,t)=>{const o=Fe({option:e,index:t});return ct((0,r.A)({},o,{className:lt.option}),e,{selected:o["aria-selected"],index:t,inputValue:Je},it)},dt=null!=(o=Le.clearIndicator)?o:P.clearIndicator,gt=null!=(s=Le.paper)?s:P.paper,ft=null!=(p=Le.popper)?p:P.popper,ht=null!=(c=Le.popupIndicator)?c:P.popupIndicator;return(0,I.jsxs)(a.Fragment,{children:[(0,I.jsx)(_,(0,r.A)({ref:t,className:(0,i.A)(lt.root,A),ownerState:it},Me(Te),{children:Ce({id:Ge,disabled:z,fullWidth:!0,size:"small"===Re?"small":void 0,InputLabelProps:Ne(),InputProps:(0,r.A)({ref:Xe,className:lt.inputRoot,startAdornment:st,onClick:e=>{e.target===e.currentTarget&&et(e)}},(Ye||Ze)&&{endAdornment:(0,I.jsxs)(q,{className:lt.endAdornment,ownerState:it,children:[Ye?(0,I.jsx)(K,(0,r.A)({},De(),{"aria-label":C,title:C,ownerState:it},dt,{className:(0,i.A)(lt.clearIndicator,null==dt?void 0:dt.className),children:S})):null,Ze?(0,I.jsx)(X,(0,r.A)({},Ee(),{disabled:z,"aria-label":Ue?k:xe,title:Ue?k:xe,ownerState:it},ht,{className:(0,i.A)(lt.popupIndicator,null==ht?void 0:ht.className),children:$e})):null]})}),inputProps:(0,r.A)({className:lt.input,disabled:z,readOnly:Oe},ze())})})),Ke?(0,I.jsx)(J,(0,r.A)({as:Se,disablePortal:F,style:{width:Ke?Ke.clientWidth:null},ownerState:it,role:"presentation",anchorEl:Ke,open:Ue},ft,{className:(0,i.A)(lt.popper,null==ft?void 0:ft.className),children:(0,I.jsxs)(Q,(0,r.A)({ownerState:it,as:ye},gt,{className:(0,i.A)(lt.paper,null==gt?void 0:gt.className),children:[he&&0===Qe.length?(0,I.jsx)(Y,{className:lt.loading,ownerState:it,children:me}):null,0!==Qe.length||ae||he?null:(0,I.jsx)(Z,{className:lt.noOptions,ownerState:it,role:"presentation",onMouseDown:e=>{e.preventDefault()},children:ve}),Qe.length>0?(0,I.jsx)(ee,(0,r.A)({as:ge,className:lt.listbox,ownerState:it},rt,fe,{ref:at,children:Qe.map(((e,t)=>pe?pt({key:e.key,group:e.group,children:e.options.map(((t,o)=>ut(t,e.index+o)))}):ut(e,t)))})):null]}))})):null]})}))},1641:(e,t,o)=>{o.d(t,{A:()=>x});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(5659),s=o(4279),p=o(7577),c=o(4409),u=o(6606),d=o(8466),g=o(8413),f=o(1609);function h(e){return(0,f.A)("MuiIconButton",e)}const m=(0,g.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]);var b=o(4848);const v=["edge","children","className","color","disabled","disableFocusRipple","size"],A=(0,p.Ay)(u.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"default"!==o.color&&t[`color${(0,d.A)(o.color)}`],o.edge&&t[`edge${(0,d.A)(o.edge)}`],t[`size${(0,d.A)(o.size)}`]]}})((({theme:e,ownerState:t})=>(0,r.A)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})),(({theme:e,ownerState:t})=>{var o;const n=null==(o=(e.vars||e).palette)?void 0:o[t.color];return(0,r.A)({},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"default"!==t.color&&(0,r.A)({color:null==n?void 0:n.main},!t.disableRipple&&{"&:hover":(0,r.A)({},n&&{backgroundColor:e.vars?`rgba(${n.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(n.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===t.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===t.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${m.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})})),x=a.forwardRef((function(e,t){const o=(0,c.A)({props:e,name:"MuiIconButton"}),{edge:a=!1,children:s,className:p,color:u="default",disabled:g=!1,disableFocusRipple:f=!1,size:m="medium"}=o,x=(0,n.A)(o,v),y=(0,r.A)({},o,{edge:a,color:u,disabled:g,disableFocusRipple:f,size:m}),S=(e=>{const{classes:t,disabled:o,color:n,edge:r,size:a}=e,i={root:["root",o&&"disabled","default"!==n&&`color${(0,d.A)(n)}`,r&&`edge${(0,d.A)(r)}`,`size${(0,d.A)(a)}`]};return(0,l.A)(i,h,t)})(y);return(0,b.jsx)(A,(0,r.A)({className:(0,i.A)(S.root,p),centerRipple:!0,focusRipple:!f,disabled:g,ref:t,ownerState:y},x,{children:s}))}))},8532:(e,t,o)=>{o.d(t,{A:()=>m});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(5659),s=o(4409),p=o(7577),c=o(8413),u=o(1609);function d(e){return(0,u.A)("MuiToolbar",e)}(0,c.A)("MuiToolbar",["root","gutters","regular","dense"]);var g=o(4848);const f=["className","component","disableGutters","variant"],h=(0,p.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,!o.disableGutters&&t.gutters,t[o.variant]]}})((({theme:e,ownerState:t})=>(0,r.A)({position:"relative",display:"flex",alignItems:"center"},!t.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}},"dense"===t.variant&&{minHeight:48})),(({theme:e,ownerState:t})=>"regular"===t.variant&&e.mixins.toolbar)),m=a.forwardRef((function(e,t){const o=(0,s.A)({props:e,name:"MuiToolbar"}),{className:a,component:p="div",disableGutters:c=!1,variant:u="regular"}=o,m=(0,n.A)(o,f),b=(0,r.A)({},o,{component:p,disableGutters:c,variant:u}),v=(e=>{const{classes:t,disableGutters:o,variant:n}=e,r={root:["root",!o&&"gutters",n]};return(0,l.A)(r,d,t)})(b);return(0,g.jsx)(h,(0,r.A)({as:p,className:(0,i.A)(v.root,a),ref:t,ownerState:b},m))}))},9350:(e,t,o)=>{o.d(t,{A:()=>a}),o(6540);var n=o(5003),r=o(4848);const a=(0,n.A)((0,r.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},5793:(e,t,o)=>{o.d(t,{A:()=>v});var n=o(8168),r=o(8587),a=o(6540);const i=a.createContext(null);function l(){return a.useContext(i)}const s="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var p=o(4848);const c=function(e){const{children:t,theme:o}=e,r=l(),c=a.useMemo((()=>{const e=null===r?o:function(e,t){return"function"==typeof t?t(e):(0,n.A)({},e,t)}(r,o);return null!=e&&(e[s]=null!==r),e}),[o,r]);return(0,p.jsx)(i.Provider,{value:c,children:t})};var u=o(5684),d=o(3951);const g={};function f(e,t,o,r=!1){return a.useMemo((()=>{const a=e&&t[e]||t;if("function"==typeof o){const i=o(a),l=e?(0,n.A)({},t,{[e]:i}):i;return r?()=>l:l}return e?(0,n.A)({},t,{[e]:o}):(0,n.A)({},t,o)}),[e,t,o,r])}const h=function(e){const{children:t,theme:o,themeId:n}=e,r=(0,d.A)(g),a=l()||g,i=f(n,r,o),s=f(n,a,o,!0);return(0,p.jsx)(c,{theme:s,children:(0,p.jsx)(u.T.Provider,{value:i,children:t})})};var m=o(8312);const b=["theme"];function v(e){let{theme:t}=e,o=(0,r.A)(e,b);const a=t[m.A];return(0,p.jsx)(h,(0,n.A)({},o,{themeId:a?m.A:void 0,theme:a||t}))}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkMsRUFDcEUsR0FBMEIsbUJBQWZULEVBQTJCLENBQ3BDLE1BQU1ZLEVBQWNaLEVBQVdXLEdBQ3pCRSxFQUFTTCxHQUFVLE9BQVMsQ0FBQyxFQUFHQyxFQUFZLENBQ2hELENBQUNELEdBQVVJLElBQ1JBLEVBR0wsT0FBSUYsRUFDSyxJQUFNRyxFQUVSQSxDQUNULENBQ0EsT0FBT0wsR0FBVSxPQUFTLENBQUMsRUFBR0MsRUFBWSxDQUN4QyxDQUFDRCxHQUFVUixLQUNSLE9BQVMsQ0FBQyxFQUFHUyxFQUFZVCxFQUFXLEdBQ3hDLENBQUNRLEVBQVNDLEVBQVlULEVBQVlVLEdBQ3ZDLENBcURBLFFBNUNBLFNBQXVCL2EsR0FDckIsTUFBTSxTQUNKd1gsRUFDQTNKLE1BQU93TSxFQUFVLFFBQ2pCUSxHQUNFN2EsRUFDRThhLEdBQWEsRUFBQUssRUFBQSxHQUF1QlIsR0FDcENTLEVBQW9CLEtBQXFCVCxFQU16Q1UsRUFBY1QsRUFBZ0JDLEVBQVNDLEVBQVlULEdBQ25EaUIsRUFBZVYsRUFBZ0JDLEVBQVNPLEVBQW1CZixHQUFZLEdBQzdFLE9BQW9CLFNBQUssRUFBa0IsQ0FDekN4TSxNQUFPeU4sRUFDUDlELFVBQXVCLFNBQUssSUFBeUJrRCxTQUFVLENBQzdEMVksTUFBT3FaLEVBQ1A3RCxTQUFVQSxLQUdoQixFLGNDekRBLE1BQU16SyxFQUFZLENBQUMsU0FNSixTQUFTLEVBQWN3TyxHQUNwQyxJQUNJMU4sTUFBTzJOLEdBQ0xELEVBQ0p2YixHQUFRLE9BQThCdWIsRUFBTXhPLEdBQzlDLE1BQU0wTyxFQUFjRCxFQUFXLEtBQy9CLE9BQW9CLFNBQUssR0FBcUIsT0FBUyxDQUFDLEVBQUd4YixFQUFPLENBQ2hFNmEsUUFBU1ksRUFBYyxTQUFXN1AsRUFDbENpQyxNQUFPNE4sR0FBZUQsSUFFMUIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvdWRVcGxvYWRPdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2ljb25zLW1hdGVyaWFsL1JlcGxheS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXNlQXV0b2NvbXBsZXRlL3VzZUF1dG9jb21wbGV0ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VQcmV2aW91c1Byb3BzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvTGlzdFN1YmhlYWRlci9saXN0U3ViaGVhZGVyQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0xpc3RTdWJoZWFkZXIvTGlzdFN1YmhlYWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGVDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQXV0b2NvbXBsZXRlL0F1dG9jb21wbGV0ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ljb25CdXR0b24vaWNvbkJ1dHRvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9JY29uQnV0dG9uL0ljb25CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Ub29sYmFyL3Rvb2xiYXJDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVG9vbGJhci9Ub29sYmFyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3ZnLWljb25zL0Nsb3NlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvcHJpdmF0ZS10aGVtaW5nL3VzZVRoZW1lL1RoZW1lQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy91c2VUaGVtZS91c2VUaGVtZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy9UaGVtZVByb3ZpZGVyL25lc3RlZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3ByaXZhdGUtdGhlbWluZy9UaGVtZVByb3ZpZGVyL1RoZW1lUHJvdmlkZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL1RoZW1lUHJvdmlkZXIvVGhlbWVQcm92aWRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9UaGVtZVByb3ZpZGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXCJ1c2UgY2xpZW50XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfY3JlYXRlU3ZnSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvY3JlYXRlU3ZnSWNvblwiKSk7XG52YXIgX2pzeFJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG52YXIgX2RlZmF1bHQgPSAoMCwgX2NyZWF0ZVN2Z0ljb24uZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcInBhdGhcIiwge1xuICBkOiBcIk0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00IDAtMi4wNSAxLjUzLTMuNzYgMy41Ni0zLjk3bDEuMDctLjExLjUtLjk1QzguMDggNy4xNCA5Ljk0IDYgMTIgNmMyLjYyIDAgNC44OCAxLjg2IDUuMzkgNC40M2wuMyAxLjUgMS41My4xMWMxLjU2LjEgMi43OCAxLjQxIDIuNzggMi45NiAwIDEuNjUtMS4zNSAzLTMgM3pNOCAxM2gyLjU1djNoMi45di0zSDE2bC00LTR6XCJcbn0pLCAnQ2xvdWRVcGxvYWRPdXRsaW5lZCcpO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTEyIDVWMUw3IDZsNSA1VjdjMy4zMSAwIDYgMi42OSA2IDZzLTIuNjkgNi02IDYtNi0yLjY5LTYtNkg0YzAgNC40MiAzLjU4IDggOCA4czgtMy41OCA4LTgtMy41OC04LTgtOHpcIlxufSksICdSZXBsYXknKTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsIid1c2UgY2xpZW50JztcblxuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVuc3RhYmxlX3NldFJlZiBhcyBzZXRSZWYsIHVuc3RhYmxlX3VzZUV2ZW50Q2FsbGJhY2sgYXMgdXNlRXZlbnRDYWxsYmFjaywgdW5zdGFibGVfdXNlQ29udHJvbGxlZCBhcyB1c2VDb250cm9sbGVkLCB1bnN0YWJsZV91c2VJZCBhcyB1c2VJZCwgdXNlUHJldmlvdXNQcm9wcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85OTA5MDQvcmVtb3ZlLWFjY2VudHMtZGlhY3JpdGljcy1pbi1hLXN0cmluZy1pbi1qYXZhc2NyaXB0XG4vLyBHaXZlIHVwIG9uIElFMTEgc3VwcG9ydCBmb3IgdGhpcyBmZWF0dXJlXG5mdW5jdGlvbiBzdHJpcERpYWNyaXRpY3Moc3RyaW5nKSB7XG4gIHJldHVybiB0eXBlb2Ygc3RyaW5nLm5vcm1hbGl6ZSAhPT0gJ3VuZGVmaW5lZCcgPyBzdHJpbmcubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgOiBzdHJpbmc7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmlsdGVyT3B0aW9ucyhjb25maWcgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaWdub3JlQWNjZW50cyA9IHRydWUsXG4gICAgaWdub3JlQ2FzZSA9IHRydWUsXG4gICAgbGltaXQsXG4gICAgbWF0Y2hGcm9tID0gJ2FueScsXG4gICAgc3RyaW5naWZ5LFxuICAgIHRyaW0gPSBmYWxzZVxuICB9ID0gY29uZmlnO1xuICByZXR1cm4gKG9wdGlvbnMsIHtcbiAgICBpbnB1dFZhbHVlLFxuICAgIGdldE9wdGlvbkxhYmVsXG4gIH0pID0+IHtcbiAgICBsZXQgaW5wdXQgPSB0cmltID8gaW5wdXRWYWx1ZS50cmltKCkgOiBpbnB1dFZhbHVlO1xuICAgIGlmIChpZ25vcmVDYXNlKSB7XG4gICAgICBpbnB1dCA9IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChpZ25vcmVBY2NlbnRzKSB7XG4gICAgICBpbnB1dCA9IHN0cmlwRGlhY3JpdGljcyhpbnB1dCk7XG4gICAgfVxuICAgIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9ICFpbnB1dCA/IG9wdGlvbnMgOiBvcHRpb25zLmZpbHRlcihvcHRpb24gPT4ge1xuICAgICAgbGV0IGNhbmRpZGF0ZSA9IChzdHJpbmdpZnkgfHwgZ2V0T3B0aW9uTGFiZWwpKG9wdGlvbik7XG4gICAgICBpZiAoaWdub3JlQ2FzZSkge1xuICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpZ25vcmVBY2NlbnRzKSB7XG4gICAgICAgIGNhbmRpZGF0ZSA9IHN0cmlwRGlhY3JpdGljcyhjYW5kaWRhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG1hdGNoRnJvbSA9PT0gJ3N0YXJ0JyA/IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA9PT0gMCA6IGNhbmRpZGF0ZS5pbmRleE9mKGlucHV0KSA+IC0xO1xuICAgIH0pO1xuICAgIHJldHVybiB0eXBlb2YgbGltaXQgPT09ICdudW1iZXInID8gZmlsdGVyZWRPcHRpb25zLnNsaWNlKDAsIGxpbWl0KSA6IGZpbHRlcmVkT3B0aW9ucztcbiAgfTtcbn1cblxuLy8gVG8gcmVwbGFjZSB3aXRoIC5maW5kSW5kZXgoKSBvbmNlIHdlIHN0b3AgSUUxMSBzdXBwb3J0LlxuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBjb21wKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoY29tcChhcnJheVtpXSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5jb25zdCBkZWZhdWx0RmlsdGVyT3B0aW9ucyA9IGNyZWF0ZUZpbHRlck9wdGlvbnMoKTtcblxuLy8gTnVtYmVyIG9mIG9wdGlvbnMgdG8ganVtcCBpbiBsaXN0IGJveCB3aGVuIGBQYWdlIFVwYCBhbmQgYFBhZ2UgRG93bmAga2V5cyBhcmUgdXNlZC5cbmNvbnN0IHBhZ2VTaXplID0gNTtcbmNvbnN0IGRlZmF1bHRJc0FjdGl2ZUVsZW1lbnRJbkxpc3Rib3ggPSBsaXN0Ym94UmVmID0+IHtcbiAgdmFyIF9saXN0Ym94UmVmJGN1cnJlbnQkcDtcbiAgcmV0dXJuIGxpc3Rib3hSZWYuY3VycmVudCAhPT0gbnVsbCAmJiAoKF9saXN0Ym94UmVmJGN1cnJlbnQkcCA9IGxpc3Rib3hSZWYuY3VycmVudC5wYXJlbnRFbGVtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2xpc3Rib3hSZWYkY3VycmVudCRwLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKTtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VBdXRvY29tcGxldGUocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICB1bnN0YWJsZV9pc0FjdGl2ZUVsZW1lbnRJbkxpc3Rib3ggPSBkZWZhdWx0SXNBY3RpdmVFbGVtZW50SW5MaXN0Ym94LFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICB1bnN0YWJsZV9jbGFzc05hbWVQcmVmaXggPSAnTXVpJyxcbiAgICBhdXRvQ29tcGxldGUgPSBmYWxzZSxcbiAgICBhdXRvSGlnaGxpZ2h0ID0gZmFsc2UsXG4gICAgYXV0b1NlbGVjdCA9IGZhbHNlLFxuICAgIGJsdXJPblNlbGVjdCA9IGZhbHNlLFxuICAgIGNsZWFyT25CbHVyID0gIXByb3BzLmZyZWVTb2xvLFxuICAgIGNsZWFyT25Fc2NhcGUgPSBmYWxzZSxcbiAgICBjb21wb25lbnROYW1lID0gJ3VzZUF1dG9jb21wbGV0ZScsXG4gICAgZGVmYXVsdFZhbHVlID0gcHJvcHMubXVsdGlwbGUgPyBbXSA6IG51bGwsXG4gICAgZGlzYWJsZUNsZWFyYWJsZSA9IGZhbHNlLFxuICAgIGRpc2FibGVDbG9zZU9uU2VsZWN0ID0gZmFsc2UsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkUHJvcCxcbiAgICBkaXNhYmxlZEl0ZW1zRm9jdXNhYmxlID0gZmFsc2UsXG4gICAgZGlzYWJsZUxpc3RXcmFwID0gZmFsc2UsXG4gICAgZmlsdGVyT3B0aW9ucyA9IGRlZmF1bHRGaWx0ZXJPcHRpb25zLFxuICAgIGZpbHRlclNlbGVjdGVkT3B0aW9ucyA9IGZhbHNlLFxuICAgIGZyZWVTb2xvID0gZmFsc2UsXG4gICAgZ2V0T3B0aW9uRGlzYWJsZWQsXG4gICAgZ2V0T3B0aW9uTGFiZWw6IGdldE9wdGlvbkxhYmVsUHJvcCA9IG9wdGlvbiA9PiB7XG4gICAgICB2YXIgX29wdGlvbiRsYWJlbDtcbiAgICAgIHJldHVybiAoX29wdGlvbiRsYWJlbCA9IG9wdGlvbi5sYWJlbCkgIT0gbnVsbCA/IF9vcHRpb24kbGFiZWwgOiBvcHRpb247XG4gICAgfSxcbiAgICBncm91cEJ5LFxuICAgIGhhbmRsZUhvbWVFbmRLZXlzID0gIXByb3BzLmZyZWVTb2xvLFxuICAgIGlkOiBpZFByb3AsXG4gICAgaW5jbHVkZUlucHV0SW5MaXN0ID0gZmFsc2UsXG4gICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZVByb3AsXG4gICAgaXNPcHRpb25FcXVhbFRvVmFsdWUgPSAob3B0aW9uLCB2YWx1ZSkgPT4gb3B0aW9uID09PSB2YWx1ZSxcbiAgICBtdWx0aXBsZSA9IGZhbHNlLFxuICAgIG9uQ2hhbmdlLFxuICAgIG9uQ2xvc2UsXG4gICAgb25IaWdobGlnaHRDaGFuZ2UsXG4gICAgb25JbnB1dENoYW5nZSxcbiAgICBvbk9wZW4sXG4gICAgb3Blbjogb3BlblByb3AsXG4gICAgb3Blbk9uRm9jdXMgPSBmYWxzZSxcbiAgICBvcHRpb25zLFxuICAgIHJlYWRPbmx5ID0gZmFsc2UsXG4gICAgc2VsZWN0T25Gb2N1cyA9ICFwcm9wcy5mcmVlU29sbyxcbiAgICB2YWx1ZTogdmFsdWVQcm9wXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaWQgPSB1c2VJZChpZFByb3ApO1xuICBsZXQgZ2V0T3B0aW9uTGFiZWwgPSBnZXRPcHRpb25MYWJlbFByb3A7XG4gIGdldE9wdGlvbkxhYmVsID0gb3B0aW9uID0+IHtcbiAgICBjb25zdCBvcHRpb25MYWJlbCA9IGdldE9wdGlvbkxhYmVsUHJvcChvcHRpb24pO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9uTGFiZWwgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zdCBlcnJvbmVvdXNSZXR1cm4gPSBvcHRpb25MYWJlbCA9PT0gdW5kZWZpbmVkID8gJ3VuZGVmaW5lZCcgOiBgJHt0eXBlb2Ygb3B0aW9uTGFiZWx9ICgke29wdGlvbkxhYmVsfSlgO1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNVUk6IFRoZSBcXGBnZXRPcHRpb25MYWJlbFxcYCBtZXRob2Qgb2YgJHtjb21wb25lbnROYW1lfSByZXR1cm5lZCAke2Vycm9uZW91c1JldHVybn0gaW5zdGVhZCBvZiBhIHN0cmluZyBmb3IgJHtKU09OLnN0cmluZ2lmeShvcHRpb24pfS5gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBTdHJpbmcob3B0aW9uTGFiZWwpO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9uTGFiZWw7XG4gIH07XG4gIGNvbnN0IGlnbm9yZUZvY3VzID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgY29uc3QgZmlyc3RGb2N1cyA9IFJlYWN0LnVzZVJlZih0cnVlKTtcbiAgY29uc3QgaW5wdXRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGxpc3Rib3hSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IFthbmNob3JFbCwgc2V0QW5jaG9yRWxdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFtmb2N1c2VkVGFnLCBzZXRGb2N1c2VkVGFnXSA9IFJlYWN0LnVzZVN0YXRlKC0xKTtcbiAgY29uc3QgZGVmYXVsdEhpZ2hsaWdodGVkID0gYXV0b0hpZ2hsaWdodCA/IDAgOiAtMTtcbiAgY29uc3QgaGlnaGxpZ2h0ZWRJbmRleFJlZiA9IFJlYWN0LnVzZVJlZihkZWZhdWx0SGlnaGxpZ2h0ZWQpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlU3RhdGVdID0gdXNlQ29udHJvbGxlZCh7XG4gICAgY29udHJvbGxlZDogdmFsdWVQcm9wLFxuICAgIGRlZmF1bHQ6IGRlZmF1bHRWYWx1ZSxcbiAgICBuYW1lOiBjb21wb25lbnROYW1lXG4gIH0pO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZVN0YXRlXSA9IHVzZUNvbnRyb2xsZWQoe1xuICAgIGNvbnRyb2xsZWQ6IGlucHV0VmFsdWVQcm9wLFxuICAgIGRlZmF1bHQ6ICcnLFxuICAgIG5hbWU6IGNvbXBvbmVudE5hbWUsXG4gICAgc3RhdGU6ICdpbnB1dFZhbHVlJ1xuICB9KTtcbiAgY29uc3QgW2ZvY3VzZWQsIHNldEZvY3VzZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByZXNldElucHV0VmFsdWUgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgLy8gcmV0YWluIGN1cnJlbnQgYGlucHV0VmFsdWVgIGlmIG5ldyBvcHRpb24gaXNuJ3Qgc2VsZWN0ZWQgYW5kIGBjbGVhck9uQmx1cmAgaXMgZmFsc2VcbiAgICAvLyBXaGVuIGBtdWx0aXBsZWAgaXMgZW5hYmxlZCwgYG5ld1ZhbHVlYCBpcyBhbiBhcnJheSBvZiBhbGwgc2VsZWN0ZWQgaXRlbXMgaW5jbHVkaW5nIHRoZSBuZXdseSBzZWxlY3RlZCBpdGVtXG4gICAgY29uc3QgaXNPcHRpb25TZWxlY3RlZCA9IG11bHRpcGxlID8gdmFsdWUubGVuZ3RoIDwgbmV3VmFsdWUubGVuZ3RoIDogbmV3VmFsdWUgIT09IG51bGw7XG4gICAgaWYgKCFpc09wdGlvblNlbGVjdGVkICYmICFjbGVhck9uQmx1cikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgbmV3SW5wdXRWYWx1ZTtcbiAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgIG5ld0lucHV0VmFsdWUgPSAnJztcbiAgICB9IGVsc2UgaWYgKG5ld1ZhbHVlID09IG51bGwpIHtcbiAgICAgIG5ld0lucHV0VmFsdWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3B0aW9uTGFiZWwgPSBnZXRPcHRpb25MYWJlbChuZXdWYWx1ZSk7XG4gICAgICBuZXdJbnB1dFZhbHVlID0gdHlwZW9mIG9wdGlvbkxhYmVsID09PSAnc3RyaW5nJyA/IG9wdGlvbkxhYmVsIDogJyc7XG4gICAgfVxuICAgIGlmIChpbnB1dFZhbHVlID09PSBuZXdJbnB1dFZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldElucHV0VmFsdWVTdGF0ZShuZXdJbnB1dFZhbHVlKTtcbiAgICBpZiAob25JbnB1dENoYW5nZSkge1xuICAgICAgb25JbnB1dENoYW5nZShldmVudCwgbmV3SW5wdXRWYWx1ZSwgJ3Jlc2V0Jyk7XG4gICAgfVxuICB9LCBbZ2V0T3B0aW9uTGFiZWwsIGlucHV0VmFsdWUsIG11bHRpcGxlLCBvbklucHV0Q2hhbmdlLCBzZXRJbnB1dFZhbHVlU3RhdGUsIGNsZWFyT25CbHVyLCB2YWx1ZV0pO1xuICBjb25zdCBbb3Blbiwgc2V0T3BlblN0YXRlXSA9IHVzZUNvbnRyb2xsZWQoe1xuICAgIGNvbnRyb2xsZWQ6IG9wZW5Qcm9wLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgIG5hbWU6IGNvbXBvbmVudE5hbWUsXG4gICAgc3RhdGU6ICdvcGVuJ1xuICB9KTtcbiAgY29uc3QgW2lucHV0UHJpc3RpbmUsIHNldElucHV0UHJpc3RpbmVdID0gUmVhY3QudXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IGlucHV0VmFsdWVJc1NlbGVjdGVkVmFsdWUgPSAhbXVsdGlwbGUgJiYgdmFsdWUgIT0gbnVsbCAmJiBpbnB1dFZhbHVlID09PSBnZXRPcHRpb25MYWJlbCh2YWx1ZSk7XG4gIGNvbnN0IHBvcHVwT3BlbiA9IG9wZW4gJiYgIXJlYWRPbmx5O1xuICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSBwb3B1cE9wZW4gPyBmaWx0ZXJPcHRpb25zKG9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiB7XG4gICAgaWYgKGZpbHRlclNlbGVjdGVkT3B0aW9ucyAmJiAobXVsdGlwbGUgPyB2YWx1ZSA6IFt2YWx1ZV0pLnNvbWUodmFsdWUyID0+IHZhbHVlMiAhPT0gbnVsbCAmJiBpc09wdGlvbkVxdWFsVG9WYWx1ZShvcHRpb24sIHZhbHVlMikpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9KSxcbiAgLy8gd2UgdXNlIHRoZSBlbXB0eSBzdHJpbmcgdG8gbWFuaXB1bGF0ZSBgZmlsdGVyT3B0aW9uc2AgdG8gbm90IGZpbHRlciBhbnkgb3B0aW9uc1xuICAvLyBpLmUuIHRoZSBmaWx0ZXIgcHJlZGljYXRlIGFsd2F5cyByZXR1cm5zIHRydWVcbiAge1xuICAgIGlucHV0VmFsdWU6IGlucHV0VmFsdWVJc1NlbGVjdGVkVmFsdWUgJiYgaW5wdXRQcmlzdGluZSA/ICcnIDogaW5wdXRWYWx1ZSxcbiAgICBnZXRPcHRpb25MYWJlbFxuICB9KSA6IFtdO1xuICBjb25zdCBwcmV2aW91c1Byb3BzID0gdXNlUHJldmlvdXNQcm9wcyh7XG4gICAgZmlsdGVyZWRPcHRpb25zLFxuICAgIHZhbHVlLFxuICAgIGlucHV0VmFsdWVcbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmFsdWVDaGFuZ2UgPSB2YWx1ZSAhPT0gcHJldmlvdXNQcm9wcy52YWx1ZTtcbiAgICBpZiAoZm9jdXNlZCAmJiAhdmFsdWVDaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBPbmx5IHJlc2V0IHRoZSBpbnB1dCdzIHZhbHVlIHdoZW4gZnJlZVNvbG8gaWYgdGhlIGNvbXBvbmVudCdzIHZhbHVlIGNoYW5nZXMuXG4gICAgaWYgKGZyZWVTb2xvICYmICF2YWx1ZUNoYW5nZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXNldElucHV0VmFsdWUobnVsbCwgdmFsdWUpO1xuICB9LCBbdmFsdWUsIHJlc2V0SW5wdXRWYWx1ZSwgZm9jdXNlZCwgcHJldmlvdXNQcm9wcy52YWx1ZSwgZnJlZVNvbG9dKTtcbiAgY29uc3QgbGlzdGJveEF2YWlsYWJsZSA9IG9wZW4gJiYgZmlsdGVyZWRPcHRpb25zLmxlbmd0aCA+IDAgJiYgIXJlYWRPbmx5O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiAhZnJlZVNvbG8gJiYgb3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBtaXNzaW5nVmFsdWUgPSAobXVsdGlwbGUgPyB2YWx1ZSA6IFt2YWx1ZV0pLmZpbHRlcih2YWx1ZTIgPT4gIW9wdGlvbnMuc29tZShvcHRpb24gPT4gaXNPcHRpb25FcXVhbFRvVmFsdWUob3B0aW9uLCB2YWx1ZTIpKSk7XG4gICAgICBpZiAobWlzc2luZ1ZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS53YXJuKFtgTVVJOiBUaGUgdmFsdWUgcHJvdmlkZWQgdG8gJHtjb21wb25lbnROYW1lfSBpcyBpbnZhbGlkLmAsIGBOb25lIG9mIHRoZSBvcHRpb25zIG1hdGNoIHdpdGggXFxgJHttaXNzaW5nVmFsdWUubGVuZ3RoID4gMSA/IEpTT04uc3RyaW5naWZ5KG1pc3NpbmdWYWx1ZSkgOiBKU09OLnN0cmluZ2lmeShtaXNzaW5nVmFsdWVbMF0pfVxcYC5gLCAnWW91IGNhbiB1c2UgdGhlIGBpc09wdGlvbkVxdWFsVG9WYWx1ZWAgcHJvcCB0byBjdXN0b21pemUgdGhlIGVxdWFsaXR5IHRlc3QuJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBmb2N1c1RhZyA9IHVzZUV2ZW50Q2FsbGJhY2sodGFnVG9Gb2N1cyA9PiB7XG4gICAgaWYgKHRhZ1RvRm9jdXMgPT09IC0xKSB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFuY2hvckVsLnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXRhZy1pbmRleD1cIiR7dGFnVG9Gb2N1c31cIl1gKS5mb2N1cygpO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gRW5zdXJlIHRoZSBmb2N1c2VkVGFnIGlzIG5ldmVyIGluY29uc2lzdGVudFxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtdWx0aXBsZSAmJiBmb2N1c2VkVGFnID4gdmFsdWUubGVuZ3RoIC0gMSkge1xuICAgICAgc2V0Rm9jdXNlZFRhZygtMSk7XG4gICAgICBmb2N1c1RhZygtMSk7XG4gICAgfVxuICB9LCBbdmFsdWUsIG11bHRpcGxlLCBmb2N1c2VkVGFnLCBmb2N1c1RhZ10pO1xuICBmdW5jdGlvbiB2YWxpZE9wdGlvbkluZGV4KGluZGV4LCBkaXJlY3Rpb24pIHtcbiAgICBpZiAoIWxpc3Rib3hSZWYuY3VycmVudCB8fCBpbmRleCA9PT0gLTEpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgbGV0IG5leHRGb2N1cyA9IGluZGV4O1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyBPdXQgb2YgcmFuZ2VcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09ICduZXh0JyAmJiBuZXh0Rm9jdXMgPT09IGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggfHwgZGlyZWN0aW9uID09PSAncHJldmlvdXMnICYmIG5leHRGb2N1cyA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3B0aW9uID0gbGlzdGJveFJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLW9wdGlvbi1pbmRleD1cIiR7bmV4dEZvY3VzfVwiXWApO1xuXG4gICAgICAvLyBTYW1lIGxvZ2ljIGFzIE1lbnVMaXN0LmpzXG4gICAgICBjb25zdCBuZXh0Rm9jdXNEaXNhYmxlZCA9IGRpc2FibGVkSXRlbXNGb2N1c2FibGUgPyBmYWxzZSA6ICFvcHRpb24gfHwgb3B0aW9uLmRpc2FibGVkIHx8IG9wdGlvbi5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGlzYWJsZWQnKSA9PT0gJ3RydWUnO1xuICAgICAgaWYgKG9wdGlvbiAmJiAhb3B0aW9uLmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKSB8fCBuZXh0Rm9jdXNEaXNhYmxlZCkge1xuICAgICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IGVsZW1lbnQuXG4gICAgICAgIG5leHRGb2N1cyArPSBkaXJlY3Rpb24gPT09ICduZXh0JyA/IDEgOiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXh0Rm9jdXM7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IHNldEhpZ2hsaWdodGVkSW5kZXggPSB1c2VFdmVudENhbGxiYWNrKCh7XG4gICAgZXZlbnQsXG4gICAgaW5kZXgsXG4gICAgcmVhc29uID0gJ2F1dG8nXG4gIH0pID0+IHtcbiAgICBoaWdobGlnaHRlZEluZGV4UmVmLmN1cnJlbnQgPSBpbmRleDtcblxuICAgIC8vIGRvZXMgdGhlIGluZGV4IGV4aXN0P1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRSZWYuY3VycmVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIGAke2lkfS1vcHRpb24tJHtpbmRleH1gKTtcbiAgICB9XG4gICAgaWYgKG9uSGlnaGxpZ2h0Q2hhbmdlKSB7XG4gICAgICBvbkhpZ2hsaWdodENoYW5nZShldmVudCwgaW5kZXggPT09IC0xID8gbnVsbCA6IGZpbHRlcmVkT3B0aW9uc1tpbmRleF0sIHJlYXNvbik7XG4gICAgfVxuICAgIGlmICghbGlzdGJveFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByZXYgPSBsaXN0Ym94UmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvcihgW3JvbGU9XCJvcHRpb25cIl0uJHt1bnN0YWJsZV9jbGFzc05hbWVQcmVmaXh9LWZvY3VzZWRgKTtcbiAgICBpZiAocHJldikge1xuICAgICAgcHJldi5jbGFzc0xpc3QucmVtb3ZlKGAke3Vuc3RhYmxlX2NsYXNzTmFtZVByZWZpeH0tZm9jdXNlZGApO1xuICAgICAgcHJldi5jbGFzc0xpc3QucmVtb3ZlKGAke3Vuc3RhYmxlX2NsYXNzTmFtZVByZWZpeH0tZm9jdXNWaXNpYmxlYCk7XG4gICAgfVxuICAgIGxldCBsaXN0Ym94Tm9kZSA9IGxpc3Rib3hSZWYuY3VycmVudDtcbiAgICBpZiAobGlzdGJveFJlZi5jdXJyZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAnbGlzdGJveCcpIHtcbiAgICAgIGxpc3Rib3hOb2RlID0gbGlzdGJveFJlZi5jdXJyZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignW3JvbGU9XCJsaXN0Ym94XCJdJyk7XG4gICAgfVxuXG4gICAgLy8gXCJObyByZXN1bHRzXCJcbiAgICBpZiAoIWxpc3Rib3hOb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgIGxpc3Rib3hOb2RlLnNjcm9sbFRvcCA9IDA7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbiA9IGxpc3Rib3hSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1vcHRpb24taW5kZXg9XCIke2luZGV4fVwiXWApO1xuICAgIGlmICghb3B0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKGAke3Vuc3RhYmxlX2NsYXNzTmFtZVByZWZpeH0tZm9jdXNlZGApO1xuICAgIGlmIChyZWFzb24gPT09ICdrZXlib2FyZCcpIHtcbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKGAke3Vuc3RhYmxlX2NsYXNzTmFtZVByZWZpeH0tZm9jdXNWaXNpYmxlYCk7XG4gICAgfVxuXG4gICAgLy8gU2Nyb2xsIGFjdGl2ZSBkZXNjZW5kYW50IGludG8gdmlldy5cbiAgICAvLyBMb2dpYyBjb3BpZWQgZnJvbSBodHRwczovL3d3dy53My5vcmcvV0FJL2NvbnRlbnQtYXNzZXRzL3dhaS1hcmlhLXByYWN0aWNlcy9wYXR0ZXJucy9jb21ib2JveC9leGFtcGxlcy9qcy9zZWxlY3Qtb25seS5qc1xuICAgIC8vIEluIGNhc2Ugb2YgbW91c2UgY2xpY2tzIGFuZCB0b3VjaCAoaW4gbW9iaWxlIGRldmljZXMpIHdlIGF2b2lkIHNjcm9sbGluZyB0aGUgZWxlbWVudCBhbmQga2VlcCBib3RoIGJlaGF2aW9ycyBzYW1lLlxuICAgIC8vIENvbnNpZGVyIHRoaXMgQVBJIGluc3RlYWQgb25jZSBpdCBoYXMgYSBiZXR0ZXIgYnJvd3NlciBzdXBwb3J0OlxuICAgIC8vIC5zY3JvbGxJbnRvVmlldyh7IHNjcm9sbE1vZGU6ICdpZi1uZWVkZWQnLCBibG9jazogJ25lYXJlc3QnIH0pO1xuICAgIGlmIChsaXN0Ym94Tm9kZS5zY3JvbGxIZWlnaHQgPiBsaXN0Ym94Tm9kZS5jbGllbnRIZWlnaHQgJiYgcmVhc29uICE9PSAnbW91c2UnICYmIHJlYXNvbiAhPT0gJ3RvdWNoJykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IG9wdGlvbjtcbiAgICAgIGNvbnN0IHNjcm9sbEJvdHRvbSA9IGxpc3Rib3hOb2RlLmNsaWVudEhlaWdodCArIGxpc3Rib3hOb2RlLnNjcm9sbFRvcDtcbiAgICAgIGNvbnN0IGVsZW1lbnRCb3R0b20gPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgaWYgKGVsZW1lbnRCb3R0b20gPiBzY3JvbGxCb3R0b20pIHtcbiAgICAgICAgbGlzdGJveE5vZGUuc2Nyb2xsVG9wID0gZWxlbWVudEJvdHRvbSAtIGxpc3Rib3hOb2RlLmNsaWVudEhlaWdodDtcbiAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5vZmZzZXRUb3AgLSBlbGVtZW50Lm9mZnNldEhlaWdodCAqIChncm91cEJ5ID8gMS4zIDogMCkgPCBsaXN0Ym94Tm9kZS5zY3JvbGxUb3ApIHtcbiAgICAgICAgbGlzdGJveE5vZGUuc2Nyb2xsVG9wID0gZWxlbWVudC5vZmZzZXRUb3AgLSBlbGVtZW50Lm9mZnNldEhlaWdodCAqIChncm91cEJ5ID8gMS4zIDogMCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3QgY2hhbmdlSGlnaGxpZ2h0ZWRJbmRleCA9IHVzZUV2ZW50Q2FsbGJhY2soKHtcbiAgICBldmVudCxcbiAgICBkaWZmLFxuICAgIGRpcmVjdGlvbiA9ICduZXh0JyxcbiAgICByZWFzb24gPSAnYXV0bydcbiAgfSkgPT4ge1xuICAgIGlmICghcG9wdXBPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdldE5leHRJbmRleCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG1heEluZGV4ID0gZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICBpZiAoZGlmZiA9PT0gJ3Jlc2V0Jykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEhpZ2hsaWdodGVkO1xuICAgICAgfVxuICAgICAgaWYgKGRpZmYgPT09ICdzdGFydCcpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgICBpZiAoZGlmZiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgcmV0dXJuIG1heEluZGV4O1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3SW5kZXggPSBoaWdobGlnaHRlZEluZGV4UmVmLmN1cnJlbnQgKyBkaWZmO1xuICAgICAgaWYgKG5ld0luZGV4IDwgMCkge1xuICAgICAgICBpZiAobmV3SW5kZXggPT09IC0xICYmIGluY2x1ZGVJbnB1dEluTGlzdCkge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlzYWJsZUxpc3RXcmFwICYmIGhpZ2hsaWdodGVkSW5kZXhSZWYuY3VycmVudCAhPT0gLTEgfHwgTWF0aC5hYnMoZGlmZikgPiAxKSB7XG4gICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heEluZGV4O1xuICAgICAgfVxuICAgICAgaWYgKG5ld0luZGV4ID4gbWF4SW5kZXgpIHtcbiAgICAgICAgaWYgKG5ld0luZGV4ID09PSBtYXhJbmRleCArIDEgJiYgaW5jbHVkZUlucHV0SW5MaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXNhYmxlTGlzdFdyYXAgfHwgTWF0aC5hYnMoZGlmZikgPiAxKSB7XG4gICAgICAgICAgcmV0dXJuIG1heEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ld0luZGV4O1xuICAgIH07XG4gICAgY29uc3QgbmV4dEluZGV4ID0gdmFsaWRPcHRpb25JbmRleChnZXROZXh0SW5kZXgoKSwgZGlyZWN0aW9uKTtcbiAgICBzZXRIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICByZWFzb24sXG4gICAgICBldmVudFxuICAgIH0pO1xuXG4gICAgLy8gU3luYyB0aGUgY29udGVudCBvZiB0aGUgaW5wdXQgd2l0aCB0aGUgaGlnaGxpZ2h0ZWQgb3B0aW9uLlxuICAgIGlmIChhdXRvQ29tcGxldGUgJiYgZGlmZiAhPT0gJ3Jlc2V0Jykge1xuICAgICAgaWYgKG5leHRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgaW5wdXRSZWYuY3VycmVudC52YWx1ZSA9IGlucHV0VmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBvcHRpb24gPSBnZXRPcHRpb25MYWJlbChmaWx0ZXJlZE9wdGlvbnNbbmV4dEluZGV4XSk7XG4gICAgICAgIGlucHV0UmVmLmN1cnJlbnQudmFsdWUgPSBvcHRpb247XG5cbiAgICAgICAgLy8gVGhlIHBvcnRpb24gb2YgdGhlIHNlbGVjdGVkIHN1Z2dlc3Rpb24gdGhhdCBoYXMgbm90IGJlZW4gdHlwZWQgYnkgdGhlIHVzZXIsXG4gICAgICAgIC8vIGEgY29tcGxldGlvbiBzdHJpbmcsIGFwcGVhcnMgaW5saW5lIGFmdGVyIHRoZSBpbnB1dCBjdXJzb3IgaW4gdGhlIHRleHRib3guXG4gICAgICAgIGNvbnN0IGluZGV4ID0gb3B0aW9uLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihpbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZiAoaW5kZXggPT09IDAgJiYgaW5wdXRWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaW5wdXRSZWYuY3VycmVudC5zZXRTZWxlY3Rpb25SYW5nZShpbnB1dFZhbHVlLmxlbmd0aCwgb3B0aW9uLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBjaGVja0hpZ2hsaWdodGVkT3B0aW9uRXhpc3RzID0gKCkgPT4ge1xuICAgIGNvbnN0IGlzU2FtZVZhbHVlID0gKHZhbHVlMSwgdmFsdWUyKSA9PiB7XG4gICAgICBjb25zdCBsYWJlbDEgPSB2YWx1ZTEgPyBnZXRPcHRpb25MYWJlbCh2YWx1ZTEpIDogJyc7XG4gICAgICBjb25zdCBsYWJlbDIgPSB2YWx1ZTIgPyBnZXRPcHRpb25MYWJlbCh2YWx1ZTIpIDogJyc7XG4gICAgICByZXR1cm4gbGFiZWwxID09PSBsYWJlbDI7XG4gICAgfTtcbiAgICBpZiAoaGlnaGxpZ2h0ZWRJbmRleFJlZi5jdXJyZW50ICE9PSAtMSAmJiBwcmV2aW91c1Byb3BzLmZpbHRlcmVkT3B0aW9ucyAmJiBwcmV2aW91c1Byb3BzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggIT09IGZpbHRlcmVkT3B0aW9ucy5sZW5ndGggJiYgcHJldmlvdXNQcm9wcy5pbnB1dFZhbHVlID09PSBpbnB1dFZhbHVlICYmIChtdWx0aXBsZSA/IHZhbHVlLmxlbmd0aCA9PT0gcHJldmlvdXNQcm9wcy52YWx1ZS5sZW5ndGggJiYgcHJldmlvdXNQcm9wcy52YWx1ZS5ldmVyeSgodmFsLCBpKSA9PiBnZXRPcHRpb25MYWJlbCh2YWx1ZVtpXSkgPT09IGdldE9wdGlvbkxhYmVsKHZhbCkpIDogaXNTYW1lVmFsdWUocHJldmlvdXNQcm9wcy52YWx1ZSwgdmFsdWUpKSkge1xuICAgICAgY29uc3QgcHJldmlvdXNIaWdobGlnaHRlZE9wdGlvbiA9IHByZXZpb3VzUHJvcHMuZmlsdGVyZWRPcHRpb25zW2hpZ2hsaWdodGVkSW5kZXhSZWYuY3VycmVudF07XG4gICAgICBpZiAocHJldmlvdXNIaWdobGlnaHRlZE9wdGlvbikge1xuICAgICAgICBjb25zdCBwcmV2aW91c0hpZ2hsaWdodGVkT3B0aW9uRXhpc3RzID0gZmlsdGVyZWRPcHRpb25zLnNvbWUob3B0aW9uID0+IHtcbiAgICAgICAgICByZXR1cm4gZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSA9PT0gZ2V0T3B0aW9uTGFiZWwocHJldmlvdXNIaWdobGlnaHRlZE9wdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAocHJldmlvdXNIaWdobGlnaHRlZE9wdGlvbkV4aXN0cykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcbiAgY29uc3Qgc3luY0hpZ2hsaWdodGVkSW5kZXggPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFwb3B1cE9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcHJldmlvdXNseSBoaWdobGlnaHRlZCBvcHRpb24gc3RpbGwgZXhpc3RzIGluIHRoZSB1cGRhdGVkIGZpbHRlcmVkIG9wdGlvbnMgbGlzdCBhbmQgaWYgdGhlIHZhbHVlIGFuZCBpbnB1dFZhbHVlIGhhdmVuJ3QgY2hhbmdlZFxuICAgIC8vIElmIGl0IGV4aXN0cyBhbmQgdGhlIHZhbHVlIGFuZCB0aGUgaW5wdXRWYWx1ZSBoYXZlbid0IGNoYW5nZWQsIHJldHVybiwgb3RoZXJ3aXNlIGNvbnRpbnVlIGV4ZWN1dGlvblxuICAgIGlmIChjaGVja0hpZ2hsaWdodGVkT3B0aW9uRXhpc3RzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdmFsdWVJdGVtID0gbXVsdGlwbGUgPyB2YWx1ZVswXSA6IHZhbHVlO1xuXG4gICAgLy8gVGhlIHBvcHVwIGlzIGVtcHR5LCByZXNldFxuICAgIGlmIChmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwIHx8IHZhbHVlSXRlbSA9PSBudWxsKSB7XG4gICAgICBjaGFuZ2VIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgICAgZGlmZjogJ3Jlc2V0J1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghbGlzdGJveFJlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU3luY2hyb25pemUgdGhlIHZhbHVlIHdpdGggdGhlIGhpZ2hsaWdodGVkIGluZGV4XG4gICAgaWYgKHZhbHVlSXRlbSAhPSBudWxsKSB7XG4gICAgICBjb25zdCBjdXJyZW50T3B0aW9uID0gZmlsdGVyZWRPcHRpb25zW2hpZ2hsaWdodGVkSW5kZXhSZWYuY3VycmVudF07XG5cbiAgICAgIC8vIEtlZXAgdGhlIGN1cnJlbnQgaGlnaGxpZ2h0ZWQgaW5kZXggaWYgcG9zc2libGVcbiAgICAgIGlmIChtdWx0aXBsZSAmJiBjdXJyZW50T3B0aW9uICYmIGZpbmRJbmRleCh2YWx1ZSwgdmFsID0+IGlzT3B0aW9uRXF1YWxUb1ZhbHVlKGN1cnJlbnRPcHRpb24sIHZhbCkpICE9PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtSW5kZXggPSBmaW5kSW5kZXgoZmlsdGVyZWRPcHRpb25zLCBvcHRpb25JdGVtID0+IGlzT3B0aW9uRXF1YWxUb1ZhbHVlKG9wdGlvbkl0ZW0sIHZhbHVlSXRlbSkpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgY2hhbmdlSGlnaGxpZ2h0ZWRJbmRleCh7XG4gICAgICAgICAgZGlmZjogJ3Jlc2V0J1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoe1xuICAgICAgICAgIGluZGV4OiBpdGVtSW5kZXhcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUHJldmVudCB0aGUgaGlnaGxpZ2h0ZWQgaW5kZXggdG8gbGVhayBvdXRzaWRlIHRoZSBib3VuZGFyaWVzLlxuICAgIGlmIChoaWdobGlnaHRlZEluZGV4UmVmLmN1cnJlbnQgPj0gZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgIHNldEhpZ2hsaWdodGVkSW5kZXgoe1xuICAgICAgICBpbmRleDogZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDFcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlc3RvcmUgdGhlIGZvY3VzIHRvIHRoZSBwcmV2aW91cyBpbmRleC5cbiAgICBzZXRIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgIGluZGV4OiBoaWdobGlnaHRlZEluZGV4UmVmLmN1cnJlbnRcbiAgICB9KTtcbiAgICAvLyBJZ25vcmUgZmlsdGVyZWRPcHRpb25zIChhbmQgb3B0aW9ucywgaXNPcHRpb25FcXVhbFRvVmFsdWUsIGdldE9wdGlvbkxhYmVsKSBub3QgdG8gYnJlYWsgdGhlIHNjcm9sbCBwb3NpdGlvblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW1xuICAvLyBPbmx5IHN5bmMgdGhlIGhpZ2hsaWdodGVkIGluZGV4IHdoZW4gdGhlIG9wdGlvbiBzd2l0Y2ggYmV0d2VlbiBlbXB0eSBhbmQgbm90XG4gIGZpbHRlcmVkT3B0aW9ucy5sZW5ndGgsXG4gIC8vIERvbid0IHN5bmMgdGhlIGhpZ2hsaWdodGVkIGluZGV4IHdpdGggdGhlIHZhbHVlIHdoZW4gbXVsdGlwbGVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICBtdWx0aXBsZSA/IGZhbHNlIDogdmFsdWUsIGZpbHRlclNlbGVjdGVkT3B0aW9ucywgY2hhbmdlSGlnaGxpZ2h0ZWRJbmRleCwgc2V0SGlnaGxpZ2h0ZWRJbmRleCwgcG9wdXBPcGVuLCBpbnB1dFZhbHVlLCBtdWx0aXBsZV0pO1xuICBjb25zdCBoYW5kbGVMaXN0Ym94UmVmID0gdXNlRXZlbnRDYWxsYmFjayhub2RlID0+IHtcbiAgICBzZXRSZWYobGlzdGJveFJlZiwgbm9kZSk7XG4gICAgaWYgKCFub2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN5bmNIaWdobGlnaHRlZEluZGV4KCk7XG4gIH0pO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIWlucHV0UmVmLmN1cnJlbnQgfHwgaW5wdXRSZWYuY3VycmVudC5ub2RlTmFtZSAhPT0gJ0lOUFVUJykge1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCAmJiBpbnB1dFJlZi5jdXJyZW50Lm5vZGVOYW1lID09PSAnVEVYVEFSRUEnKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFtgQSB0ZXh0YXJlYSBlbGVtZW50IHdhcyBwcm92aWRlZCB0byAke2NvbXBvbmVudE5hbWV9IHdoZXJlIGlucHV0IHdhcyBleHBlY3RlZC5gLCBgVGhpcyBpcyBub3QgYSBzdXBwb3J0ZWQgc2NlbmFyaW8gYnV0IGl0IG1heSB3b3JrIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy5gLCBgQSB0ZXh0YXJlYSBrZXlib2FyZCBuYXZpZ2F0aW9uIG1heSBjb25mbGljdCB3aXRoIEF1dG9jb21wbGV0ZSBjb250cm9scyAoZS5nLiBlbnRlciBhbmQgYXJyb3cga2V5cykuYCwgYE1ha2Ugc3VyZSB0byB0ZXN0IGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGFkZCBjdXN0b20gZXZlbnQgaGFuZGxlcnMgaWYgbmVjZXNzYXJ5LmBdLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBVbmFibGUgdG8gZmluZCB0aGUgaW5wdXQgZWxlbWVudC4gSXQgd2FzIHJlc29sdmVkIHRvICR7aW5wdXRSZWYuY3VycmVudH0gd2hpbGUgYW4gSFRNTElucHV0RWxlbWVudCB3YXMgZXhwZWN0ZWQuYCwgYEluc3RlYWQsICR7Y29tcG9uZW50TmFtZX0gZXhwZWN0cyBhbiBpbnB1dCBlbGVtZW50LmAsICcnLCBjb21wb25lbnROYW1lID09PSAndXNlQXV0b2NvbXBsZXRlJyA/ICdNYWtlIHN1cmUgeW91IGhhdmUgYm91bmQgZ2V0SW5wdXRQcm9wcyBjb3JyZWN0bHkgYW5kIHRoYXQgdGhlIG5vcm1hbCByZWYvZWZmZWN0IHJlc29sdXRpb25zIG9yZGVyIGlzIGd1YXJhbnRlZWQuJyA6ICdNYWtlIHN1cmUgeW91IGhhdmUgY3VzdG9taXplZCB0aGUgaW5wdXQgY29tcG9uZW50IGNvcnJlY3RseS4nXS5qb2luKCdcXG4nKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBbY29tcG9uZW50TmFtZV0pO1xuICB9XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3luY0hpZ2hsaWdodGVkSW5kZXgoKTtcbiAgfSwgW3N5bmNIaWdobGlnaHRlZEluZGV4XSk7XG4gIGNvbnN0IGhhbmRsZU9wZW4gPSBldmVudCA9PiB7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3BlblN0YXRlKHRydWUpO1xuICAgIHNldElucHV0UHJpc3RpbmUodHJ1ZSk7XG4gICAgaWYgKG9uT3Blbikge1xuICAgICAgb25PcGVuKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKGV2ZW50LCByZWFzb24pID0+IHtcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2V0T3BlblN0YXRlKGZhbHNlKTtcbiAgICBpZiAob25DbG9zZSkge1xuICAgICAgb25DbG9zZShldmVudCwgcmVhc29uKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZVZhbHVlID0gKGV2ZW50LCBuZXdWYWx1ZSwgcmVhc29uLCBkZXRhaWxzKSA9PiB7XG4gICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICBpZiAodmFsdWUubGVuZ3RoID09PSBuZXdWYWx1ZS5sZW5ndGggJiYgdmFsdWUuZXZlcnkoKHZhbCwgaSkgPT4gdmFsID09PSBuZXdWYWx1ZVtpXSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IG5ld1ZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UoZXZlbnQsIG5ld1ZhbHVlLCByZWFzb24sIGRldGFpbHMpO1xuICAgIH1cbiAgICBzZXRWYWx1ZVN0YXRlKG5ld1ZhbHVlKTtcbiAgfTtcbiAgY29uc3QgaXNUb3VjaCA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdE5ld1ZhbHVlID0gKGV2ZW50LCBvcHRpb24sIHJlYXNvblByb3AgPSAnc2VsZWN0T3B0aW9uJywgb3JpZ2luID0gJ29wdGlvbnMnKSA9PiB7XG4gICAgbGV0IHJlYXNvbiA9IHJlYXNvblByb3A7XG4gICAgbGV0IG5ld1ZhbHVlID0gb3B0aW9uO1xuICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgbmV3VmFsdWUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNsaWNlKCkgOiBbXTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBuZXdWYWx1ZS5maWx0ZXIodmFsID0+IGlzT3B0aW9uRXF1YWxUb1ZhbHVlKG9wdGlvbiwgdmFsKSk7XG4gICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBUaGUgXFxgaXNPcHRpb25FcXVhbFRvVmFsdWVcXGAgbWV0aG9kIG9mICR7Y29tcG9uZW50TmFtZX0gZG9lcyBub3QgaGFuZGxlIHRoZSBhcmd1bWVudHMgY29ycmVjdGx5LmAsIGBUaGUgY29tcG9uZW50IGV4cGVjdHMgYSBzaW5nbGUgdmFsdWUgdG8gbWF0Y2ggYSBnaXZlbiBvcHRpb24gYnV0IGZvdW5kICR7bWF0Y2hlcy5sZW5ndGh9IG1hdGNoZXMuYF0uam9pbignXFxuJykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtSW5kZXggPSBmaW5kSW5kZXgobmV3VmFsdWUsIHZhbHVlSXRlbSA9PiBpc09wdGlvbkVxdWFsVG9WYWx1ZShvcHRpb24sIHZhbHVlSXRlbSkpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgbmV3VmFsdWUucHVzaChvcHRpb24pO1xuICAgICAgfSBlbHNlIGlmIChvcmlnaW4gIT09ICdmcmVlU29sbycpIHtcbiAgICAgICAgbmV3VmFsdWUuc3BsaWNlKGl0ZW1JbmRleCwgMSk7XG4gICAgICAgIHJlYXNvbiA9ICdyZW1vdmVPcHRpb24nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXNldElucHV0VmFsdWUoZXZlbnQsIG5ld1ZhbHVlKTtcbiAgICBoYW5kbGVWYWx1ZShldmVudCwgbmV3VmFsdWUsIHJlYXNvbiwge1xuICAgICAgb3B0aW9uXG4gICAgfSk7XG4gICAgaWYgKCFkaXNhYmxlQ2xvc2VPblNlbGVjdCAmJiAoIWV2ZW50IHx8ICFldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5KSkge1xuICAgICAgaGFuZGxlQ2xvc2UoZXZlbnQsIHJlYXNvbik7XG4gICAgfVxuICAgIGlmIChibHVyT25TZWxlY3QgPT09IHRydWUgfHwgYmx1ck9uU2VsZWN0ID09PSAndG91Y2gnICYmIGlzVG91Y2guY3VycmVudCB8fCBibHVyT25TZWxlY3QgPT09ICdtb3VzZScgJiYgIWlzVG91Y2guY3VycmVudCkge1xuICAgICAgaW5wdXRSZWYuY3VycmVudC5ibHVyKCk7XG4gICAgfVxuICB9O1xuICBmdW5jdGlvbiB2YWxpZFRhZ0luZGV4KGluZGV4LCBkaXJlY3Rpb24pIHtcbiAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGxldCBuZXh0Rm9jdXMgPSBpbmRleDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gT3V0IG9mIHJhbmdlXG4gICAgICBpZiAoZGlyZWN0aW9uID09PSAnbmV4dCcgJiYgbmV4dEZvY3VzID09PSB2YWx1ZS5sZW5ndGggfHwgZGlyZWN0aW9uID09PSAncHJldmlvdXMnICYmIG5leHRGb2N1cyA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3B0aW9uID0gYW5jaG9yRWwucXVlcnlTZWxlY3RvcihgW2RhdGEtdGFnLWluZGV4PVwiJHtuZXh0Rm9jdXN9XCJdYCk7XG5cbiAgICAgIC8vIFNhbWUgbG9naWMgYXMgTWVudUxpc3QuanNcbiAgICAgIGlmICghb3B0aW9uIHx8ICFvcHRpb24uaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpIHx8IG9wdGlvbi5kaXNhYmxlZCB8fCBvcHRpb24uZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJykge1xuICAgICAgICBuZXh0Rm9jdXMgKz0gZGlyZWN0aW9uID09PSAnbmV4dCcgPyAxIDogLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV4dEZvY3VzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBoYW5kbGVGb2N1c1RhZyA9IChldmVudCwgZGlyZWN0aW9uKSA9PiB7XG4gICAgaWYgKCFtdWx0aXBsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gJycpIHtcbiAgICAgIGhhbmRsZUNsb3NlKGV2ZW50LCAndG9nZ2xlSW5wdXQnKTtcbiAgICB9XG4gICAgbGV0IG5leHRUYWcgPSBmb2N1c2VkVGFnO1xuICAgIGlmIChmb2N1c2VkVGFnID09PSAtMSkge1xuICAgICAgaWYgKGlucHV0VmFsdWUgPT09ICcnICYmIGRpcmVjdGlvbiA9PT0gJ3ByZXZpb3VzJykge1xuICAgICAgICBuZXh0VGFnID0gdmFsdWUubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dFRhZyArPSBkaXJlY3Rpb24gPT09ICduZXh0JyA/IDEgOiAtMTtcbiAgICAgIGlmIChuZXh0VGFnIDwgMCkge1xuICAgICAgICBuZXh0VGFnID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChuZXh0VGFnID09PSB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgbmV4dFRhZyA9IC0xO1xuICAgICAgfVxuICAgIH1cbiAgICBuZXh0VGFnID0gdmFsaWRUYWdJbmRleChuZXh0VGFnLCBkaXJlY3Rpb24pO1xuICAgIHNldEZvY3VzZWRUYWcobmV4dFRhZyk7XG4gICAgZm9jdXNUYWcobmV4dFRhZyk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUNsZWFyID0gZXZlbnQgPT4ge1xuICAgIGlnbm9yZUZvY3VzLmN1cnJlbnQgPSB0cnVlO1xuICAgIHNldElucHV0VmFsdWVTdGF0ZSgnJyk7XG4gICAgaWYgKG9uSW5wdXRDaGFuZ2UpIHtcbiAgICAgIG9uSW5wdXRDaGFuZ2UoZXZlbnQsICcnLCAnY2xlYXInKTtcbiAgICB9XG4gICAgaGFuZGxlVmFsdWUoZXZlbnQsIG11bHRpcGxlID8gW10gOiBudWxsLCAnY2xlYXInKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IG90aGVyID0+IGV2ZW50ID0+IHtcbiAgICBpZiAob3RoZXIub25LZXlEb3duKSB7XG4gICAgICBvdGhlci5vbktleURvd24oZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQuZGVmYXVsdE11aVByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZm9jdXNlZFRhZyAhPT0gLTEgJiYgWydBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCddLmluZGV4T2YoZXZlbnQua2V5KSA9PT0gLTEpIHtcbiAgICAgIHNldEZvY3VzZWRUYWcoLTEpO1xuICAgICAgZm9jdXNUYWcoLTEpO1xuICAgIH1cblxuICAgIC8vIFdhaXQgdW50aWwgSU1FIGlzIHNldHRsZWQuXG4gICAgaWYgKGV2ZW50LndoaWNoICE9PSAyMjkpIHtcbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgIGlmIChwb3B1cE9wZW4gJiYgaGFuZGxlSG9tZUVuZEtleXMpIHtcbiAgICAgICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsIG9mIHRoZSBwYWdlXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgY2hhbmdlSGlnaGxpZ2h0ZWRJbmRleCh7XG4gICAgICAgICAgICAgIGRpZmY6ICdzdGFydCcsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbjogJ25leHQnLFxuICAgICAgICAgICAgICByZWFzb246ICdrZXlib2FyZCcsXG4gICAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgICAgaWYgKHBvcHVwT3BlbiAmJiBoYW5kbGVIb21lRW5kS2V5cykge1xuICAgICAgICAgICAgLy8gUHJldmVudCBzY3JvbGwgb2YgdGhlIHBhZ2VcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjaGFuZ2VIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgICAgICAgICAgZGlmZjogJ2VuZCcsXG4gICAgICAgICAgICAgIGRpcmVjdGlvbjogJ3ByZXZpb3VzJyxcbiAgICAgICAgICAgICAgcmVhc29uOiAna2V5Ym9hcmQnLFxuICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdQYWdlVXAnOlxuICAgICAgICAgIC8vIFByZXZlbnQgc2Nyb2xsIG9mIHRoZSBwYWdlXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjaGFuZ2VIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgICAgICAgIGRpZmY6IC1wYWdlU2l6ZSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJ3ByZXZpb3VzJyxcbiAgICAgICAgICAgIHJlYXNvbjogJ2tleWJvYXJkJyxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaGFuZGxlT3BlbihldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1BhZ2VEb3duJzpcbiAgICAgICAgICAvLyBQcmV2ZW50IHNjcm9sbCBvZiB0aGUgcGFnZVxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgY2hhbmdlSGlnaGxpZ2h0ZWRJbmRleCh7XG4gICAgICAgICAgICBkaWZmOiBwYWdlU2l6ZSxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJ25leHQnLFxuICAgICAgICAgICAgcmVhc29uOiAna2V5Ym9hcmQnLFxuICAgICAgICAgICAgZXZlbnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBoYW5kbGVPcGVuKGV2ZW50KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAvLyBQcmV2ZW50IGN1cnNvciBtb3ZlXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBjaGFuZ2VIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgICAgICAgIGRpZmY6IDEsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICduZXh0JyxcbiAgICAgICAgICAgIHJlYXNvbjogJ2tleWJvYXJkJyxcbiAgICAgICAgICAgIGV2ZW50XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaGFuZGxlT3BlbihldmVudCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgIC8vIFByZXZlbnQgY3Vyc29yIG1vdmVcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGNoYW5nZUhpZ2hsaWdodGVkSW5kZXgoe1xuICAgICAgICAgICAgZGlmZjogLTEsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICdwcmV2aW91cycsXG4gICAgICAgICAgICByZWFzb246ICdrZXlib2FyZCcsXG4gICAgICAgICAgICBldmVudFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGhhbmRsZU9wZW4oZXZlbnQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgIGhhbmRsZUZvY3VzVGFnKGV2ZW50LCAncHJldmlvdXMnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgICAgaGFuZGxlRm9jdXNUYWcoZXZlbnQsICduZXh0Jyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICBpZiAoaGlnaGxpZ2h0ZWRJbmRleFJlZi5jdXJyZW50ICE9PSAtMSAmJiBwb3B1cE9wZW4pIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbiA9IGZpbHRlcmVkT3B0aW9uc1toaWdobGlnaHRlZEluZGV4UmVmLmN1cnJlbnRdO1xuICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBnZXRPcHRpb25EaXNhYmxlZCA/IGdldE9wdGlvbkRpc2FibGVkKG9wdGlvbikgOiBmYWxzZTtcblxuICAgICAgICAgICAgLy8gQXZvaWQgZWFybHkgZm9ybSB2YWxpZGF0aW9uLCBsZXQgdGhlIGVuZC11c2VycyBjb250aW51ZSBmaWxsaW5nIHRoZSBmb3JtLlxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3ROZXdWYWx1ZShldmVudCwgb3B0aW9uLCAnc2VsZWN0T3B0aW9uJyk7XG5cbiAgICAgICAgICAgIC8vIE1vdmUgdGhlIHNlbGVjdGlvbiB0byB0aGUgZW5kLlxuICAgICAgICAgICAgaWYgKGF1dG9Db21wbGV0ZSkge1xuICAgICAgICAgICAgICBpbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKGlucHV0UmVmLmN1cnJlbnQudmFsdWUubGVuZ3RoLCBpbnB1dFJlZi5jdXJyZW50LnZhbHVlLmxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChmcmVlU29sbyAmJiBpbnB1dFZhbHVlICE9PSAnJyAmJiBpbnB1dFZhbHVlSXNTZWxlY3RlZFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICAgIC8vIEFsbG93IHBlb3BsZSB0byBhZGQgbmV3IHZhbHVlcyBiZWZvcmUgdGhleSBzdWJtaXQgdGhlIGZvcm0uXG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3ROZXdWYWx1ZShldmVudCwgaW5wdXRWYWx1ZSwgJ2NyZWF0ZU9wdGlvbicsICdmcmVlU29sbycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICBpZiAocG9wdXBPcGVuKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBPcGVyYSB0byBleGl0IGZ1bGxzY3JlZW4gbW9kZS5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAvLyBBdm9pZCB0aGUgTW9kYWwgdG8gaGFuZGxlIHRoZSBldmVudC5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGFuZGxlQ2xvc2UoZXZlbnQsICdlc2NhcGUnKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNsZWFyT25Fc2NhcGUgJiYgKGlucHV0VmFsdWUgIT09ICcnIHx8IG11bHRpcGxlICYmIHZhbHVlLmxlbmd0aCA+IDApKSB7XG4gICAgICAgICAgICAvLyBBdm9pZCBPcGVyYSB0byBleGl0IGZ1bGxzY3JlZW4gbW9kZS5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAvLyBBdm9pZCB0aGUgTW9kYWwgdG8gaGFuZGxlIHRoZSBldmVudC5cbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgaGFuZGxlQ2xlYXIoZXZlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICBpZiAobXVsdGlwbGUgJiYgIXJlYWRPbmx5ICYmIGlucHV0VmFsdWUgPT09ICcnICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gZm9jdXNlZFRhZyA9PT0gLTEgPyB2YWx1ZS5sZW5ndGggLSAxIDogZm9jdXNlZFRhZztcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUuc2xpY2UoKTtcbiAgICAgICAgICAgIG5ld1ZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICBoYW5kbGVWYWx1ZShldmVudCwgbmV3VmFsdWUsICdyZW1vdmVPcHRpb24nLCB7XG4gICAgICAgICAgICAgIG9wdGlvbjogdmFsdWVbaW5kZXhdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgICAgaWYgKG11bHRpcGxlICYmICFyZWFkT25seSAmJiBpbnB1dFZhbHVlID09PSAnJyAmJiB2YWx1ZS5sZW5ndGggPiAwICYmIGZvY3VzZWRUYWcgIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IGZvY3VzZWRUYWc7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHZhbHVlLnNsaWNlKCk7XG4gICAgICAgICAgICBuZXdWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgaGFuZGxlVmFsdWUoZXZlbnQsIG5ld1ZhbHVlLCAncmVtb3ZlT3B0aW9uJywge1xuICAgICAgICAgICAgICBvcHRpb246IHZhbHVlW2luZGV4XVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlRm9jdXMgPSBldmVudCA9PiB7XG4gICAgc2V0Rm9jdXNlZCh0cnVlKTtcbiAgICBpZiAob3Blbk9uRm9jdXMgJiYgIWlnbm9yZUZvY3VzLmN1cnJlbnQpIHtcbiAgICAgIGhhbmRsZU9wZW4oZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IGV2ZW50ID0+IHtcbiAgICAvLyBJZ25vcmUgdGhlIGV2ZW50IHdoZW4gdXNpbmcgdGhlIHNjcm9sbGJhciB3aXRoIElFMTFcbiAgICBpZiAodW5zdGFibGVfaXNBY3RpdmVFbGVtZW50SW5MaXN0Ym94KGxpc3Rib3hSZWYpKSB7XG4gICAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNldEZvY3VzZWQoZmFsc2UpO1xuICAgIGZpcnN0Rm9jdXMuY3VycmVudCA9IHRydWU7XG4gICAgaWdub3JlRm9jdXMuY3VycmVudCA9IGZhbHNlO1xuICAgIGlmIChhdXRvU2VsZWN0ICYmIGhpZ2hsaWdodGVkSW5kZXhSZWYuY3VycmVudCAhPT0gLTEgJiYgcG9wdXBPcGVuKSB7XG4gICAgICBzZWxlY3ROZXdWYWx1ZShldmVudCwgZmlsdGVyZWRPcHRpb25zW2hpZ2hsaWdodGVkSW5kZXhSZWYuY3VycmVudF0sICdibHVyJyk7XG4gICAgfSBlbHNlIGlmIChhdXRvU2VsZWN0ICYmIGZyZWVTb2xvICYmIGlucHV0VmFsdWUgIT09ICcnKSB7XG4gICAgICBzZWxlY3ROZXdWYWx1ZShldmVudCwgaW5wdXRWYWx1ZSwgJ2JsdXInLCAnZnJlZVNvbG8nKTtcbiAgICB9IGVsc2UgaWYgKGNsZWFyT25CbHVyKSB7XG4gICAgICByZXNldElucHV0VmFsdWUoZXZlbnQsIHZhbHVlKTtcbiAgICB9XG4gICAgaGFuZGxlQ2xvc2UoZXZlbnQsICdibHVyJyk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUlucHV0Q2hhbmdlID0gZXZlbnQgPT4ge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIGlmIChpbnB1dFZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgc2V0SW5wdXRWYWx1ZVN0YXRlKG5ld1ZhbHVlKTtcbiAgICAgIHNldElucHV0UHJpc3RpbmUoZmFsc2UpO1xuICAgICAgaWYgKG9uSW5wdXRDaGFuZ2UpIHtcbiAgICAgICAgb25JbnB1dENoYW5nZShldmVudCwgbmV3VmFsdWUsICdpbnB1dCcpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV3VmFsdWUgPT09ICcnKSB7XG4gICAgICBpZiAoIWRpc2FibGVDbGVhcmFibGUgJiYgIW11bHRpcGxlKSB7XG4gICAgICAgIGhhbmRsZVZhbHVlKGV2ZW50LCBudWxsLCAnY2xlYXInKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlT3BlbihldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVPcHRpb25Nb3VzZU1vdmUgPSBldmVudCA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBOdW1iZXIoZXZlbnQuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtb3B0aW9uLWluZGV4JykpO1xuICAgIGlmIChoaWdobGlnaHRlZEluZGV4UmVmLmN1cnJlbnQgIT09IGluZGV4KSB7XG4gICAgICBzZXRIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGluZGV4LFxuICAgICAgICByZWFzb246ICdtb3VzZSdcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlT3B0aW9uVG91Y2hTdGFydCA9IGV2ZW50ID0+IHtcbiAgICBzZXRIaWdobGlnaHRlZEluZGV4KHtcbiAgICAgIGV2ZW50LFxuICAgICAgaW5kZXg6IE51bWJlcihldmVudC5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1vcHRpb24taW5kZXgnKSksXG4gICAgICByZWFzb246ICd0b3VjaCdcbiAgICB9KTtcbiAgICBpc1RvdWNoLmN1cnJlbnQgPSB0cnVlO1xuICB9O1xuICBjb25zdCBoYW5kbGVPcHRpb25DbGljayA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBpbmRleCA9IE51bWJlcihldmVudC5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1vcHRpb24taW5kZXgnKSk7XG4gICAgc2VsZWN0TmV3VmFsdWUoZXZlbnQsIGZpbHRlcmVkT3B0aW9uc1tpbmRleF0sICdzZWxlY3RPcHRpb24nKTtcbiAgICBpc1RvdWNoLmN1cnJlbnQgPSBmYWxzZTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlVGFnRGVsZXRlID0gaW5kZXggPT4gZXZlbnQgPT4ge1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdmFsdWUuc2xpY2UoKTtcbiAgICBuZXdWYWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGhhbmRsZVZhbHVlKGV2ZW50LCBuZXdWYWx1ZSwgJ3JlbW92ZU9wdGlvbicsIHtcbiAgICAgIG9wdGlvbjogdmFsdWVbaW5kZXhdXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZVBvcHVwSW5kaWNhdG9yID0gZXZlbnQgPT4ge1xuICAgIGlmIChvcGVuKSB7XG4gICAgICBoYW5kbGVDbG9zZShldmVudCwgJ3RvZ2dsZUlucHV0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZU9wZW4oZXZlbnQpO1xuICAgIH1cbiAgfTtcblxuICAvLyBQcmV2ZW50IGlucHV0IGJsdXIgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBjb21ib2JveFxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSBldmVudCA9PiB7XG4gICAgLy8gUHJldmVudCBmb2N1c2luZyB0aGUgaW5wdXQgaWYgY2xpY2sgaXMgYW55d2hlcmUgb3V0c2lkZSB0aGUgQXV0b2NvbXBsZXRlXG4gICAgaWYgKCFldmVudC5jdXJyZW50VGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2lkJykgIT09IGlkKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfTtcblxuICAvLyBGb2N1cyB0aGUgaW5wdXQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBjb21ib2JveFxuICBjb25zdCBoYW5kbGVDbGljayA9IGV2ZW50ID0+IHtcbiAgICAvLyBQcmV2ZW50IGZvY3VzaW5nIHRoZSBpbnB1dCBpZiBjbGljayBpcyBhbnl3aGVyZSBvdXRzaWRlIHRoZSBBdXRvY29tcGxldGVcbiAgICBpZiAoIWV2ZW50LmN1cnJlbnRUYXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnB1dFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgaWYgKHNlbGVjdE9uRm9jdXMgJiYgZmlyc3RGb2N1cy5jdXJyZW50ICYmIGlucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kIC0gaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCkge1xuICAgICAgaW5wdXRSZWYuY3VycmVudC5zZWxlY3QoKTtcbiAgICB9XG4gICAgZmlyc3RGb2N1cy5jdXJyZW50ID0gZmFsc2U7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUlucHV0TW91c2VEb3duID0gZXZlbnQgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSAnJyB8fCAhb3Blbikge1xuICAgICAgaGFuZGxlUG9wdXBJbmRpY2F0b3IoZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgbGV0IGRpcnR5ID0gZnJlZVNvbG8gJiYgaW5wdXRWYWx1ZS5sZW5ndGggPiAwO1xuICBkaXJ0eSA9IGRpcnR5IHx8IChtdWx0aXBsZSA/IHZhbHVlLmxlbmd0aCA+IDAgOiB2YWx1ZSAhPT0gbnVsbCk7XG4gIGxldCBncm91cGVkT3B0aW9ucyA9IGZpbHRlcmVkT3B0aW9ucztcbiAgaWYgKGdyb3VwQnkpIHtcbiAgICAvLyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Yga2V5IGFuZCBpbmRleGVzIGluIHRoZSByZXN1bHQgYXJyYXlcbiAgICBjb25zdCBpbmRleEJ5ID0gbmV3IE1hcCgpO1xuICAgIGxldCB3YXJuID0gZmFsc2U7XG4gICAgZ3JvdXBlZE9wdGlvbnMgPSBmaWx0ZXJlZE9wdGlvbnMucmVkdWNlKChhY2MsIG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBCeShvcHRpb24pO1xuICAgICAgaWYgKGFjYy5sZW5ndGggPiAwICYmIGFjY1thY2MubGVuZ3RoIC0gMV0uZ3JvdXAgPT09IGdyb3VwKSB7XG4gICAgICAgIGFjY1thY2MubGVuZ3RoIC0gMV0ub3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmIChpbmRleEJ5LmdldChncm91cCkgJiYgIXdhcm4pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTVVJOiBUaGUgb3B0aW9ucyBwcm92aWRlZCBjb21iaW5lZCB3aXRoIHRoZSBcXGBncm91cEJ5XFxgIG1ldGhvZCBvZiAke2NvbXBvbmVudE5hbWV9IHJldHVybnMgZHVwbGljYXRlZCBoZWFkZXJzLmAsICdZb3UgY2FuIHNvbHZlIHRoZSBpc3N1ZSBieSBzb3J0aW5nIHRoZSBvcHRpb25zIHdpdGggdGhlIG91dHB1dCBvZiBgZ3JvdXBCeWAuJyk7XG4gICAgICAgICAgICB3YXJuID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaW5kZXhCeS5zZXQoZ3JvdXAsIHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGFjYy5wdXNoKHtcbiAgICAgICAgICBrZXk6IGluZGV4LFxuICAgICAgICAgIGluZGV4LFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgIG9wdGlvbnM6IFtvcHRpb25dXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSk7XG4gIH1cbiAgaWYgKGRpc2FibGVkUHJvcCAmJiBmb2N1c2VkKSB7XG4gICAgaGFuZGxlQmx1cigpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZ2V0Um9vdFByb3BzOiAob3RoZXIgPSB7fSkgPT4gX2V4dGVuZHMoe1xuICAgICAgJ2FyaWEtb3ducyc6IGxpc3Rib3hBdmFpbGFibGUgPyBgJHtpZH0tbGlzdGJveGAgOiBudWxsXG4gICAgfSwgb3RoZXIsIHtcbiAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93bihvdGhlciksXG4gICAgICBvbk1vdXNlRG93bjogaGFuZGxlTW91c2VEb3duLFxuICAgICAgb25DbGljazogaGFuZGxlQ2xpY2tcbiAgICB9KSxcbiAgICBnZXRJbnB1dExhYmVsUHJvcHM6ICgpID0+ICh7XG4gICAgICBpZDogYCR7aWR9LWxhYmVsYCxcbiAgICAgIGh0bWxGb3I6IGlkXG4gICAgfSksXG4gICAgZ2V0SW5wdXRQcm9wczogKCkgPT4gKHtcbiAgICAgIGlkLFxuICAgICAgdmFsdWU6IGlucHV0VmFsdWUsXG4gICAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICAgIG9uQ2hhbmdlOiBoYW5kbGVJbnB1dENoYW5nZSxcbiAgICAgIG9uTW91c2VEb3duOiBoYW5kbGVJbnB1dE1vdXNlRG93bixcbiAgICAgIC8vIGlmIG9wZW4gdGhlbiB0aGlzIGlzIGhhbmRsZWQgaW1wZXJhdGl2ZWx5IHNvIGRvbid0IGxldCByZWFjdCBvdmVycmlkZVxuICAgICAgLy8gb25seSBoYXZlIGFuIG9waW5pb24gYWJvdXQgdGhpcyB3aGVuIGNsb3NlZFxuICAgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IHBvcHVwT3BlbiA/ICcnIDogbnVsbCxcbiAgICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6IGF1dG9Db21wbGV0ZSA/ICdib3RoJyA6ICdsaXN0JyxcbiAgICAgICdhcmlhLWNvbnRyb2xzJzogbGlzdGJveEF2YWlsYWJsZSA/IGAke2lkfS1saXN0Ym94YCA6IHVuZGVmaW5lZCxcbiAgICAgICdhcmlhLWV4cGFuZGVkJzogbGlzdGJveEF2YWlsYWJsZSxcbiAgICAgIC8vIERpc2FibGUgYnJvd3NlcidzIHN1Z2dlc3Rpb24gdGhhdCBtaWdodCBvdmVybGFwIHdpdGggdGhlIHBvcHVwLlxuICAgICAgLy8gSGFuZGxlIGF1dG9jb21wbGV0ZSBidXQgbm90IGF1dG9maWxsLlxuICAgICAgYXV0b0NvbXBsZXRlOiAnb2ZmJyxcbiAgICAgIHJlZjogaW5wdXRSZWYsXG4gICAgICBhdXRvQ2FwaXRhbGl6ZTogJ25vbmUnLFxuICAgICAgc3BlbGxDaGVjazogJ2ZhbHNlJyxcbiAgICAgIHJvbGU6ICdjb21ib2JveCcsXG4gICAgICBkaXNhYmxlZDogZGlzYWJsZWRQcm9wXG4gICAgfSksXG4gICAgZ2V0Q2xlYXJQcm9wczogKCkgPT4gKHtcbiAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsZWFyXG4gICAgfSksXG4gICAgZ2V0UG9wdXBJbmRpY2F0b3JQcm9wczogKCkgPT4gKHtcbiAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZVBvcHVwSW5kaWNhdG9yXG4gICAgfSksXG4gICAgZ2V0VGFnUHJvcHM6ICh7XG4gICAgICBpbmRleFxuICAgIH0pID0+IF9leHRlbmRzKHtcbiAgICAgIGtleTogaW5kZXgsXG4gICAgICAnZGF0YS10YWctaW5kZXgnOiBpbmRleCxcbiAgICAgIHRhYkluZGV4OiAtMVxuICAgIH0sICFyZWFkT25seSAmJiB7XG4gICAgICBvbkRlbGV0ZTogaGFuZGxlVGFnRGVsZXRlKGluZGV4KVxuICAgIH0pLFxuICAgIGdldExpc3Rib3hQcm9wczogKCkgPT4gKHtcbiAgICAgIHJvbGU6ICdsaXN0Ym94JyxcbiAgICAgIGlkOiBgJHtpZH0tbGlzdGJveGAsXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogYCR7aWR9LWxhYmVsYCxcbiAgICAgIHJlZjogaGFuZGxlTGlzdGJveFJlZixcbiAgICAgIG9uTW91c2VEb3duOiBldmVudCA9PiB7XG4gICAgICAgIC8vIFByZXZlbnQgYmx1clxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIGdldE9wdGlvblByb3BzOiAoe1xuICAgICAgaW5kZXgsXG4gICAgICBvcHRpb25cbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IChtdWx0aXBsZSA/IHZhbHVlIDogW3ZhbHVlXSkuc29tZSh2YWx1ZTIgPT4gdmFsdWUyICE9IG51bGwgJiYgaXNPcHRpb25FcXVhbFRvVmFsdWUob3B0aW9uLCB2YWx1ZTIpKTtcbiAgICAgIGNvbnN0IGRpc2FibGVkID0gZ2V0T3B0aW9uRGlzYWJsZWQgPyBnZXRPcHRpb25EaXNhYmxlZChvcHRpb24pIDogZmFsc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGdldE9wdGlvbkxhYmVsKG9wdGlvbiksXG4gICAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgICAgcm9sZTogJ29wdGlvbicsXG4gICAgICAgIGlkOiBgJHtpZH0tb3B0aW9uLSR7aW5kZXh9YCxcbiAgICAgICAgb25Nb3VzZU1vdmU6IGhhbmRsZU9wdGlvbk1vdXNlTW92ZSxcbiAgICAgICAgb25DbGljazogaGFuZGxlT3B0aW9uQ2xpY2ssXG4gICAgICAgIG9uVG91Y2hTdGFydDogaGFuZGxlT3B0aW9uVG91Y2hTdGFydCxcbiAgICAgICAgJ2RhdGEtb3B0aW9uLWluZGV4JzogaW5kZXgsXG4gICAgICAgICdhcmlhLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgICAgICdhcmlhLXNlbGVjdGVkJzogc2VsZWN0ZWRcbiAgICAgIH07XG4gICAgfSxcbiAgICBpZCxcbiAgICBpbnB1dFZhbHVlLFxuICAgIHZhbHVlLFxuICAgIGRpcnR5LFxuICAgIGV4cGFuZGVkOiBwb3B1cE9wZW4gJiYgYW5jaG9yRWwsXG4gICAgcG9wdXBPcGVuLFxuICAgIGZvY3VzZWQ6IGZvY3VzZWQgfHwgZm9jdXNlZFRhZyAhPT0gLTEsXG4gICAgYW5jaG9yRWwsXG4gICAgc2V0QW5jaG9yRWwsXG4gICAgZm9jdXNlZFRhZyxcbiAgICBncm91cGVkT3B0aW9uc1xuICB9O1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgdXNlUHJldmlvdXNQcm9wcyA9IHZhbHVlID0+IHtcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmKHt9KTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZi5jdXJyZW50O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZVByZXZpb3VzUHJvcHM7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpc3RTdWJoZWFkZXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUxpc3RTdWJoZWFkZXInLCBzbG90KTtcbn1cbmNvbnN0IGxpc3RTdWJoZWFkZXJDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpTGlzdFN1YmhlYWRlcicsIFsncm9vdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JJbmhlcml0JywgJ2d1dHRlcnMnLCAnaW5zZXQnLCAnc3RpY2t5J10pO1xuZXhwb3J0IGRlZmF1bHQgbGlzdFN1YmhlYWRlckNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJkaXNhYmxlR3V0dGVyc1wiLCBcImRpc2FibGVTdGlja3lcIiwgXCJpbnNldFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB7IGdldExpc3RTdWJoZWFkZXJVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2xpc3RTdWJoZWFkZXJDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlR3V0dGVycyxcbiAgICBpbnNldCxcbiAgICBkaXNhYmxlU3RpY2t5XG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBjb2xvciAhPT0gJ2RlZmF1bHQnICYmIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgIWRpc2FibGVHdXR0ZXJzICYmICdndXR0ZXJzJywgaW5zZXQgJiYgJ2luc2V0JywgIWRpc2FibGVTdGlja3kgJiYgJ3N0aWNreSddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0TGlzdFN1YmhlYWRlclV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgTGlzdFN1YmhlYWRlclJvb3QgPSBzdHlsZWQoJ2xpJywge1xuICBuYW1lOiAnTXVpTGlzdFN1YmhlYWRlcicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnZGVmYXVsdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgIW93bmVyU3RhdGUuZGlzYWJsZUd1dHRlcnMgJiYgc3R5bGVzLmd1dHRlcnMsIG93bmVyU3RhdGUuaW5zZXQgJiYgc3R5bGVzLmluc2V0LCAhb3duZXJTdGF0ZS5kaXNhYmxlU3RpY2t5ICYmIHN0eWxlcy5zdGlja3ldO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgbGluZUhlaWdodDogJzQ4cHgnLFxuICBsaXN0U3R5bGU6ICdub25lJyxcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LFxuICBmb250RmFtaWx5OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRGYW1pbHksXG4gIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bSxcbiAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxNClcbn0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdwcmltYXJ5JyAmJiB7XG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5wcmltYXJ5Lm1haW5cbn0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gIGNvbG9yOiAnaW5oZXJpdCdcbn0sICFvd25lclN0YXRlLmRpc2FibGVHdXR0ZXJzICYmIHtcbiAgcGFkZGluZ0xlZnQ6IDE2LFxuICBwYWRkaW5nUmlnaHQ6IDE2XG59LCBvd25lclN0YXRlLmluc2V0ICYmIHtcbiAgcGFkZGluZ0xlZnQ6IDcyXG59LCAhb3duZXJTdGF0ZS5kaXNhYmxlU3RpY2t5ICYmIHtcbiAgcG9zaXRpb246ICdzdGlja3knLFxuICB0b3A6IDAsXG4gIHpJbmRleDogMSxcbiAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5iYWNrZ3JvdW5kLnBhcGVyXG59KSk7XG5jb25zdCBMaXN0U3ViaGVhZGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTGlzdFN1YmhlYWRlcihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpTGlzdFN1YmhlYWRlcidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbG9yID0gJ2RlZmF1bHQnLFxuICAgICAgY29tcG9uZW50ID0gJ2xpJyxcbiAgICAgIGRpc2FibGVHdXR0ZXJzID0gZmFsc2UsXG4gICAgICBkaXNhYmxlU3RpY2t5ID0gZmFsc2UsXG4gICAgICBpbnNldCA9IGZhbHNlXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZGlzYWJsZUd1dHRlcnMsXG4gICAgZGlzYWJsZVN0aWNreSxcbiAgICBpbnNldFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTGlzdFN1YmhlYWRlclJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcmVmOiByZWYsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZVxuICB9LCBvdGhlcikpO1xufSk7XG5MaXN0U3ViaGVhZGVyLm11aVNraXBMaXN0SGlnaGxpZ2h0ID0gdHJ1ZTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IExpc3RTdWJoZWFkZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC4gSXQgc3VwcG9ydHMgdGhvc2UgdGhlbWUgY29sb3JzIHRoYXQgbWFrZSBzZW5zZSBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcy5vbmVPZihbJ2RlZmF1bHQnLCAnaW5oZXJpdCcsICdwcmltYXJ5J10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBMaXN0IFN1YmhlYWRlciB3aWxsIG5vdCBoYXZlIGd1dHRlcnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlR3V0dGVyczogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBMaXN0IFN1YmhlYWRlciB3aWxsIG5vdCBzdGljayB0byB0aGUgdG9wIGR1cmluZyBzY3JvbGwuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlU3RpY2t5OiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIExpc3QgU3ViaGVhZGVyIGlzIGluZGVudGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5zZXQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgTGlzdFN1YmhlYWRlcjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0b2NvbXBsZXRlVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlBdXRvY29tcGxldGUnLCBzbG90KTtcbn1cbmNvbnN0IGF1dG9jb21wbGV0ZUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlBdXRvY29tcGxldGUnLCBbJ3Jvb3QnLCAnZXhwYW5kZWQnLCAnZnVsbFdpZHRoJywgJ2ZvY3VzZWQnLCAnZm9jdXNWaXNpYmxlJywgJ3RhZycsICd0YWdTaXplU21hbGwnLCAndGFnU2l6ZU1lZGl1bScsICdoYXNQb3B1cEljb24nLCAnaGFzQ2xlYXJJY29uJywgJ2lucHV0Um9vdCcsICdpbnB1dCcsICdpbnB1dEZvY3VzZWQnLCAnZW5kQWRvcm5tZW50JywgJ2NsZWFySW5kaWNhdG9yJywgJ3BvcHVwSW5kaWNhdG9yJywgJ3BvcHVwSW5kaWNhdG9yT3BlbicsICdwb3BwZXInLCAncG9wcGVyRGlzYWJsZVBvcnRhbCcsICdwYXBlcicsICdsaXN0Ym94JywgJ2xvYWRpbmcnLCAnbm9PcHRpb25zJywgJ29wdGlvbicsICdncm91cExhYmVsJywgJ2dyb3VwVWwnXSk7XG5leHBvcnQgZGVmYXVsdCBhdXRvY29tcGxldGVDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbnZhciBfQ2xlYXJJY29uLCBfQXJyb3dEcm9wRG93bkljb247XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhdXRvQ29tcGxldGVcIiwgXCJhdXRvSGlnaGxpZ2h0XCIsIFwiYXV0b1NlbGVjdFwiLCBcImJsdXJPblNlbGVjdFwiLCBcIkNoaXBQcm9wc1wiLCBcImNsYXNzTmFtZVwiLCBcImNsZWFySWNvblwiLCBcImNsZWFyT25CbHVyXCIsIFwiY2xlYXJPbkVzY2FwZVwiLCBcImNsZWFyVGV4dFwiLCBcImNsb3NlVGV4dFwiLCBcImNvbXBvbmVudHNQcm9wc1wiLCBcImRlZmF1bHRWYWx1ZVwiLCBcImRpc2FibGVDbGVhcmFibGVcIiwgXCJkaXNhYmxlQ2xvc2VPblNlbGVjdFwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZWRJdGVtc0ZvY3VzYWJsZVwiLCBcImRpc2FibGVMaXN0V3JhcFwiLCBcImRpc2FibGVQb3J0YWxcIiwgXCJmaWx0ZXJPcHRpb25zXCIsIFwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zXCIsIFwiZm9yY2VQb3B1cEljb25cIiwgXCJmcmVlU29sb1wiLCBcImZ1bGxXaWR0aFwiLCBcImdldExpbWl0VGFnc1RleHRcIiwgXCJnZXRPcHRpb25EaXNhYmxlZFwiLCBcImdldE9wdGlvbkxhYmVsXCIsIFwiaXNPcHRpb25FcXVhbFRvVmFsdWVcIiwgXCJncm91cEJ5XCIsIFwiaGFuZGxlSG9tZUVuZEtleXNcIiwgXCJpZFwiLCBcImluY2x1ZGVJbnB1dEluTGlzdFwiLCBcImlucHV0VmFsdWVcIiwgXCJsaW1pdFRhZ3NcIiwgXCJMaXN0Ym94Q29tcG9uZW50XCIsIFwiTGlzdGJveFByb3BzXCIsIFwibG9hZGluZ1wiLCBcImxvYWRpbmdUZXh0XCIsIFwibXVsdGlwbGVcIiwgXCJub09wdGlvbnNUZXh0XCIsIFwib25DaGFuZ2VcIiwgXCJvbkNsb3NlXCIsIFwib25IaWdobGlnaHRDaGFuZ2VcIiwgXCJvbklucHV0Q2hhbmdlXCIsIFwib25PcGVuXCIsIFwib3BlblwiLCBcIm9wZW5PbkZvY3VzXCIsIFwib3BlblRleHRcIiwgXCJvcHRpb25zXCIsIFwiUGFwZXJDb21wb25lbnRcIiwgXCJQb3BwZXJDb21wb25lbnRcIiwgXCJwb3B1cEljb25cIiwgXCJyZWFkT25seVwiLCBcInJlbmRlckdyb3VwXCIsIFwicmVuZGVySW5wdXRcIiwgXCJyZW5kZXJPcHRpb25cIiwgXCJyZW5kZXJUYWdzXCIsIFwic2VsZWN0T25Gb2N1c1wiLCBcInNpemVcIiwgXCJzbG90UHJvcHNcIiwgXCJ2YWx1ZVwiXSxcbiAgX2V4Y2x1ZGVkMiA9IFtcInJlZlwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzLCBpbnRlZ2VyUHJvcFR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzLCB1c2VBdXRvY29tcGxldGUsIGNyZWF0ZUZpbHRlck9wdGlvbnMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUG9wcGVyIGZyb20gJy4uL1BvcHBlcic7XG5pbXBvcnQgTGlzdFN1YmhlYWRlciBmcm9tICcuLi9MaXN0U3ViaGVhZGVyJztcbmltcG9ydCBQYXBlciBmcm9tICcuLi9QYXBlcic7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICcuLi9JY29uQnV0dG9uJztcbmltcG9ydCBDaGlwIGZyb20gJy4uL0NoaXAnO1xuaW1wb3J0IGlucHV0Q2xhc3NlcyBmcm9tICcuLi9JbnB1dC9pbnB1dENsYXNzZXMnO1xuaW1wb3J0IGlucHV0QmFzZUNsYXNzZXMgZnJvbSAnLi4vSW5wdXRCYXNlL2lucHV0QmFzZUNsYXNzZXMnO1xuaW1wb3J0IG91dGxpbmVkSW5wdXRDbGFzc2VzIGZyb20gJy4uL091dGxpbmVkSW5wdXQvb3V0bGluZWRJbnB1dENsYXNzZXMnO1xuaW1wb3J0IGZpbGxlZElucHV0Q2xhc3NlcyBmcm9tICcuLi9GaWxsZWRJbnB1dC9maWxsZWRJbnB1dENsYXNzZXMnO1xuaW1wb3J0IENsZWFySWNvbiBmcm9tICcuLi9pbnRlcm5hbC9zdmctaWNvbnMvQ2xvc2UnO1xuaW1wb3J0IEFycm93RHJvcERvd25JY29uIGZyb20gJy4uL2ludGVybmFsL3N2Zy1pY29ucy9BcnJvd0Ryb3BEb3duJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgYXV0b2NvbXBsZXRlQ2xhc3NlcywgeyBnZXRBdXRvY29tcGxldGVVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2F1dG9jb21wbGV0ZUNsYXNzZXMnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlUG9ydGFsLFxuICAgIGV4cGFuZGVkLFxuICAgIGZvY3VzZWQsXG4gICAgZnVsbFdpZHRoLFxuICAgIGhhc0NsZWFySWNvbixcbiAgICBoYXNQb3B1cEljb24sXG4gICAgaW5wdXRGb2N1c2VkLFxuICAgIHBvcHVwT3BlbixcbiAgICBzaXplXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBleHBhbmRlZCAmJiAnZXhwYW5kZWQnLCBmb2N1c2VkICYmICdmb2N1c2VkJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnLCBoYXNDbGVhckljb24gJiYgJ2hhc0NsZWFySWNvbicsIGhhc1BvcHVwSWNvbiAmJiAnaGFzUG9wdXBJY29uJ10sXG4gICAgaW5wdXRSb290OiBbJ2lucHV0Um9vdCddLFxuICAgIGlucHV0OiBbJ2lucHV0JywgaW5wdXRGb2N1c2VkICYmICdpbnB1dEZvY3VzZWQnXSxcbiAgICB0YWc6IFsndGFnJywgYHRhZ1NpemUke2NhcGl0YWxpemUoc2l6ZSl9YF0sXG4gICAgZW5kQWRvcm5tZW50OiBbJ2VuZEFkb3JubWVudCddLFxuICAgIGNsZWFySW5kaWNhdG9yOiBbJ2NsZWFySW5kaWNhdG9yJ10sXG4gICAgcG9wdXBJbmRpY2F0b3I6IFsncG9wdXBJbmRpY2F0b3InLCBwb3B1cE9wZW4gJiYgJ3BvcHVwSW5kaWNhdG9yT3BlbiddLFxuICAgIHBvcHBlcjogWydwb3BwZXInLCBkaXNhYmxlUG9ydGFsICYmICdwb3BwZXJEaXNhYmxlUG9ydGFsJ10sXG4gICAgcGFwZXI6IFsncGFwZXInXSxcbiAgICBsaXN0Ym94OiBbJ2xpc3Rib3gnXSxcbiAgICBsb2FkaW5nOiBbJ2xvYWRpbmcnXSxcbiAgICBub09wdGlvbnM6IFsnbm9PcHRpb25zJ10sXG4gICAgb3B0aW9uOiBbJ29wdGlvbiddLFxuICAgIGdyb3VwTGFiZWw6IFsnZ3JvdXBMYWJlbCddLFxuICAgIGdyb3VwVWw6IFsnZ3JvdXBVbCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0QXV0b2NvbXBsZXRlVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBBdXRvY29tcGxldGVSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlBdXRvY29tcGxldGUnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgZnVsbFdpZHRoLFxuICAgICAgaGFzQ2xlYXJJY29uLFxuICAgICAgaGFzUG9wdXBJY29uLFxuICAgICAgaW5wdXRGb2N1c2VkLFxuICAgICAgc2l6ZVxuICAgIH0gPSBvd25lclN0YXRlO1xuICAgIHJldHVybiBbe1xuICAgICAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMudGFnfWBdOiBzdHlsZXMudGFnXG4gICAgfSwge1xuICAgICAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMudGFnfWBdOiBzdHlsZXNbYHRhZ1NpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgICB9LCB7XG4gICAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5pbnB1dFJvb3R9YF06IHN0eWxlcy5pbnB1dFJvb3RcbiAgICB9LCB7XG4gICAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5pbnB1dH1gXTogc3R5bGVzLmlucHV0XG4gICAgfSwge1xuICAgICAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaW5wdXR9YF06IGlucHV0Rm9jdXNlZCAmJiBzdHlsZXMuaW5wdXRGb2N1c2VkXG4gICAgfSwgc3R5bGVzLnJvb3QsIGZ1bGxXaWR0aCAmJiBzdHlsZXMuZnVsbFdpZHRoLCBoYXNQb3B1cEljb24gJiYgc3R5bGVzLmhhc1BvcHVwSWNvbiwgaGFzQ2xlYXJJY29uICYmIHN0eWxlcy5oYXNDbGVhckljb25dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIFtgJi4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuZm9jdXNlZH0gLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5jbGVhckluZGljYXRvcn1gXToge1xuICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xuICB9LFxuICAvKiBBdm9pZCBkb3VibGUgdGFwIGlzc3VlIG9uIGlPUyAqL1xuICAnQG1lZGlhIChwb2ludGVyOiBmaW5lKSc6IHtcbiAgICBbYCY6aG92ZXIgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5jbGVhckluZGljYXRvcn1gXToge1xuICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnXG4gICAgfVxuICB9XG59LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gIHdpZHRoOiAnMTAwJSdcbn0sIHtcbiAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMudGFnfWBdOiBfZXh0ZW5kcyh7XG4gICAgbWFyZ2luOiAzLFxuICAgIG1heFdpZHRoOiAnY2FsYygxMDAlIC0gNnB4KSdcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgICBtYXJnaW46IDIsXG4gICAgbWF4V2lkdGg6ICdjYWxjKDEwMCUgLSA0cHgpJ1xuICB9KSxcbiAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaW5wdXRSb290fWBdOiB7XG4gICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICBbYC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzUG9wdXBJY29ufSYsIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzQ2xlYXJJY29ufSZgXToge1xuICAgICAgcGFkZGluZ1JpZ2h0OiAyNiArIDRcbiAgICB9LFxuICAgIFtgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5oYXNQb3B1cEljb259LiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5oYXNDbGVhckljb259JmBdOiB7XG4gICAgICBwYWRkaW5nUmlnaHQ6IDUyICsgNFxuICAgIH0sXG4gICAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaW5wdXR9YF06IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgbWluV2lkdGg6IDMwXG4gICAgfVxuICB9LFxuICBbYCYgLiR7aW5wdXRDbGFzc2VzLnJvb3R9YF06IHtcbiAgICBwYWRkaW5nQm90dG9tOiAxLFxuICAgICcmIC5NdWlJbnB1dC1pbnB1dCc6IHtcbiAgICAgIHBhZGRpbmc6ICc0cHggNHB4IDRweCAwcHgnXG4gICAgfVxuICB9LFxuICBbYCYgLiR7aW5wdXRDbGFzc2VzLnJvb3R9LiR7aW5wdXRCYXNlQ2xhc3Nlcy5zaXplU21hbGx9YF06IHtcbiAgICBbYCYgLiR7aW5wdXRDbGFzc2VzLmlucHV0fWBdOiB7XG4gICAgICBwYWRkaW5nOiAnMnB4IDRweCAzcHggMCdcbiAgICB9XG4gIH0sXG4gIFtgJiAuJHtvdXRsaW5lZElucHV0Q2xhc3Nlcy5yb290fWBdOiB7XG4gICAgcGFkZGluZzogOSxcbiAgICBbYC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzUG9wdXBJY29ufSYsIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzQ2xlYXJJY29ufSZgXToge1xuICAgICAgcGFkZGluZ1JpZ2h0OiAyNiArIDQgKyA5XG4gICAgfSxcbiAgICBbYC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzUG9wdXBJY29ufS4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzQ2xlYXJJY29ufSZgXToge1xuICAgICAgcGFkZGluZ1JpZ2h0OiA1MiArIDQgKyA5XG4gICAgfSxcbiAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5pbnB1dH1gXToge1xuICAgICAgcGFkZGluZzogJzcuNXB4IDRweCA3LjVweCA1cHgnXG4gICAgfSxcbiAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5lbmRBZG9ybm1lbnR9YF06IHtcbiAgICAgIHJpZ2h0OiA5XG4gICAgfVxuICB9LFxuICBbYCYgLiR7b3V0bGluZWRJbnB1dENsYXNzZXMucm9vdH0uJHtpbnB1dEJhc2VDbGFzc2VzLnNpemVTbWFsbH1gXToge1xuICAgIC8vIERvbid0IHNwZWNpZnkgcGFkZGluZ1JpZ2h0LCBhcyBpdCBvdmVycmlkZXMgdGhlIGRlZmF1bHQgdmFsdWUgc2V0IHdoZW4gdGhlcmUgaXMgb25seVxuICAgIC8vIG9uZSBvZiB0aGUgcG9wdXAgb3IgY2xlYXIgaWNvbiBhcyB0aGUgc3BlY2lmaWNpdHkgaXMgZXF1YWwgc28gdGhlIGxhdHRlciBvbmUgd2luc1xuICAgIHBhZGRpbmdUb3A6IDYsXG4gICAgcGFkZGluZ0JvdHRvbTogNixcbiAgICBwYWRkaW5nTGVmdDogNixcbiAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5pbnB1dH1gXToge1xuICAgICAgcGFkZGluZzogJzIuNXB4IDRweCAyLjVweCA4cHgnXG4gICAgfVxuICB9LFxuICBbYCYgLiR7ZmlsbGVkSW5wdXRDbGFzc2VzLnJvb3R9YF06IHtcbiAgICBwYWRkaW5nVG9wOiAxOSxcbiAgICBwYWRkaW5nTGVmdDogOCxcbiAgICBbYC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzUG9wdXBJY29ufSYsIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzQ2xlYXJJY29ufSZgXToge1xuICAgICAgcGFkZGluZ1JpZ2h0OiAyNiArIDQgKyA5XG4gICAgfSxcbiAgICBbYC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzUG9wdXBJY29ufS4ke2F1dG9jb21wbGV0ZUNsYXNzZXMuaGFzQ2xlYXJJY29ufSZgXToge1xuICAgICAgcGFkZGluZ1JpZ2h0OiA1MiArIDQgKyA5XG4gICAgfSxcbiAgICBbYCYgLiR7ZmlsbGVkSW5wdXRDbGFzc2VzLmlucHV0fWBdOiB7XG4gICAgICBwYWRkaW5nOiAnN3B4IDRweCdcbiAgICB9LFxuICAgIFtgJiAuJHthdXRvY29tcGxldGVDbGFzc2VzLmVuZEFkb3JubWVudH1gXToge1xuICAgICAgcmlnaHQ6IDlcbiAgICB9XG4gIH0sXG4gIFtgJiAuJHtmaWxsZWRJbnB1dENsYXNzZXMucm9vdH0uJHtpbnB1dEJhc2VDbGFzc2VzLnNpemVTbWFsbH1gXToge1xuICAgIHBhZGRpbmdCb3R0b206IDEsXG4gICAgW2AmIC4ke2ZpbGxlZElucHV0Q2xhc3Nlcy5pbnB1dH1gXToge1xuICAgICAgcGFkZGluZzogJzIuNXB4IDRweCdcbiAgICB9XG4gIH0sXG4gIFtgJiAuJHtpbnB1dEJhc2VDbGFzc2VzLmhpZGRlbkxhYmVsfWBdOiB7XG4gICAgcGFkZGluZ1RvcDogOFxuICB9LFxuICBbYCYgLiR7ZmlsbGVkSW5wdXRDbGFzc2VzLnJvb3R9LiR7aW5wdXRCYXNlQ2xhc3Nlcy5oaWRkZW5MYWJlbH1gXToge1xuICAgIHBhZGRpbmdUb3A6IDAsXG4gICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5pbnB1dH1gXToge1xuICAgICAgcGFkZGluZ1RvcDogMTYsXG4gICAgICBwYWRkaW5nQm90dG9tOiAxN1xuICAgIH1cbiAgfSxcbiAgW2AmIC4ke2ZpbGxlZElucHV0Q2xhc3Nlcy5yb290fS4ke2lucHV0QmFzZUNsYXNzZXMuaGlkZGVuTGFiZWx9LiR7aW5wdXRCYXNlQ2xhc3Nlcy5zaXplU21hbGx9YF06IHtcbiAgICBbYCYgLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5pbnB1dH1gXToge1xuICAgICAgcGFkZGluZ1RvcDogOCxcbiAgICAgIHBhZGRpbmdCb3R0b206IDlcbiAgICB9XG4gIH0sXG4gIFtgJiAuJHthdXRvY29tcGxldGVDbGFzc2VzLmlucHV0fWBdOiBfZXh0ZW5kcyh7XG4gICAgZmxleEdyb3c6IDEsXG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIG9wYWNpdHk6IDBcbiAgfSwgb3duZXJTdGF0ZS5pbnB1dEZvY3VzZWQgJiYge1xuICAgIG9wYWNpdHk6IDFcbiAgfSlcbn0pKTtcbmNvbnN0IEF1dG9jb21wbGV0ZUVuZEFkb3JubWVudCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQXV0b2NvbXBsZXRlJyxcbiAgc2xvdDogJ0VuZEFkb3JubWVudCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLmVuZEFkb3JubWVudFxufSkoe1xuICAvLyBXZSB1c2UgYSBwb3NpdGlvbiBhYnNvbHV0ZSB0byBzdXBwb3J0IHdyYXBwaW5nIHRhZ3MuXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICByaWdodDogMCxcbiAgdG9wOiAnY2FsYyg1MCUgLSAxNHB4KScgLy8gQ2VudGVyIHZlcnRpY2FsbHlcbn0pO1xuXG5jb25zdCBBdXRvY29tcGxldGVDbGVhckluZGljYXRvciA9IHN0eWxlZChJY29uQnV0dG9uLCB7XG4gIG5hbWU6ICdNdWlBdXRvY29tcGxldGUnLFxuICBzbG90OiAnQ2xlYXJJbmRpY2F0b3InLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5jbGVhckluZGljYXRvclxufSkoe1xuICBtYXJnaW5SaWdodDogLTIsXG4gIHBhZGRpbmc6IDQsXG4gIHZpc2liaWxpdHk6ICdoaWRkZW4nXG59KTtcbmNvbnN0IEF1dG9jb21wbGV0ZVBvcHVwSW5kaWNhdG9yID0gc3R5bGVkKEljb25CdXR0b24sIHtcbiAgbmFtZTogJ011aUF1dG9jb21wbGV0ZScsXG4gIHNsb3Q6ICdQb3B1cEluZGljYXRvcicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAoe1xuICAgIG93bmVyU3RhdGVcbiAgfSwgc3R5bGVzKSA9PiBfZXh0ZW5kcyh7fSwgc3R5bGVzLnBvcHVwSW5kaWNhdG9yLCBvd25lclN0YXRlLnBvcHVwT3BlbiAmJiBzdHlsZXMucG9wdXBJbmRpY2F0b3JPcGVuKVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBwYWRkaW5nOiAyLFxuICBtYXJnaW5SaWdodDogLTJcbn0sIG93bmVyU3RhdGUucG9wdXBPcGVuICYmIHtcbiAgdHJhbnNmb3JtOiAncm90YXRlKDE4MGRlZyknXG59KSk7XG5jb25zdCBBdXRvY29tcGxldGVQb3BwZXIgPSBzdHlsZWQoUG9wcGVyLCB7XG4gIG5hbWU6ICdNdWlBdXRvY29tcGxldGUnLFxuICBzbG90OiAnUG9wcGVyJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3tcbiAgICAgIFtgJiAuJHthdXRvY29tcGxldGVDbGFzc2VzLm9wdGlvbn1gXTogc3R5bGVzLm9wdGlvblxuICAgIH0sIHN0eWxlcy5wb3BwZXIsIG93bmVyU3RhdGUuZGlzYWJsZVBvcnRhbCAmJiBzdHlsZXMucG9wcGVyRGlzYWJsZVBvcnRhbF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHpJbmRleDogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnpJbmRleC5tb2RhbFxufSwgb3duZXJTdGF0ZS5kaXNhYmxlUG9ydGFsICYmIHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZSdcbn0pKTtcbmNvbnN0IEF1dG9jb21wbGV0ZVBhcGVyID0gc3R5bGVkKFBhcGVyLCB7XG4gIG5hbWU6ICdNdWlBdXRvY29tcGxldGUnLFxuICBzbG90OiAnUGFwZXInLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5wYXBlclxufSkoKHtcbiAgdGhlbWVcbn0pID0+IF9leHRlbmRzKHt9LCB0aGVtZS50eXBvZ3JhcGh5LmJvZHkxLCB7XG4gIG92ZXJmbG93OiAnYXV0bydcbn0pKTtcbmNvbnN0IEF1dG9jb21wbGV0ZUxvYWRpbmcgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUF1dG9jb21wbGV0ZScsXG4gIHNsb3Q6ICdMb2FkaW5nJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMubG9hZGluZ1xufSkoKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxcbiAgcGFkZGluZzogJzE0cHggMTZweCdcbn0pKTtcbmNvbnN0IEF1dG9jb21wbGV0ZU5vT3B0aW9ucyA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQXV0b2NvbXBsZXRlJyxcbiAgc2xvdDogJ05vT3B0aW9ucycsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLm5vT3B0aW9uc1xufSkoKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS50ZXh0LnNlY29uZGFyeSxcbiAgcGFkZGluZzogJzE0cHggMTZweCdcbn0pKTtcbmNvbnN0IEF1dG9jb21wbGV0ZUxpc3Rib3ggPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUF1dG9jb21wbGV0ZScsXG4gIHNsb3Q6ICdMaXN0Ym94JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMubGlzdGJveFxufSkoKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIGxpc3RTdHlsZTogJ25vbmUnLFxuICBtYXJnaW46IDAsXG4gIHBhZGRpbmc6ICc4cHggMCcsXG4gIG1heEhlaWdodDogJzQwdmgnLFxuICBvdmVyZmxvdzogJ2F1dG8nLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMub3B0aW9ufWBdOiB7XG4gICAgbWluSGVpZ2h0OiA0OCxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIGp1c3RpZnlDb250ZW50OiAnZmxleC1zdGFydCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgcGFkZGluZ1RvcDogNixcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBvdXRsaW5lOiAnMCcsXG4gICAgV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgcGFkZGluZ0JvdHRvbTogNixcbiAgICBwYWRkaW5nTGVmdDogMTYsXG4gICAgcGFkZGluZ1JpZ2h0OiAxNixcbiAgICBbdGhlbWUuYnJlYWtwb2ludHMudXAoJ3NtJyldOiB7XG4gICAgICBtaW5IZWlnaHQ6ICdhdXRvJ1xuICAgIH0sXG4gICAgW2AmLiR7YXV0b2NvbXBsZXRlQ2xhc3Nlcy5mb2N1c2VkfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5ob3ZlcixcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sXG4gICAgJyZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0nOiB7XG4gICAgICBvcGFjaXR5OiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRPcGFjaXR5LFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnXG4gICAgfSxcbiAgICBbYCYuJHthdXRvY29tcGxldGVDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZm9jdXNcbiAgICB9LFxuICAgICcmW2FyaWEtc2VsZWN0ZWQ9XCJ0cnVlXCJdJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUucHJpbWFyeS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eSksXG4gICAgICBbYCYuJHthdXRvY29tcGxldGVDbGFzc2VzLmZvY3VzZWR9YF06IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUucHJpbWFyeS5tYWluQ2hhbm5lbH0gLyBjYWxjKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHl9ICsgJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pKWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uc2VsZWN0ZWRPcGFjaXR5ICsgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBbYCYuJHthdXRvY29tcGxldGVDbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5wcmltYXJ5Lm1haW5DaGFubmVsfSAvIGNhbGMoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLnNlbGVjdGVkT3BhY2l0eX0gKyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uZm9jdXNPcGFjaXR5fSkpYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5zZWxlY3RlZE9wYWNpdHkgKyB0aGVtZS5wYWxldHRlLmFjdGlvbi5mb2N1c09wYWNpdHkpXG4gICAgICB9XG4gICAgfVxuICB9XG59KSk7XG5jb25zdCBBdXRvY29tcGxldGVHcm91cExhYmVsID0gc3R5bGVkKExpc3RTdWJoZWFkZXIsIHtcbiAgbmFtZTogJ011aUF1dG9jb21wbGV0ZScsXG4gIHNsb3Q6ICdHcm91cExhYmVsJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMuZ3JvdXBMYWJlbFxufSkoKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYmFja2dyb3VuZC5wYXBlcixcbiAgdG9wOiAtOFxufSkpO1xuY29uc3QgQXV0b2NvbXBsZXRlR3JvdXBVbCA9IHN0eWxlZCgndWwnLCB7XG4gIG5hbWU6ICdNdWlBdXRvY29tcGxldGUnLFxuICBzbG90OiAnR3JvdXBVbCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLmdyb3VwVWxcbn0pKHtcbiAgcGFkZGluZzogMCxcbiAgW2AmIC4ke2F1dG9jb21wbGV0ZUNsYXNzZXMub3B0aW9ufWBdOiB7XG4gICAgcGFkZGluZ0xlZnQ6IDI0XG4gIH1cbn0pO1xuZXhwb3J0IHsgY3JlYXRlRmlsdGVyT3B0aW9ucyB9O1xuY29uc3QgQXV0b2NvbXBsZXRlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQXV0b2NvbXBsZXRlKGluUHJvcHMsIHJlZikge1xuICB2YXIgX3Nsb3RQcm9wcyRjbGVhckluZGljLCBfc2xvdFByb3BzJHBhcGVyLCBfc2xvdFByb3BzJHBvcHBlciwgX3Nsb3RQcm9wcyRwb3B1cEluZGljO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlBdXRvY29tcGxldGUnXG4gIH0pO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbiAgY29uc3Qge1xuICAgICAgYXV0b0NvbXBsZXRlID0gZmFsc2UsXG4gICAgICBhdXRvSGlnaGxpZ2h0ID0gZmFsc2UsXG4gICAgICBhdXRvU2VsZWN0ID0gZmFsc2UsXG4gICAgICBibHVyT25TZWxlY3QgPSBmYWxzZSxcbiAgICAgIENoaXBQcm9wcyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNsZWFySWNvbiA9IF9DbGVhckljb24gfHwgKF9DbGVhckljb24gPSAvKiNfX1BVUkVfXyovX2pzeChDbGVhckljb24sIHtcbiAgICAgICAgZm9udFNpemU6IFwic21hbGxcIlxuICAgICAgfSkpLFxuICAgICAgY2xlYXJPbkJsdXIgPSAhcHJvcHMuZnJlZVNvbG8sXG4gICAgICBjbGVhck9uRXNjYXBlID0gZmFsc2UsXG4gICAgICBjbGVhclRleHQgPSAnQ2xlYXInLFxuICAgICAgY2xvc2VUZXh0ID0gJ0Nsb3NlJyxcbiAgICAgIGNvbXBvbmVudHNQcm9wcyA9IHt9LFxuICAgICAgZGVmYXVsdFZhbHVlID0gcHJvcHMubXVsdGlwbGUgPyBbXSA6IG51bGwsXG4gICAgICBkaXNhYmxlQ2xlYXJhYmxlID0gZmFsc2UsXG4gICAgICBkaXNhYmxlQ2xvc2VPblNlbGVjdCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVkSXRlbXNGb2N1c2FibGUgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVMaXN0V3JhcCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVBvcnRhbCA9IGZhbHNlLFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zID0gZmFsc2UsXG4gICAgICBmb3JjZVBvcHVwSWNvbiA9ICdhdXRvJyxcbiAgICAgIGZyZWVTb2xvID0gZmFsc2UsXG4gICAgICBmdWxsV2lkdGggPSBmYWxzZSxcbiAgICAgIGdldExpbWl0VGFnc1RleHQgPSBtb3JlID0+IGArJHttb3JlfWAsXG4gICAgICBnZXRPcHRpb25MYWJlbCA9IG9wdGlvbiA9PiB7XG4gICAgICAgIHZhciBfb3B0aW9uJGxhYmVsO1xuICAgICAgICByZXR1cm4gKF9vcHRpb24kbGFiZWwgPSBvcHRpb24ubGFiZWwpICE9IG51bGwgPyBfb3B0aW9uJGxhYmVsIDogb3B0aW9uO1xuICAgICAgfSxcbiAgICAgIGdyb3VwQnksXG4gICAgICBoYW5kbGVIb21lRW5kS2V5cyA9ICFwcm9wcy5mcmVlU29sbyxcbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdCA9IGZhbHNlLFxuICAgICAgbGltaXRUYWdzID0gLTEsXG4gICAgICBMaXN0Ym94Q29tcG9uZW50ID0gJ3VsJyxcbiAgICAgIExpc3Rib3hQcm9wcyxcbiAgICAgIGxvYWRpbmcgPSBmYWxzZSxcbiAgICAgIGxvYWRpbmdUZXh0ID0gJ0xvYWRpbmfigKYnLFxuICAgICAgbXVsdGlwbGUgPSBmYWxzZSxcbiAgICAgIG5vT3B0aW9uc1RleHQgPSAnTm8gb3B0aW9ucycsXG4gICAgICBvcGVuT25Gb2N1cyA9IGZhbHNlLFxuICAgICAgb3BlblRleHQgPSAnT3BlbicsXG4gICAgICBQYXBlckNvbXBvbmVudCA9IFBhcGVyLFxuICAgICAgUG9wcGVyQ29tcG9uZW50ID0gUG9wcGVyLFxuICAgICAgcG9wdXBJY29uID0gX0Fycm93RHJvcERvd25JY29uIHx8IChfQXJyb3dEcm9wRG93bkljb24gPSAvKiNfX1BVUkVfXyovX2pzeChBcnJvd0Ryb3BEb3duSWNvbiwge30pKSxcbiAgICAgIHJlYWRPbmx5ID0gZmFsc2UsXG4gICAgICByZW5kZXJHcm91cDogcmVuZGVyR3JvdXBQcm9wLFxuICAgICAgcmVuZGVySW5wdXQsXG4gICAgICByZW5kZXJPcHRpb246IHJlbmRlck9wdGlvblByb3AsXG4gICAgICByZW5kZXJUYWdzLFxuICAgICAgc2VsZWN0T25Gb2N1cyA9ICFwcm9wcy5mcmVlU29sbyxcbiAgICAgIHNpemUgPSAnbWVkaXVtJyxcbiAgICAgIHNsb3RQcm9wcyA9IHt9XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbiAgY29uc3Qge1xuICAgIGdldFJvb3RQcm9wcyxcbiAgICBnZXRJbnB1dFByb3BzLFxuICAgIGdldElucHV0TGFiZWxQcm9wcyxcbiAgICBnZXRQb3B1cEluZGljYXRvclByb3BzLFxuICAgIGdldENsZWFyUHJvcHMsXG4gICAgZ2V0VGFnUHJvcHMsXG4gICAgZ2V0TGlzdGJveFByb3BzLFxuICAgIGdldE9wdGlvblByb3BzLFxuICAgIHZhbHVlLFxuICAgIGRpcnR5LFxuICAgIGV4cGFuZGVkLFxuICAgIGlkLFxuICAgIHBvcHVwT3BlbixcbiAgICBmb2N1c2VkLFxuICAgIGZvY3VzZWRUYWcsXG4gICAgYW5jaG9yRWwsXG4gICAgc2V0QW5jaG9yRWwsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICBncm91cGVkT3B0aW9uc1xuICB9ID0gdXNlQXV0b2NvbXBsZXRlKF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbXBvbmVudE5hbWU6ICdBdXRvY29tcGxldGUnXG4gIH0pKTtcbiAgY29uc3QgaGFzQ2xlYXJJY29uID0gIWRpc2FibGVDbGVhcmFibGUgJiYgIWRpc2FibGVkICYmIGRpcnR5ICYmICFyZWFkT25seTtcbiAgY29uc3QgaGFzUG9wdXBJY29uID0gKCFmcmVlU29sbyB8fCBmb3JjZVBvcHVwSWNvbiA9PT0gdHJ1ZSkgJiYgZm9yY2VQb3B1cEljb24gIT09IGZhbHNlO1xuICBjb25zdCB7XG4gICAgb25Nb3VzZURvd246IGhhbmRsZUlucHV0TW91c2VEb3duXG4gIH0gPSBnZXRJbnB1dFByb3BzKCk7XG4gIGNvbnN0IHtcbiAgICByZWY6IGV4dGVybmFsTGlzdGJveFJlZlxuICB9ID0gTGlzdGJveFByb3BzICE9IG51bGwgPyBMaXN0Ym94UHJvcHMgOiB7fTtcbiAgY29uc3QgX2dldExpc3Rib3hQcm9wcyA9IGdldExpc3Rib3hQcm9wcygpLFxuICAgIHtcbiAgICAgIHJlZjogbGlzdGJveFJlZlxuICAgIH0gPSBfZ2V0TGlzdGJveFByb3BzLFxuICAgIG90aGVyTGlzdGJveFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX2dldExpc3Rib3hQcm9wcywgX2V4Y2x1ZGVkMik7XG4gIGNvbnN0IGNvbWJpbmVkTGlzdGJveFJlZiA9IHVzZUZvcmtSZWYobGlzdGJveFJlZiwgZXh0ZXJuYWxMaXN0Ym94UmVmKTtcblxuICAvLyBJZiB5b3UgbW9kaWZ5IHRoaXMsIG1ha2Ugc3VyZSB0byBrZWVwIHRoZSBgQXV0b2NvbXBsZXRlT3duZXJTdGF0ZWAgdHlwZSBpbiBzeW5jLlxuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgZGlzYWJsZVBvcnRhbCxcbiAgICBleHBhbmRlZCxcbiAgICBmb2N1c2VkLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBoYXNDbGVhckljb24sXG4gICAgaGFzUG9wdXBJY29uLFxuICAgIGlucHV0Rm9jdXNlZDogZm9jdXNlZFRhZyA9PT0gLTEsXG4gICAgcG9wdXBPcGVuLFxuICAgIHNpemVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgbGV0IHN0YXJ0QWRvcm5tZW50O1xuICBpZiAobXVsdGlwbGUgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGdldEN1c3RvbWl6ZWRUYWdQcm9wcyA9IHBhcmFtcyA9PiBfZXh0ZW5kcyh7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMudGFnLFxuICAgICAgZGlzYWJsZWRcbiAgICB9LCBnZXRUYWdQcm9wcyhwYXJhbXMpKTtcbiAgICBpZiAocmVuZGVyVGFncykge1xuICAgICAgc3RhcnRBZG9ybm1lbnQgPSByZW5kZXJUYWdzKHZhbHVlLCBnZXRDdXN0b21pemVkVGFnUHJvcHMsIG93bmVyU3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydEFkb3JubWVudCA9IHZhbHVlLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gLyojX19QVVJFX18qL19qc3goQ2hpcCwgX2V4dGVuZHMoe1xuICAgICAgICBsYWJlbDogZ2V0T3B0aW9uTGFiZWwob3B0aW9uKSxcbiAgICAgICAgc2l6ZTogc2l6ZVxuICAgICAgfSwgZ2V0Q3VzdG9taXplZFRhZ1Byb3BzKHtcbiAgICAgICAgaW5kZXhcbiAgICAgIH0pLCBDaGlwUHJvcHMpKSk7XG4gICAgfVxuICB9XG4gIGlmIChsaW1pdFRhZ3MgPiAtMSAmJiBBcnJheS5pc0FycmF5KHN0YXJ0QWRvcm5tZW50KSkge1xuICAgIGNvbnN0IG1vcmUgPSBzdGFydEFkb3JubWVudC5sZW5ndGggLSBsaW1pdFRhZ3M7XG4gICAgaWYgKCFmb2N1c2VkICYmIG1vcmUgPiAwKSB7XG4gICAgICBzdGFydEFkb3JubWVudCA9IHN0YXJ0QWRvcm5tZW50LnNwbGljZSgwLCBsaW1pdFRhZ3MpO1xuICAgICAgc3RhcnRBZG9ybm1lbnQucHVzaCggLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLnRhZyxcbiAgICAgICAgY2hpbGRyZW46IGdldExpbWl0VGFnc1RleHQobW9yZSlcbiAgICAgIH0sIHN0YXJ0QWRvcm5tZW50Lmxlbmd0aCkpO1xuICAgIH1cbiAgfVxuICBjb25zdCBkZWZhdWx0UmVuZGVyR3JvdXAgPSBwYXJhbXMgPT4gLyojX19QVVJFX18qL19qc3hzKFwibGlcIiwge1xuICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goQXV0b2NvbXBsZXRlR3JvdXBMYWJlbCwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmdyb3VwTGFiZWwsXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY29tcG9uZW50OiBcImRpdlwiLFxuICAgICAgY2hpbGRyZW46IHBhcmFtcy5ncm91cFxuICAgIH0pLCAvKiNfX1BVUkVfXyovX2pzeChBdXRvY29tcGxldGVHcm91cFVsLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuZ3JvdXBVbCxcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjaGlsZHJlbjogcGFyYW1zLmNoaWxkcmVuXG4gICAgfSldXG4gIH0sIHBhcmFtcy5rZXkpO1xuICBjb25zdCByZW5kZXJHcm91cCA9IHJlbmRlckdyb3VwUHJvcCB8fCBkZWZhdWx0UmVuZGVyR3JvdXA7XG4gIGNvbnN0IGRlZmF1bHRSZW5kZXJPcHRpb24gPSAocHJvcHMyLCBvcHRpb24pID0+IC8qI19fUFVSRV9fKi9fanN4KFwibGlcIiwgX2V4dGVuZHMoe30sIHByb3BzMiwge1xuICAgIGNoaWxkcmVuOiBnZXRPcHRpb25MYWJlbChvcHRpb24pXG4gIH0pKTtcbiAgY29uc3QgcmVuZGVyT3B0aW9uID0gcmVuZGVyT3B0aW9uUHJvcCB8fCBkZWZhdWx0UmVuZGVyT3B0aW9uO1xuICBjb25zdCByZW5kZXJMaXN0T3B0aW9uID0gKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBvcHRpb25Qcm9wcyA9IGdldE9wdGlvblByb3BzKHtcbiAgICAgIG9wdGlvbixcbiAgICAgIGluZGV4XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlbmRlck9wdGlvbihfZXh0ZW5kcyh7fSwgb3B0aW9uUHJvcHMsIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5vcHRpb25cbiAgICB9KSwgb3B0aW9uLCB7XG4gICAgICBzZWxlY3RlZDogb3B0aW9uUHJvcHNbJ2FyaWEtc2VsZWN0ZWQnXSxcbiAgICAgIGluZGV4LFxuICAgICAgaW5wdXRWYWx1ZVxuICAgIH0sIG93bmVyU3RhdGUpO1xuICB9O1xuICBjb25zdCBjbGVhckluZGljYXRvclNsb3RQcm9wcyA9IChfc2xvdFByb3BzJGNsZWFySW5kaWMgPSBzbG90UHJvcHMuY2xlYXJJbmRpY2F0b3IpICE9IG51bGwgPyBfc2xvdFByb3BzJGNsZWFySW5kaWMgOiBjb21wb25lbnRzUHJvcHMuY2xlYXJJbmRpY2F0b3I7XG4gIGNvbnN0IHBhcGVyU2xvdFByb3BzID0gKF9zbG90UHJvcHMkcGFwZXIgPSBzbG90UHJvcHMucGFwZXIpICE9IG51bGwgPyBfc2xvdFByb3BzJHBhcGVyIDogY29tcG9uZW50c1Byb3BzLnBhcGVyO1xuICBjb25zdCBwb3BwZXJTbG90UHJvcHMgPSAoX3Nsb3RQcm9wcyRwb3BwZXIgPSBzbG90UHJvcHMucG9wcGVyKSAhPSBudWxsID8gX3Nsb3RQcm9wcyRwb3BwZXIgOiBjb21wb25lbnRzUHJvcHMucG9wcGVyO1xuICBjb25zdCBwb3B1cEluZGljYXRvclNsb3RQcm9wcyA9IChfc2xvdFByb3BzJHBvcHVwSW5kaWMgPSBzbG90UHJvcHMucG9wdXBJbmRpY2F0b3IpICE9IG51bGwgPyBfc2xvdFByb3BzJHBvcHVwSW5kaWMgOiBjb21wb25lbnRzUHJvcHMucG9wdXBJbmRpY2F0b3I7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KEF1dG9jb21wbGV0ZVJvb3QsIF9leHRlbmRzKHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgICB9LCBnZXRSb290UHJvcHMob3RoZXIpLCB7XG4gICAgICBjaGlsZHJlbjogcmVuZGVySW5wdXQoe1xuICAgICAgICBpZCxcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGZ1bGxXaWR0aDogdHJ1ZSxcbiAgICAgICAgc2l6ZTogc2l6ZSA9PT0gJ3NtYWxsJyA/ICdzbWFsbCcgOiB1bmRlZmluZWQsXG4gICAgICAgIElucHV0TGFiZWxQcm9wczogZ2V0SW5wdXRMYWJlbFByb3BzKCksXG4gICAgICAgIElucHV0UHJvcHM6IF9leHRlbmRzKHtcbiAgICAgICAgICByZWY6IHNldEFuY2hvckVsLFxuICAgICAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5pbnB1dFJvb3QsXG4gICAgICAgICAgc3RhcnRBZG9ybm1lbnQsXG4gICAgICAgICAgb25DbGljazogZXZlbnQgPT4ge1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICAgICAgICBoYW5kbGVJbnB1dE1vdXNlRG93bihldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCAoaGFzQ2xlYXJJY29uIHx8IGhhc1BvcHVwSWNvbikgJiYge1xuICAgICAgICAgIGVuZEFkb3JubWVudDogLyojX19QVVJFX18qL19qc3hzKEF1dG9jb21wbGV0ZUVuZEFkb3JubWVudCwge1xuICAgICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmVuZEFkb3JubWVudCxcbiAgICAgICAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICAgICAgICBjaGlsZHJlbjogW2hhc0NsZWFySWNvbiA/IC8qI19fUFVSRV9fKi9fanN4KEF1dG9jb21wbGV0ZUNsZWFySW5kaWNhdG9yLCBfZXh0ZW5kcyh7fSwgZ2V0Q2xlYXJQcm9wcygpLCB7XG4gICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBjbGVhclRleHQsXG4gICAgICAgICAgICAgIHRpdGxlOiBjbGVhclRleHQsXG4gICAgICAgICAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgICAgICAgICAgIH0sIGNsZWFySW5kaWNhdG9yU2xvdFByb3BzLCB7XG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLmNsZWFySW5kaWNhdG9yLCBjbGVhckluZGljYXRvclNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogY2xlYXJJbmRpY2F0b3JTbG90UHJvcHMuY2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgY2hpbGRyZW46IGNsZWFySWNvblxuICAgICAgICAgICAgfSkpIDogbnVsbCwgaGFzUG9wdXBJY29uID8gLyojX19QVVJFX18qL19qc3goQXV0b2NvbXBsZXRlUG9wdXBJbmRpY2F0b3IsIF9leHRlbmRzKHt9LCBnZXRQb3B1cEluZGljYXRvclByb3BzKCksIHtcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogcG9wdXBPcGVuID8gY2xvc2VUZXh0IDogb3BlblRleHQsXG4gICAgICAgICAgICAgIHRpdGxlOiBwb3B1cE9wZW4gPyBjbG9zZVRleHQgOiBvcGVuVGV4dCxcbiAgICAgICAgICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZVxuICAgICAgICAgICAgfSwgcG9wdXBJbmRpY2F0b3JTbG90UHJvcHMsIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucG9wdXBJbmRpY2F0b3IsIHBvcHVwSW5kaWNhdG9yU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBwb3B1cEluZGljYXRvclNsb3RQcm9wcy5jbGFzc05hbWUpLFxuICAgICAgICAgICAgICBjaGlsZHJlbjogcG9wdXBJY29uXG4gICAgICAgICAgICB9KSkgOiBudWxsXVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pLFxuICAgICAgICBpbnB1dFByb3BzOiBfZXh0ZW5kcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmlucHV0LFxuICAgICAgICAgIGRpc2FibGVkLFxuICAgICAgICAgIHJlYWRPbmx5XG4gICAgICAgIH0sIGdldElucHV0UHJvcHMoKSlcbiAgICAgIH0pXG4gICAgfSkpLCBhbmNob3JFbCA/IC8qI19fUFVSRV9fKi9fanN4KEF1dG9jb21wbGV0ZVBvcHBlciwgX2V4dGVuZHMoe1xuICAgICAgYXM6IFBvcHBlckNvbXBvbmVudCxcbiAgICAgIGRpc2FibGVQb3J0YWw6IGRpc2FibGVQb3J0YWwsXG4gICAgICBzdHlsZToge1xuICAgICAgICB3aWR0aDogYW5jaG9yRWwgPyBhbmNob3JFbC5jbGllbnRXaWR0aCA6IG51bGxcbiAgICAgIH0sXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgcm9sZTogXCJwcmVzZW50YXRpb25cIixcbiAgICAgIGFuY2hvckVsOiBhbmNob3JFbCxcbiAgICAgIG9wZW46IHBvcHVwT3BlblxuICAgIH0sIHBvcHBlclNsb3RQcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucG9wcGVyLCBwb3BwZXJTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHBvcHBlclNsb3RQcm9wcy5jbGFzc05hbWUpLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4cyhBdXRvY29tcGxldGVQYXBlciwgX2V4dGVuZHMoe1xuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBhczogUGFwZXJDb21wb25lbnRcbiAgICAgIH0sIHBhcGVyU2xvdFByb3BzLCB7XG4gICAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnBhcGVyLCBwYXBlclNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogcGFwZXJTbG90UHJvcHMuY2xhc3NOYW1lKSxcbiAgICAgICAgY2hpbGRyZW46IFtsb2FkaW5nICYmIGdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCA/IC8qI19fUFVSRV9fKi9fanN4KEF1dG9jb21wbGV0ZUxvYWRpbmcsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMubG9hZGluZyxcbiAgICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICAgIGNoaWxkcmVuOiBsb2FkaW5nVGV4dFxuICAgICAgICB9KSA6IG51bGwsIGdyb3VwZWRPcHRpb25zLmxlbmd0aCA9PT0gMCAmJiAhZnJlZVNvbG8gJiYgIWxvYWRpbmcgPyAvKiNfX1BVUkVfXyovX2pzeChBdXRvY29tcGxldGVOb09wdGlvbnMsIHtcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMubm9PcHRpb25zLFxuICAgICAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICAgICAgcm9sZTogXCJwcmVzZW50YXRpb25cIixcbiAgICAgICAgICBvbk1vdXNlRG93bjogZXZlbnQgPT4ge1xuICAgICAgICAgICAgLy8gUHJldmVudCBpbnB1dCBibHVyIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgXCJubyBvcHRpb25zXCIgY29udGVudFxuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoaWxkcmVuOiBub09wdGlvbnNUZXh0XG4gICAgICAgIH0pIDogbnVsbCwgZ3JvdXBlZE9wdGlvbnMubGVuZ3RoID4gMCA/IC8qI19fUFVSRV9fKi9fanN4KEF1dG9jb21wbGV0ZUxpc3Rib3gsIF9leHRlbmRzKHtcbiAgICAgICAgICBhczogTGlzdGJveENvbXBvbmVudCxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMubGlzdGJveCxcbiAgICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gICAgICAgIH0sIG90aGVyTGlzdGJveFByb3BzLCBMaXN0Ym94UHJvcHMsIHtcbiAgICAgICAgICByZWY6IGNvbWJpbmVkTGlzdGJveFJlZixcbiAgICAgICAgICBjaGlsZHJlbjogZ3JvdXBlZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZ3JvdXBCeSkge1xuICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyR3JvdXAoe1xuICAgICAgICAgICAgICAgIGtleTogb3B0aW9uLmtleSxcbiAgICAgICAgICAgICAgICBncm91cDogb3B0aW9uLmdyb3VwLFxuICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBvcHRpb24ub3B0aW9ucy5tYXAoKG9wdGlvbjIsIGluZGV4MikgPT4gcmVuZGVyTGlzdE9wdGlvbihvcHRpb24yLCBvcHRpb24uaW5kZXggKyBpbmRleDIpKVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZW5kZXJMaXN0T3B0aW9uKG9wdGlvbiwgaW5kZXgpO1xuICAgICAgICAgIH0pXG4gICAgICAgIH0pKSA6IG51bGxdXG4gICAgICB9KSlcbiAgICB9KSkgOiBudWxsXVxuICB9KTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQXV0b2NvbXBsZXRlLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHBvcnRpb24gb2YgdGhlIHNlbGVjdGVkIHN1Z2dlc3Rpb24gdGhhdCBoYXMgbm90IGJlZW4gdHlwZWQgYnkgdGhlIHVzZXIsXG4gICAqIGtub3duIGFzIHRoZSBjb21wbGV0aW9uIHN0cmluZywgYXBwZWFycyBpbmxpbmUgYWZ0ZXIgdGhlIGlucHV0IGN1cnNvciBpbiB0aGUgdGV4dGJveC5cbiAgICogVGhlIGlubGluZSBjb21wbGV0aW9uIHN0cmluZyBpcyB2aXN1YWxseSBoaWdobGlnaHRlZCBhbmQgaGFzIGEgc2VsZWN0ZWQgc3RhdGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhdXRvQ29tcGxldGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgZmlyc3Qgb3B0aW9uIGlzIGF1dG9tYXRpY2FsbHkgaGlnaGxpZ2h0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhdXRvSGlnaGxpZ2h0OiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHNlbGVjdGVkIG9wdGlvbiBiZWNvbWVzIHRoZSB2YWx1ZSBvZiB0aGUgaW5wdXRcbiAgICogd2hlbiB0aGUgQXV0b2NvbXBsZXRlIGxvc2VzIGZvY3VzIHVubGVzcyB0aGUgdXNlciBjaG9vc2VzXG4gICAqIGEgZGlmZmVyZW50IG9wdGlvbiBvciBjaGFuZ2VzIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIGluIHRoZSBpbnB1dC5cbiAgICpcbiAgICogV2hlbiB1c2luZyBgZnJlZVNvbG9gIG1vZGUsIHRoZSB0eXBlZCB2YWx1ZSB3aWxsIGJlIHRoZSBpbnB1dCB2YWx1ZVxuICAgKiBpZiB0aGUgQXV0b2NvbXBsZXRlIGxvc2VzIGZvY3VzIHdpdGhvdXQgaGlnaGxpZ2h0aW5nIGFuIG9wdGlvbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9TZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQ29udHJvbCBpZiB0aGUgaW5wdXQgc2hvdWxkIGJlIGJsdXJyZWQgd2hlbiBhbiBvcHRpb24gaXMgc2VsZWN0ZWQ6XG4gICAqXG4gICAqIC0gYGZhbHNlYCB0aGUgaW5wdXQgaXMgbm90IGJsdXJyZWQuXG4gICAqIC0gYHRydWVgIHRoZSBpbnB1dCBpcyBhbHdheXMgYmx1cnJlZC5cbiAgICogLSBgdG91Y2hgIHRoZSBpbnB1dCBpcyBibHVycmVkIGFmdGVyIGEgdG91Y2ggZXZlbnQuXG4gICAqIC0gYG1vdXNlYCB0aGUgaW5wdXQgaXMgYmx1cnJlZCBhZnRlciBhIG1vdXNlIGV2ZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYmx1ck9uU2VsZWN0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydtb3VzZScsICd0b3VjaCddKSwgUHJvcFR5cGVzLmJvb2xdKSxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIFtgQ2hpcGBdKC9tYXRlcmlhbC11aS9hcGkvY2hpcC8pIGVsZW1lbnQuXG4gICAqL1xuICBDaGlwUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGljb24gdG8gZGlzcGxheSBpbiBwbGFjZSBvZiB0aGUgZGVmYXVsdCBjbGVhciBpY29uLlxuICAgKiBAZGVmYXVsdCA8Q2xlYXJJY29uIGZvbnRTaXplPVwic21hbGxcIiAvPlxuICAgKi9cbiAgY2xlYXJJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGlucHV0J3MgdGV4dCBpcyBjbGVhcmVkIG9uIGJsdXIgaWYgbm8gdmFsdWUgaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIFNldCB0byBgdHJ1ZWAgaWYgeW91IHdhbnQgdG8gaGVscCB0aGUgdXNlciBlbnRlciBhIG5ldyB2YWx1ZS5cbiAgICogU2V0IHRvIGBmYWxzZWAgaWYgeW91IHdhbnQgdG8gaGVscCB0aGUgdXNlciByZXN1bWUgdGhlaXIgc2VhcmNoLlxuICAgKiBAZGVmYXVsdCAhcHJvcHMuZnJlZVNvbG9cbiAgICovXG4gIGNsZWFyT25CbHVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgY2xlYXIgYWxsIHZhbHVlcyB3aGVuIHRoZSB1c2VyIHByZXNzZXMgZXNjYXBlIGFuZCB0aGUgcG9wdXAgaXMgY2xvc2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2xlYXJPbkVzY2FwZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCB0ZXh0IGZvciB0aGUgKmNsZWFyKiBpY29uIGJ1dHRvbi5cbiAgICpcbiAgICogRm9yIGxvY2FsaXphdGlvbiBwdXJwb3NlcywgeW91IGNhbiB1c2UgdGhlIHByb3ZpZGVkIFt0cmFuc2xhdGlvbnNdKC9tYXRlcmlhbC11aS9ndWlkZXMvbG9jYWxpemF0aW9uLykuXG4gICAqIEBkZWZhdWx0ICdDbGVhcidcbiAgICovXG4gIGNsZWFyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHRleHQgZm9yIHRoZSAqY2xvc2UgcG9wdXAqIGljb24gYnV0dG9uLlxuICAgKlxuICAgKiBGb3IgbG9jYWxpemF0aW9uIHB1cnBvc2VzLCB5b3UgY2FuIHVzZSB0aGUgcHJvdmlkZWQgW3RyYW5zbGF0aW9uc10oL21hdGVyaWFsLXVpL2d1aWRlcy9sb2NhbGl6YXRpb24vKS5cbiAgICogQGRlZmF1bHQgJ0Nsb3NlJ1xuICAgKi9cbiAgY2xvc2VUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHByb3BzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY2xlYXJJbmRpY2F0b3I6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcGFwZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcG9wcGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHBvcHVwSW5kaWNhdG9yOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUuIFVzZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IGNvbnRyb2xsZWQuXG4gICAqIEBkZWZhdWx0IHByb3BzLm11bHRpcGxlID8gW10gOiBudWxsXG4gICAqL1xuICBkZWZhdWx0VmFsdWU6IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5hbnksIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMubXVsdGlwbGUgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIUFycmF5LmlzQXJyYXkocHJvcHMuZGVmYXVsdFZhbHVlKSkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihbJ01VSTogVGhlIEF1dG9jb21wbGV0ZSBleHBlY3RzIHRoZSBgZGVmYXVsdFZhbHVlYCBwcm9wIHRvIGJlIGFuIGFycmF5IHdoZW4gYG11bHRpcGxlPXt0cnVlfWAgb3IgdW5kZWZpbmVkLicsIGBIb3dldmVyLCAke3Byb3BzLmRlZmF1bHRWYWx1ZX0gd2FzIHByb3ZpZGVkLmBdLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgaW5wdXQgY2FuJ3QgYmUgY2xlYXJlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVDbGVhcmFibGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcG9wdXAgd29uJ3QgY2xvc2Ugd2hlbiBhIHZhbHVlIGlzIHNlbGVjdGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUNsb3NlT25TZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB3aWxsIGFsbG93IGZvY3VzIG9uIGRpc2FibGVkIGl0ZW1zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWRJdGVtc0ZvY3VzYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsaXN0IGJveCBpbiB0aGUgcG9wdXAgd2lsbCBub3Qgd3JhcCBmb2N1cy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVMaXN0V3JhcDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgUG9wcGVyYCBjb250ZW50IHdpbGwgYmUgdW5kZXIgdGhlIERPTSBoaWVyYXJjaHkgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSBmaWx0ZXJlZCBvcHRpb25zIHRvIGJlIHJlbmRlcmVkIG9uIHNlYXJjaC5cbiAgICpcbiAgICogQGRlZmF1bHQgY3JlYXRlRmlsdGVyT3B0aW9ucygpXG4gICAqIEBwYXJhbSB7VFtdfSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIFRoZSBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyB7VFtdfVxuICAgKi9cbiAgZmlsdGVyT3B0aW9uczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGhpZGUgdGhlIHNlbGVjdGVkIG9wdGlvbnMgZnJvbSB0aGUgbGlzdCBib3guXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRm9yY2UgdGhlIHZpc2liaWxpdHkgZGlzcGxheSBvZiB0aGUgcG9wdXAgaWNvbi5cbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICBmb3JjZVBvcHVwSWNvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnYXV0byddKSwgUHJvcFR5cGVzLmJvb2xdKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIEF1dG9jb21wbGV0ZSBpcyBmcmVlIHNvbG8sIG1lYW5pbmcgdGhhdCB0aGUgdXNlciBpbnB1dCBpcyBub3QgYm91bmQgdG8gcHJvdmlkZWQgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZyZWVTb2xvOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGlucHV0IHdpbGwgdGFrZSB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byBkaXNwbGF5IHdoZW4gdGhlIHRhZ3MgYXJlIHRydW5jYXRlZCAoYGxpbWl0VGFnc2ApLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbW9yZSBUaGUgbnVtYmVyIG9mIHRydW5jYXRlZCB0YWdzLlxuICAgKiBAcmV0dXJucyB7UmVhY3ROb2RlfVxuICAgKiBAZGVmYXVsdCAobW9yZSkgPT4gYCske21vcmV9YFxuICAgKi9cbiAgZ2V0TGltaXRUYWdzVGV4dDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBVc2VkIHRvIGRldGVybWluZSB0aGUgZGlzYWJsZWQgc3RhdGUgZm9yIGEgZ2l2ZW4gb3B0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1R9IG9wdGlvbiBUaGUgb3B0aW9uIHRvIHRlc3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZ2V0T3B0aW9uRGlzYWJsZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVXNlZCB0byBkZXRlcm1pbmUgdGhlIHN0cmluZyB2YWx1ZSBmb3IgYSBnaXZlbiBvcHRpb24uXG4gICAqIEl0J3MgdXNlZCB0byBmaWxsIHRoZSBpbnB1dCAoYW5kIHRoZSBsaXN0IGJveCBvcHRpb25zIGlmIGByZW5kZXJPcHRpb25gIGlzIG5vdCBwcm92aWRlZCkuXG4gICAqXG4gICAqIElmIHVzZWQgaW4gZnJlZSBzb2xvIG1vZGUsIGl0IG11c3QgYWNjZXB0IGJvdGggdGhlIHR5cGUgb2YgdGhlIG9wdGlvbnMgYW5kIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1R9IG9wdGlvblxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKiBAZGVmYXVsdCAob3B0aW9uKSA9PiBvcHRpb24ubGFiZWwgPz8gb3B0aW9uXG4gICAqL1xuICBnZXRPcHRpb25MYWJlbDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBwcm92aWRlZCwgdGhlIG9wdGlvbnMgd2lsbCBiZSBncm91cGVkIHVuZGVyIHRoZSByZXR1cm5lZCBzdHJpbmcuXG4gICAqIFRoZSBncm91cEJ5IHZhbHVlIGlzIGFsc28gdXNlZCBhcyB0aGUgdGV4dCBmb3IgZ3JvdXAgaGVhZGluZ3Mgd2hlbiBgcmVuZGVyR3JvdXBgIGlzIG5vdCBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtUfSBvcHRpb25zIFRoZSBvcHRpb25zIHRvIGdyb3VwLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ3JvdXBCeTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaGFuZGxlcyB0aGUgXCJIb21lXCIgYW5kIFwiRW5kXCIga2V5cyB3aGVuIHRoZSBwb3B1cCBpcyBvcGVuLlxuICAgKiBJdCBzaG91bGQgbW92ZSBmb2N1cyB0byB0aGUgZmlyc3Qgb3B0aW9uIGFuZCBsYXN0IG9wdGlvbiwgcmVzcGVjdGl2ZWx5LlxuICAgKiBAZGVmYXVsdCAhcHJvcHMuZnJlZVNvbG9cbiAgICovXG4gIGhhbmRsZUhvbWVFbmRLZXlzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBpcyB1c2VkIHRvIGhlbHAgaW1wbGVtZW50IHRoZSBhY2Nlc3NpYmlsaXR5IGxvZ2ljLlxuICAgKiBJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhbiBpZCBpdCB3aWxsIGZhbGwgYmFjayB0byBhIHJhbmRvbWx5IGdlbmVyYXRlZCBvbmUuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGhpZ2hsaWdodCBjYW4gbW92ZSB0byB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmNsdWRlSW5wdXRJbkxpc3Q6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgaW5wdXRWYWx1ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBvcHRpb24gcmVwcmVzZW50cyB0aGUgZ2l2ZW4gdmFsdWUuXG4gICAqIFVzZXMgc3RyaWN0IGVxdWFsaXR5IGJ5IGRlZmF1bHQuXG4gICAqIOKaoO+4jyBCb3RoIGFyZ3VtZW50cyBuZWVkIHRvIGJlIGhhbmRsZWQsIGFuIG9wdGlvbiBjYW4gb25seSBtYXRjaCB3aXRoIG9uZSB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtUfSBvcHRpb24gVGhlIG9wdGlvbiB0byB0ZXN0LlxuICAgKiBAcGFyYW0ge1R9IHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0IGFnYWluc3QuXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgaXNPcHRpb25FcXVhbFRvVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRhZ3MgdGhhdCB3aWxsIGJlIHZpc2libGUgd2hlbiBub3QgZm9jdXNlZC5cbiAgICogU2V0IGAtMWAgdG8gZGlzYWJsZSB0aGUgbGltaXQuXG4gICAqIEBkZWZhdWx0IC0xXG4gICAqL1xuICBsaW1pdFRhZ3M6IGludGVnZXJQcm9wVHlwZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCB0byByZW5kZXIgdGhlIGxpc3Rib3guXG4gICAqIEBkZWZhdWx0ICd1bCdcbiAgICovXG4gIExpc3Rib3hDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIExpc3Rib3ggZWxlbWVudC5cbiAgICovXG4gIExpc3Rib3hQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBpbiBhIGxvYWRpbmcgc3RhdGUuXG4gICAqIFRoaXMgc2hvd3MgdGhlIGBsb2FkaW5nVGV4dGAgaW4gcGxhY2Ugb2Ygc3VnZ2VzdGlvbnMgKG9ubHkgaWYgdGhlcmUgYXJlIG5vIHN1Z2dlc3Rpb25zIHRvIHNob3csIGUuZy4gYG9wdGlvbnNgIGFyZSBlbXB0eSkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBsb2FkaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRleHQgdG8gZGlzcGxheSB3aGVuIGluIGEgbG9hZGluZyBzdGF0ZS5cbiAgICpcbiAgICogRm9yIGxvY2FsaXphdGlvbiBwdXJwb3NlcywgeW91IGNhbiB1c2UgdGhlIHByb3ZpZGVkIFt0cmFuc2xhdGlvbnNdKC9tYXRlcmlhbC11aS9ndWlkZXMvbG9jYWxpemF0aW9uLykuXG4gICAqIEBkZWZhdWx0ICdMb2FkaW5n4oCmJ1xuICAgKi9cbiAgbG9hZGluZ1RleHQ6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBgdmFsdWVgIG11c3QgYmUgYW4gYXJyYXkgYW5kIHRoZSBtZW51IHdpbGwgc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb25zLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGV4dCB0byBkaXNwbGF5IHdoZW4gdGhlcmUgYXJlIG5vIG9wdGlvbnMuXG4gICAqXG4gICAqIEZvciBsb2NhbGl6YXRpb24gcHVycG9zZXMsIHlvdSBjYW4gdXNlIHRoZSBwcm92aWRlZCBbdHJhbnNsYXRpb25zXSgvbWF0ZXJpYWwtdWkvZ3VpZGVzL2xvY2FsaXphdGlvbi8pLlxuICAgKiBAZGVmYXVsdCAnTm8gb3B0aW9ucydcbiAgICovXG4gIG5vT3B0aW9uc1RleHQ6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdC5TeW50aGV0aWNFdmVudH0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7VHxUW119IHZhbHVlIFRoZSBuZXcgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiBPbmUgb2YgXCJjcmVhdGVPcHRpb25cIiwgXCJzZWxlY3RPcHRpb25cIiwgXCJyZW1vdmVPcHRpb25cIiwgXCJibHVyXCIgb3IgXCJjbGVhclwiLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2RldGFpbHNdXG4gICAqL1xuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBwb3B1cCByZXF1ZXN0cyB0byBiZSBjbG9zZWQuXG4gICAqIFVzZSBpbiBjb250cm9sbGVkIG1vZGUgKHNlZSBvcGVuKS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdC5TeW50aGV0aWNFdmVudH0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gQ2FuIGJlOiBgXCJ0b2dnbGVJbnB1dFwiYCwgYFwiZXNjYXBlXCJgLCBgXCJzZWxlY3RPcHRpb25cImAsIGBcInJlbW92ZU9wdGlvblwiYCwgYFwiYmx1clwiYC5cbiAgICovXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgaGlnaGxpZ2h0IG9wdGlvbiBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtUfSBvcHRpb24gVGhlIGhpZ2hsaWdodGVkIG9wdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiBDYW4gYmU6IGBcImtleWJvYXJkXCJgLCBgXCJhdXRvXCJgLCBgXCJtb3VzZVwiYCwgYFwidG91Y2hcImAuXG4gICAqL1xuICBvbkhpZ2hsaWdodENoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHRleHQgaW5wdXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWFzb24gQ2FuIGJlOiBgXCJpbnB1dFwiYCAodXNlciBpbnB1dCksIGBcInJlc2V0XCJgIChwcm9ncmFtbWF0aWMgY2hhbmdlKSwgYFwiY2xlYXJcImAuXG4gICAqL1xuICBvbklucHV0Q2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHBvcHVwIHJlcXVlc3RzIHRvIGJlIG9wZW5lZC5cbiAgICogVXNlIGluIGNvbnRyb2xsZWQgbW9kZSAoc2VlIG9wZW4pLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2hvd24uXG4gICAqL1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHBvcHVwIHdpbGwgb3BlbiBvbiBpbnB1dCBmb2N1cy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG9wZW5PbkZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHRleHQgZm9yIHRoZSAqb3BlbiBwb3B1cCogaWNvbiBidXR0b24uXG4gICAqXG4gICAqIEZvciBsb2NhbGl6YXRpb24gcHVycG9zZXMsIHlvdSBjYW4gdXNlIHRoZSBwcm92aWRlZCBbdHJhbnNsYXRpb25zXSgvbWF0ZXJpYWwtdWkvZ3VpZGVzL2xvY2FsaXphdGlvbi8pLlxuICAgKiBAZGVmYXVsdCAnT3BlbidcbiAgICovXG4gIG9wZW5UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQXJyYXkgb2Ygb3B0aW9ucy5cbiAgICovXG4gIG9wdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIHRvIHJlbmRlciB0aGUgYm9keSBvZiB0aGUgcG9wdXAuXG4gICAqIEBkZWZhdWx0IFBhcGVyXG4gICAqL1xuICBQYXBlckNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIHRvIHBvc2l0aW9uIHRoZSBwb3B1cC5cbiAgICogQGRlZmF1bHQgUG9wcGVyXG4gICAqL1xuICBQb3BwZXJDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGRpc3BsYXkgaW4gcGxhY2Ugb2YgdGhlIGRlZmF1bHQgcG9wdXAgaWNvbi5cbiAgICogQGRlZmF1bHQgPEFycm93RHJvcERvd25JY29uIC8+XG4gICAqL1xuICBwb3B1cEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGJlY29tZXMgcmVhZG9ubHkuIEl0IGlzIGFsc28gc3VwcG9ydGVkIGZvciBtdWx0aXBsZSB0YWdzIHdoZXJlIHRoZSB0YWcgY2Fubm90IGJlIGRlbGV0ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0ge0F1dG9jb21wbGV0ZVJlbmRlckdyb3VwUGFyYW1zfSBwYXJhbXMgVGhlIGdyb3VwIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMge1JlYWN0Tm9kZX1cbiAgICovXG4gIHJlbmRlckdyb3VwOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgaW5wdXQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJhbXNcbiAgICogQHJldHVybnMge1JlYWN0Tm9kZX1cbiAgICovXG4gIHJlbmRlcklucHV0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogUmVuZGVyIHRoZSBvcHRpb24sIHVzZSBgZ2V0T3B0aW9uTGFiZWxgIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBUaGUgcHJvcHMgdG8gYXBwbHkgb24gdGhlIGxpIGVsZW1lbnQuXG4gICAqIEBwYXJhbSB7VH0gb3B0aW9uIFRoZSBvcHRpb24gdG8gcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgVGhlIHN0YXRlIG9mIGVhY2ggb3B0aW9uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3duZXJTdGF0ZSBUaGUgc3RhdGUgb2YgdGhlIEF1dG9jb21wbGV0ZSBjb21wb25lbnQuXG4gICAqIEByZXR1cm5zIHtSZWFjdE5vZGV9XG4gICAqL1xuICByZW5kZXJPcHRpb246IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogUmVuZGVyIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtUW119IHZhbHVlIFRoZSBgdmFsdWVgIHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldFRhZ1Byb3BzIEEgdGFnIHByb3BzIGdldHRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IG93bmVyU3RhdGUgVGhlIHN0YXRlIG9mIHRoZSBBdXRvY29tcGxldGUgY29tcG9uZW50LlxuICAgKiBAcmV0dXJucyB7UmVhY3ROb2RlfVxuICAgKi9cbiAgcmVuZGVyVGFnczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBpbnB1dCdzIHRleHQgaXMgc2VsZWN0ZWQgb24gZm9jdXMuXG4gICAqIEl0IGhlbHBzIHRoZSB1c2VyIGNsZWFyIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICogQGRlZmF1bHQgIXByb3BzLmZyZWVTb2xvXG4gICAqL1xuICBzZWxlY3RPbkZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3NtYWxsJywgJ21lZGl1bSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHByb3BzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90UHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY2xlYXJJbmRpY2F0b3I6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcGFwZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcG9wcGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHBvcHVwSW5kaWNhdG9yOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBhdXRvY29tcGxldGUuXG4gICAqXG4gICAqIFRoZSB2YWx1ZSBtdXN0IGhhdmUgcmVmZXJlbmNlIGVxdWFsaXR5IHdpdGggdGhlIG9wdGlvbiBpbiBvcmRlciB0byBiZSBzZWxlY3RlZC5cbiAgICogWW91IGNhbiBjdXN0b21pemUgdGhlIGVxdWFsaXR5IGJlaGF2aW9yIHdpdGggdGhlIGBpc09wdGlvbkVxdWFsVG9WYWx1ZWAgcHJvcC5cbiAgICovXG4gIHZhbHVlOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMuYW55LCBwcm9wcyA9PiB7XG4gICAgaWYgKHByb3BzLm11bHRpcGxlICYmIHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgIUFycmF5LmlzQXJyYXkocHJvcHMudmFsdWUpKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKFsnTVVJOiBUaGUgQXV0b2NvbXBsZXRlIGV4cGVjdHMgdGhlIGB2YWx1ZWAgcHJvcCB0byBiZSBhbiBhcnJheSB3aGVuIGBtdWx0aXBsZT17dHJ1ZX1gIG9yIHVuZGVmaW5lZC4nLCBgSG93ZXZlciwgJHtwcm9wcy52YWx1ZX0gd2FzIHByb3ZpZGVkLmBdLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQXV0b2NvbXBsZXRlOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlJY29uQnV0dG9uJywgc2xvdCk7XG59XG5jb25zdCBpY29uQnV0dG9uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUljb25CdXR0b24nLCBbJ3Jvb3QnLCAnZGlzYWJsZWQnLCAnY29sb3JJbmhlcml0JywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvckVycm9yJywgJ2NvbG9ySW5mbycsICdjb2xvclN1Y2Nlc3MnLCAnY29sb3JXYXJuaW5nJywgJ2VkZ2VTdGFydCcsICdlZGdlRW5kJywgJ3NpemVTbWFsbCcsICdzaXplTWVkaXVtJywgJ3NpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IGljb25CdXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImVkZ2VcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJzaXplXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJy4uL0J1dHRvbkJhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgaWNvbkJ1dHRvbkNsYXNzZXMsIHsgZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vaWNvbkJ1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGRpc2FibGVkLFxuICAgIGNvbG9yLFxuICAgIGVkZ2UsXG4gICAgc2l6ZVxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJywgY29sb3IgIT09ICdkZWZhdWx0JyAmJiBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGVkZ2UgJiYgYGVkZ2Uke2NhcGl0YWxpemUoZWRnZSl9YCwgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBJY29uQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIG5hbWU6ICdNdWlJY29uQnV0dG9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBvd25lclN0YXRlLmVkZ2UgJiYgc3R5bGVzW2BlZGdlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuZWRnZSl9YF0sIHN0eWxlc1tgc2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgZmxleDogJzAgMCBhdXRvJyxcbiAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgyNCksXG4gIHBhZGRpbmc6IDgsXG4gIGJvcmRlclJhZGl1czogJzUwJScsXG4gIG92ZXJmbG93OiAndmlzaWJsZScsXG4gIC8vIEV4cGxpY2l0bHkgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIHRvIHNvbHZlIGEgYnVnIG9uIElFMTEuXG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLFxuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ2JhY2tncm91bmQtY29sb3InLCB7XG4gICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0XG4gIH0pXG59LCAhb3duZXJTdGF0ZS5kaXNhYmxlUmlwcGxlICYmIHtcbiAgJyY6aG92ZXInOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZUNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZSwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgIH1cbiAgfVxufSwgb3duZXJTdGF0ZS5lZGdlID09PSAnc3RhcnQnICYmIHtcbiAgbWFyZ2luTGVmdDogb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnID8gLTMgOiAtMTJcbn0sIG93bmVyU3RhdGUuZWRnZSA9PT0gJ2VuZCcgJiYge1xuICBtYXJnaW5SaWdodDogb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnID8gLTMgOiAtMTJcbn0pLCAoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3BhbGV0dGU7XG4gIGNvbnN0IHBhbGV0dGUgPSAoX3BhbGV0dGUgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlW293bmVyU3RhdGUuY29sb3JdO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICdpbmhlcml0J1xuICB9LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIF9leHRlbmRzKHtcbiAgICBjb2xvcjogcGFsZXR0ZSA9PSBudWxsID8gdm9pZCAwIDogcGFsZXR0ZS5tYWluXG4gIH0sICFvd25lclN0YXRlLmRpc2FibGVSaXBwbGUgJiYge1xuICAgICcmOmhvdmVyJzogX2V4dGVuZHMoe30sIHBhbGV0dGUgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHtwYWxldHRlLm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYShwYWxldHRlLm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSlcbiAgICB9LCB7XG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9KVxuICB9KSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgICBwYWRkaW5nOiA1LFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTgpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiB7XG4gICAgcGFkZGluZzogMTIsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgyOClcbiAgfSwge1xuICAgIFtgJi4ke2ljb25CdXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkXG4gICAgfVxuICB9KTtcbn0pO1xuXG4vKipcbiAqIFJlZmVyIHRvIHRoZSBbSWNvbnNdKC9tYXRlcmlhbC11aS9pY29ucy8pIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50YXRpb25cbiAqIHJlZ2FyZGluZyB0aGUgYXZhaWxhYmxlIGljb24gb3B0aW9ucy5cbiAqL1xuY29uc3QgSWNvbkJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEljb25CdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUljb25CdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBlZGdlID0gZmFsc2UsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbG9yID0gJ2RlZmF1bHQnLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVGb2N1c1JpcHBsZSA9IGZhbHNlLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBlZGdlLFxuICAgIGNvbG9yLFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBzaXplXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChJY29uQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgY2VudGVyUmlwcGxlOiB0cnVlLFxuICAgIGZvY3VzUmlwcGxlOiAhZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gSWNvbkJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBkaXNwbGF5LlxuICAgKi9cbiAgY2hpbGRyZW46IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5ub2RlLCBwcm9wcyA9PiB7XG4gICAgY29uc3QgZm91bmQgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KHByb3BzLmNoaWxkcmVuKS5zb21lKGNoaWxkID0+IC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgY2hpbGQucHJvcHMub25DbGljayk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKFsnTVVJOiBZb3UgYXJlIHByb3ZpZGluZyBhbiBvbkNsaWNrIGV2ZW50IGxpc3RlbmVyIHRvIGEgY2hpbGQgb2YgYSBidXR0b24gZWxlbWVudC4nLCAnUHJlZmVyIGFwcGx5aW5nIGl0IHRvIHRoZSBJY29uQnV0dG9uIGRpcmVjdGx5LicsICdUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgd2hvbGUgPGJ1dHRvbj4gd2lsbCBiZSByZXNwb25zaXZlIHRvIGNsaWNrIGV2ZW50cy4nXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ2RlZmF1bHQnXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2RlZmF1bHQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlICBrZXlib2FyZCBmb2N1cyByaXBwbGUgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGdpdmVuLCB1c2VzIGEgbmVnYXRpdmUgbWFyZ2luIHRvIGNvdW50ZXJhY3QgdGhlIHBhZGRpbmcgb24gb25lXG4gICAqIHNpZGUgKHRoaXMgaXMgb2Z0ZW4gaGVscGZ1bCBmb3IgYWxpZ25pbmcgdGhlIGxlZnQgb3IgcmlnaHRcbiAgICogc2lkZSBvZiB0aGUgaWNvbiB3aXRoIGNvbnRlbnQgYWJvdmUgb3IgYmVsb3csIHdpdGhvdXQgcnVpbmluZyB0aGUgYm9yZGVyXG4gICAqIHNpemUgYW5kIHNoYXBlKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGVkZ2U6IFByb3BUeXBlcy5vbmVPZihbJ2VuZCcsICdzdGFydCcsIGZhbHNlXSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBgc21hbGxgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRlbnNlIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEljb25CdXR0b247IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2xiYXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVRvb2xiYXInLCBzbG90KTtcbn1cbmNvbnN0IHRvb2xiYXJDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVG9vbGJhcicsIFsncm9vdCcsICdndXR0ZXJzJywgJ3JlZ3VsYXInLCAnZGVuc2UnXSk7XG5leHBvcnQgZGVmYXVsdCB0b29sYmFyQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJkaXNhYmxlR3V0dGVyc1wiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0VG9vbGJhclV0aWxpdHlDbGFzcyB9IGZyb20gJy4vdG9vbGJhckNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGRpc2FibGVHdXR0ZXJzLFxuICAgIHZhcmlhbnRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsICFkaXNhYmxlR3V0dGVycyAmJiAnZ3V0dGVycycsIHZhcmlhbnRdXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VG9vbGJhclV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgVG9vbGJhclJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aVRvb2xiYXInLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgIW93bmVyU3RhdGUuZGlzYWJsZUd1dHRlcnMgJiYgc3R5bGVzLmd1dHRlcnMsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcidcbn0sICFvd25lclN0YXRlLmRpc2FibGVHdXR0ZXJzICYmIHtcbiAgcGFkZGluZ0xlZnQ6IHRoZW1lLnNwYWNpbmcoMiksXG4gIHBhZGRpbmdSaWdodDogdGhlbWUuc3BhY2luZygyKSxcbiAgW3RoZW1lLmJyZWFrcG9pbnRzLnVwKCdzbScpXToge1xuICAgIHBhZGRpbmdMZWZ0OiB0aGVtZS5zcGFjaW5nKDMpLFxuICAgIHBhZGRpbmdSaWdodDogdGhlbWUuc3BhY2luZygzKVxuICB9XG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdkZW5zZScgJiYge1xuICBtaW5IZWlnaHQ6IDQ4XG59KSwgKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3JlZ3VsYXInICYmIHRoZW1lLm1peGlucy50b29sYmFyKTtcbmNvbnN0IFRvb2xiYXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUb29sYmFyKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUb29sYmFyJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ2RpdicsXG4gICAgICBkaXNhYmxlR3V0dGVycyA9IGZhbHNlLFxuICAgICAgdmFyaWFudCA9ICdyZWd1bGFyJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGRpc2FibGVHdXR0ZXJzLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRvb2xiYXJSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIHJlZjogcmVmLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVG9vbGJhci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgVG9vbGJhciBjaGlsZHJlbiwgdXN1YWxseSBhIG1peHR1cmUgb2YgYEljb25CdXR0b25gLCBgQnV0dG9uYCBhbmQgYFR5cG9ncmFwaHlgLlxuICAgKiBUaGUgVG9vbGJhciBpcyBhIGZsZXggY29udGFpbmVyLCBhbGxvd2luZyBmbGV4IGl0ZW0gcHJvcGVydGllcyB0byBiZSB1c2VkIHRvIGxheSBvdXQgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBkaXNhYmxlcyBndXR0ZXIgcGFkZGluZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVHdXR0ZXJzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ3JlZ3VsYXInXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2RlbnNlJywgJ3JlZ3VsYXInXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFRvb2xiYXI7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlU3ZnSWNvbiBmcm9tICcuLi8uLi91dGlscy9jcmVhdGVTdmdJY29uJztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICpcbiAqIEFsaWFzIHRvIGBDbGVhcmAuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVTdmdJY29uKCAvKiNfX1BVUkVfXyovX2pzeChcInBhdGhcIiwge1xuICBkOiBcIk0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6XCJcbn0pLCAnQ2xvc2UnKTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCBUaGVtZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRoZW1lQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdUaGVtZUNvbnRleHQnO1xufVxuZXhwb3J0IGRlZmF1bHQgVGhlbWVDb250ZXh0OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBUaGVtZUNvbnRleHQgZnJvbSAnLi9UaGVtZUNvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVGhlbWUoKSB7XG4gIGNvbnN0IHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIFJlYWN0LnVzZURlYnVnVmFsdWUodGhlbWUpO1xuICB9XG4gIHJldHVybiB0aGVtZTtcbn0iLCJjb25zdCBoYXNTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5mb3I7XG5leHBvcnQgZGVmYXVsdCBoYXNTeW1ib2wgPyBTeW1ib2wuZm9yKCdtdWkubmVzdGVkJykgOiAnX19USEVNRV9ORVNURURfXyc7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgZXhhY3RQcm9wIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgVGhlbWVDb250ZXh0IGZyb20gJy4uL3VzZVRoZW1lL1RoZW1lQ29udGV4dCc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vdXNlVGhlbWUnO1xuaW1wb3J0IG5lc3RlZCBmcm9tICcuL25lc3RlZCc7XG5cbi8vIFRvIHN1cHBvcnQgY29tcG9zaXRpb24gb2YgdGhlbWUuXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZnVuY3Rpb24gbWVyZ2VPdXRlckxvY2FsVGhlbWUob3V0ZXJUaGVtZSwgbG9jYWxUaGVtZSkge1xuICBpZiAodHlwZW9mIGxvY2FsVGhlbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBtZXJnZWRUaGVtZSA9IGxvY2FsVGhlbWUob3V0ZXJUaGVtZSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghbWVyZ2VkVGhlbWUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogWW91IHNob3VsZCByZXR1cm4gYW4gb2JqZWN0IGZyb20geW91ciB0aGVtZSBmdW5jdGlvbiwgaS5lLicsICc8VGhlbWVQcm92aWRlciB0aGVtZT17KCkgPT4gKHt9KX0gLz4nXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZWRUaGVtZTtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dGVyVGhlbWUsIGxvY2FsVGhlbWUpO1xufVxuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IHRha2VzIGEgYHRoZW1lYCBwcm9wLlxuICogSXQgbWFrZXMgdGhlIGB0aGVtZWAgYXZhaWxhYmxlIGRvd24gdGhlIFJlYWN0IHRyZWUgdGhhbmtzIHRvIFJlYWN0IGNvbnRleHQuXG4gKiBUaGlzIGNvbXBvbmVudCBzaG91bGQgcHJlZmVyYWJseSBiZSB1c2VkIGF0ICoqdGhlIHJvb3Qgb2YgeW91ciBjb21wb25lbnQgdHJlZSoqLlxuICovXG5mdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjaGlsZHJlbixcbiAgICB0aGVtZTogbG9jYWxUaGVtZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IG91dGVyVGhlbWUgPSB1c2VUaGVtZSgpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChvdXRlclRoZW1lID09PSBudWxsICYmIHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3UgYXJlIHByb3ZpZGluZyBhIHRoZW1lIGZ1bmN0aW9uIHByb3AgdG8gdGhlIFRoZW1lUHJvdmlkZXIgY29tcG9uZW50OicsICc8VGhlbWVQcm92aWRlciB0aGVtZT17b3V0ZXJUaGVtZSA9PiBvdXRlclRoZW1lfSAvPicsICcnLCAnSG93ZXZlciwgbm8gb3V0ZXIgdGhlbWUgaXMgcHJlc2VudC4nLCAnTWFrZSBzdXJlIGEgdGhlbWUgaXMgYWxyZWFkeSBpbmplY3RlZCBoaWdoZXIgaW4gdGhlIFJlYWN0IHRyZWUgJyArICdvciBwcm92aWRlIGEgdGhlbWUgb2JqZWN0LiddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdGhlbWUgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBvdXRwdXQgPSBvdXRlclRoZW1lID09PSBudWxsID8gbG9jYWxUaGVtZSA6IG1lcmdlT3V0ZXJMb2NhbFRoZW1lKG91dGVyVGhlbWUsIGxvY2FsVGhlbWUpO1xuICAgIGlmIChvdXRwdXQgIT0gbnVsbCkge1xuICAgICAgb3V0cHV0W25lc3RlZF0gPSBvdXRlclRoZW1lICE9PSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9LCBbbG9jYWxUaGVtZSwgb3V0ZXJUaGVtZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHRoZW1lLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogWW91ciBjb21wb25lbnQgdHJlZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEEgdGhlbWUgb2JqZWN0LiBZb3UgY2FuIHByb3ZpZGUgYSBmdW5jdGlvbiB0byBleHRlbmQgdGhlIG91dGVyIHRoZW1lLlxuICAgKi9cbiAgdGhlbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5mdW5jXSkuaXNSZXF1aXJlZFxufSA6IHZvaWQgMDtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzID0gZXhhY3RQcm9wKFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzKSA6IHZvaWQgMDtcbn1cbmV4cG9ydCBkZWZhdWx0IFRoZW1lUHJvdmlkZXI7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIGFzIE11aVRoZW1lUHJvdmlkZXIsIHVzZVRoZW1lIGFzIHVzZVByaXZhdGVUaGVtZSB9IGZyb20gJ0BtdWkvcHJpdmF0ZS10aGVtaW5nJztcbmltcG9ydCB7IGV4YWN0UHJvcCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVGhlbWVDb250ZXh0IGFzIFN0eWxlZEVuZ2luZVRoZW1lQ29udGV4dCB9IGZyb20gJ0BtdWkvc3R5bGVkLWVuZ2luZSc7XG5pbXBvcnQgdXNlVGhlbWVXaXRob3V0RGVmYXVsdCBmcm9tICcuLi91c2VUaGVtZVdpdGhvdXREZWZhdWx0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBFTVBUWV9USEVNRSA9IHt9O1xuZnVuY3Rpb24gdXNlVGhlbWVTY29waW5nKHRoZW1lSWQsIHVwcGVyVGhlbWUsIGxvY2FsVGhlbWUsIGlzUHJpdmF0ZSA9IGZhbHNlKSB7XG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCByZXNvbHZlZFRoZW1lID0gdGhlbWVJZCA/IHVwcGVyVGhlbWVbdGhlbWVJZF0gfHwgdXBwZXJUaGVtZSA6IHVwcGVyVGhlbWU7XG4gICAgaWYgKHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zdCBtZXJnZWRUaGVtZSA9IGxvY2FsVGhlbWUocmVzb2x2ZWRUaGVtZSk7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGVtZUlkID8gX2V4dGVuZHMoe30sIHVwcGVyVGhlbWUsIHtcbiAgICAgICAgW3RoZW1lSWRdOiBtZXJnZWRUaGVtZVxuICAgICAgfSkgOiBtZXJnZWRUaGVtZTtcbiAgICAgIC8vIG11c3QgcmV0dXJuIGEgZnVuY3Rpb24gZm9yIHRoZSBwcml2YXRlIHRoZW1lIHRvIE5PVCBtZXJnZSB3aXRoIHRoZSB1cHBlciB0aGVtZS5cbiAgICAgIC8vIHNlZSB0aGUgdGVzdCBjYXNlIFwidXNlIHByb3ZpZGVkIHRoZW1lIGZyb20gYSBjYWxsYmFja1wiIGluIFRoZW1lUHJvdmlkZXIudGVzdC5qc1xuICAgICAgaWYgKGlzUHJpdmF0ZSkge1xuICAgICAgICByZXR1cm4gKCkgPT4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIHRoZW1lSWQgPyBfZXh0ZW5kcyh7fSwgdXBwZXJUaGVtZSwge1xuICAgICAgW3RoZW1lSWRdOiBsb2NhbFRoZW1lXG4gICAgfSkgOiBfZXh0ZW5kcyh7fSwgdXBwZXJUaGVtZSwgbG9jYWxUaGVtZSk7XG4gIH0sIFt0aGVtZUlkLCB1cHBlclRoZW1lLCBsb2NhbFRoZW1lLCBpc1ByaXZhdGVdKTtcbn1cblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCBtYWtlcyB0aGUgYHRoZW1lYCBhdmFpbGFibGUgZG93biB0aGUgUmVhY3QgdHJlZS5cbiAqIEl0IHNob3VsZCBwcmVmZXJhYmx5IGJlIHVzZWQgYXQgKip0aGUgcm9vdCBvZiB5b3VyIGNvbXBvbmVudCB0cmVlKiouXG4gKlxuICogPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT4gLy8gZXhpc3RpbmcgdXNlIGNhc2VcbiAqIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt7IGlkOiB0aGVtZSB9fT4gLy8gdGhlbWUgc2NvcGluZ1xuICovXG5mdW5jdGlvbiBUaGVtZVByb3ZpZGVyKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjaGlsZHJlbixcbiAgICB0aGVtZTogbG9jYWxUaGVtZSxcbiAgICB0aGVtZUlkXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgdXBwZXJUaGVtZSA9IHVzZVRoZW1lV2l0aG91dERlZmF1bHQoRU1QVFlfVEhFTUUpO1xuICBjb25zdCB1cHBlclByaXZhdGVUaGVtZSA9IHVzZVByaXZhdGVUaGVtZSgpIHx8IEVNUFRZX1RIRU1FO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICh1cHBlclRoZW1lID09PSBudWxsICYmIHR5cGVvZiBsb2NhbFRoZW1lID09PSAnZnVuY3Rpb24nIHx8IHRoZW1lSWQgJiYgdXBwZXJUaGVtZSAmJiAhdXBwZXJUaGVtZVt0aGVtZUlkXSAmJiB0eXBlb2YgbG9jYWxUaGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogWW91IGFyZSBwcm92aWRpbmcgYSB0aGVtZSBmdW5jdGlvbiBwcm9wIHRvIHRoZSBUaGVtZVByb3ZpZGVyIGNvbXBvbmVudDonLCAnPFRoZW1lUHJvdmlkZXIgdGhlbWU9e291dGVyVGhlbWUgPT4gb3V0ZXJUaGVtZX0gLz4nLCAnJywgJ0hvd2V2ZXIsIG5vIG91dGVyIHRoZW1lIGlzIHByZXNlbnQuJywgJ01ha2Ugc3VyZSBhIHRoZW1lIGlzIGFscmVhZHkgaW5qZWN0ZWQgaGlnaGVyIGluIHRoZSBSZWFjdCB0cmVlICcgKyAnb3IgcHJvdmlkZSBhIHRoZW1lIG9iamVjdC4nXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGVuZ2luZVRoZW1lID0gdXNlVGhlbWVTY29waW5nKHRoZW1lSWQsIHVwcGVyVGhlbWUsIGxvY2FsVGhlbWUpO1xuICBjb25zdCBwcml2YXRlVGhlbWUgPSB1c2VUaGVtZVNjb3BpbmcodGhlbWVJZCwgdXBwZXJQcml2YXRlVGhlbWUsIGxvY2FsVGhlbWUsIHRydWUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTXVpVGhlbWVQcm92aWRlciwge1xuICAgIHRoZW1lOiBwcml2YXRlVGhlbWUsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFN0eWxlZEVuZ2luZVRoZW1lQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgdmFsdWU6IGVuZ2luZVRoZW1lLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSlcbiAgfSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUaGVtZVByb3ZpZGVyLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFlvdXIgY29tcG9uZW50IHRyZWUuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBBIHRoZW1lIG9iamVjdC4gWW91IGNhbiBwcm92aWRlIGEgZnVuY3Rpb24gdG8gZXh0ZW5kIHRoZSBvdXRlciB0aGVtZS5cbiAgICovXG4gIHRoZW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBUaGUgZGVzaWduIHN5c3RlbSdzIHVuaXF1ZSBpZCBmb3IgZ2V0dGluZyB0aGUgY29ycmVzcG9uZGVkIHRoZW1lIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGRlc2lnbiBzeXN0ZW1zLlxuICAgKi9cbiAgdGhlbWVJZDogUHJvcFR5cGVzLnN0cmluZ1xufSA6IHZvaWQgMDtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzID0gZXhhY3RQcm9wKFRoZW1lUHJvdmlkZXIucHJvcFR5cGVzKSA6IHZvaWQgMDtcbn1cbmV4cG9ydCBkZWZhdWx0IFRoZW1lUHJvdmlkZXI7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1widGhlbWVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciBhcyBTeXN0ZW1UaGVtZVByb3ZpZGVyIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IFRIRU1FX0lEIGZyb20gJy4vaWRlbnRpZmllcic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGhlbWVQcm92aWRlcihfcmVmKSB7XG4gIGxldCB7XG4gICAgICB0aGVtZTogdGhlbWVJbnB1dFxuICAgIH0gPSBfcmVmLFxuICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgc2NvcGVkVGhlbWUgPSB0aGVtZUlucHV0W1RIRU1FX0lEXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFN5c3RlbVRoZW1lUHJvdmlkZXIsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIHRoZW1lSWQ6IHNjb3BlZFRoZW1lID8gVEhFTUVfSUQgOiB1bmRlZmluZWQsXG4gICAgdGhlbWU6IHNjb3BlZFRoZW1lIHx8IHRoZW1lSW5wdXRcbiAgfSkpO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGhlbWVQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBZb3VyIGNvbXBvbmVudCB0cmVlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogQSB0aGVtZSBvYmplY3QuIFlvdSBjYW4gcHJvdmlkZSBhIGZ1bmN0aW9uIHRvIGV4dGVuZCB0aGUgb3V0ZXIgdGhlbWUuXG4gICAqL1xuICB0aGVtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmZ1bmNdKS5pc1JlcXVpcmVkXG59IDogdm9pZCAwOyJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwic3RyaXBEaWFjcml0aWNzIiwic3RyaW5nIiwibm9ybWFsaXplIiwicmVwbGFjZSIsImZpbmRJbmRleCIsImFycmF5IiwiY29tcCIsImkiLCJsZW5ndGgiLCJkZWZhdWx0RmlsdGVyT3B0aW9ucyIsImNvbmZpZyIsImlnbm9yZUFjY2VudHMiLCJpZ25vcmVDYXNlIiwibGltaXQiLCJtYXRjaEZyb20iLCJzdHJpbmdpZnkiLCJ0cmltIiwib3B0aW9ucyIsImlucHV0VmFsdWUiLCJnZXRPcHRpb25MYWJlbCIsImlucHV0IiwidG9Mb3dlckNhc2UiLCJmaWx0ZXJlZE9wdGlvbnMiLCJmaWx0ZXIiLCJvcHRpb24iLCJjYW5kaWRhdGUiLCJpbmRleE9mIiwic2xpY2UiLCJjcmVhdGVGaWx0ZXJPcHRpb25zIiwiZGVmYXVsdElzQWN0aXZlRWxlbWVudEluTGlzdGJveCIsImxpc3Rib3hSZWYiLCJfbGlzdGJveFJlZiRjdXJyZW50JHAiLCJjdXJyZW50IiwicGFyZW50RWxlbWVudCIsImNvbnRhaW5zIiwiZG9jdW1lbnQiLCJhY3RpdmVFbGVtZW50IiwidXNlQXV0b2NvbXBsZXRlIiwicHJvcHMiLCJ1bnN0YWJsZV9pc0FjdGl2ZUVsZW1lbnRJbkxpc3Rib3giLCJ1bnN0YWJsZV9jbGFzc05hbWVQcmVmaXgiLCJhdXRvQ29tcGxldGUiLCJhdXRvSGlnaGxpZ2h0IiwiYXV0b1NlbGVjdCIsImJsdXJPblNlbGVjdCIsImNsZWFyT25CbHVyIiwiZnJlZVNvbG8iLCJjbGVhck9uRXNjYXBlIiwiY29tcG9uZW50TmFtZSIsImRlZmF1bHRWYWx1ZSIsIm11bHRpcGxlIiwiZGlzYWJsZUNsZWFyYWJsZSIsImRpc2FibGVDbG9zZU9uU2VsZWN0IiwiZGlzYWJsZWQiLCJkaXNhYmxlZFByb3AiLCJkaXNhYmxlZEl0ZW1zRm9jdXNhYmxlIiwiZGlzYWJsZUxpc3RXcmFwIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkRpc2FibGVkIiwiZ2V0T3B0aW9uTGFiZWxQcm9wIiwiX29wdGlvbiRsYWJlbCIsImxhYmVsIiwiZ3JvdXBCeSIsImhhbmRsZUhvbWVFbmRLZXlzIiwiaWQiLCJpZFByb3AiLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJpbnB1dFZhbHVlUHJvcCIsImlzT3B0aW9uRXF1YWxUb1ZhbHVlIiwidmFsdWUiLCJvbkNoYW5nZSIsIm9uQ2xvc2UiLCJvbkhpZ2hsaWdodENoYW5nZSIsIm9uSW5wdXRDaGFuZ2UiLCJvbk9wZW4iLCJvcGVuIiwib3BlblByb3AiLCJvcGVuT25Gb2N1cyIsInJlYWRPbmx5Iiwic2VsZWN0T25Gb2N1cyIsInZhbHVlUHJvcCIsInVzZUlkIiwib3B0aW9uTGFiZWwiLCJTdHJpbmciLCJpZ25vcmVGb2N1cyIsImZpcnN0Rm9jdXMiLCJpbnB1dFJlZiIsImFuY2hvckVsIiwic2V0QW5jaG9yRWwiLCJmb2N1c2VkVGFnIiwic2V0Rm9jdXNlZFRhZyIsImRlZmF1bHRIaWdobGlnaHRlZCIsImhpZ2hsaWdodGVkSW5kZXhSZWYiLCJzZXRWYWx1ZVN0YXRlIiwidXNlQ29udHJvbGxlZCIsImNvbnRyb2xsZWQiLCJuYW1lIiwic2V0SW5wdXRWYWx1ZVN0YXRlIiwic3RhdGUiLCJmb2N1c2VkIiwic2V0Rm9jdXNlZCIsInJlc2V0SW5wdXRWYWx1ZSIsImV2ZW50IiwibmV3VmFsdWUiLCJuZXdJbnB1dFZhbHVlIiwic2V0T3BlblN0YXRlIiwiaW5wdXRQcmlzdGluZSIsInNldElucHV0UHJpc3RpbmUiLCJpbnB1dFZhbHVlSXNTZWxlY3RlZFZhbHVlIiwicG9wdXBPcGVuIiwic29tZSIsInZhbHVlMiIsInByZXZpb3VzUHJvcHMiLCJyZWYiLCJ2YWx1ZUNoYW5nZSIsImxpc3Rib3hBdmFpbGFibGUiLCJmb2N1c1RhZyIsInVzZUV2ZW50Q2FsbGJhY2siLCJ0YWdUb0ZvY3VzIiwiZm9jdXMiLCJxdWVyeVNlbGVjdG9yIiwic2V0SGlnaGxpZ2h0ZWRJbmRleCIsImluZGV4IiwicmVhc29uIiwicmVtb3ZlQXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwicHJldiIsImNsYXNzTGlzdCIsInJlbW92ZSIsImxpc3Rib3hOb2RlIiwiZ2V0QXR0cmlidXRlIiwic2Nyb2xsVG9wIiwiYWRkIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwiZWxlbWVudCIsInNjcm9sbEJvdHRvbSIsImVsZW1lbnRCb3R0b20iLCJvZmZzZXRUb3AiLCJvZmZzZXRIZWlnaHQiLCJjaGFuZ2VIaWdobGlnaHRlZEluZGV4IiwiZGlmZiIsImRpcmVjdGlvbiIsIm5leHRJbmRleCIsIm5leHRGb2N1cyIsIm5leHRGb2N1c0Rpc2FibGVkIiwiaGFzQXR0cmlidXRlIiwidmFsaWRPcHRpb25JbmRleCIsIm1heEluZGV4IiwibmV3SW5kZXgiLCJNYXRoIiwiYWJzIiwiZ2V0TmV4dEluZGV4Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzeW5jSGlnaGxpZ2h0ZWRJbmRleCIsImV2ZXJ5IiwidmFsIiwidmFsdWUxIiwicHJldmlvdXNIaWdobGlnaHRlZE9wdGlvbiIsImNoZWNrSGlnaGxpZ2h0ZWRPcHRpb25FeGlzdHMiLCJ2YWx1ZUl0ZW0iLCJjdXJyZW50T3B0aW9uIiwiaXRlbUluZGV4Iiwib3B0aW9uSXRlbSIsImhhbmRsZUxpc3Rib3hSZWYiLCJub2RlIiwic2V0UmVmIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlVmFsdWUiLCJkZXRhaWxzIiwiaXNUb3VjaCIsInNlbGVjdE5ld1ZhbHVlIiwicmVhc29uUHJvcCIsIm9yaWdpbiIsIkFycmF5IiwiaXNBcnJheSIsInB1c2giLCJzcGxpY2UiLCJjdHJsS2V5IiwibWV0YUtleSIsImJsdXIiLCJoYW5kbGVGb2N1c1RhZyIsIm5leHRUYWciLCJ2YWxpZFRhZ0luZGV4IiwiaGFuZGxlQ2xlYXIiLCJoYW5kbGVLZXlEb3duIiwib3RoZXIiLCJvbktleURvd24iLCJkZWZhdWx0TXVpUHJldmVudGVkIiwia2V5Iiwid2hpY2giLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZUZvY3VzIiwiaGFuZGxlQmx1ciIsImhhbmRsZUlucHV0Q2hhbmdlIiwidGFyZ2V0IiwiaGFuZGxlT3B0aW9uTW91c2VNb3ZlIiwiTnVtYmVyIiwiY3VycmVudFRhcmdldCIsImhhbmRsZU9wdGlvblRvdWNoU3RhcnQiLCJoYW5kbGVPcHRpb25DbGljayIsImhhbmRsZVRhZ0RlbGV0ZSIsImhhbmRsZVBvcHVwSW5kaWNhdG9yIiwiaGFuZGxlTW91c2VEb3duIiwiaGFuZGxlQ2xpY2siLCJzZWxlY3Rpb25FbmQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdCIsImhhbmRsZUlucHV0TW91c2VEb3duIiwiZGlydHkiLCJncm91cGVkT3B0aW9ucyIsIk1hcCIsInJlZHVjZSIsImFjYyIsImdyb3VwIiwiZ2V0Um9vdFByb3BzIiwib25Nb3VzZURvd24iLCJvbkNsaWNrIiwiZ2V0SW5wdXRMYWJlbFByb3BzIiwiaHRtbEZvciIsImdldElucHV0UHJvcHMiLCJvbkJsdXIiLCJvbkZvY3VzIiwidW5kZWZpbmVkIiwiYXV0b0NhcGl0YWxpemUiLCJzcGVsbENoZWNrIiwicm9sZSIsImdldENsZWFyUHJvcHMiLCJ0YWJJbmRleCIsImdldFBvcHVwSW5kaWNhdG9yUHJvcHMiLCJnZXRUYWdQcm9wcyIsIm9uRGVsZXRlIiwiZ2V0TGlzdGJveFByb3BzIiwiZ2V0T3B0aW9uUHJvcHMiLCJzZWxlY3RlZCIsIm9uTW91c2VNb3ZlIiwib25Ub3VjaFN0YXJ0IiwiZXhwYW5kZWQiLCJnZXRMaXN0U3ViaGVhZGVyVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsIkxpc3RTdWJoZWFkZXJSb290Iiwic3R5bGVkIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJzdHlsZXMiLCJvd25lclN0YXRlIiwicm9vdCIsImNvbG9yIiwiY2FwaXRhbGl6ZSIsImRpc2FibGVHdXR0ZXJzIiwiZ3V0dGVycyIsImluc2V0IiwiZGlzYWJsZVN0aWNreSIsInN0aWNreSIsInRoZW1lIiwiYm94U2l6aW5nIiwibGluZUhlaWdodCIsImxpc3RTdHlsZSIsInZhcnMiLCJwYWxldHRlIiwidGV4dCIsInNlY29uZGFyeSIsImZvbnRGYW1pbHkiLCJ0eXBvZ3JhcGh5IiwiZm9udFdlaWdodCIsImZvbnRXZWlnaHRNZWRpdW0iLCJmb250U2l6ZSIsInB4VG9SZW0iLCJwcmltYXJ5IiwibWFpbiIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwicG9zaXRpb24iLCJ0b3AiLCJ6SW5kZXgiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kIiwicGFwZXIiLCJMaXN0U3ViaGVhZGVyIiwiaW5Qcm9wcyIsInVzZVRoZW1lUHJvcHMiLCJjbGFzc05hbWUiLCJjb21wb25lbnQiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJtdWlTa2lwTGlzdEhpZ2hsaWdodCIsImdldEF1dG9jb21wbGV0ZVV0aWxpdHlDbGFzcyIsIl9DbGVhckljb24iLCJfQXJyb3dEcm9wRG93bkljb24iLCJfZXhjbHVkZWQyIiwiQXV0b2NvbXBsZXRlUm9vdCIsImZ1bGxXaWR0aCIsImhhc0NsZWFySWNvbiIsImhhc1BvcHVwSWNvbiIsImlucHV0Rm9jdXNlZCIsInNpemUiLCJ0YWciLCJpbnB1dFJvb3QiLCJjbGVhckluZGljYXRvciIsInZpc2liaWxpdHkiLCJ3aWR0aCIsIm1hcmdpbiIsIm1heFdpZHRoIiwiZmxleFdyYXAiLCJtaW5XaWR0aCIsImlucHV0Q2xhc3NlcyIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nIiwiaW5wdXRCYXNlQ2xhc3NlcyIsInNpemVTbWFsbCIsIm91dGxpbmVkSW5wdXRDbGFzc2VzIiwiZW5kQWRvcm5tZW50IiwicmlnaHQiLCJwYWRkaW5nVG9wIiwiZmlsbGVkSW5wdXRDbGFzc2VzIiwiaGlkZGVuTGFiZWwiLCJmbGV4R3JvdyIsInRleHRPdmVyZmxvdyIsIm9wYWNpdHkiLCJBdXRvY29tcGxldGVFbmRBZG9ybm1lbnQiLCJBdXRvY29tcGxldGVDbGVhckluZGljYXRvciIsIkljb25CdXR0b24iLCJtYXJnaW5SaWdodCIsIkF1dG9jb21wbGV0ZVBvcHVwSW5kaWNhdG9yIiwicG9wdXBJbmRpY2F0b3IiLCJwb3B1cEluZGljYXRvck9wZW4iLCJ0cmFuc2Zvcm0iLCJBdXRvY29tcGxldGVQb3BwZXIiLCJQb3BwZXIiLCJwb3BwZXIiLCJkaXNhYmxlUG9ydGFsIiwicG9wcGVyRGlzYWJsZVBvcnRhbCIsIm1vZGFsIiwiQXV0b2NvbXBsZXRlUGFwZXIiLCJQYXBlciIsImJvZHkxIiwib3ZlcmZsb3ciLCJBdXRvY29tcGxldGVMb2FkaW5nIiwibG9hZGluZyIsIkF1dG9jb21wbGV0ZU5vT3B0aW9ucyIsIm5vT3B0aW9ucyIsIkF1dG9jb21wbGV0ZUxpc3Rib3giLCJsaXN0Ym94IiwibWF4SGVpZ2h0IiwibWluSGVpZ2h0IiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImN1cnNvciIsIm91dGxpbmUiLCJXZWJraXRUYXBIaWdobGlnaHRDb2xvciIsImJyZWFrcG9pbnRzIiwidXAiLCJhY3Rpb24iLCJob3ZlciIsImRpc2FibGVkT3BhY2l0eSIsInBvaW50ZXJFdmVudHMiLCJmb2N1c1Zpc2libGUiLCJtYWluQ2hhbm5lbCIsInNlbGVjdGVkT3BhY2l0eSIsImhvdmVyT3BhY2l0eSIsImZvY3VzT3BhY2l0eSIsIkF1dG9jb21wbGV0ZUdyb3VwTGFiZWwiLCJncm91cExhYmVsIiwiQXV0b2NvbXBsZXRlR3JvdXBVbCIsImdyb3VwVWwiLCJfc2xvdFByb3BzJGNsZWFySW5kaWMiLCJfc2xvdFByb3BzJHBhcGVyIiwiX3Nsb3RQcm9wcyRwb3BwZXIiLCJfc2xvdFByb3BzJHBvcHVwSW5kaWMiLCJDaGlwUHJvcHMiLCJjbGVhckljb24iLCJjbGVhclRleHQiLCJjbG9zZVRleHQiLCJjb21wb25lbnRzUHJvcHMiLCJmb3JjZVBvcHVwSWNvbiIsImdldExpbWl0VGFnc1RleHQiLCJtb3JlIiwibGltaXRUYWdzIiwiTGlzdGJveENvbXBvbmVudCIsIkxpc3Rib3hQcm9wcyIsImxvYWRpbmdUZXh0Iiwibm9PcHRpb25zVGV4dCIsIm9wZW5UZXh0IiwiUGFwZXJDb21wb25lbnQiLCJQb3BwZXJDb21wb25lbnQiLCJwb3B1cEljb24iLCJBcnJvd0Ryb3BEb3duIiwiQSIsInJlbmRlckdyb3VwIiwicmVuZGVyR3JvdXBQcm9wIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJyZW5kZXJPcHRpb25Qcm9wIiwicmVuZGVyVGFncyIsInNsb3RQcm9wcyIsImV4dGVybmFsTGlzdGJveFJlZiIsIl9nZXRMaXN0Ym94UHJvcHMiLCJvdGhlckxpc3Rib3hQcm9wcyIsImNvbWJpbmVkTGlzdGJveFJlZiIsInVzZUZvcmtSZWYiLCJzdGFydEFkb3JubWVudCIsImdldEN1c3RvbWl6ZWRUYWdQcm9wcyIsInBhcmFtcyIsIm1hcCIsIkNoaXAiLCJjaGlsZHJlbiIsInByb3BzMiIsInJlbmRlckxpc3RPcHRpb24iLCJvcHRpb25Qcm9wcyIsImNsZWFySW5kaWNhdG9yU2xvdFByb3BzIiwicGFwZXJTbG90UHJvcHMiLCJwb3BwZXJTbG90UHJvcHMiLCJwb3B1cEluZGljYXRvclNsb3RQcm9wcyIsIklucHV0TGFiZWxQcm9wcyIsIklucHV0UHJvcHMiLCJ0aXRsZSIsImlucHV0UHJvcHMiLCJzdHlsZSIsImNsaWVudFdpZHRoIiwib3B0aW9uMiIsImluZGV4MiIsImdldEljb25CdXR0b25VdGlsaXR5Q2xhc3MiLCJJY29uQnV0dG9uUm9vdCIsIkJ1dHRvbkJhc2UiLCJlZGdlIiwidGV4dEFsaWduIiwiZmxleCIsImJvcmRlclJhZGl1cyIsImFjdGl2ZSIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImR1cmF0aW9uIiwic2hvcnRlc3QiLCJkaXNhYmxlUmlwcGxlIiwiYWN0aXZlQ2hhbm5lbCIsIm1hcmdpbkxlZnQiLCJfcGFsZXR0ZSIsImRpc2FibGVGb2N1c1JpcHBsZSIsImNlbnRlclJpcHBsZSIsImZvY3VzUmlwcGxlIiwiZ2V0VG9vbGJhclV0aWxpdHlDbGFzcyIsIlRvb2xiYXJSb290IiwidmFyaWFudCIsInNwYWNpbmciLCJtaXhpbnMiLCJ0b29sYmFyIiwidXNlVGhlbWUiLCJTeW1ib2wiLCJmb3IiLCJsb2NhbFRoZW1lIiwib3V0ZXJUaGVtZSIsIm91dHB1dCIsIm1lcmdlT3V0ZXJMb2NhbFRoZW1lIiwibmVzdGVkIiwiUHJvdmlkZXIiLCJFTVBUWV9USEVNRSIsInVzZVRoZW1lU2NvcGluZyIsInRoZW1lSWQiLCJ1cHBlclRoZW1lIiwiaXNQcml2YXRlIiwicmVzb2x2ZWRUaGVtZSIsIm1lcmdlZFRoZW1lIiwicmVzdWx0IiwidXNlVGhlbWVXaXRob3V0RGVmYXVsdCIsInVwcGVyUHJpdmF0ZVRoZW1lIiwiZW5naW5lVGhlbWUiLCJwcml2YXRlVGhlbWUiLCJfcmVmIiwidGhlbWVJbnB1dCIsInNjb3BlZFRoZW1lIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5342.dce1814e.js b/react_frontend/static/react_frontend/js/5342.dce1814e.js new file mode 100644 index 000000000..f064f8130 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5342.dce1814e.js @@ -0,0 +1,3 @@ +/*! For license information please see 5342.dce1814e.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5342],{7437:(e,t,n)=>{n.d(t,{AH:()=>u,i7:()=>c,mL:()=>s});var o=n(5684),r=n(6540),i=n(41),l=n(1287),a=n(6899),s=(n(4300),n(4146),(0,o.w)((function(e,t){var n=e.styles,s=(0,a.J)([n],void 0,r.useContext(o.T));if(!o.i){for(var u,c=s.name,d=s.styles,p=s.next;void 0!==p;)c+=" "+p.name,d+=p.styles,p=p.next;var m=!0===t.compat,f=t.insert("",{name:c,styles:d},t.sheet,m);return m?null:r.createElement("style",((u={})["data-emotion"]=t.key+"-global "+c,u.dangerouslySetInnerHTML={__html:f},u.nonce=t.sheet.nonce,u))}var h=r.useRef();return(0,l.i)((function(){var e=t.key+"-global",n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),o=!1,r=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),null!==r&&(o=!0,r.setAttribute("data-emotion",e),n.hydrate([r])),h.current=[n,o],function(){n.flush()}}),[t]),(0,l.i)((function(){var e=h.current,n=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,i.sk)(t,s.next,!0),n.tags.length){var o=n.tags[n.tags.length-1].nextElementSibling;n.before=o,n.flush()}t.insert("",s,n,!1)}}),[t,s.name]),null})));function u(){for(var e=arguments.length,t=new Array(e),n=0;n{n.d(t,{A:()=>o});const o=n(6540).createContext(void 0)},8086:(e,t,n)=>{function o({props:e,states:t,muiFormControl:n}){return t.reduce(((t,o)=>(t[o]=e[o],n&&void 0===e[o]&&(t[o]=n[o]),t)),{})}n.d(t,{A:()=>o})},9716:(e,t,n)=>{n.d(t,{A:()=>i});var o=n(6540),r=n(3800);function i(){return o.useContext(r.A)}},4215:(e,t,n)=>{n.d(t,{f3:()=>K,Sh:()=>W,Ay:()=>_,Oj:()=>D,WC:()=>B});var o=n(8587),r=n(8168),i=n(2599),l=n(6540),a=n(53),s=n(5659),u=n(961),c=n(1523),d=n(4877),p=n(4705),m=n(1529),f=n(4848);const h=["onChange","maxRows","minRows","style","value"];function v(e){return parseInt(e,10)||0}const A={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"};function y(e){return null==e||0===Object.keys(e).length||0===e.outerHeightStyle&&!e.overflow}const g=l.forwardRef((function(e,t){const{onChange:n,maxRows:i,minRows:a=1,style:s,value:g}=e,b=(0,o.A)(e,h),{current:S}=l.useRef(null!=g),x=l.useRef(null),w=(0,c.A)(t,x),C=l.useRef(null),P=l.useRef(0),[M,z]=l.useState({outerHeightStyle:0}),R=l.useCallback((()=>{const t=x.current,n=(0,d.A)(t).getComputedStyle(t);if("0px"===n.width)return{outerHeightStyle:0};const o=C.current;o.style.width=n.width,o.value=t.value||e.placeholder||"x","\n"===o.value.slice(-1)&&(o.value+=" ");const r=n.boxSizing,l=v(n.paddingBottom)+v(n.paddingTop),s=v(n.borderBottomWidth)+v(n.borderTopWidth),u=o.scrollHeight;o.value="x";const c=o.scrollHeight;let p=u;return a&&(p=Math.max(Number(a)*c,p)),i&&(p=Math.min(Number(i)*c,p)),p=Math.max(p,c),{outerHeightStyle:p+("border-box"===r?l+s:0),overflow:Math.abs(p-u)<=1}}),[i,a,e.placeholder]),k=(e,t)=>{const{outerHeightStyle:n,overflow:o}=t;return P.current<20&&(n>0&&Math.abs((e.outerHeightStyle||0)-n)>1||e.overflow!==o)?(P.current+=1,{overflow:o,outerHeightStyle:n}):e},T=l.useCallback((()=>{const e=R();y(e)||z((t=>k(t,e)))}),[R]);return l.useEffect((()=>{const e=(0,p.A)((()=>{P.current=0,x.current&&(()=>{const e=R();y(e)||u.flushSync((()=>{z((t=>k(t,e)))}))})()}));let t;const n=x.current,o=(0,d.A)(n);return o.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&&(t=new ResizeObserver(e),t.observe(n)),()=>{e.clear(),o.removeEventListener("resize",e),t&&t.disconnect()}})),(0,m.A)((()=>{T()})),l.useEffect((()=>{P.current=0}),[g]),(0,f.jsxs)(l.Fragment,{children:[(0,f.jsx)("textarea",(0,r.A)({value:g,onChange:e=>{P.current=0,S||T(),n&&n(e)},ref:w,rows:a,style:(0,r.A)({height:M.outerHeightStyle,overflow:M.overflow?"hidden":void 0},s)},b)),(0,f.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:C,tabIndex:-1,style:(0,r.A)({},A,s,{paddingTop:0,paddingBottom:0})})]})}));var b=n(5419),S=n(8086),x=n(3800),w=n(9716),C=n(7577),P=n(4409),M=n(8466),z=n(6852),R=n(2778),k=n(7437);function T(e){const{styles:t,defaultTheme:n={}}=e,o="function"==typeof t?e=>{return t(null==(o=e)||0===Object.keys(o).length?n:e);var o}:t;return(0,f.jsx)(k.mL,{styles:o})}var E=n(2858);const I=function({styles:e,themeId:t,defaultTheme:n={}}){const o=(0,E.A)(n),r="function"==typeof e?e(t&&o[t]||o):e;return(0,f.jsx)(T,{styles:r})};var F=n(2765),L=n(8312);const N=function(e){return(0,f.jsx)(I,(0,r.A)({},e,{defaultTheme:F.A,themeId:L.A}))};var O=n(2891),j=n(1175);const H=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],B=(e,t)=>{const{ownerState:n}=e;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t[`color${(0,M.A)(n.color)}`],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},D=(e,t)=>{const{ownerState:n}=e;return[t.input,"small"===n.size&&t.inputSizeSmall,n.multiline&&t.inputMultiline,"search"===n.type&&t.inputTypeSearch,n.startAdornment&&t.inputAdornedStart,n.endAdornment&&t.inputAdornedEnd,n.hiddenLabel&&t.inputHiddenLabel]},W=(0,C.Ay)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:B})((({theme:e,ownerState:t})=>(0,r.A)({},e.typography.body1,{color:(e.vars||e).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",[`&.${j.A.disabled}`]:{color:(e.vars||e).palette.text.disabled,cursor:"default"}},t.multiline&&(0,r.A)({padding:"4px 0 5px"},"small"===t.size&&{paddingTop:1}),t.fullWidth&&{width:"100%"}))),K=(0,C.Ay)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:D})((({theme:e,ownerState:t})=>{const n="light"===e.palette.mode,o=(0,r.A)({color:"currentColor"},e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:n?.42:.5},{transition:e.transitions.create("opacity",{duration:e.transitions.duration.shorter})}),i={opacity:"0 !important"},l=e.vars?{opacity:e.vars.opacity.inputPlaceholder}:{opacity:n?.42:.5};return(0,r.A)({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":o,"&::-moz-placeholder":o,"&:-ms-input-placeholder":o,"&::-ms-input-placeholder":o,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},[`label[data-shrink=false] + .${j.A.formControl} &`]:{"&::-webkit-input-placeholder":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus::-webkit-input-placeholder":l,"&:focus::-moz-placeholder":l,"&:focus:-ms-input-placeholder":l,"&:focus::-ms-input-placeholder":l},[`&.${j.A.disabled}`]:{opacity:1,WebkitTextFillColor:(e.vars||e).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},"small"===t.size&&{paddingTop:1},t.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},"search"===t.type&&{MozAppearance:"textfield"})})),$=(0,f.jsx)(N,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),_=l.forwardRef((function(e,t){var n;const u=(0,P.A)({props:e,name:"MuiInputBase"}),{"aria-describedby":c,autoComplete:d,autoFocus:p,className:m,components:h={},componentsProps:v={},defaultValue:A,disabled:y,disableInjectingGlobalStyles:C,endAdornment:k,fullWidth:T=!1,id:E,inputComponent:I="input",inputProps:F={},inputRef:L,maxRows:N,minRows:B,multiline:D=!1,name:_,onBlur:V,onChange:q,onClick:U,onFocus:G,onKeyDown:J,onKeyUp:X,placeholder:Y,readOnly:Z,renderSuffix:Q,rows:ee,slotProps:te={},slots:ne={},startAdornment:oe,type:re="text",value:ie}=u,le=(0,o.A)(u,H),ae=null!=F.value?F.value:ie,{current:se}=l.useRef(null!=ae),ue=l.useRef(),ce=l.useCallback((e=>{}),[]),de=(0,z.A)(ue,L,F.ref,ce),[pe,me]=l.useState(!1),fe=(0,w.A)(),he=(0,S.A)({props:u,muiFormControl:fe,states:["color","disabled","error","hiddenLabel","size","required","filled"]});he.focused=fe?fe.focused:pe,l.useEffect((()=>{!fe&&y&&pe&&(me(!1),V&&V())}),[fe,y,pe,V]);const ve=fe&&fe.onFilled,Ae=fe&&fe.onEmpty,ye=l.useCallback((e=>{(0,O.lq)(e)?ve&&ve():Ae&&Ae()}),[ve,Ae]);(0,R.A)((()=>{se&&ye({value:ae})}),[ae,ye,se]),l.useEffect((()=>{ye(ue.current)}),[]);let ge=I,be=F;D&&"input"===ge&&(be=ee?(0,r.A)({type:void 0,minRows:ee,maxRows:ee},be):(0,r.A)({type:void 0,maxRows:N,minRows:B},be),ge=g),l.useEffect((()=>{fe&&fe.setAdornedStart(Boolean(oe))}),[fe,oe]);const Se=(0,r.A)({},u,{color:he.color||"primary",disabled:he.disabled,endAdornment:k,error:he.error,focused:he.focused,formControl:fe,fullWidth:T,hiddenLabel:he.hiddenLabel,multiline:D,size:he.size,startAdornment:oe,type:re}),xe=(e=>{const{classes:t,color:n,disabled:o,error:r,endAdornment:i,focused:l,formControl:a,fullWidth:u,hiddenLabel:c,multiline:d,readOnly:p,size:m,startAdornment:f,type:h}=e,v={root:["root",`color${(0,M.A)(n)}`,o&&"disabled",r&&"error",u&&"fullWidth",l&&"focused",a&&"formControl","small"===m&&"sizeSmall",d&&"multiline",f&&"adornedStart",i&&"adornedEnd",c&&"hiddenLabel",p&&"readOnly"],input:["input",o&&"disabled","search"===h&&"inputTypeSearch",d&&"inputMultiline","small"===m&&"inputSizeSmall",c&&"inputHiddenLabel",f&&"inputAdornedStart",i&&"inputAdornedEnd",p&&"readOnly"]};return(0,s.A)(v,j.g,t)})(Se),we=ne.root||h.Root||W,Ce=te.root||v.root||{},Pe=ne.input||h.Input||K;return be=(0,r.A)({},be,null!=(n=te.input)?n:v.input),(0,f.jsxs)(l.Fragment,{children:[!C&&$,(0,f.jsxs)(we,(0,r.A)({},Ce,!(0,b.A)(we)&&{ownerState:(0,r.A)({},Se,Ce.ownerState)},{ref:t,onClick:e=>{ue.current&&e.currentTarget===e.target&&ue.current.focus(),U&&!he.disabled&&U(e)}},le,{className:(0,a.A)(xe.root,Ce.className,m,Z&&"MuiInputBase-readOnly"),children:[oe,(0,f.jsx)(x.A.Provider,{value:null,children:(0,f.jsx)(Pe,(0,r.A)({ownerState:Se,"aria-invalid":he.error,"aria-describedby":c,autoComplete:d,autoFocus:p,defaultValue:A,disabled:he.disabled,id:E,onAnimationStart:e=>{ye("mui-auto-fill-cancel"===e.animationName?ue.current:{value:"x"})},name:_,placeholder:Y,readOnly:Z,required:he.required,rows:ee,value:ae,onKeyDown:J,onKeyUp:X,type:re},be,!(0,b.A)(Pe)&&{as:ge,ownerState:(0,r.A)({},Se,be.ownerState)},{ref:de,className:(0,a.A)(xe.input,be.className,Z&&"MuiInputBase-readOnly"),onBlur:e=>{V&&V(e),F.onBlur&&F.onBlur(e),fe&&fe.onBlur?fe.onBlur(e):me(!1)},onChange:(e,...t)=>{if(!se){const t=e.target||ue.current;if(null==t)throw new Error((0,i.A)(1));ye({value:t.value})}F.onChange&&F.onChange(e,...t),q&&q(e,...t)},onFocus:e=>{he.disabled?e.stopPropagation():(G&&G(e),F.onFocus&&F.onFocus(e),fe&&fe.onFocus?fe.onFocus(e):me(!0))}}))}),k,Q?Q((0,r.A)({},he,{startAdornment:oe})):null]}))]})}))},1175:(e,t,n)=>{n.d(t,{A:()=>l,g:()=>i});var o=n(8413),r=n(1609);function i(e){return(0,r.A)("MuiInputBase",e)}const l=(0,o.A)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"])},2891:(e,t,n)=>{function o(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function r(e,t=!1){return e&&(o(e.value)&&""!==e.value||t&&o(e.defaultValue)&&""!==e.defaultValue)}function i(e){return e.startAdornment}n.d(t,{gr:()=>i,lq:()=>r})},9799:(e,t,n)=>{n.d(t,{A:()=>A});var o=n(8587),r=n(8168),i=n(6540),l=n(53),a=n(5659),s=n(7577),u=n(4409),c=n(2850),d=n(8413),p=n(1609);function m(e){return(0,p.A)("MuiList",e)}(0,d.A)("MuiList",["root","padding","dense","subheader"]);var f=n(4848);const h=["children","className","component","dense","disablePadding","subheader"],v=(0,s.Ay)("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})((({ownerState:e})=>(0,r.A)({listStyle:"none",margin:0,padding:0,position:"relative"},!e.disablePadding&&{paddingTop:8,paddingBottom:8},e.subheader&&{paddingTop:0}))),A=i.forwardRef((function(e,t){const n=(0,u.A)({props:e,name:"MuiList"}),{children:s,className:d,component:p="ul",dense:A=!1,disablePadding:y=!1,subheader:g}=n,b=(0,o.A)(n,h),S=i.useMemo((()=>({dense:A})),[A]),x=(0,r.A)({},n,{component:p,dense:A,disablePadding:y}),w=(e=>{const{classes:t,disablePadding:n,dense:o,subheader:r}=e,i={root:["root",!n&&"padding",o&&"dense",r&&"subheader"]};return(0,a.A)(i,m,t)})(x);return(0,f.jsx)(c.A.Provider,{value:S,children:(0,f.jsxs)(v,(0,r.A)({as:p,className:(0,l.A)(w.root,d),ref:t,ownerState:x},b,{children:[g,s]}))})}))},2850:(e,t,n)=>{n.d(t,{A:()=>o});const o=n(6540).createContext({})},9741:(e,t,n)=>{n.d(t,{A:()=>Y});var o=n(8168),r=n(8587),i=n(6540),l=(n(4363),n(53)),a=n(5659),s=n(6248),u=n(9799);const c=n(2539).A;var d=n(6852),p=n(2778),m=n(4848);const f=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function h(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function v(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function A(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:0===n.indexOf(t.keys.join("")))}function y(e,t,n,o,r,i){let l=!1,a=r(e,t,!!t&&n);for(;a;){if(a===e.firstChild){if(l)return!1;l=!0}const t=!o&&(a.disabled||"true"===a.getAttribute("aria-disabled"));if(a.hasAttribute("tabindex")&&A(a,i)&&!t)return a.focus(),!0;a=r(e,a,n)}return!1}const g=i.forwardRef((function(e,t){const{actions:n,autoFocus:l=!1,autoFocusItem:a=!1,children:g,className:b,disabledItemsFocusable:S=!1,disableListWrap:x=!1,onKeyDown:w,variant:C="selectedMenu"}=e,P=(0,r.A)(e,f),M=i.useRef(null),z=i.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,p.A)((()=>{l&&M.current.focus()}),[l]),i.useImperativeHandle(n,(()=>({adjustStyleForScrollbar:(e,t)=>{const n=!M.current.style.width;if(e.clientHeight{i.isValidElement(e)?(e.props.disabled||("selectedMenu"===C&&e.props.selected||-1===k)&&(k=t),k===t&&(e.props.disabled||e.props.muiSkipListHighlight||e.type.muiSkipListHighlight)&&(k+=1,k>=g.length&&(k=-1))):k===t&&(k+=1,k>=g.length&&(k=-1))}));const T=i.Children.map(g,((e,t)=>{if(t===k){const t={};return a&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===C&&(t.tabIndex=0),i.cloneElement(e,t)}return e}));return(0,m.jsx)(u.A,(0,o.A)({role:"menu",ref:R,className:b,onKeyDown:e=>{const t=M.current,n=e.key,o=(0,s.A)(t).activeElement;if("ArrowDown"===n)e.preventDefault(),y(t,o,x,S,h);else if("ArrowUp"===n)e.preventDefault(),y(t,o,x,S,v);else if("Home"===n)e.preventDefault(),y(t,null,x,S,h);else if("End"===n)e.preventDefault(),y(t,null,x,S,v);else if(1===n.length){const r=z.current,i=n.toLowerCase(),l=performance.now();r.keys.length>0&&(l-r.lastTime>500?(r.keys=[],r.repeating=!0,r.previousKeyMatched=!0):r.repeating&&i!==r.keys[0]&&(r.repeating=!1)),r.lastTime=l,r.keys.push(i);const a=o&&!r.repeating&&A(o,r);r.previousKeyMatched&&(a||y(t,o,!1,S,h,r))?e.preventDefault():r.previousKeyMatched=!1}w&&w(e)},tabIndex:l?0:-1},P,{children:T}))}));var b=n(9977),S=n(5419),x=n(7577),w=n(4409),C=n(1935),P=n(3749),M=n(7467),z=n(3466),R=n(538),k=n(8413),T=n(1609);function E(e){return(0,T.A)("MuiPopover",e)}(0,k.A)("MuiPopover",["root","paper"]);const I=["onEntering"],F=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps"],L=["slotProps"];function N(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function O(e,t){let n=0;return"number"==typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function j(e){return[e.horizontal,e.vertical].map((e=>"number"==typeof e?`${e}px`:e)).join(" ")}function H(e){return"function"==typeof e?e():e}const B=(0,x.Ay)(z.A,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),D=(0,x.Ay)(R.A,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),W=i.forwardRef((function(e,t){var n,u,c;const p=(0,w.A)({props:e,name:"MuiPopover"}),{action:f,anchorEl:h,anchorOrigin:v={vertical:"top",horizontal:"left"},anchorPosition:A,anchorReference:y="anchorEl",children:g,className:x,container:z,elevation:R=8,marginThreshold:k=16,open:T,PaperProps:W={},slots:K,slotProps:$,transformOrigin:_={vertical:"top",horizontal:"left"},TransitionComponent:V=M.A,transitionDuration:q="auto",TransitionProps:{onEntering:U}={}}=p,G=(0,r.A)(p.TransitionProps,I),J=(0,r.A)(p,F),X=null!=(n=null==$?void 0:$.paper)?n:W,Y=i.useRef(),Z=(0,d.A)(Y,X.ref),Q=(0,o.A)({},p,{anchorOrigin:v,anchorReference:y,elevation:R,marginThreshold:k,externalPaperSlotProps:X,transformOrigin:_,TransitionComponent:V,transitionDuration:q,TransitionProps:G}),ee=(e=>{const{classes:t}=e;return(0,a.A)({root:["root"],paper:["paper"]},E,t)})(Q),te=i.useCallback((()=>{if("anchorPosition"===y)return A;const e=H(h),t=(e&&1===e.nodeType?e:(0,s.A)(Y.current).body).getBoundingClientRect();return{top:t.top+N(t,v.vertical),left:t.left+O(t,v.horizontal)}}),[h,v.horizontal,v.vertical,A,y]),ne=i.useCallback((e=>({vertical:N(e,_.vertical),horizontal:O(e,_.horizontal)})),[_.horizontal,_.vertical]),oe=i.useCallback((e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=ne(t);if("none"===y)return{top:null,left:null,transformOrigin:j(n)};const o=te();let r=o.top-n.vertical,i=o.left-n.horizontal;const l=r+t.height,a=i+t.width,s=(0,P.A)(H(h)),u=s.innerHeight-k,c=s.innerWidth-k;if(ru){const e=l-u;r-=e,n.vertical+=e}if(ic){const e=a-c;i-=e,n.horizontal+=e}return{top:`${Math.round(r)}px`,left:`${Math.round(i)}px`,transformOrigin:j(n)}}),[h,y,te,ne,k]),[re,ie]=i.useState(T),le=i.useCallback((()=>{const e=Y.current;if(!e)return;const t=oe(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,ie(!0)}),[oe]);i.useEffect((()=>{T&&le()})),i.useImperativeHandle(f,(()=>T?{updatePosition:()=>{le()}}:null),[T,le]),i.useEffect((()=>{if(!T)return;const e=(0,C.A)((()=>{le()})),t=(0,P.A)(h);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}}),[h,T,le]);let ae=q;"auto"!==q||V.muiSupportAuto||(ae=void 0);const se=z||(h?(0,s.A)(H(h)).body:void 0),ue=null!=(u=null==K?void 0:K.root)?u:B,ce=null!=(c=null==K?void 0:K.paper)?c:D,de=(0,b.A)({elementType:ce,externalSlotProps:(0,o.A)({},X,{style:re?X.style:(0,o.A)({},X.style,{opacity:0})}),additionalProps:{elevation:R,ref:Z},ownerState:Q,className:(0,l.A)(ee.paper,null==X?void 0:X.className)}),pe=(0,b.A)({elementType:ue,externalSlotProps:(null==$?void 0:$.root)||{},externalForwardedProps:J,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:se,open:T},ownerState:Q,className:(0,l.A)(ee.root,x)}),{slotProps:me}=pe,fe=(0,r.A)(pe,L);return(0,m.jsx)(ue,(0,o.A)({},fe,!(0,S.A)(ue)&&{slotProps:me},{children:(0,m.jsx)(V,(0,o.A)({appear:!0,in:T,onEntering:(e,t)=>{U&&U(e,t),le()},onExited:()=>{ie(!1)},timeout:ae},G,{children:(0,m.jsx)(ce,(0,o.A)({},de,{children:g}))}))}))}));var K=n(4675);function $(e){return(0,T.A)("MuiMenu",e)}(0,k.A)("MuiMenu",["root","paper","list"]);const _=["onEntering"],V=["autoFocus","children","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant"],q={vertical:"top",horizontal:"right"},U={vertical:"top",horizontal:"left"},G=(0,x.Ay)(W,{shouldForwardProp:e=>(0,x.ep)(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),J=(0,x.Ay)(D,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),X=(0,x.Ay)(g,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),Y=i.forwardRef((function(e,t){const n=(0,w.A)({props:e,name:"MuiMenu"}),{autoFocus:s=!0,children:u,disableAutoFocusItem:c=!1,MenuListProps:d={},onClose:p,open:f,PaperProps:h={},PopoverClasses:v,transitionDuration:A="auto",TransitionProps:{onEntering:y}={},variant:g="selectedMenu"}=n,b=(0,r.A)(n.TransitionProps,_),S=(0,r.A)(n,V),x=(0,K.A)(),C="rtl"===x.direction,P=(0,o.A)({},n,{autoFocus:s,disableAutoFocusItem:c,MenuListProps:d,onEntering:y,PaperProps:h,transitionDuration:A,TransitionProps:b,variant:g}),M=(e=>{const{classes:t}=e;return(0,a.A)({root:["root"],paper:["paper"],list:["list"]},$,t)})(P),z=s&&!c&&f,R=i.useRef(null);let k=-1;return i.Children.map(u,((e,t)=>{i.isValidElement(e)&&(e.props.disabled||("selectedMenu"===g&&e.props.selected||-1===k)&&(k=t))})),(0,m.jsx)(G,(0,o.A)({onClose:p,anchorOrigin:{vertical:"bottom",horizontal:C?"right":"left"},transformOrigin:C?q:U,slots:{paper:J},slotProps:{paper:(0,o.A)({},h,{classes:(0,o.A)({},h.classes,{root:M.paper})})},className:M.root,open:f,ref:t,transitionDuration:A,TransitionProps:(0,o.A)({onEntering:(e,t)=>{R.current&&R.current.adjustStyleForScrollbar(e,x),y&&y(e,t)}},b),ownerState:P},S,{classes:v,children:(0,m.jsx)(X,(0,o.A)({onKeyDown:e=>{"Tab"===e.key&&(e.preventDefault(),p&&p(e,"tabKeyDown"))},actions:R,autoFocus:s&&(-1===k||c),autoFocusItem:z,variant:g},d,{className:(0,l.A)(M.list,d.className),children:u}))}))}))},5003:(e,t,n)=>{n.d(t,{A:()=>g});var o=n(8168),r=n(6540),i=n(8587),l=n(53),a=n(5659),s=n(8466),u=n(4409),c=n(7577),d=n(8413),p=n(1609);function m(e){return(0,p.A)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var f=n(4848);const h=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],v=(0,c.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${(0,s.A)(n.color)}`],t[`fontSize${(0,s.A)(n.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var n,o,r,i,l,a,s,u,c,d,p,m,f;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(n=e.transitions)||null==(o=n.create)?void 0:o.call(n,"fill",{duration:null==(r=e.transitions)||null==(r=r.duration)?void 0:r.shorter}),fontSize:{inherit:"inherit",small:(null==(i=e.typography)||null==(l=i.pxToRem)?void 0:l.call(i,20))||"1.25rem",medium:(null==(a=e.typography)||null==(s=a.pxToRem)?void 0:s.call(a,24))||"1.5rem",large:(null==(u=e.typography)||null==(c=u.pxToRem)?void 0:c.call(u,35))||"2.1875rem"}[t.fontSize],color:null!=(d=null==(p=(e.vars||e).palette)||null==(p=p[t.color])?void 0:p.main)?d:{action:null==(m=(e.vars||e).palette)||null==(m=m.action)?void 0:m.active,disabled:null==(f=(e.vars||e).palette)||null==(f=f.action)?void 0:f.disabled,inherit:void 0}[t.color]}})),A=r.forwardRef((function(e,t){const n=(0,u.A)({props:e,name:"MuiSvgIcon"}),{children:c,className:d,color:p="inherit",component:A="svg",fontSize:y="medium",htmlColor:g,inheritViewBox:b=!1,titleAccess:S,viewBox:x="0 0 24 24"}=n,w=(0,i.A)(n,h),C=r.isValidElement(c)&&"svg"===c.type,P=(0,o.A)({},n,{color:p,component:A,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:b,viewBox:x,hasSvgAsChild:C}),M={};b||(M.viewBox=x);const z=(e=>{const{color:t,fontSize:n,classes:o}=e,r={root:["root","inherit"!==t&&`color${(0,s.A)(t)}`,`fontSize${(0,s.A)(n)}`]};return(0,a.A)(r,m,o)})(P);return(0,f.jsxs)(v,(0,o.A)({as:A,className:(0,l.A)(z.root,d),focusable:"false",color:g,"aria-hidden":!S||void 0,role:S?"img":void 0,ref:t},M,w,C&&c.props,{ownerState:P,children:[C?c.props.children:c,S?(0,f.jsx)("title",{children:S}):null]}))}));A.muiName="SvgIcon";const y=A;function g(e,t){function n(n,r){return(0,f.jsx)(y,(0,o.A)({"data-testid":`${t}Icon`,ref:r},n,{children:e}))}return n.muiName=y.muiName,r.memo(r.forwardRef(n))}},1935:(e,t,n)=>{n.d(t,{A:()=>o});const o=n(4705).A},5034:(e,t,n)=>{n.d(t,{A:()=>r});var o=n(6540);const r=function(e,t){return o.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},6248:(e,t,n)=>{n.d(t,{A:()=>o});const o=n(2325).A},3749:(e,t,n)=>{n.d(t,{A:()=>o});const o=n(4877).A},2778:(e,t,n)=>{n.d(t,{A:()=>o});const o=n(1529).A},4705:(e,t,n)=>{function o(e,t=166){let n;function o(...o){clearTimeout(n),n=setTimeout((()=>{e.apply(this,o)}),t)}return o.clear=()=>{clearTimeout(n)},o}n.d(t,{A:()=>o})},2799:(e,t)=>{Symbol.for("react.element"),Symbol.for("react.portal"),Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.server_context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.suspense_list"),Symbol.for("react.memo"),Symbol.for("react.lazy"),Symbol.for("react.offscreen");Symbol.for("react.module.reference")},4363:(e,t,n)=>{n(2799)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sL0Zvcm1Db250cm9sQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sL2Zvcm1Db250cm9sU3RhdGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Gb3JtQ29udHJvbC91c2VGb3JtQ29udHJvbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvVGV4dGFyZWFBdXRvc2l6ZS9UZXh0YXJlYUF1dG9zaXplLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3R5bGVkLWVuZ2luZS9HbG9iYWxTdHlsZXMvR2xvYmFsU3R5bGVzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9HbG9iYWxTdHlsZXMvR2xvYmFsU3R5bGVzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvR2xvYmFsU3R5bGVzL0dsb2JhbFN0eWxlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0lucHV0QmFzZS9JbnB1dEJhc2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9JbnB1dEJhc2UvaW5wdXRCYXNlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0lucHV0QmFzZS91dGlscy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0xpc3QvbGlzdENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9MaXN0L0xpc3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9MaXN0L0xpc3RDb250ZXh0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZ2V0U2Nyb2xsYmFyU2l6ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL01lbnVMaXN0L01lbnVMaXN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvUG9wb3Zlci9wb3BvdmVyQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1BvcG92ZXIvUG9wb3Zlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL01lbnUvbWVudUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9NZW51L01lbnUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL3N2Z0ljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2lzTXVpRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUVuaGFuY2VkRWZmZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoIGFzIGhhc093blByb3BlcnR5LCBFIGFzIEVtb3Rpb24sIGMgYXMgY3JlYXRlRW1vdGlvblByb3BzLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIFQgYXMgVGhlbWVDb250ZXh0LCBpIGFzIGlzQnJvd3NlciQxIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuZXhwb3J0IHsgQyBhcyBDYWNoZVByb3ZpZGVyLCBUIGFzIFRoZW1lQ29udGV4dCwgYSBhcyBUaGVtZVByb3ZpZGVyLCBfIGFzIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSwgdSBhcyB1c2VUaGVtZSwgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBiIGFzIHdpdGhUaGVtZSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxudmFyIHBrZyA9IHtcblx0bmFtZTogXCJAZW1vdGlvbi9yZWFjdFwiLFxuXHR2ZXJzaW9uOiBcIjExLjExLjFcIixcblx0bWFpbjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCIsXG5cdG1vZHVsZTogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCIsXG5cdGJyb3dzZXI6IHtcblx0XHRcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCJcblx0fSxcblx0ZXhwb3J0czoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0Lndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9faXNvbGF0ZWQtaG5yc1wiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL3BhY2thZ2UuanNvblwiOiBcIi4vcGFja2FnZS5qc29uXCIsXG5cdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdH1cblx0fSxcblx0dHlwZXM6IFwidHlwZXMvaW5kZXguZC50c1wiLFxuXHRmaWxlczogW1xuXHRcdFwic3JjXCIsXG5cdFx0XCJkaXN0XCIsXG5cdFx0XCJqc3gtcnVudGltZVwiLFxuXHRcdFwianN4LWRldi1ydW50aW1lXCIsXG5cdFx0XCJfaXNvbGF0ZWQtaG5yc1wiLFxuXHRcdFwidHlwZXMvKi5kLnRzXCIsXG5cdFx0XCJtYWNyby4qXCJcblx0XSxcblx0c2lkZUVmZmVjdHM6IGZhbHNlLFxuXHRhdXRob3I6IFwiRW1vdGlvbiBDb250cmlidXRvcnNcIixcblx0bGljZW5zZTogXCJNSVRcIixcblx0c2NyaXB0czoge1xuXHRcdFwidGVzdDp0eXBlc2NyaXB0XCI6IFwiZHRzbGludCB0eXBlc1wiXG5cdH0sXG5cdGRlcGVuZGVuY2llczoge1xuXHRcdFwiQGJhYmVsL3J1bnRpbWVcIjogXCJeNy4xOC4zXCIsXG5cdFx0XCJAZW1vdGlvbi9iYWJlbC1wbHVnaW5cIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY2FjaGVcIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc2VyaWFsaXplXCI6IFwiXjEuMS4yXCIsXG5cdFx0XCJAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrc1wiOiBcIl4xLjAuMVwiLFxuXHRcdFwiQGVtb3Rpb24vdXRpbHNcIjogXCJeMS4yLjFcIixcblx0XHRcIkBlbW90aW9uL3dlYWstbWVtb2l6ZVwiOiBcIl4wLjMuMVwiLFxuXHRcdFwiaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3NcIjogXCJeMy4zLjFcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzOiB7XG5cdFx0cmVhY3Q6IFwiPj0xNi44LjBcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzTWV0YToge1xuXHRcdFwiQHR5cGVzL3JlYWN0XCI6IHtcblx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0fVxuXHR9LFxuXHRkZXZEZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBkZWZpbml0ZWx5dHlwZWQvZHRzbGludFwiOiBcIjAuMC4xMTJcIixcblx0XHRcIkBlbW90aW9uL2Nzc1wiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2Nzcy1wcmV0dGlmaWVyXCI6IFwiMS4xLjNcIixcblx0XHRcIkBlbW90aW9uL3NlcnZlclwiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3N0eWxlZFwiOiBcIjExLjExLjBcIixcblx0XHRcImh0bWwtdGFnLW5hbWVzXCI6IFwiXjEuMS4yXCIsXG5cdFx0cmVhY3Q6IFwiMTYuMTQuMFwiLFxuXHRcdFwic3ZnLXRhZy1uYW1lc1wiOiBcIl4xLjEuMVwiLFxuXHRcdHR5cGVzY3JpcHQ6IFwiXjQuNS41XCJcblx0fSxcblx0cmVwb3NpdG9yeTogXCJodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdFwiLFxuXHRwdWJsaXNoQ29uZmlnOiB7XG5cdFx0YWNjZXNzOiBcInB1YmxpY1wiXG5cdH0sXG5cdFwidW1kOm1haW5cIjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QudW1kLm1pbi5qc1wiLFxuXHRwcmVjb25zdHJ1Y3Q6IHtcblx0XHRlbnRyeXBvaW50czogW1xuXHRcdFx0XCIuL2luZGV4LmpzXCIsXG5cdFx0XHRcIi4vanN4LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9faXNvbGF0ZWQtaG5ycy5qc1wiXG5cdFx0XSxcblx0XHR1bWROYW1lOiBcImVtb3Rpb25SZWFjdFwiLFxuXHRcdGV4cG9ydHM6IHtcblx0XHRcdGVudkNvbmRpdGlvbnM6IFtcblx0XHRcdFx0XCJicm93c2VyXCIsXG5cdFx0XHRcdFwid29ya2VyXCJcblx0XHRcdF0sXG5cdFx0XHRleHRyYToge1xuXHRcdFx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbnZhciBqc3ggPSBmdW5jdGlvbiBqc3godHlwZSwgcHJvcHMpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgaWYgKHByb3BzID09IG51bGwgfHwgIWhhc093blByb3BlcnR5LmNhbGwocHJvcHMsICdjc3MnKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICB9XG5cbiAgdmFyIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSA9IG5ldyBBcnJheShhcmdzTGVuZ3RoKTtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzBdID0gRW1vdGlvbjtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzFdID0gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3NMZW5ndGg7IGkrKykge1xuICAgIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVtpXSA9IGFyZ3NbaV07XG4gIH0gLy8gJEZsb3dGaXhNZVxuXG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbnZhciB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSBmYWxzZTsgLy8gbWFpbnRhaW4gcGxhY2Ugb3ZlciByZXJlbmRlcnMuXG4vLyBpbml0aWFsIHJlbmRlciBmcm9tIGJyb3dzZXIsIGluc2VydEJlZm9yZSBjb250ZXh0LnNoZWV0LnRhZ3NbMF0gb3IgaWYgYSBzdHlsZSBoYXNuJ3QgYmVlbiBpbnNlcnRlZCB0aGVyZSB5ZXQsIGFwcGVuZENoaWxkXG4vLyBpbml0aWFsIGNsaWVudC1zaWRlIHJlbmRlciBmcm9tIFNTUiwgdXNlIHBsYWNlIG9mIGh5ZHJhdGluZyB0YWdcblxudmFyIEdsb2JhbCA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsICYmICggLy8gY2hlY2sgZm9yIGNsYXNzTmFtZSBhcyB3ZWxsIHNpbmNlIHRoZSB1c2VyIGlzXG4gIC8vIHByb2JhYmx5IHVzaW5nIHRoZSBjdXN0b20gY3JlYXRlRWxlbWVudCB3aGljaFxuICAvLyBtZWFucyBpdCB3aWxsIGJlIHR1cm5lZCBpbnRvIGEgY2xhc3NOYW1lIHByb3BcbiAgLy8gJEZsb3dGaXhNZSBJIGRvbid0IHJlYWxseSB3YW50IHRvIGFkZCBpdCB0byB0aGUgdHlwZSBzaW5jZSBpdCBzaG91bGRuJ3QgYmUgdXNlZFxuICBwcm9wcy5jbGFzc05hbWUgfHwgcHJvcHMuY3NzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgY3NzIHByb3Agb24gR2xvYmFsLCBkaWQgeW91IG1lYW4gdG8gdXNlIHRoZSBzdHlsZXMgcHJvcCBpbnN0ZWFkP1wiKTtcbiAgICB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBpZiAoIWlzQnJvd3NlciQxKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgc2VyaWFsaXplZE5hbWVzID0gc2VyaWFsaXplZC5uYW1lO1xuICAgIHZhciBzZXJpYWxpemVkU3R5bGVzID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gICAgdmFyIG5leHQgPSBzZXJpYWxpemVkLm5leHQ7XG5cbiAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXJpYWxpemVkTmFtZXMgKz0gJyAnICsgbmV4dC5uYW1lO1xuICAgICAgc2VyaWFsaXplZFN0eWxlcyArPSBuZXh0LnN0eWxlcztcbiAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZENhY2hlID0gY2FjaGUuY29tcGF0ID09PSB0cnVlO1xuICAgIHZhciBydWxlcyA9IGNhY2hlLmluc2VydChcIlwiLCB7XG4gICAgICBuYW1lOiBzZXJpYWxpemVkTmFtZXMsXG4gICAgICBzdHlsZXM6IHNlcmlhbGl6ZWRTdHlsZXNcbiAgICB9LCBjYWNoZS5zaGVldCwgc2hvdWxkQ2FjaGUpO1xuXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCAoX3JlZiA9IHt9LCBfcmVmW1wiZGF0YS1lbW90aW9uXCJdID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsIFwiICsgc2VyaWFsaXplZE5hbWVzLCBfcmVmLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgX19odG1sOiBydWxlc1xuICAgIH0sIF9yZWYubm9uY2UgPSBjYWNoZS5zaGVldC5ub25jZSwgX3JlZikpO1xuICB9IC8vIHllcywgaSBrbm93IHRoZXNlIGhvb2tzIGFyZSB1c2VkIGNvbmRpdGlvbmFsbHlcbiAgLy8gYnV0IGl0IGlzIGJhc2VkIG9uIGEgY29uc3RhbnQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZSBhdCBydW50aW1lXG4gIC8vIGl0J3MgZWZmZWN0aXZlbHkgbGlrZSBoYXZpbmcgdHdvIGltcGxlbWVudGF0aW9ucyBhbmQgc3dpdGNoaW5nIHRoZW0gb3V0XG4gIC8vIHNvIGl0J3Mgbm90IGFjdHVhbGx5IGJyZWFraW5nIGFueXRoaW5nXG5cblxuICB2YXIgc2hlZXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5ID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsXCI7IC8vIHVzZSBjYXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vaXNzdWVzLzI2NzVcblxuICAgIHZhciBzaGVldCA9IG5ldyBjYWNoZS5zaGVldC5jb25zdHJ1Y3Rvcih7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIG5vbmNlOiBjYWNoZS5zaGVldC5ub25jZSxcbiAgICAgIGNvbnRhaW5lcjogY2FjaGUuc2hlZXQuY29udGFpbmVyLFxuICAgICAgc3BlZWR5OiBjYWNoZS5zaGVldC5pc1NwZWVkeVxuICAgIH0pO1xuICAgIHZhciByZWh5ZHJhdGluZyA9IGZhbHNlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJzdHlsZVtkYXRhLWVtb3Rpb249XFxcIlwiICsga2V5ICsgXCIgXCIgKyBzZXJpYWxpemVkLm5hbWUgKyBcIlxcXCJdXCIpO1xuXG4gICAgaWYgKGNhY2hlLnNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICBzaGVldC5iZWZvcmUgPSBjYWNoZS5zaGVldC50YWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICByZWh5ZHJhdGluZyA9IHRydWU7IC8vIGNsZWFyIHRoZSBoYXNoIHNvIHRoaXMgbm9kZSB3b24ndCBiZSByZWNvZ25pemFibGUgYXMgcmVoeWRyYXRhYmxlIGJ5IG90aGVyIDxHbG9iYWwvPnNcblxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIGtleSk7XG4gICAgICBzaGVldC5oeWRyYXRlKFtub2RlXSk7XG4gICAgfVxuXG4gICAgc2hlZXRSZWYuY3VycmVudCA9IFtzaGVldCwgcmVoeWRyYXRpbmddO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH07XG4gIH0sIFtjYWNoZV0pO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldFJlZkN1cnJlbnQgPSBzaGVldFJlZi5jdXJyZW50O1xuICAgIHZhciBzaGVldCA9IHNoZWV0UmVmQ3VycmVudFswXSxcbiAgICAgICAgcmVoeWRyYXRpbmcgPSBzaGVldFJlZkN1cnJlbnRbMV07XG5cbiAgICBpZiAocmVoeWRyYXRpbmcpIHtcbiAgICAgIHNoZWV0UmVmQ3VycmVudFsxXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZXJpYWxpemVkLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5zZXJ0IGtleWZyYW1lc1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLm5leHQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChzaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgLy8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0IHRoZW4gaXQgd2lsbCBiZSBudWxsIHNvIHRoZSBzdHlsZSBlbGVtZW50IHdpbGwgYmUgYXBwZW5kZWRcbiAgICAgIHZhciBlbGVtZW50ID0gc2hlZXQudGFnc1tzaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZztcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGVsZW1lbnQ7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH1cblxuICAgIGNhY2hlLmluc2VydChcIlwiLCBzZXJpYWxpemVkLCBzaGVldCwgZmFsc2UpO1xuICB9LCBbY2FjaGUsIHNlcmlhbGl6ZWQubmFtZV0pO1xuICByZXR1cm4gbnVsbDtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBHbG9iYWwuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkdsb2JhbCc7XG59XG5cbmZ1bmN0aW9uIGNzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTdHlsZXMoYXJncyk7XG59XG5cbnZhciBrZXlmcmFtZXMgPSBmdW5jdGlvbiBrZXlmcmFtZXMoKSB7XG4gIHZhciBpbnNlcnRhYmxlID0gY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgdmFyIG5hbWUgPSBcImFuaW1hdGlvbi1cIiArIGluc2VydGFibGUubmFtZTsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBzdHlsZXM6IFwiQGtleWZyYW1lcyBcIiArIG5hbWUgKyBcIntcIiArIGluc2VydGFibGUuc3R5bGVzICsgXCJ9XCIsXG4gICAgYW5pbTogMSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJfRU1PX1wiICsgdGhpcy5uYW1lICsgXCJfXCIgKyB0aGlzLnN0eWxlcyArIFwiX0VNT19cIjtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uIGNsYXNzbmFtZXMoYXJncykge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFyZy5zdHlsZXMgIT09IHVuZGVmaW5lZCAmJiBhcmcubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdSBoYXZlIHBhc3NlZCBzdHlsZXMgY3JlYXRlZCB3aXRoIGBjc3NgIGZyb20gYEBlbW90aW9uL3JlYWN0YCBwYWNrYWdlIHRvIHRoZSBgY3hgLlxcbicgKyAnYGN4YCBpcyBtZWFudCB0byBjb21wb3NlIGNsYXNzIG5hbWVzIChzdHJpbmdzKSBzbyB5b3Ugc2hvdWxkIGNvbnZlcnQgdGhvc2Ugc3R5bGVzIHRvIGEgY2xhc3MgbmFtZSBieSBwYXNzaW5nIHRoZW0gdG8gdGhlIGBjc3NgIHJlY2VpdmVkIGZyb20gPENsYXNzTmFtZXMvPiBjb21wb25lbnQuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvQWRkID0gJyc7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gYXJnKSB7XG4gICAgICAgICAgICAgIGlmIChhcmdba10gJiYgaykge1xuICAgICAgICAgICAgICAgIHRvQWRkICYmICh0b0FkZCArPSAnICcpO1xuICAgICAgICAgICAgICAgIHRvQWRkICs9IGs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgdG9BZGQgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9BZGQpIHtcbiAgICAgIGNscyAmJiAoY2xzICs9ICcgJyk7XG4gICAgICBjbHMgKz0gdG9BZGQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNscztcbn07XG5cbmZ1bmN0aW9uIG1lcmdlKHJlZ2lzdGVyZWQsIGNzcywgY2xhc3NOYW1lKSB7XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW107XG4gIHZhciByYXdDbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZSk7XG5cbiAgaWYgKHJlZ2lzdGVyZWRTdHlsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICByZXR1cm4gcmF3Q2xhc3NOYW1lICsgY3NzKHJlZ2lzdGVyZWRTdHlsZXMpO1xufVxuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWRBcnIgPSBfcmVmLnNlcmlhbGl6ZWRBcnI7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWRBcnJbaV0sIGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIENsYXNzTmFtZXMgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgdmFyIGhhc1JlbmRlcmVkID0gZmFsc2U7XG4gIHZhciBzZXJpYWxpemVkQXJyID0gW107XG5cbiAgdmFyIGNzcyA9IGZ1bmN0aW9uIGNzcygpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjc3MgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIGNhY2hlLnJlZ2lzdGVyZWQpO1xuICAgIHNlcmlhbGl6ZWRBcnIucHVzaChzZXJpYWxpemVkKTsgLy8gcmVnaXN0cmF0aW9uIGhhcyB0byBoYXBwZW4gaGVyZSBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWlnaHQgZ2V0IGNvbnN1bWVkIGJ5IGBjeGBcblxuICAgIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB9O1xuXG4gIHZhciBjeCA9IGZ1bmN0aW9uIGN4KCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2N4IGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZShjYWNoZS5yZWdpc3RlcmVkLCBjc3MsIGNsYXNzbmFtZXMoYXJncykpO1xuICB9O1xuXG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNzczogY3NzLFxuICAgIGN4OiBjeCxcbiAgICB0aGVtZTogUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG4gIH07XG4gIHZhciBlbGUgPSBwcm9wcy5jaGlsZHJlbihjb250ZW50KTtcbiAgaGFzUmVuZGVyZWQgPSB0cnVlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkQXJyOiBzZXJpYWxpemVkQXJyXG4gIH0pLCBlbGUpO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIENsYXNzTmFtZXMuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkNsYXNzTmFtZXMnO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaXNCcm93c2VyID0gXCJvYmplY3RcIiAhPT0gJ3VuZGVmaW5lZCc7IC8vICMxNzI3LCAjMjkwNSBmb3Igc29tZSByZWFzb24gSmVzdCBhbmQgVml0ZXN0IGV2YWx1YXRlIG1vZHVsZXMgdHdpY2UgaWYgc29tZSBjb25zdW1pbmcgbW9kdWxlIGdldHMgbW9ja2VkXG5cbiAgdmFyIGlzVGVzdEVudiA9IHR5cGVvZiBqZXN0ICE9PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgdmkgIT09ICd1bmRlZmluZWQnO1xuXG4gIGlmIChpc0Jyb3dzZXIgJiYgIWlzVGVzdEVudikge1xuICAgIC8vIGdsb2JhbFRoaXMgaGFzIHdpZGUgYnJvd3NlciBzdXBwb3J0IC0gaHR0cHM6Ly9jYW5pdXNlLmNvbS8/c2VhcmNoPWdsb2JhbFRoaXMsIE5vZGUuanMgMTIgYW5kIGxhdGVyXG4gICAgdmFyIGdsb2JhbENvbnRleHQgPSAvLyAkRmxvd0lnbm9yZVxuICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgIDogaXNCcm93c2VyID8gd2luZG93IDogZ2xvYmFsO1xuICAgIHZhciBnbG9iYWxLZXkgPSBcIl9fRU1PVElPTl9SRUFDVF9cIiArIHBrZy52ZXJzaW9uLnNwbGl0KCcuJylbMF0gKyBcIl9fXCI7XG5cbiAgICBpZiAoZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBhcmUgbG9hZGluZyBAZW1vdGlvbi9yZWFjdCB3aGVuIGl0IGlzIGFscmVhZHkgbG9hZGVkLiBSdW5uaW5nICcgKyAnbXVsdGlwbGUgaW5zdGFuY2VzIG1heSBjYXVzZSBwcm9ibGVtcy4gVGhpcyBjYW4gaGFwcGVuIGlmIG11bHRpcGxlICcgKyAndmVyc2lvbnMgYXJlIHVzZWQsIG9yIGlmIG11bHRpcGxlIGJ1aWxkcyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFyZSAnICsgJ3VzZWQuJyk7XG4gICAgfVxuXG4gICAgZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldID0gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgeyBDbGFzc05hbWVzLCBHbG9iYWwsIGpzeCBhcyBjcmVhdGVFbGVtZW50LCBjc3MsIGpzeCwga2V5ZnJhbWVzIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IEZvcm1Db250cm9sQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBGb3JtQ29udHJvbENvbnRleHQuZGlzcGxheU5hbWUgPSAnRm9ybUNvbnRyb2xDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IEZvcm1Db250cm9sQ29udGV4dDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtQ29udHJvbFN0YXRlKHtcbiAgcHJvcHMsXG4gIHN0YXRlcyxcbiAgbXVpRm9ybUNvbnRyb2xcbn0pIHtcbiAgcmV0dXJuIHN0YXRlcy5yZWR1Y2UoKGFjYywgc3RhdGUpID0+IHtcbiAgICBhY2Nbc3RhdGVdID0gcHJvcHNbc3RhdGVdO1xuICAgIGlmIChtdWlGb3JtQ29udHJvbCkge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wc1tzdGF0ZV0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGFjY1tzdGF0ZV0gPSBtdWlGb3JtQ29udHJvbFtzdGF0ZV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBGb3JtQ29udHJvbENvbnRleHQgZnJvbSAnLi9Gb3JtQ29udHJvbENvbnRleHQnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRm9ybUNvbnRyb2woKSB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KEZvcm1Db250cm9sQ29udGV4dCk7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wib25DaGFuZ2VcIiwgXCJtYXhSb3dzXCIsIFwibWluUm93c1wiLCBcInN0eWxlXCIsIFwidmFsdWVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IHVuc3RhYmxlX2RlYm91bmNlIGFzIGRlYm91bmNlLCB1bnN0YWJsZV91c2VGb3JrUmVmIGFzIHVzZUZvcmtSZWYsIHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IGFzIHVzZUVuaGFuY2VkRWZmZWN0LCB1bnN0YWJsZV9vd25lcldpbmRvdyBhcyBvd25lcldpbmRvdyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIGdldFN0eWxlVmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIHBhcnNlSW50KHZhbHVlLCAxMCkgfHwgMDtcbn1cbmNvbnN0IHN0eWxlcyA9IHtcbiAgc2hhZG93OiB7XG4gICAgLy8gVmlzaWJpbGl0eSBuZWVkZWQgdG8gaGlkZSB0aGUgZXh0cmEgdGV4dCBhcmVhIG9uIGlQYWRzXG4gICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gICAgLy8gUmVtb3ZlIGZyb20gdGhlIGNvbnRlbnQgZmxvd1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIC8vIElnbm9yZSB0aGUgc2Nyb2xsYmFyIHdpZHRoXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIGhlaWdodDogMCxcbiAgICB0b3A6IDAsXG4gICAgbGVmdDogMCxcbiAgICAvLyBDcmVhdGUgYSBuZXcgbGF5ZXIsIGluY3JlYXNlIHRoZSBpc29sYXRpb24gb2YgdGhlIGNvbXB1dGVkIHZhbHVlc1xuICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVooMCknXG4gIH1cbn07XG5mdW5jdGlvbiBpc0VtcHR5KG9iaikge1xuICByZXR1cm4gb2JqID09PSB1bmRlZmluZWQgfHwgb2JqID09PSBudWxsIHx8IE9iamVjdC5rZXlzKG9iaikubGVuZ3RoID09PSAwIHx8IG9iai5vdXRlckhlaWdodFN0eWxlID09PSAwICYmICFvYmoub3ZlcmZsb3c7XG59XG5cbi8qKlxuICpcbiAqIERlbW9zOlxuICpcbiAqIC0gW1RleHRhcmVhIEF1dG9zaXplXShodHRwczovL211aS5jb20vYmFzZS11aS9yZWFjdC10ZXh0YXJlYS1hdXRvc2l6ZS8pXG4gKiAtIFtUZXh0YXJlYSBBdXRvc2l6ZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL3JlYWN0LXRleHRhcmVhLWF1dG9zaXplLylcbiAqXG4gKiBBUEk6XG4gKlxuICogLSBbVGV4dGFyZWFBdXRvc2l6ZSBBUEldKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LXRleHRhcmVhLWF1dG9zaXplL2NvbXBvbmVudHMtYXBpLyN0ZXh0YXJlYS1hdXRvc2l6ZSlcbiAqL1xuY29uc3QgVGV4dGFyZWFBdXRvc2l6ZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFRleHRhcmVhQXV0b3NpemUocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICBjb25zdCB7XG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG1heFJvd3MsXG4gICAgICBtaW5Sb3dzID0gMSxcbiAgICAgIHN0eWxlLFxuICAgICAgdmFsdWVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qge1xuICAgIGN1cnJlbnQ6IGlzQ29udHJvbGxlZFxuICB9ID0gUmVhY3QudXNlUmVmKHZhbHVlICE9IG51bGwpO1xuICBjb25zdCBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihmb3J3YXJkZWRSZWYsIGlucHV0UmVmKTtcbiAgY29uc3Qgc2hhZG93UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCByZW5kZXJzID0gUmVhY3QudXNlUmVmKDApO1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBvdXRlckhlaWdodFN0eWxlOiAwXG4gIH0pO1xuICBjb25zdCBnZXRVcGRhdGVkU3RhdGUgPSBSZWFjdC51c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgaW5wdXQgPSBpbnB1dFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGNvbnRhaW5lcldpbmRvdyA9IG93bmVyV2luZG93KGlucHV0KTtcbiAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gY29udGFpbmVyV2luZG93LmdldENvbXB1dGVkU3R5bGUoaW5wdXQpO1xuXG4gICAgLy8gSWYgaW5wdXQncyB3aWR0aCBpcyBzaHJ1bmsgYW5kIGl0J3Mgbm90IHZpc2libGUsIGRvbid0IHN5bmMgaGVpZ2h0LlxuICAgIGlmIChjb21wdXRlZFN0eWxlLndpZHRoID09PSAnMHB4Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3V0ZXJIZWlnaHRTdHlsZTogMFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgaW5wdXRTaGFsbG93ID0gc2hhZG93UmVmLmN1cnJlbnQ7XG4gICAgaW5wdXRTaGFsbG93LnN0eWxlLndpZHRoID0gY29tcHV0ZWRTdHlsZS53aWR0aDtcbiAgICBpbnB1dFNoYWxsb3cudmFsdWUgPSBpbnB1dC52YWx1ZSB8fCBwcm9wcy5wbGFjZWhvbGRlciB8fCAneCc7XG4gICAgaWYgKGlucHV0U2hhbGxvdy52YWx1ZS5zbGljZSgtMSkgPT09ICdcXG4nKSB7XG4gICAgICAvLyBDZXJ0YWluIGZvbnRzIHdoaWNoIG92ZXJmbG93IHRoZSBsaW5lIGhlaWdodCB3aWxsIGNhdXNlIHRoZSB0ZXh0YXJlYVxuICAgICAgLy8gdG8gcmVwb3J0IGEgZGlmZmVyZW50IHNjcm9sbEhlaWdodCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbGFzdCBsaW5lXG4gICAgICAvLyBpcyBlbXB0eS4gTWFrZSBpdCBub24tZW1wdHkgdG8gYXZvaWQgdGhpcyBpc3N1ZS5cbiAgICAgIGlucHV0U2hhbGxvdy52YWx1ZSArPSAnICc7XG4gICAgfVxuICAgIGNvbnN0IGJveFNpemluZyA9IGNvbXB1dGVkU3R5bGUuYm94U2l6aW5nO1xuICAgIGNvbnN0IHBhZGRpbmcgPSBnZXRTdHlsZVZhbHVlKGNvbXB1dGVkU3R5bGUucGFkZGluZ0JvdHRvbSkgKyBnZXRTdHlsZVZhbHVlKGNvbXB1dGVkU3R5bGUucGFkZGluZ1RvcCk7XG4gICAgY29uc3QgYm9yZGVyID0gZ2V0U3R5bGVWYWx1ZShjb21wdXRlZFN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKSArIGdldFN0eWxlVmFsdWUoY29tcHV0ZWRTdHlsZS5ib3JkZXJUb3BXaWR0aCk7XG5cbiAgICAvLyBUaGUgaGVpZ2h0IG9mIHRoZSBpbm5lciBjb250ZW50XG4gICAgY29uc3QgaW5uZXJIZWlnaHQgPSBpbnB1dFNoYWxsb3cuc2Nyb2xsSGVpZ2h0O1xuXG4gICAgLy8gTWVhc3VyZSBoZWlnaHQgb2YgYSB0ZXh0YXJlYSB3aXRoIGEgc2luZ2xlIHJvd1xuICAgIGlucHV0U2hhbGxvdy52YWx1ZSA9ICd4JztcbiAgICBjb25zdCBzaW5nbGVSb3dIZWlnaHQgPSBpbnB1dFNoYWxsb3cuc2Nyb2xsSGVpZ2h0O1xuXG4gICAgLy8gVGhlIGhlaWdodCBvZiB0aGUgb3V0ZXIgY29udGVudFxuICAgIGxldCBvdXRlckhlaWdodCA9IGlubmVySGVpZ2h0O1xuICAgIGlmIChtaW5Sb3dzKSB7XG4gICAgICBvdXRlckhlaWdodCA9IE1hdGgubWF4KE51bWJlcihtaW5Sb3dzKSAqIHNpbmdsZVJvd0hlaWdodCwgb3V0ZXJIZWlnaHQpO1xuICAgIH1cbiAgICBpZiAobWF4Um93cykge1xuICAgICAgb3V0ZXJIZWlnaHQgPSBNYXRoLm1pbihOdW1iZXIobWF4Um93cykgKiBzaW5nbGVSb3dIZWlnaHQsIG91dGVySGVpZ2h0KTtcbiAgICB9XG4gICAgb3V0ZXJIZWlnaHQgPSBNYXRoLm1heChvdXRlckhlaWdodCwgc2luZ2xlUm93SGVpZ2h0KTtcblxuICAgIC8vIFRha2UgdGhlIGJveCBzaXppbmcgaW50byBhY2NvdW50IGZvciBhcHBseWluZyB0aGlzIHZhbHVlIGFzIGEgc3R5bGUuXG4gICAgY29uc3Qgb3V0ZXJIZWlnaHRTdHlsZSA9IG91dGVySGVpZ2h0ICsgKGJveFNpemluZyA9PT0gJ2JvcmRlci1ib3gnID8gcGFkZGluZyArIGJvcmRlciA6IDApO1xuICAgIGNvbnN0IG92ZXJmbG93ID0gTWF0aC5hYnMob3V0ZXJIZWlnaHQgLSBpbm5lckhlaWdodCkgPD0gMTtcbiAgICByZXR1cm4ge1xuICAgICAgb3V0ZXJIZWlnaHRTdHlsZSxcbiAgICAgIG92ZXJmbG93XG4gICAgfTtcbiAgfSwgW21heFJvd3MsIG1pblJvd3MsIHByb3BzLnBsYWNlaG9sZGVyXSk7XG4gIGNvbnN0IHVwZGF0ZVN0YXRlID0gKHByZXZTdGF0ZSwgbmV3U3RhdGUpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvdXRlckhlaWdodFN0eWxlLFxuICAgICAgb3ZlcmZsb3dcbiAgICB9ID0gbmV3U3RhdGU7XG4gICAgLy8gTmVlZCBhIGxhcmdlIGVub3VnaCBkaWZmZXJlbmNlIHRvIHVwZGF0ZSB0aGUgaGVpZ2h0LlxuICAgIC8vIFRoaXMgcHJldmVudHMgaW5maW5pdGUgcmVuZGVyaW5nIGxvb3AuXG4gICAgaWYgKHJlbmRlcnMuY3VycmVudCA8IDIwICYmIChvdXRlckhlaWdodFN0eWxlID4gMCAmJiBNYXRoLmFicygocHJldlN0YXRlLm91dGVySGVpZ2h0U3R5bGUgfHwgMCkgLSBvdXRlckhlaWdodFN0eWxlKSA+IDEgfHwgcHJldlN0YXRlLm92ZXJmbG93ICE9PSBvdmVyZmxvdykpIHtcbiAgICAgIHJlbmRlcnMuY3VycmVudCArPSAxO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3ZlcmZsb3csXG4gICAgICAgIG91dGVySGVpZ2h0U3R5bGVcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocmVuZGVycy5jdXJyZW50ID09PSAyMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBUb28gbWFueSByZS1yZW5kZXJzLiBUaGUgbGF5b3V0IGlzIHVuc3RhYmxlLicsICdUZXh0YXJlYUF1dG9zaXplIGxpbWl0cyB0aGUgbnVtYmVyIG9mIHJlbmRlcnMgdG8gcHJldmVudCBhbiBpbmZpbml0ZSBsb29wLiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHByZXZTdGF0ZTtcbiAgfTtcbiAgY29uc3Qgc3luY0hlaWdodCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IGdldFVwZGF0ZWRTdGF0ZSgpO1xuICAgIGlmIChpc0VtcHR5KG5ld1N0YXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRTdGF0ZShwcmV2U3RhdGUgPT4ge1xuICAgICAgcmV0dXJuIHVwZGF0ZVN0YXRlKHByZXZTdGF0ZSwgbmV3U3RhdGUpO1xuICAgIH0pO1xuICB9LCBbZ2V0VXBkYXRlZFN0YXRlXSk7XG4gIGNvbnN0IHN5bmNIZWlnaHRXaXRoRmx1c2hTeW5jID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld1N0YXRlID0gZ2V0VXBkYXRlZFN0YXRlKCk7XG4gICAgaWYgKGlzRW1wdHkobmV3U3RhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSW4gUmVhY3QgMTgsIHN0YXRlIHVwZGF0ZXMgaW4gYSBSZXNpemVPYnNlcnZlcidzIGNhbGxiYWNrIGFyZSBoYXBwZW5pbmcgYWZ0ZXIgdGhlIHBhaW50IHdoaWNoIGNhdXNlcyBmbGlja2VyaW5nXG4gICAgLy8gd2hlbiBkb2luZyBzb21lIHZpc3VhbCB1cGRhdGVzIGluIGl0LiBVc2luZyBmbHVzaFN5bmMgZW5zdXJlcyB0aGF0IHRoZSBkb20gd2lsbCBiZSBwYWludGVkIGFmdGVyIHRoZSBzdGF0ZXMgdXBkYXRlcyBoYXBwZW5cbiAgICAvLyBSZWxhdGVkIGlzc3VlIC0gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yNDMzMVxuICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICBzZXRTdGF0ZShwcmV2U3RhdGUgPT4ge1xuICAgICAgICByZXR1cm4gdXBkYXRlU3RhdGUocHJldlN0YXRlLCBuZXdTdGF0ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICByZW5kZXJzLmN1cnJlbnQgPSAwO1xuXG4gICAgICAvLyBJZiB0aGUgVGV4dGFyZWFBdXRvc2l6ZSBjb21wb25lbnQgaXMgcmVwbGFjZWQgYnkgU3VzcGVuc2Ugd2l0aCBhIGZhbGxiYWNrLCB0aGUgbGFzdFxuICAgICAgLy8gUmVzaXplT2JzZXJ2ZXIncyBoYW5kbGVyIHRoYXQgcnVucyBiZWNhdXNlIG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGxheW91dCBpcyB0cnlpbmcgdG9cbiAgICAgIC8vIGFjY2VzcyBhIGRvbSBub2RlIHRoYXQgaXMgbm8gbG9uZ2VyIHRoZXJlIChhcyB0aGUgZmFsbGJhY2sgY29tcG9uZW50IGlzIGJlaW5nIHNob3duIGluc3RlYWQpLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzMyNjQwXG4gICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICBzeW5jSGVpZ2h0V2l0aEZsdXNoU3luYygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGxldCByZXNpemVPYnNlcnZlcjtcbiAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgY29uc3QgY29udGFpbmVyV2luZG93ID0gb3duZXJXaW5kb3coaW5wdXQpO1xuICAgIGNvbnRhaW5lcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgIGlmICh0eXBlb2YgUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihoYW5kbGVSZXNpemUpO1xuICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShpbnB1dCk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBoYW5kbGVSZXNpemUuY2xlYXIoKTtcbiAgICAgIGNvbnRhaW5lcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgICAgaWYgKHJlc2l6ZU9ic2VydmVyKSB7XG4gICAgICAgIHJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIHN5bmNIZWlnaHQoKTtcbiAgfSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVuZGVycy5jdXJyZW50ID0gMDtcbiAgfSwgW3ZhbHVlXSk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IGV2ZW50ID0+IHtcbiAgICByZW5kZXJzLmN1cnJlbnQgPSAwO1xuICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICBzeW5jSGVpZ2h0KCk7XG4gICAgfVxuICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UoZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhSZWFjdC5GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goXCJ0ZXh0YXJlYVwiLCBfZXh0ZW5kcyh7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLFxuICAgICAgcmVmOiBoYW5kbGVSZWZcbiAgICAgIC8vIEFwcGx5IHRoZSByb3dzIHByb3AgdG8gZ2V0IGEgXCJjb3JyZWN0XCIgZmlyc3QgU1NSIHBhaW50XG4gICAgICAsXG4gICAgICByb3dzOiBtaW5Sb3dzLFxuICAgICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgICAgaGVpZ2h0OiBzdGF0ZS5vdXRlckhlaWdodFN0eWxlLFxuICAgICAgICAvLyBOZWVkIGEgbGFyZ2UgZW5vdWdoIGRpZmZlcmVuY2UgdG8gYWxsb3cgc2Nyb2xsaW5nLlxuICAgICAgICAvLyBUaGlzIHByZXZlbnRzIGluZmluaXRlIHJlbmRlcmluZyBsb29wLlxuICAgICAgICBvdmVyZmxvdzogc3RhdGUub3ZlcmZsb3cgPyAnaGlkZGVuJyA6IHVuZGVmaW5lZFxuICAgICAgfSwgc3R5bGUpXG4gICAgfSwgb3RoZXIpKSwgLyojX19QVVJFX18qL19qc3goXCJ0ZXh0YXJlYVwiLCB7XG4gICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICBjbGFzc05hbWU6IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgICAgcmVmOiBzaGFkb3dSZWYsXG4gICAgICB0YWJJbmRleDogLTEsXG4gICAgICBzdHlsZTogX2V4dGVuZHMoe30sIHN0eWxlcy5zaGFkb3csIHN0eWxlLCB7XG4gICAgICAgIHBhZGRpbmdUb3A6IDAsXG4gICAgICAgIHBhZGRpbmdCb3R0b206IDBcbiAgICAgIH0pXG4gICAgfSldXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUZXh0YXJlYUF1dG9zaXplLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCBUeXBlU2NyaXB0IHR5cGVzIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheS5cbiAgICovXG4gIG1heFJvd3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIE1pbmltdW0gbnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheS5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgbWluUm93czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKSwgUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVGV4dGFyZWFBdXRvc2l6ZTsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgR2xvYmFsIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gIHJldHVybiBvYmogPT09IHVuZGVmaW5lZCB8fCBvYmogPT09IG51bGwgfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDA7XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBHbG9iYWxTdHlsZXMocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIHN0eWxlcyxcbiAgICBkZWZhdWx0VGhlbWUgPSB7fVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGdsb2JhbFN0eWxlcyA9IHR5cGVvZiBzdHlsZXMgPT09ICdmdW5jdGlvbicgPyB0aGVtZUlucHV0ID0+IHN0eWxlcyhpc0VtcHR5KHRoZW1lSW5wdXQpID8gZGVmYXVsdFRoZW1lIDogdGhlbWVJbnB1dCkgOiBzdHlsZXM7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChHbG9iYWwsIHtcbiAgICBzdHlsZXM6IGdsb2JhbFN0eWxlc1xuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEdsb2JhbFN0eWxlcy5wcm9wVHlwZXMgPSB7XG4gIGRlZmF1bHRUaGVtZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgc3R5bGVzOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5mdW5jXSlcbn0gOiB2b2lkIDA7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgR2xvYmFsU3R5bGVzIGFzIE11aUdsb2JhbFN0eWxlcyB9IGZyb20gJ0BtdWkvc3R5bGVkLWVuZ2luZSc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vdXNlVGhlbWUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIEdsb2JhbFN0eWxlcyh7XG4gIHN0eWxlcyxcbiAgdGhlbWVJZCxcbiAgZGVmYXVsdFRoZW1lID0ge31cbn0pIHtcbiAgY29uc3QgdXBwZXJUaGVtZSA9IHVzZVRoZW1lKGRlZmF1bHRUaGVtZSk7XG4gIGNvbnN0IGdsb2JhbFN0eWxlcyA9IHR5cGVvZiBzdHlsZXMgPT09ICdmdW5jdGlvbicgPyBzdHlsZXModGhlbWVJZCA/IHVwcGVyVGhlbWVbdGhlbWVJZF0gfHwgdXBwZXJUaGVtZSA6IHVwcGVyVGhlbWUpIDogc3R5bGVzO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goTXVpR2xvYmFsU3R5bGVzLCB7XG4gICAgc3R5bGVzOiBnbG9iYWxTdHlsZXNcbiAgfSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBHbG9iYWxTdHlsZXMucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IFR5cGVTY3JpcHQgdHlwZXMgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgZGVmYXVsdFRoZW1lOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGVzOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ib29sXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0aGVtZUlkOiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU3R5bGVzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgR2xvYmFsU3R5bGVzIGFzIFN5c3RlbUdsb2JhbFN0eWxlcyB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBkZWZhdWx0VGhlbWUgZnJvbSAnLi4vc3R5bGVzL2RlZmF1bHRUaGVtZSc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIEdsb2JhbFN0eWxlcyhwcm9wcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU3lzdGVtR2xvYmFsU3R5bGVzLCBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBkZWZhdWx0VGhlbWU6IGRlZmF1bHRUaGVtZSxcbiAgICB0aGVtZUlkOiBUSEVNRV9JRFxuICB9KSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBHbG9iYWxTdHlsZXMucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIHN0eWxlcyB5b3Ugd2FudCB0byBhcHBseSBnbG9iYWxseS5cbiAgICovXG4gIHN0eWxlczogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYm9vbF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgR2xvYmFsU3R5bGVzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7IGZvcm1hdE11aUVycm9yTWVzc2FnZSBhcyBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlIH0gZnJvbSBcIkBtdWkvdXRpbHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFyaWEtZGVzY3JpYmVkYnlcIiwgXCJhdXRvQ29tcGxldGVcIiwgXCJhdXRvRm9jdXNcIiwgXCJjbGFzc05hbWVcIiwgXCJjb2xvclwiLCBcImNvbXBvbmVudHNcIiwgXCJjb21wb25lbnRzUHJvcHNcIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVJbmplY3RpbmdHbG9iYWxTdHlsZXNcIiwgXCJlbmRBZG9ybm1lbnRcIiwgXCJlcnJvclwiLCBcImZ1bGxXaWR0aFwiLCBcImlkXCIsIFwiaW5wdXRDb21wb25lbnRcIiwgXCJpbnB1dFByb3BzXCIsIFwiaW5wdXRSZWZcIiwgXCJtYXJnaW5cIiwgXCJtYXhSb3dzXCIsIFwibWluUm93c1wiLCBcIm11bHRpbGluZVwiLCBcIm5hbWVcIiwgXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQ2xpY2tcIiwgXCJvbkZvY3VzXCIsIFwib25LZXlEb3duXCIsIFwib25LZXlVcFwiLCBcInBsYWNlaG9sZGVyXCIsIFwicmVhZE9ubHlcIiwgXCJyZW5kZXJTdWZmaXhcIiwgXCJyb3dzXCIsIFwic2l6ZVwiLCBcInNsb3RQcm9wc1wiLCBcInNsb3RzXCIsIFwic3RhcnRBZG9ybm1lbnRcIiwgXCJ0eXBlXCIsIFwidmFsdWVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyByZWZUeXBlLCBlbGVtZW50VHlwZUFjY2VwdGluZ1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMsIGlzSG9zdENvbXBvbmVudCwgVGV4dGFyZWFBdXRvc2l6ZSB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgZm9ybUNvbnRyb2xTdGF0ZSBmcm9tICcuLi9Gb3JtQ29udHJvbC9mb3JtQ29udHJvbFN0YXRlJztcbmltcG9ydCBGb3JtQ29udHJvbENvbnRleHQgZnJvbSAnLi4vRm9ybUNvbnRyb2wvRm9ybUNvbnRyb2xDb250ZXh0JztcbmltcG9ydCB1c2VGb3JtQ29udHJvbCBmcm9tICcuLi9Gb3JtQ29udHJvbC91c2VGb3JtQ29udHJvbCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCB1c2VFbmhhbmNlZEVmZmVjdCBmcm9tICcuLi91dGlscy91c2VFbmhhbmNlZEVmZmVjdCc7XG5pbXBvcnQgR2xvYmFsU3R5bGVzIGZyb20gJy4uL0dsb2JhbFN0eWxlcyc7XG5pbXBvcnQgeyBpc0ZpbGxlZCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGlucHV0QmFzZUNsYXNzZXMsIHsgZ2V0SW5wdXRCYXNlVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9pbnB1dEJhc2VDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgY29uc3Qgcm9vdE92ZXJyaWRlc1Jlc29sdmVyID0gKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgY29uc3Qge1xuICAgIG93bmVyU3RhdGVcbiAgfSA9IHByb3BzO1xuICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmZvcm1Db250cm9sICYmIHN0eWxlcy5mb3JtQ29udHJvbCwgb3duZXJTdGF0ZS5zdGFydEFkb3JubWVudCAmJiBzdHlsZXMuYWRvcm5lZFN0YXJ0LCBvd25lclN0YXRlLmVuZEFkb3JubWVudCAmJiBzdHlsZXMuYWRvcm5lZEVuZCwgb3duZXJTdGF0ZS5lcnJvciAmJiBzdHlsZXMuZXJyb3IsIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBzdHlsZXMuc2l6ZVNtYWxsLCBvd25lclN0YXRlLm11bHRpbGluZSAmJiBzdHlsZXMubXVsdGlsaW5lLCBvd25lclN0YXRlLmNvbG9yICYmIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGgsIG93bmVyU3RhdGUuaGlkZGVuTGFiZWwgJiYgc3R5bGVzLmhpZGRlbkxhYmVsXTtcbn07XG5leHBvcnQgY29uc3QgaW5wdXRPdmVycmlkZXNSZXNvbHZlciA9IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBvd25lclN0YXRlXG4gIH0gPSBwcm9wcztcbiAgcmV0dXJuIFtzdHlsZXMuaW5wdXQsIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBzdHlsZXMuaW5wdXRTaXplU21hbGwsIG93bmVyU3RhdGUubXVsdGlsaW5lICYmIHN0eWxlcy5pbnB1dE11bHRpbGluZSwgb3duZXJTdGF0ZS50eXBlID09PSAnc2VhcmNoJyAmJiBzdHlsZXMuaW5wdXRUeXBlU2VhcmNoLCBvd25lclN0YXRlLnN0YXJ0QWRvcm5tZW50ICYmIHN0eWxlcy5pbnB1dEFkb3JuZWRTdGFydCwgb3duZXJTdGF0ZS5lbmRBZG9ybm1lbnQgJiYgc3R5bGVzLmlucHV0QWRvcm5lZEVuZCwgb3duZXJTdGF0ZS5oaWRkZW5MYWJlbCAmJiBzdHlsZXMuaW5wdXRIaWRkZW5MYWJlbF07XG59O1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgY29sb3IsXG4gICAgZGlzYWJsZWQsXG4gICAgZXJyb3IsXG4gICAgZW5kQWRvcm5tZW50LFxuICAgIGZvY3VzZWQsXG4gICAgZm9ybUNvbnRyb2wsXG4gICAgZnVsbFdpZHRoLFxuICAgIGhpZGRlbkxhYmVsLFxuICAgIG11bHRpbGluZSxcbiAgICByZWFkT25seSxcbiAgICBzaXplLFxuICAgIHN0YXJ0QWRvcm5tZW50LFxuICAgIHR5cGVcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJywgZXJyb3IgJiYgJ2Vycm9yJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnLCBmb2N1c2VkICYmICdmb2N1c2VkJywgZm9ybUNvbnRyb2wgJiYgJ2Zvcm1Db250cm9sJywgc2l6ZSA9PT0gJ3NtYWxsJyAmJiAnc2l6ZVNtYWxsJywgbXVsdGlsaW5lICYmICdtdWx0aWxpbmUnLCBzdGFydEFkb3JubWVudCAmJiAnYWRvcm5lZFN0YXJ0JywgZW5kQWRvcm5tZW50ICYmICdhZG9ybmVkRW5kJywgaGlkZGVuTGFiZWwgJiYgJ2hpZGRlbkxhYmVsJywgcmVhZE9ubHkgJiYgJ3JlYWRPbmx5J10sXG4gICAgaW5wdXQ6IFsnaW5wdXQnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCB0eXBlID09PSAnc2VhcmNoJyAmJiAnaW5wdXRUeXBlU2VhcmNoJywgbXVsdGlsaW5lICYmICdpbnB1dE11bHRpbGluZScsIHNpemUgPT09ICdzbWFsbCcgJiYgJ2lucHV0U2l6ZVNtYWxsJywgaGlkZGVuTGFiZWwgJiYgJ2lucHV0SGlkZGVuTGFiZWwnLCBzdGFydEFkb3JubWVudCAmJiAnaW5wdXRBZG9ybmVkU3RhcnQnLCBlbmRBZG9ybm1lbnQgJiYgJ2lucHV0QWRvcm5lZEVuZCcsIHJlYWRPbmx5ICYmICdyZWFkT25seSddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0SW5wdXRCYXNlVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5leHBvcnQgY29uc3QgSW5wdXRCYXNlUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpSW5wdXRCYXNlJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogcm9vdE92ZXJyaWRlc1Jlc29sdmVyXG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYm9keTEsIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQucHJpbWFyeSxcbiAgbGluZUhlaWdodDogJzEuNDM3NWVtJyxcbiAgLy8gMjNweFxuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgLy8gUHJldmVudCBwYWRkaW5nIGlzc3VlIHdpdGggZnVsbFdpZHRoLlxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgY3Vyc29yOiAndGV4dCcsXG4gIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBbYCYuJHtpbnB1dEJhc2VDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQuZGlzYWJsZWQsXG4gICAgY3Vyc29yOiAnZGVmYXVsdCdcbiAgfVxufSwgb3duZXJTdGF0ZS5tdWx0aWxpbmUgJiYgX2V4dGVuZHMoe1xuICBwYWRkaW5nOiAnNHB4IDAgNXB4J1xufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgcGFkZGluZ1RvcDogMVxufSksIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgd2lkdGg6ICcxMDAlJ1xufSkpO1xuZXhwb3J0IGNvbnN0IElucHV0QmFzZUNvbXBvbmVudCA9IHN0eWxlZCgnaW5wdXQnLCB7XG4gIG5hbWU6ICdNdWlJbnB1dEJhc2UnLFxuICBzbG90OiAnSW5wdXQnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogaW5wdXRPdmVycmlkZXNSZXNvbHZlclxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgY29uc3QgbGlnaHQgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCc7XG4gIGNvbnN0IHBsYWNlaG9sZGVyID0gX2V4dGVuZHMoe1xuICAgIGNvbG9yOiAnY3VycmVudENvbG9yJ1xuICB9LCB0aGVtZS52YXJzID8ge1xuICAgIG9wYWNpdHk6IHRoZW1lLnZhcnMub3BhY2l0eS5pbnB1dFBsYWNlaG9sZGVyXG4gIH0gOiB7XG4gICAgb3BhY2l0eTogbGlnaHQgPyAwLjQyIDogMC41XG4gIH0sIHtcbiAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ29wYWNpdHknLCB7XG4gICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlclxuICAgIH0pXG4gIH0pO1xuICBjb25zdCBwbGFjZWhvbGRlckhpZGRlbiA9IHtcbiAgICBvcGFjaXR5OiAnMCAhaW1wb3J0YW50J1xuICB9O1xuICBjb25zdCBwbGFjZWhvbGRlclZpc2libGUgPSB0aGVtZS52YXJzID8ge1xuICAgIG9wYWNpdHk6IHRoZW1lLnZhcnMub3BhY2l0eS5pbnB1dFBsYWNlaG9sZGVyXG4gIH0gOiB7XG4gICAgb3BhY2l0eTogbGlnaHQgPyAwLjQyIDogMC41XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcyh7XG4gICAgZm9udDogJ2luaGVyaXQnLFxuICAgIGxldHRlclNwYWNpbmc6ICdpbmhlcml0JyxcbiAgICBjb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgcGFkZGluZzogJzRweCAwIDVweCcsXG4gICAgYm9yZGVyOiAwLFxuICAgIGJveFNpemluZzogJ2NvbnRlbnQtYm94JyxcbiAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgaGVpZ2h0OiAnMS40Mzc1ZW0nLFxuICAgIC8vIFJlc2V0IDIzcHh0aGUgbmF0aXZlIGlucHV0IGxpbmUtaGVpZ2h0XG4gICAgbWFyZ2luOiAwLFxuICAgIC8vIFJlc2V0IGZvciBTYWZhcmlcbiAgICBXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIC8vIE1ha2UgdGhlIGZsZXggaXRlbSBzaHJpbmsgd2l0aCBGaXJlZm94XG4gICAgbWluV2lkdGg6IDAsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICAvLyBGaXggSUUxMSB3aWR0aCBpc3N1ZVxuICAgIGFuaW1hdGlvbk5hbWU6ICdtdWktYXV0by1maWxsLWNhbmNlbCcsXG4gICAgYW5pbWF0aW9uRHVyYXRpb246ICcxMG1zJyxcbiAgICAnJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcic6IHBsYWNlaG9sZGVyLFxuICAgICcmOjotbW96LXBsYWNlaG9sZGVyJzogcGxhY2Vob2xkZXIsXG4gICAgLy8gRmlyZWZveCAxOStcbiAgICAnJjotbXMtaW5wdXQtcGxhY2Vob2xkZXInOiBwbGFjZWhvbGRlcixcbiAgICAvLyBJRTExXG4gICAgJyY6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlcic6IHBsYWNlaG9sZGVyLFxuICAgIC8vIEVkZ2VcbiAgICAnJjpmb2N1cyc6IHtcbiAgICAgIG91dGxpbmU6IDBcbiAgICB9LFxuICAgIC8vIFJlc2V0IEZpcmVmb3ggaW52YWxpZCByZXF1aXJlZCBpbnB1dCBzdHlsZVxuICAgICcmOmludmFsaWQnOiB7XG4gICAgICBib3hTaGFkb3c6ICdub25lJ1xuICAgIH0sXG4gICAgJyY6Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24nOiB7XG4gICAgICAvLyBSZW1vdmUgdGhlIHBhZGRpbmcgd2hlbiB0eXBlPXNlYXJjaC5cbiAgICAgIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJ1xuICAgIH0sXG4gICAgLy8gU2hvdyBhbmQgaGlkZSB0aGUgcGxhY2Vob2xkZXIgbG9naWNcbiAgICBbYGxhYmVsW2RhdGEtc2hyaW5rPWZhbHNlXSArIC4ke2lucHV0QmFzZUNsYXNzZXMuZm9ybUNvbnRyb2x9ICZgXToge1xuICAgICAgJyY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXInOiBwbGFjZWhvbGRlckhpZGRlbixcbiAgICAgICcmOjotbW96LXBsYWNlaG9sZGVyJzogcGxhY2Vob2xkZXJIaWRkZW4sXG4gICAgICAvLyBGaXJlZm94IDE5K1xuICAgICAgJyY6LW1zLWlucHV0LXBsYWNlaG9sZGVyJzogcGxhY2Vob2xkZXJIaWRkZW4sXG4gICAgICAvLyBJRTExXG4gICAgICAnJjo6LW1zLWlucHV0LXBsYWNlaG9sZGVyJzogcGxhY2Vob2xkZXJIaWRkZW4sXG4gICAgICAvLyBFZGdlXG4gICAgICAnJjpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcic6IHBsYWNlaG9sZGVyVmlzaWJsZSxcbiAgICAgICcmOmZvY3VzOjotbW96LXBsYWNlaG9sZGVyJzogcGxhY2Vob2xkZXJWaXNpYmxlLFxuICAgICAgLy8gRmlyZWZveCAxOStcbiAgICAgICcmOmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlcic6IHBsYWNlaG9sZGVyVmlzaWJsZSxcbiAgICAgIC8vIElFMTFcbiAgICAgICcmOmZvY3VzOjotbXMtaW5wdXQtcGxhY2Vob2xkZXInOiBwbGFjZWhvbGRlclZpc2libGUgLy8gRWRnZVxuICAgIH0sXG5cbiAgICBbYCYuJHtpbnB1dEJhc2VDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgICBvcGFjaXR5OiAxLFxuICAgICAgLy8gUmVzZXQgaU9TIG9wYWNpdHlcbiAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQuZGlzYWJsZWQgLy8gRml4IG9wYWNpdHkgU2FmYXJpIGJ1Z1xuICAgIH0sXG5cbiAgICAnJjotd2Via2l0LWF1dG9maWxsJzoge1xuICAgICAgYW5pbWF0aW9uRHVyYXRpb246ICc1MDAwcycsXG4gICAgICBhbmltYXRpb25OYW1lOiAnbXVpLWF1dG8tZmlsbCdcbiAgICB9XG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICAgcGFkZGluZ1RvcDogMVxuICB9LCBvd25lclN0YXRlLm11bHRpbGluZSAmJiB7XG4gICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgcmVzaXplOiAnbm9uZScsXG4gICAgcGFkZGluZzogMCxcbiAgICBwYWRkaW5nVG9wOiAwXG4gIH0sIG93bmVyU3RhdGUudHlwZSA9PT0gJ3NlYXJjaCcgJiYge1xuICAgIC8vIEltcHJvdmUgdHlwZSBzZWFyY2ggc3R5bGUuXG4gICAgTW96QXBwZWFyYW5jZTogJ3RleHRmaWVsZCdcbiAgfSk7XG59KTtcbmNvbnN0IGlucHV0R2xvYmFsU3R5bGVzID0gLyojX19QVVJFX18qL19qc3goR2xvYmFsU3R5bGVzLCB7XG4gIHN0eWxlczoge1xuICAgICdAa2V5ZnJhbWVzIG11aS1hdXRvLWZpbGwnOiB7XG4gICAgICBmcm9tOiB7XG4gICAgICAgIGRpc3BsYXk6ICdibG9jaydcbiAgICAgIH1cbiAgICB9LFxuICAgICdAa2V5ZnJhbWVzIG11aS1hdXRvLWZpbGwtY2FuY2VsJzoge1xuICAgICAgZnJvbToge1xuICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuLyoqXG4gKiBgSW5wdXRCYXNlYCBjb250YWlucyBhcyBmZXcgc3R5bGVzIGFzIHBvc3NpYmxlLlxuICogSXQgYWltcyB0byBiZSBhIHNpbXBsZSBidWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYW4gaW5wdXQuXG4gKiBJdCBjb250YWlucyBhIGxvYWQgb2Ygc3R5bGUgcmVzZXQgYW5kIHNvbWUgc3RhdGUgbG9naWMuXG4gKi9cbmNvbnN0IElucHV0QmFzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIElucHV0QmFzZShpblByb3BzLCByZWYpIHtcbiAgdmFyIF9zbG90UHJvcHMkaW5wdXQ7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUlucHV0QmFzZSdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgICdhcmlhLWRlc2NyaWJlZGJ5JzogYXJpYURlc2NyaWJlZGJ5LFxuICAgICAgYXV0b0NvbXBsZXRlLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50cyA9IHt9LFxuICAgICAgY29tcG9uZW50c1Byb3BzID0ge30sXG4gICAgICBkZWZhdWx0VmFsdWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGRpc2FibGVJbmplY3RpbmdHbG9iYWxTdHlsZXMsXG4gICAgICBlbmRBZG9ybm1lbnQsXG4gICAgICBmdWxsV2lkdGggPSBmYWxzZSxcbiAgICAgIGlkLFxuICAgICAgaW5wdXRDb21wb25lbnQgPSAnaW5wdXQnLFxuICAgICAgaW5wdXRQcm9wczogaW5wdXRQcm9wc1Byb3AgPSB7fSxcbiAgICAgIGlucHV0UmVmOiBpbnB1dFJlZlByb3AsXG4gICAgICBtYXhSb3dzLFxuICAgICAgbWluUm93cyxcbiAgICAgIG11bHRpbGluZSA9IGZhbHNlLFxuICAgICAgbmFtZSxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25DbGljayxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbktleURvd24sXG4gICAgICBvbktleVVwLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICByZWFkT25seSxcbiAgICAgIHJlbmRlclN1ZmZpeCxcbiAgICAgIHJvd3MsXG4gICAgICBzbG90UHJvcHMgPSB7fSxcbiAgICAgIHNsb3RzID0ge30sXG4gICAgICBzdGFydEFkb3JubWVudCxcbiAgICAgIHR5cGUgPSAndGV4dCcsXG4gICAgICB2YWx1ZTogdmFsdWVQcm9wXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHZhbHVlID0gaW5wdXRQcm9wc1Byb3AudmFsdWUgIT0gbnVsbCA/IGlucHV0UHJvcHNQcm9wLnZhbHVlIDogdmFsdWVQcm9wO1xuICBjb25zdCB7XG4gICAgY3VycmVudDogaXNDb250cm9sbGVkXG4gIH0gPSBSZWFjdC51c2VSZWYodmFsdWUgIT0gbnVsbCk7XG4gIGNvbnN0IGlucHV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IGhhbmRsZUlucHV0UmVmV2FybmluZyA9IFJlYWN0LnVzZUNhbGxiYWNrKGluc3RhbmNlID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGluc3RhbmNlICYmIGluc3RhbmNlLm5vZGVOYW1lICE9PSAnSU5QVVQnICYmICFpbnN0YW5jZS5mb2N1cykge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBZb3UgaGF2ZSBwcm92aWRlZCBhIGBpbnB1dENvbXBvbmVudGAgdG8gdGhlIGlucHV0IGNvbXBvbmVudCcsICd0aGF0IGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgdGhlIGByZWZgIHByb3AuJywgJ01ha2Ugc3VyZSB0aGUgYHJlZmAgcHJvcCBpcyBjYWxsZWQgd2l0aCBhIEhUTUxJbnB1dEVsZW1lbnQuJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCBoYW5kbGVJbnB1dFJlZiA9IHVzZUZvcmtSZWYoaW5wdXRSZWYsIGlucHV0UmVmUHJvcCwgaW5wdXRQcm9wc1Byb3AucmVmLCBoYW5kbGVJbnB1dFJlZldhcm5pbmcpO1xuICBjb25zdCBbZm9jdXNlZCwgc2V0Rm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IG11aUZvcm1Db250cm9sID0gdXNlRm9ybUNvbnRyb2woKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKG11aUZvcm1Db250cm9sKSB7XG4gICAgICAgIHJldHVybiBtdWlGb3JtQ29udHJvbC5yZWdpc3RlckVmZmVjdCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9LCBbbXVpRm9ybUNvbnRyb2xdKTtcbiAgfVxuICBjb25zdCBmY3MgPSBmb3JtQ29udHJvbFN0YXRlKHtcbiAgICBwcm9wcyxcbiAgICBtdWlGb3JtQ29udHJvbCxcbiAgICBzdGF0ZXM6IFsnY29sb3InLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnaGlkZGVuTGFiZWwnLCAnc2l6ZScsICdyZXF1aXJlZCcsICdmaWxsZWQnXVxuICB9KTtcbiAgZmNzLmZvY3VzZWQgPSBtdWlGb3JtQ29udHJvbCA/IG11aUZvcm1Db250cm9sLmZvY3VzZWQgOiBmb2N1c2VkO1xuXG4gIC8vIFRoZSBibHVyIHdvbid0IGZpcmUgd2hlbiB0aGUgZGlzYWJsZWQgc3RhdGUgaXMgc2V0IG9uIGEgZm9jdXNlZCBpbnB1dC5cbiAgLy8gV2UgbmVlZCB0byBib29rIGtlZXAgdGhlIGZvY3VzZWQgc3RhdGUgbWFudWFsbHkuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFtdWlGb3JtQ29udHJvbCAmJiBkaXNhYmxlZCAmJiBmb2N1c2VkKSB7XG4gICAgICBzZXRGb2N1c2VkKGZhbHNlKTtcbiAgICAgIGlmIChvbkJsdXIpIHtcbiAgICAgICAgb25CbHVyKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbbXVpRm9ybUNvbnRyb2wsIGRpc2FibGVkLCBmb2N1c2VkLCBvbkJsdXJdKTtcbiAgY29uc3Qgb25GaWxsZWQgPSBtdWlGb3JtQ29udHJvbCAmJiBtdWlGb3JtQ29udHJvbC5vbkZpbGxlZDtcbiAgY29uc3Qgb25FbXB0eSA9IG11aUZvcm1Db250cm9sICYmIG11aUZvcm1Db250cm9sLm9uRW1wdHk7XG4gIGNvbnN0IGNoZWNrRGlydHkgPSBSZWFjdC51c2VDYWxsYmFjayhvYmogPT4ge1xuICAgIGlmIChpc0ZpbGxlZChvYmopKSB7XG4gICAgICBpZiAob25GaWxsZWQpIHtcbiAgICAgICAgb25GaWxsZWQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9uRW1wdHkpIHtcbiAgICAgIG9uRW1wdHkoKTtcbiAgICB9XG4gIH0sIFtvbkZpbGxlZCwgb25FbXB0eV0pO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzQ29udHJvbGxlZCkge1xuICAgICAgY2hlY2tEaXJ0eSh7XG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFt2YWx1ZSwgY2hlY2tEaXJ0eSwgaXNDb250cm9sbGVkXSk7XG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gZXZlbnQgPT4ge1xuICAgIC8vIEZpeCBhIGJ1ZyB3aXRoIElFMTEgd2hlcmUgdGhlIGZvY3VzL2JsdXIgZXZlbnRzIGFyZSB0cmlnZ2VyZWRcbiAgICAvLyB3aGlsZSB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgIGlmIChmY3MuZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAob25Gb2N1cykge1xuICAgICAgb25Gb2N1cyhldmVudCk7XG4gICAgfVxuICAgIGlmIChpbnB1dFByb3BzUHJvcC5vbkZvY3VzKSB7XG4gICAgICBpbnB1dFByb3BzUHJvcC5vbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKG11aUZvcm1Db250cm9sICYmIG11aUZvcm1Db250cm9sLm9uRm9jdXMpIHtcbiAgICAgIG11aUZvcm1Db250cm9sLm9uRm9jdXMoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRGb2N1c2VkKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IGV2ZW50ID0+IHtcbiAgICBpZiAob25CbHVyKSB7XG4gICAgICBvbkJsdXIoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoaW5wdXRQcm9wc1Byb3Aub25CbHVyKSB7XG4gICAgICBpbnB1dFByb3BzUHJvcC5vbkJsdXIoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAobXVpRm9ybUNvbnRyb2wgJiYgbXVpRm9ybUNvbnRyb2wub25CbHVyKSB7XG4gICAgICBtdWlGb3JtQ29udHJvbC5vbkJsdXIoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRGb2N1c2VkKGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IChldmVudCwgLi4uYXJncykgPT4ge1xuICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IHx8IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBgTVVJOiBFeHBlY3RlZCB2YWxpZCBpbnB1dCB0YXJnZXQuIERpZCB5b3UgdXNlIGEgY3VzdG9tIFxcYGlucHV0Q29tcG9uZW50XFxgIGFuZCBmb3JnZXQgdG8gZm9yd2FyZCByZWZzPyBTZWUgaHR0cHM6Ly9tdWkuY29tL3IvaW5wdXQtY29tcG9uZW50LXJlZi1pbnRlcmZhY2UgZm9yIG1vcmUgaW5mby5gIDogX2Zvcm1hdE11aUVycm9yTWVzc2FnZSgxKSk7XG4gICAgICB9XG4gICAgICBjaGVja0RpcnR5KHtcbiAgICAgICAgdmFsdWU6IGVsZW1lbnQudmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaW5wdXRQcm9wc1Byb3Aub25DaGFuZ2UpIHtcbiAgICAgIGlucHV0UHJvcHNQcm9wLm9uQ2hhbmdlKGV2ZW50LCAuLi5hcmdzKTtcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtIGluIHRoZSB3aWxsVXBkYXRlXG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZShldmVudCwgLi4uYXJncyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIENoZWNrIHRoZSBpbnB1dCBzdGF0ZSBvbiBtb3VudCwgaW4gY2FzZSBpdCB3YXMgZmlsbGVkIGJ5IHRoZSB1c2VyXG4gIC8vIG9yIGF1dG8gZmlsbGVkIGJ5IHRoZSBicm93c2VyIGJlZm9yZSB0aGUgaHlkcmF0aW9uIChmb3IgU1NSKS5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjaGVja0RpcnR5KGlucHV0UmVmLmN1cnJlbnQpO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW10pO1xuICBjb25zdCBoYW5kbGVDbGljayA9IGV2ZW50ID0+IHtcbiAgICBpZiAoaW5wdXRSZWYuY3VycmVudCAmJiBldmVudC5jdXJyZW50VGFyZ2V0ID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgIGlucHV0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgaWYgKG9uQ2xpY2sgJiYgIWZjcy5kaXNhYmxlZCkge1xuICAgICAgb25DbGljayhldmVudCk7XG4gICAgfVxuICB9O1xuICBsZXQgSW5wdXRDb21wb25lbnQgPSBpbnB1dENvbXBvbmVudDtcbiAgbGV0IGlucHV0UHJvcHMgPSBpbnB1dFByb3BzUHJvcDtcbiAgaWYgKG11bHRpbGluZSAmJiBJbnB1dENvbXBvbmVudCA9PT0gJ2lucHV0Jykge1xuICAgIGlmIChyb3dzKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAobWluUm93cyB8fCBtYXhSb3dzKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdNVUk6IFlvdSBjYW4gbm90IHVzZSB0aGUgYG1pblJvd3NgIG9yIGBtYXhSb3dzYCBwcm9wcyB3aGVuIHRoZSBpbnB1dCBgcm93c2AgcHJvcCBpcyBzZXQuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlucHV0UHJvcHMgPSBfZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgbWluUm93czogcm93cyxcbiAgICAgICAgbWF4Um93czogcm93c1xuICAgICAgfSwgaW5wdXRQcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0UHJvcHMgPSBfZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgICAgbWF4Um93cyxcbiAgICAgICAgbWluUm93c1xuICAgICAgfSwgaW5wdXRQcm9wcyk7XG4gICAgfVxuICAgIElucHV0Q29tcG9uZW50ID0gVGV4dGFyZWFBdXRvc2l6ZTtcbiAgfVxuICBjb25zdCBoYW5kbGVBdXRvRmlsbCA9IGV2ZW50ID0+IHtcbiAgICAvLyBQcm92aWRlIGEgZmFrZSB2YWx1ZSBhcyBDaHJvbWUgbWlnaHQgbm90IGxldCB5b3UgYWNjZXNzIGl0IGZvciBzZWN1cml0eSByZWFzb25zLlxuICAgIGNoZWNrRGlydHkoZXZlbnQuYW5pbWF0aW9uTmFtZSA9PT0gJ211aS1hdXRvLWZpbGwtY2FuY2VsJyA/IGlucHV0UmVmLmN1cnJlbnQgOiB7XG4gICAgICB2YWx1ZTogJ3gnXG4gICAgfSk7XG4gIH07XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG11aUZvcm1Db250cm9sKSB7XG4gICAgICBtdWlGb3JtQ29udHJvbC5zZXRBZG9ybmVkU3RhcnQoQm9vbGVhbihzdGFydEFkb3JubWVudCkpO1xuICAgIH1cbiAgfSwgW211aUZvcm1Db250cm9sLCBzdGFydEFkb3JubWVudF0pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3I6IGZjcy5jb2xvciB8fCAncHJpbWFyeScsXG4gICAgZGlzYWJsZWQ6IGZjcy5kaXNhYmxlZCxcbiAgICBlbmRBZG9ybm1lbnQsXG4gICAgZXJyb3I6IGZjcy5lcnJvcixcbiAgICBmb2N1c2VkOiBmY3MuZm9jdXNlZCxcbiAgICBmb3JtQ29udHJvbDogbXVpRm9ybUNvbnRyb2wsXG4gICAgZnVsbFdpZHRoLFxuICAgIGhpZGRlbkxhYmVsOiBmY3MuaGlkZGVuTGFiZWwsXG4gICAgbXVsdGlsaW5lLFxuICAgIHNpemU6IGZjcy5zaXplLFxuICAgIHN0YXJ0QWRvcm5tZW50LFxuICAgIHR5cGVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgUm9vdCA9IHNsb3RzLnJvb3QgfHwgY29tcG9uZW50cy5Sb290IHx8IElucHV0QmFzZVJvb3Q7XG4gIGNvbnN0IHJvb3RQcm9wcyA9IHNsb3RQcm9wcy5yb290IHx8IGNvbXBvbmVudHNQcm9wcy5yb290IHx8IHt9O1xuICBjb25zdCBJbnB1dCA9IHNsb3RzLmlucHV0IHx8IGNvbXBvbmVudHMuSW5wdXQgfHwgSW5wdXRCYXNlQ29tcG9uZW50O1xuICBpbnB1dFByb3BzID0gX2V4dGVuZHMoe30sIGlucHV0UHJvcHMsIChfc2xvdFByb3BzJGlucHV0ID0gc2xvdFByb3BzLmlucHV0KSAhPSBudWxsID8gX3Nsb3RQcm9wcyRpbnB1dCA6IGNvbXBvbmVudHNQcm9wcy5pbnB1dCk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWyFkaXNhYmxlSW5qZWN0aW5nR2xvYmFsU3R5bGVzICYmIGlucHV0R2xvYmFsU3R5bGVzLCAvKiNfX1BVUkVfXyovX2pzeHMoUm9vdCwgX2V4dGVuZHMoe30sIHJvb3RQcm9wcywgIWlzSG9zdENvbXBvbmVudChSb290KSAmJiB7XG4gICAgICBvd25lclN0YXRlOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZSwgcm9vdFByb3BzLm93bmVyU3RhdGUpXG4gICAgfSwge1xuICAgICAgcmVmOiByZWYsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgIH0sIG90aGVyLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCByb290UHJvcHMuY2xhc3NOYW1lLCBjbGFzc05hbWUsIHJlYWRPbmx5ICYmICdNdWlJbnB1dEJhc2UtcmVhZE9ubHknKSxcbiAgICAgIGNoaWxkcmVuOiBbc3RhcnRBZG9ybm1lbnQsIC8qI19fUFVSRV9fKi9fanN4KEZvcm1Db250cm9sQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KElucHV0LCBfZXh0ZW5kcyh7XG4gICAgICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgICAgICBcImFyaWEtaW52YWxpZFwiOiBmY3MuZXJyb3IsXG4gICAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRieSxcbiAgICAgICAgICBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSxcbiAgICAgICAgICBhdXRvRm9jdXM6IGF1dG9Gb2N1cyxcbiAgICAgICAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICBkaXNhYmxlZDogZmNzLmRpc2FibGVkLFxuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBvbkFuaW1hdGlvblN0YXJ0OiBoYW5kbGVBdXRvRmlsbCxcbiAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlcixcbiAgICAgICAgICByZWFkT25seTogcmVhZE9ubHksXG4gICAgICAgICAgcmVxdWlyZWQ6IGZjcy5yZXF1aXJlZCxcbiAgICAgICAgICByb3dzOiByb3dzLFxuICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICBvbktleURvd246IG9uS2V5RG93bixcbiAgICAgICAgICBvbktleVVwOiBvbktleVVwLFxuICAgICAgICAgIHR5cGU6IHR5cGVcbiAgICAgICAgfSwgaW5wdXRQcm9wcywgIWlzSG9zdENvbXBvbmVudChJbnB1dCkgJiYge1xuICAgICAgICAgIGFzOiBJbnB1dENvbXBvbmVudCxcbiAgICAgICAgICBvd25lclN0YXRlOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZSwgaW5wdXRQcm9wcy5vd25lclN0YXRlKVxuICAgICAgICB9LCB7XG4gICAgICAgICAgcmVmOiBoYW5kbGVJbnB1dFJlZixcbiAgICAgICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5pbnB1dCwgaW5wdXRQcm9wcy5jbGFzc05hbWUsIHJlYWRPbmx5ICYmICdNdWlJbnB1dEJhc2UtcmVhZE9ubHknKSxcbiAgICAgICAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgICAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1xuICAgICAgICB9KSlcbiAgICAgIH0pLCBlbmRBZG9ybm1lbnQsIHJlbmRlclN1ZmZpeCA/IHJlbmRlclN1ZmZpeChfZXh0ZW5kcyh7fSwgZmNzLCB7XG4gICAgICAgIHN0YXJ0QWRvcm5tZW50XG4gICAgICB9KSkgOiBudWxsXVxuICAgIH0pKV1cbiAgfSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IElucHV0QmFzZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICAnYXJpYS1kZXNjcmliZWRieSc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGlzIHByb3AgaGVscHMgdXNlcnMgdG8gZmlsbCBmb3JtcyBmYXN0ZXIsIGVzcGVjaWFsbHkgb24gbW9iaWxlIGRldmljZXMuXG4gICAqIFRoZSBuYW1lIGNhbiBiZSBjb25mdXNpbmcsIGFzIGl0J3MgbW9yZSBsaWtlIGFuIGF1dG9maWxsLlxuICAgKiBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgaXQgW2ZvbGxvd2luZyB0aGUgc3BlY2lmaWNhdGlvbl0oaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybS1jb250cm9sLWluZnJhc3RydWN0dXJlLmh0bWwjYXV0b2ZpbGwpLlxuICAgKi9cbiAgYXV0b0NvbXBsZXRlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCBlbGVtZW50IGlzIGZvY3VzZWQgZHVyaW5nIHRoZSBmaXJzdCBtb3VudC5cbiAgICovXG4gIGF1dG9Gb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSAoYCdwcmltYXJ5J2ApIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgY29tcG9uZW50LlxuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBzbG90c2AgcHJvcC5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBzbG90c2AgcHJvcCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29tcG9uZW50czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBJbnB1dDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIFJvb3Q6IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBleHRyYSBwcm9wcyBmb3IgdGhlIHNsb3QgY29tcG9uZW50cy5cbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcHJvcHMgb3IgYWRkIG5ldyBvbmVzLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgc2xvdFByb3BzYCBwcm9wLlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgYHNsb3RQcm9wc2AgcHJvcCBpbnN0ZWFkLCBhcyBgY29tcG9uZW50c1Byb3BzYCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbXBvbmVudHNQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpbnB1dDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByb290OiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUuIFVzZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IGNvbnRyb2xsZWQuXG4gICAqL1xuICBkZWZhdWx0VmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSAoYGZhbHNlYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIEdsb2JhbFN0eWxlcyBmb3IgdGhlIGF1dG8tZmlsbCBrZXlmcmFtZXMgd2lsbCBub3QgYmUgaW5qZWN0ZWQvcmVtb3ZlZCBvbiBtb3VudC91bm1vdW50LiBNYWtlIHN1cmUgdG8gaW5qZWN0IHRoZW0gYXQgdGhlIHRvcCBvZiB5b3VyIGFwcGxpY2F0aW9uLlxuICAgKiBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBoZWxwIHdpdGggYm9vc3RpbmcgdGhlIGluaXRpYWwgcmVuZGVyaW5nIHBlcmZvcm1hbmNlIGlmIHlvdSBhcmUgbG9hZGluZyBhIGJpZyBhbW91bnQgb2YgSW5wdXQgY29tcG9uZW50cyBhdCBvbmNlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUluamVjdGluZ0dsb2JhbFN0eWxlczogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBFbmQgYElucHV0QWRvcm5tZW50YCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBlbmRBZG9ybm1lbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCB3aWxsIGluZGljYXRlIGFuIGVycm9yLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGBmYWxzZWApIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgY29tcG9uZW50LlxuICAgKi9cbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCB3aWxsIHRha2UgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCAnaW5wdXQnXG4gICAqL1xuICBpbnB1dENvbXBvbmVudDogZWxlbWVudFR5cGVBY2NlcHRpbmdSZWYsXG4gIC8qKlxuICAgKiBbQXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0F0dHJpYnV0ZXMpIGFwcGxpZWQgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBQYXNzIGEgcmVmIHRvIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBpbnB1dFJlZjogcmVmVHlwZSxcbiAgLyoqXG4gICAqIElmIGBkZW5zZWAsIHdpbGwgYWRqdXN0IHZlcnRpY2FsIHNwYWNpbmcuIFRoaXMgaXMgbm9ybWFsbHkgb2J0YWluZWQgdmlhIGNvbnRleHQgZnJvbVxuICAgKiBGb3JtQ29udHJvbC5cbiAgICogVGhlIHByb3AgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIChgJ25vbmUnYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICBtYXJnaW46IFByb3BUeXBlcy5vbmVPZihbJ2RlbnNlJywgJ25vbmUnXSksXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aWxpbmUgb3B0aW9uIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgbWF4Um93czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogTWluaW11bSBudW1iZXIgb2Ygcm93cyB0byBkaXNwbGF5IHdoZW4gbXVsdGlsaW5lIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIG1pblJvd3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYSBbVGV4dGFyZWFBdXRvc2l6ZV0oL21hdGVyaWFsLXVpL3JlYWN0LXRleHRhcmVhLWF1dG9zaXplLykgZWxlbWVudCBpcyByZW5kZXJlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG11bHRpbGluZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBOYW1lIGF0dHJpYnV0ZSBvZiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGBpbnB1dGAgaXMgYmx1cnJlZC5cbiAgICpcbiAgICogTm90aWNlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IChldmVudCkgbWlnaHQgYmUgdW5kZWZpbmVkLlxuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGlzIGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudCB8IEhUTUxJbnB1dEVsZW1lbnQ+fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogWW91IGNhbiBwdWxsIG91dCB0aGUgbmV3IHZhbHVlIGJ5IGFjY2Vzc2luZyBgZXZlbnQudGFyZ2V0LnZhbHVlYCAoc3RyaW5nKS5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBgaW5wdXRgIGRvZXNuJ3Qgc2F0aXNmeSBpdHMgY29uc3RyYWludHMuXG4gICAqL1xuICBvbkludmFsaWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25LZXlEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uS2V5VXA6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHNob3J0IGhpbnQgZGlzcGxheWVkIGluIHRoZSBgaW5wdXRgIGJlZm9yZSB0aGUgdXNlciBlbnRlcnMgYSB2YWx1ZS5cbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSXQgcHJldmVudHMgdGhlIHVzZXIgZnJvbSBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkXG4gICAqIChub3QgZnJvbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWVsZCkuXG4gICAqL1xuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZW5kZXJTdWZmaXg6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCBlbGVtZW50IGlzIHJlcXVpcmVkLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGBmYWxzZWApIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgY29tcG9uZW50LlxuICAgKi9cbiAgcmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogTnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSB3aGVuIG11bHRpbGluZSBvcHRpb24gaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICByb3dzOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydtZWRpdW0nLCAnc21hbGwnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBleHRyYSBwcm9wcyBmb3IgdGhlIHNsb3QgY29tcG9uZW50cy5cbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcHJvcHMgb3IgYWRkIG5ldyBvbmVzLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgY29tcG9uZW50c1Byb3BzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpbnB1dDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByb290OiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYGNvbXBvbmVudHNgIHByb3AsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaW5wdXQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICByb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBTdGFydCBgSW5wdXRBZG9ybm1lbnRgIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC4gSXQgc2hvdWxkIGJlIFthIHZhbGlkIEhUTUw1IGlucHV0IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNGb3JtXyUzQ2lucHV0JTNFX3R5cGVzKS5cbiAgICogQGRlZmF1bHQgJ3RleHQnXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQsIHJlcXVpcmVkIGZvciBhIGNvbnRyb2xsZWQgY29tcG9uZW50LlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBJbnB1dEJhc2U7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldElucHV0QmFzZVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpSW5wdXRCYXNlJywgc2xvdCk7XG59XG5jb25zdCBpbnB1dEJhc2VDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpSW5wdXRCYXNlJywgWydyb290JywgJ2Zvcm1Db250cm9sJywgJ2ZvY3VzZWQnLCAnZGlzYWJsZWQnLCAnYWRvcm5lZFN0YXJ0JywgJ2Fkb3JuZWRFbmQnLCAnZXJyb3InLCAnc2l6ZVNtYWxsJywgJ211bHRpbGluZScsICdjb2xvclNlY29uZGFyeScsICdmdWxsV2lkdGgnLCAnaGlkZGVuTGFiZWwnLCAncmVhZE9ubHknLCAnaW5wdXQnLCAnaW5wdXRTaXplU21hbGwnLCAnaW5wdXRNdWx0aWxpbmUnLCAnaW5wdXRUeXBlU2VhcmNoJywgJ2lucHV0QWRvcm5lZFN0YXJ0JywgJ2lucHV0QWRvcm5lZEVuZCcsICdpbnB1dEhpZGRlbkxhYmVsJ10pO1xuZXhwb3J0IGRlZmF1bHQgaW5wdXRCYXNlQ2xhc3NlczsiLCIvLyBTdXBwb3J0cyBkZXRlcm1pbmF0aW9uIG9mIGlzQ29udHJvbGxlZCgpLlxuLy8gQ29udHJvbGxlZCBpbnB1dCBhY2NlcHRzIGl0cyBjdXJyZW50IHZhbHVlIGFzIGEgcHJvcC5cbi8vXG4vLyBAc2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZm9ybXMuaHRtbCNjb250cm9sbGVkLWNvbXBvbmVudHNcbi8vIEBwYXJhbSB2YWx1ZVxuLy8gQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgc3RyaW5nIChpbmNsdWRpbmcgJycpIG9yIG51bWJlciAoaW5jbHVkaW5nIHplcm8pXG5leHBvcnQgZnVuY3Rpb24gaGFzVmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgIShBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xufVxuXG4vLyBEZXRlcm1pbmUgaWYgZmllbGQgaXMgZW1wdHkgb3IgZmlsbGVkLlxuLy8gUmVzcG9uc2UgZGV0ZXJtaW5lcyBpZiBsYWJlbCBpcyBwcmVzZW50ZWQgYWJvdmUgZmllbGQgb3IgYXMgcGxhY2Vob2xkZXIuXG4vL1xuLy8gQHBhcmFtIG9ialxuLy8gQHBhcmFtIFNTUlxuLy8gQHJldHVybnMge2Jvb2xlYW59IEZhbHNlIHdoZW4gbm90IHByZXNlbnQgb3IgZW1wdHkgc3RyaW5nLlxuLy8gICAgICAgICAgICAgICAgICAgIFRydWUgd2hlbiBhbnkgbnVtYmVyIG9yIHN0cmluZyB3aXRoIGxlbmd0aC5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbGxlZChvYmosIFNTUiA9IGZhbHNlKSB7XG4gIHJldHVybiBvYmogJiYgKGhhc1ZhbHVlKG9iai52YWx1ZSkgJiYgb2JqLnZhbHVlICE9PSAnJyB8fCBTU1IgJiYgaGFzVmFsdWUob2JqLmRlZmF1bHRWYWx1ZSkgJiYgb2JqLmRlZmF1bHRWYWx1ZSAhPT0gJycpO1xufVxuXG4vLyBEZXRlcm1pbmUgaWYgYW4gSW5wdXQgaXMgYWRvcm5lZCBvbiBzdGFydC5cbi8vIEl0J3MgY29ycmVzcG9uZGluZyB0byB0aGUgbGVmdCB3aXRoIExUUi5cbi8vXG4vLyBAcGFyYW0gb2JqXG4vLyBAcmV0dXJucyB7Ym9vbGVhbn0gRmFsc2Ugd2hlbiBubyBhZG9ybm1lbnRzLlxuLy8gICAgICAgICAgICAgICAgICAgIFRydWUgd2hlbiBhZG9ybmVkIGF0IHRoZSBzdGFydC5cbmV4cG9ydCBmdW5jdGlvbiBpc0Fkb3JuZWRTdGFydChvYmopIHtcbiAgcmV0dXJuIG9iai5zdGFydEFkb3JubWVudDtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TGlzdFV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpTGlzdCcsIHNsb3QpO1xufVxuY29uc3QgbGlzdENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlMaXN0JywgWydyb290JywgJ3BhZGRpbmcnLCAnZGVuc2UnLCAnc3ViaGVhZGVyJ10pO1xuZXhwb3J0IGRlZmF1bHQgbGlzdENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJkZW5zZVwiLCBcImRpc2FibGVQYWRkaW5nXCIsIFwic3ViaGVhZGVyXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBMaXN0Q29udGV4dCBmcm9tICcuL0xpc3RDb250ZXh0JztcbmltcG9ydCB7IGdldExpc3RVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2xpc3RDbGFzc2VzJztcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlUGFkZGluZyxcbiAgICBkZW5zZSxcbiAgICBzdWJoZWFkZXJcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsICFkaXNhYmxlUGFkZGluZyAmJiAncGFkZGluZycsIGRlbnNlICYmICdkZW5zZScsIHN1YmhlYWRlciAmJiAnc3ViaGVhZGVyJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRMaXN0VXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBMaXN0Um9vdCA9IHN0eWxlZCgndWwnLCB7XG4gIG5hbWU6ICdNdWlMaXN0JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsICFvd25lclN0YXRlLmRpc2FibGVQYWRkaW5nICYmIHN0eWxlcy5wYWRkaW5nLCBvd25lclN0YXRlLmRlbnNlICYmIHN0eWxlcy5kZW5zZSwgb3duZXJTdGF0ZS5zdWJoZWFkZXIgJiYgc3R5bGVzLnN1YmhlYWRlcl07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgbGlzdFN0eWxlOiAnbm9uZScsXG4gIG1hcmdpbjogMCxcbiAgcGFkZGluZzogMCxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbn0sICFvd25lclN0YXRlLmRpc2FibGVQYWRkaW5nICYmIHtcbiAgcGFkZGluZ1RvcDogOCxcbiAgcGFkZGluZ0JvdHRvbTogOFxufSwgb3duZXJTdGF0ZS5zdWJoZWFkZXIgJiYge1xuICBwYWRkaW5nVG9wOiAwXG59KSk7XG5jb25zdCBMaXN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTGlzdChpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpTGlzdCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ3VsJyxcbiAgICAgIGRlbnNlID0gZmFsc2UsXG4gICAgICBkaXNhYmxlUGFkZGluZyA9IGZhbHNlLFxuICAgICAgc3ViaGVhZGVyXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGNvbnRleHQgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZGVuc2VcbiAgfSksIFtkZW5zZV0pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGRlbnNlLFxuICAgIGRpc2FibGVQYWRkaW5nXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChMaXN0Q29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjb250ZXh0LFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeHMoTGlzdFJvb3QsIF9leHRlbmRzKHtcbiAgICAgIGFzOiBjb21wb25lbnQsXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgICAgcmVmOiByZWYsXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gICAgfSwgb3RoZXIsIHtcbiAgICAgIGNoaWxkcmVuOiBbc3ViaGVhZGVyLCBjaGlsZHJlbl1cbiAgICB9KSlcbiAgfSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IExpc3QucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgY29tcGFjdCB2ZXJ0aWNhbCBwYWRkaW5nIGRlc2lnbmVkIGZvciBrZXlib2FyZCBhbmQgbW91c2UgaW5wdXQgaXMgdXNlZCBmb3JcbiAgICogdGhlIGxpc3QgYW5kIGxpc3QgaXRlbXMuXG4gICAqIFRoZSBwcm9wIGlzIGF2YWlsYWJsZSB0byBkZXNjZW5kYW50IGNvbXBvbmVudHMgYXMgdGhlIGBkZW5zZWAgY29udGV4dC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlbnNlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdmVydGljYWwgcGFkZGluZyBpcyByZW1vdmVkIGZyb20gdGhlIGxpc3QuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUGFkZGluZzogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgc3ViaGVhZGVyLCBub3JtYWxseSBgTGlzdFN1YmhlYWRlcmAuXG4gICAqL1xuICBzdWJoZWFkZXI6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgTGlzdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5jb25zdCBMaXN0Q29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIExpc3RDb250ZXh0LmRpc3BsYXlOYW1lID0gJ0xpc3RDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IExpc3RDb250ZXh0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dldFNjcm9sbGJhclNpemUgYXMgZ2V0U2Nyb2xsYmFyU2l6ZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZ2V0U2Nyb2xsYmFyU2l6ZTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhY3Rpb25zXCIsIFwiYXV0b0ZvY3VzXCIsIFwiYXV0b0ZvY3VzSXRlbVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiZGlzYWJsZWRJdGVtc0ZvY3VzYWJsZVwiLCBcImRpc2FibGVMaXN0V3JhcFwiLCBcIm9uS2V5RG93blwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0ZyYWdtZW50IH0gZnJvbSAncmVhY3QtaXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBvd25lckRvY3VtZW50IGZyb20gJy4uL3V0aWxzL293bmVyRG9jdW1lbnQnO1xuaW1wb3J0IExpc3QgZnJvbSAnLi4vTGlzdCc7XG5pbXBvcnQgZ2V0U2Nyb2xsYmFyU2l6ZSBmcm9tICcuLi91dGlscy9nZXRTY3JvbGxiYXJTaXplJztcbmltcG9ydCB1c2VGb3JrUmVmIGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHVzZUVuaGFuY2VkRWZmZWN0IGZyb20gJy4uL3V0aWxzL3VzZUVuaGFuY2VkRWZmZWN0JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBuZXh0SXRlbShsaXN0LCBpdGVtLCBkaXNhYmxlTGlzdFdyYXApIHtcbiAgaWYgKGxpc3QgPT09IGl0ZW0pIHtcbiAgICByZXR1cm4gbGlzdC5maXJzdENoaWxkO1xuICB9XG4gIGlmIChpdGVtICYmIGl0ZW0ubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgcmV0dXJuIGl0ZW0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICB9XG4gIHJldHVybiBkaXNhYmxlTGlzdFdyYXAgPyBudWxsIDogbGlzdC5maXJzdENoaWxkO1xufVxuZnVuY3Rpb24gcHJldmlvdXNJdGVtKGxpc3QsIGl0ZW0sIGRpc2FibGVMaXN0V3JhcCkge1xuICBpZiAobGlzdCA9PT0gaXRlbSkge1xuICAgIHJldHVybiBkaXNhYmxlTGlzdFdyYXAgPyBsaXN0LmZpcnN0Q2hpbGQgOiBsaXN0Lmxhc3RDaGlsZDtcbiAgfVxuICBpZiAoaXRlbSAmJiBpdGVtLnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcbiAgICByZXR1cm4gaXRlbS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICB9XG4gIHJldHVybiBkaXNhYmxlTGlzdFdyYXAgPyBudWxsIDogbGlzdC5sYXN0Q2hpbGQ7XG59XG5mdW5jdGlvbiB0ZXh0Q3JpdGVyaWFNYXRjaGVzKG5leHRGb2N1cywgdGV4dENyaXRlcmlhKSB7XG4gIGlmICh0ZXh0Q3JpdGVyaWEgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCB0ZXh0ID0gbmV4dEZvY3VzLmlubmVyVGV4dDtcbiAgaWYgKHRleHQgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIGpzZG9tIGRvZXNuJ3Qgc3VwcG9ydCBpbm5lclRleHRcbiAgICB0ZXh0ID0gbmV4dEZvY3VzLnRleHRDb250ZW50O1xuICB9XG4gIHRleHQgPSB0ZXh0LnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAodGV4dC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHRleHRDcml0ZXJpYS5yZXBlYXRpbmcpIHtcbiAgICByZXR1cm4gdGV4dFswXSA9PT0gdGV4dENyaXRlcmlhLmtleXNbMF07XG4gIH1cbiAgcmV0dXJuIHRleHQuaW5kZXhPZih0ZXh0Q3JpdGVyaWEua2V5cy5qb2luKCcnKSkgPT09IDA7XG59XG5mdW5jdGlvbiBtb3ZlRm9jdXMobGlzdCwgY3VycmVudEZvY3VzLCBkaXNhYmxlTGlzdFdyYXAsIGRpc2FibGVkSXRlbXNGb2N1c2FibGUsIHRyYXZlcnNhbEZ1bmN0aW9uLCB0ZXh0Q3JpdGVyaWEpIHtcbiAgbGV0IHdyYXBwZWRPbmNlID0gZmFsc2U7XG4gIGxldCBuZXh0Rm9jdXMgPSB0cmF2ZXJzYWxGdW5jdGlvbihsaXN0LCBjdXJyZW50Rm9jdXMsIGN1cnJlbnRGb2N1cyA/IGRpc2FibGVMaXN0V3JhcCA6IGZhbHNlKTtcbiAgd2hpbGUgKG5leHRGb2N1cykge1xuICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcC5cbiAgICBpZiAobmV4dEZvY3VzID09PSBsaXN0LmZpcnN0Q2hpbGQpIHtcbiAgICAgIGlmICh3cmFwcGVkT25jZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB3cmFwcGVkT25jZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gU2FtZSBsb2dpYyBhcyB1c2VBdXRvY29tcGxldGUuanNcbiAgICBjb25zdCBuZXh0Rm9jdXNEaXNhYmxlZCA9IGRpc2FibGVkSXRlbXNGb2N1c2FibGUgPyBmYWxzZSA6IG5leHRGb2N1cy5kaXNhYmxlZCB8fCBuZXh0Rm9jdXMuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJztcbiAgICBpZiAoIW5leHRGb2N1cy5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHwgIXRleHRDcml0ZXJpYU1hdGNoZXMobmV4dEZvY3VzLCB0ZXh0Q3JpdGVyaWEpIHx8IG5leHRGb2N1c0Rpc2FibGVkKSB7XG4gICAgICAvLyBNb3ZlIHRvIHRoZSBuZXh0IGVsZW1lbnQuXG4gICAgICBuZXh0Rm9jdXMgPSB0cmF2ZXJzYWxGdW5jdGlvbihsaXN0LCBuZXh0Rm9jdXMsIGRpc2FibGVMaXN0V3JhcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRGb2N1cy5mb2N1cygpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBBIHBlcm1hbmVudGx5IGRpc3BsYXllZCBtZW51IGZvbGxvd2luZyBodHRwczovL3d3dy53My5vcmcvV0FJL0FSSUEvYXBnL3BhdHRlcm5zL21lbnUtYnV0dG9uLy5cbiAqIEl0J3MgZXhwb3NlZCB0byBoZWxwIGN1c3RvbWl6YXRpb24gb2YgdGhlIFtgTWVudWBdKC9tYXRlcmlhbC11aS9hcGkvbWVudS8pIGNvbXBvbmVudCBpZiB5b3VcbiAqIHVzZSBpdCBzZXBhcmF0ZWx5IHlvdSBuZWVkIHRvIG1vdmUgZm9jdXMgaW50byB0aGUgY29tcG9uZW50IG1hbnVhbGx5LiBPbmNlXG4gKiB0aGUgZm9jdXMgaXMgcGxhY2VkIGluc2lkZSB0aGUgY29tcG9uZW50IGl0IGlzIGZ1bGx5IGtleWJvYXJkIGFjY2Vzc2libGUuXG4gKi9cbmNvbnN0IE1lbnVMaXN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTWVudUxpc3QocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgICAvLyBwcml2YXRlXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgYWN0aW9ucyxcbiAgICAgIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICAgICAgYXV0b0ZvY3VzSXRlbSA9IGZhbHNlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZEl0ZW1zRm9jdXNhYmxlID0gZmFsc2UsXG4gICAgICBkaXNhYmxlTGlzdFdyYXAgPSBmYWxzZSxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIHZhcmlhbnQgPSAnc2VsZWN0ZWRNZW51J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBsaXN0UmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCB0ZXh0Q3JpdGVyaWFSZWYgPSBSZWFjdC51c2VSZWYoe1xuICAgIGtleXM6IFtdLFxuICAgIHJlcGVhdGluZzogdHJ1ZSxcbiAgICBwcmV2aW91c0tleU1hdGNoZWQ6IHRydWUsXG4gICAgbGFzdFRpbWU6IG51bGxcbiAgfSk7XG4gIHVzZUVuaGFuY2VkRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYXV0b0ZvY3VzKSB7XG4gICAgICBsaXN0UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0sIFthdXRvRm9jdXNdKTtcbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShhY3Rpb25zLCAoKSA9PiAoe1xuICAgIGFkanVzdFN0eWxlRm9yU2Nyb2xsYmFyOiAoY29udGFpbmVyRWxlbWVudCwgdGhlbWUpID0+IHtcbiAgICAgIC8vIExldCdzIGlnbm9yZSB0aGF0IHBpZWNlIG9mIGxvZ2ljIGlmIHVzZXJzIGFyZSBhbHJlYWR5IG92ZXJyaWRpbmcgdGhlIHdpZHRoXG4gICAgICAvLyBvZiB0aGUgbWVudS5cbiAgICAgIGNvbnN0IG5vRXhwbGljaXRXaWR0aCA9ICFsaXN0UmVmLmN1cnJlbnQuc3R5bGUud2lkdGg7XG4gICAgICBpZiAoY29udGFpbmVyRWxlbWVudC5jbGllbnRIZWlnaHQgPCBsaXN0UmVmLmN1cnJlbnQuY2xpZW50SGVpZ2h0ICYmIG5vRXhwbGljaXRXaWR0aCkge1xuICAgICAgICBjb25zdCBzY3JvbGxiYXJTaXplID0gYCR7Z2V0U2Nyb2xsYmFyU2l6ZShvd25lckRvY3VtZW50KGNvbnRhaW5lckVsZW1lbnQpKX1weGA7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudC5zdHlsZVt0aGVtZS5kaXJlY3Rpb24gPT09ICdydGwnID8gJ3BhZGRpbmdMZWZ0JyA6ICdwYWRkaW5nUmlnaHQnXSA9IHNjcm9sbGJhclNpemU7XG4gICAgICAgIGxpc3RSZWYuY3VycmVudC5zdHlsZS53aWR0aCA9IGBjYWxjKDEwMCUgKyAke3Njcm9sbGJhclNpemV9KWA7XG4gICAgICB9XG4gICAgICByZXR1cm4gbGlzdFJlZi5jdXJyZW50O1xuICAgIH1cbiAgfSksIFtdKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBsaXN0ID0gbGlzdFJlZi5jdXJyZW50O1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7RWxlbWVudH0gLSB3aWxsIGFsd2F5cyBiZSBkZWZpbmVkIHNpbmNlIHdlIGFyZSBpbiBhIGtleWRvd24gaGFuZGxlclxuICAgICAqIGF0dGFjaGVkIHRvIGFuIGVsZW1lbnQuIEEga2V5ZG93biBldmVudCBpcyBlaXRoZXIgZGlzcGF0Y2hlZCB0byB0aGUgYWN0aXZlRWxlbWVudFxuICAgICAqIG9yIGRvY3VtZW50LmJvZHkgb3IgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LiBPbmx5IHRoZSBmaXJzdCBjYXNlIHdpbGxcbiAgICAgKiB0cmlnZ2VyIHRoaXMgc3BlY2lmaWMgaGFuZGxlci5cbiAgICAgKi9cbiAgICBjb25zdCBjdXJyZW50Rm9jdXMgPSBvd25lckRvY3VtZW50KGxpc3QpLmFjdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKGtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgIC8vIFByZXZlbnQgc2Nyb2xsIG9mIHRoZSBwYWdlXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgbW92ZUZvY3VzKGxpc3QsIGN1cnJlbnRGb2N1cywgZGlzYWJsZUxpc3RXcmFwLCBkaXNhYmxlZEl0ZW1zRm9jdXNhYmxlLCBuZXh0SXRlbSk7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIG1vdmVGb2N1cyhsaXN0LCBjdXJyZW50Rm9jdXMsIGRpc2FibGVMaXN0V3JhcCwgZGlzYWJsZWRJdGVtc0ZvY3VzYWJsZSwgcHJldmlvdXNJdGVtKTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ0hvbWUnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgbW92ZUZvY3VzKGxpc3QsIG51bGwsIGRpc2FibGVMaXN0V3JhcCwgZGlzYWJsZWRJdGVtc0ZvY3VzYWJsZSwgbmV4dEl0ZW0pO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnRW5kJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIG1vdmVGb2N1cyhsaXN0LCBudWxsLCBkaXNhYmxlTGlzdFdyYXAsIGRpc2FibGVkSXRlbXNGb2N1c2FibGUsIHByZXZpb3VzSXRlbSk7XG4gICAgfSBlbHNlIGlmIChrZXkubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBjcml0ZXJpYSA9IHRleHRDcml0ZXJpYVJlZi5jdXJyZW50O1xuICAgICAgY29uc3QgbG93ZXJLZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGN1cnJUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICBpZiAoY3JpdGVyaWEua2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIFJlc2V0XG4gICAgICAgIGlmIChjdXJyVGltZSAtIGNyaXRlcmlhLmxhc3RUaW1lID4gNTAwKSB7XG4gICAgICAgICAgY3JpdGVyaWEua2V5cyA9IFtdO1xuICAgICAgICAgIGNyaXRlcmlhLnJlcGVhdGluZyA9IHRydWU7XG4gICAgICAgICAgY3JpdGVyaWEucHJldmlvdXNLZXlNYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjcml0ZXJpYS5yZXBlYXRpbmcgJiYgbG93ZXJLZXkgIT09IGNyaXRlcmlhLmtleXNbMF0pIHtcbiAgICAgICAgICBjcml0ZXJpYS5yZXBlYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3JpdGVyaWEubGFzdFRpbWUgPSBjdXJyVGltZTtcbiAgICAgIGNyaXRlcmlhLmtleXMucHVzaChsb3dlcktleSk7XG4gICAgICBjb25zdCBrZWVwRm9jdXNPbkN1cnJlbnQgPSBjdXJyZW50Rm9jdXMgJiYgIWNyaXRlcmlhLnJlcGVhdGluZyAmJiB0ZXh0Q3JpdGVyaWFNYXRjaGVzKGN1cnJlbnRGb2N1cywgY3JpdGVyaWEpO1xuICAgICAgaWYgKGNyaXRlcmlhLnByZXZpb3VzS2V5TWF0Y2hlZCAmJiAoa2VlcEZvY3VzT25DdXJyZW50IHx8IG1vdmVGb2N1cyhsaXN0LCBjdXJyZW50Rm9jdXMsIGZhbHNlLCBkaXNhYmxlZEl0ZW1zRm9jdXNhYmxlLCBuZXh0SXRlbSwgY3JpdGVyaWEpKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3JpdGVyaWEucHJldmlvdXNLZXlNYXRjaGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvbktleURvd24pIHtcbiAgICAgIG9uS2V5RG93bihldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKGxpc3RSZWYsIHJlZik7XG5cbiAgLyoqXG4gICAqIHRoZSBpbmRleCBvZiB0aGUgaXRlbSBzaG91bGQgcmVjZWl2ZSBmb2N1c1xuICAgKiBpbiBhIGB2YXJpYW50PVwic2VsZWN0ZWRNZW51XCJgIGl0J3MgdGhlIGZpcnN0IGBzZWxlY3RlZGAgaXRlbVxuICAgKiBvdGhlcndpc2UgaXQncyB0aGUgdmVyeSBmaXJzdCBpdGVtLlxuICAgKi9cbiAgbGV0IGFjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICAvLyBzaW5jZSB3ZSBpbmplY3QgZm9jdXMgcmVsYXRlZCBwcm9wcyBpbnRvIGNoaWxkcmVuIHdlIGhhdmUgdG8gZG8gYSBsb29rYWhlYWRcbiAgLy8gdG8gY2hlY2sgaWYgdGhlcmUgaXMgYSBgc2VsZWN0ZWRgIGl0ZW0uIFdlJ3JlIGxvb2tpbmcgZm9yIHRoZSBsYXN0IGBzZWxlY3RlZGBcbiAgLy8gaXRlbSBhbmQgdXNlIHRoZSBmaXJzdCB2YWxpZCBpdGVtIGFzIGEgZmFsbGJhY2tcbiAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgIGlmICghIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtSW5kZXggPT09IGluZGV4KSB7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleCArPSAxO1xuICAgICAgICBpZiAoYWN0aXZlSXRlbUluZGV4ID49IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIC8vIHRoZXJlIGFyZSBubyBmb2N1c2FibGUgaXRlbXMgd2l0aGluIHRoZSBsaXN0LlxuICAgICAgICAgIGFjdGl2ZUl0ZW1JbmRleCA9IC0xO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaXNGcmFnbWVudChjaGlsZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbXCJNVUk6IFRoZSBNZW51IGNvbXBvbmVudCBkb2Vzbid0IGFjY2VwdCBhIEZyYWdtZW50IGFzIGEgY2hpbGQuXCIsICdDb25zaWRlciBwcm92aWRpbmcgYW4gYXJyYXkgaW5zdGVhZC4nXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghY2hpbGQucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh2YXJpYW50ID09PSAnc2VsZWN0ZWRNZW51JyAmJiBjaGlsZC5wcm9wcy5zZWxlY3RlZCkge1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXggPSBpbmRleDtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aXZlSXRlbUluZGV4ID09PSAtMSkge1xuICAgICAgICBhY3RpdmVJdGVtSW5kZXggPSBpbmRleDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFjdGl2ZUl0ZW1JbmRleCA9PT0gaW5kZXggJiYgKGNoaWxkLnByb3BzLmRpc2FibGVkIHx8IGNoaWxkLnByb3BzLm11aVNraXBMaXN0SGlnaGxpZ2h0IHx8IGNoaWxkLnR5cGUubXVpU2tpcExpc3RIaWdobGlnaHQpKSB7XG4gICAgICBhY3RpdmVJdGVtSW5kZXggKz0gMTtcbiAgICAgIGlmIChhY3RpdmVJdGVtSW5kZXggPj0gY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIC8vIHRoZXJlIGFyZSBubyBmb2N1c2FibGUgaXRlbXMgd2l0aGluIHRoZSBsaXN0LlxuICAgICAgICBhY3RpdmVJdGVtSW5kZXggPSAtMTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBpdGVtcyA9IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gYWN0aXZlSXRlbUluZGV4KSB7XG4gICAgICBjb25zdCBuZXdDaGlsZFByb3BzID0ge307XG4gICAgICBpZiAoYXV0b0ZvY3VzSXRlbSkge1xuICAgICAgICBuZXdDaGlsZFByb3BzLmF1dG9Gb2N1cyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGQucHJvcHMudGFiSW5kZXggPT09IHVuZGVmaW5lZCAmJiB2YXJpYW50ID09PSAnc2VsZWN0ZWRNZW51Jykge1xuICAgICAgICBuZXdDaGlsZFByb3BzLnRhYkluZGV4ID0gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBuZXdDaGlsZFByb3BzKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KExpc3QsIF9leHRlbmRzKHtcbiAgICByb2xlOiBcIm1lbnVcIixcbiAgICByZWY6IGhhbmRsZVJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgdGFiSW5kZXg6IGF1dG9Gb2N1cyA/IDAgOiAtMVxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBpdGVtc1xuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IE1lbnVMaXN0LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBmb2N1cyB0aGUgYFtyb2xlPVwibWVudVwiXWAgY29udGFpbmVyIGFuZCBtb3ZlIGludG8gdGFiIG9yZGVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBmb2N1cyB0aGUgZmlyc3QgbWVudWl0ZW0gaWYgYHZhcmlhbnQ9XCJtZW51XCJgIG9yIHNlbGVjdGVkIGl0ZW1cbiAgICogaWYgYHZhcmlhbnQ9XCJzZWxlY3RlZE1lbnVcImAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhdXRvRm9jdXNJdGVtOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE1lbnVMaXN0IGNvbnRlbnRzLCBub3JtYWxseSBgTWVudUl0ZW1gcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgd2lsbCBhbGxvdyBmb2N1cyBvbiBkaXNhYmxlZCBpdGVtcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkSXRlbXNGb2N1c2FibGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbWVudSBpdGVtcyB3aWxsIG5vdCB3cmFwIGZvY3VzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUxpc3RXcmFwOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuIFVzZSBgbWVudWAgdG8gcHJldmVudCBzZWxlY3RlZCBpdGVtcyBmcm9tIGltcGFjdGluZyB0aGUgaW5pdGlhbCBmb2N1c1xuICAgKiBhbmQgdGhlIHZlcnRpY2FsIGFsaWdubWVudCByZWxhdGl2ZSB0byB0aGUgYW5jaG9yIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdzZWxlY3RlZE1lbnUnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydtZW51JywgJ3NlbGVjdGVkTWVudSddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IE1lbnVMaXN0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRQb3BvdmVyVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlQb3BvdmVyJywgc2xvdCk7XG59XG5jb25zdCBwb3BvdmVyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVBvcG92ZXInLCBbJ3Jvb3QnLCAncGFwZXInXSk7XG5leHBvcnQgZGVmYXVsdCBwb3BvdmVyQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJvbkVudGVyaW5nXCJdLFxuICBfZXhjbHVkZWQyID0gW1wiYWN0aW9uXCIsIFwiYW5jaG9yRWxcIiwgXCJhbmNob3JPcmlnaW5cIiwgXCJhbmNob3JQb3NpdGlvblwiLCBcImFuY2hvclJlZmVyZW5jZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29udGFpbmVyXCIsIFwiZWxldmF0aW9uXCIsIFwibWFyZ2luVGhyZXNob2xkXCIsIFwib3BlblwiLCBcIlBhcGVyUHJvcHNcIiwgXCJzbG90c1wiLCBcInNsb3RQcm9wc1wiLCBcInRyYW5zZm9ybU9yaWdpblwiLCBcIlRyYW5zaXRpb25Db21wb25lbnRcIiwgXCJ0cmFuc2l0aW9uRHVyYXRpb25cIiwgXCJUcmFuc2l0aW9uUHJvcHNcIl0sXG4gIF9leGNsdWRlZDMgPSBbXCJzbG90UHJvcHNcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcywgdXNlU2xvdFByb3BzLCBpc0hvc3RDb21wb25lbnQgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMsIGludGVnZXJQcm9wVHlwZSwgZWxlbWVudFR5cGVBY2NlcHRpbmdSZWYsIHJlZlR5cGUsIEhUTUxFbGVtZW50VHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICcuLi91dGlscy9kZWJvdW5jZSc7XG5pbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuLi91dGlscy9vd25lckRvY3VtZW50JztcbmltcG9ydCBvd25lcldpbmRvdyBmcm9tICcuLi91dGlscy9vd25lcldpbmRvdyc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCBHcm93IGZyb20gJy4uL0dyb3cnO1xuaW1wb3J0IE1vZGFsIGZyb20gJy4uL01vZGFsJztcbmltcG9ydCBQYXBlckJhc2UgZnJvbSAnLi4vUGFwZXInO1xuaW1wb3J0IHsgZ2V0UG9wb3ZlclV0aWxpdHlDbGFzcyB9IGZyb20gJy4vcG9wb3ZlckNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRPZmZzZXRUb3AocmVjdCwgdmVydGljYWwpIHtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGlmICh0eXBlb2YgdmVydGljYWwgPT09ICdudW1iZXInKSB7XG4gICAgb2Zmc2V0ID0gdmVydGljYWw7XG4gIH0gZWxzZSBpZiAodmVydGljYWwgPT09ICdjZW50ZXInKSB7XG4gICAgb2Zmc2V0ID0gcmVjdC5oZWlnaHQgLyAyO1xuICB9IGVsc2UgaWYgKHZlcnRpY2FsID09PSAnYm90dG9tJykge1xuICAgIG9mZnNldCA9IHJlY3QuaGVpZ2h0O1xuICB9XG4gIHJldHVybiBvZmZzZXQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0T2Zmc2V0TGVmdChyZWN0LCBob3Jpem9udGFsKSB7XG4gIGxldCBvZmZzZXQgPSAwO1xuICBpZiAodHlwZW9mIGhvcml6b250YWwgPT09ICdudW1iZXInKSB7XG4gICAgb2Zmc2V0ID0gaG9yaXpvbnRhbDtcbiAgfSBlbHNlIGlmIChob3Jpem9udGFsID09PSAnY2VudGVyJykge1xuICAgIG9mZnNldCA9IHJlY3Qud2lkdGggLyAyO1xuICB9IGVsc2UgaWYgKGhvcml6b250YWwgPT09ICdyaWdodCcpIHtcbiAgICBvZmZzZXQgPSByZWN0LndpZHRoO1xuICB9XG4gIHJldHVybiBvZmZzZXQ7XG59XG5mdW5jdGlvbiBnZXRUcmFuc2Zvcm1PcmlnaW5WYWx1ZSh0cmFuc2Zvcm1PcmlnaW4pIHtcbiAgcmV0dXJuIFt0cmFuc2Zvcm1PcmlnaW4uaG9yaXpvbnRhbCwgdHJhbnNmb3JtT3JpZ2luLnZlcnRpY2FsXS5tYXAobiA9PiB0eXBlb2YgbiA9PT0gJ251bWJlcicgPyBgJHtufXB4YCA6IG4pLmpvaW4oJyAnKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVBbmNob3JFbChhbmNob3JFbCkge1xuICByZXR1cm4gdHlwZW9mIGFuY2hvckVsID09PSAnZnVuY3Rpb24nID8gYW5jaG9yRWwoKSA6IGFuY2hvckVsO1xufVxuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCddLFxuICAgIHBhcGVyOiBbJ3BhcGVyJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRQb3BvdmVyVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5leHBvcnQgY29uc3QgUG9wb3ZlclJvb3QgPSBzdHlsZWQoTW9kYWwsIHtcbiAgbmFtZTogJ011aVBvcG92ZXInLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnJvb3Rcbn0pKHt9KTtcbmV4cG9ydCBjb25zdCBQb3BvdmVyUGFwZXIgPSBzdHlsZWQoUGFwZXJCYXNlLCB7XG4gIG5hbWU6ICdNdWlQb3BvdmVyJyxcbiAgc2xvdDogJ1BhcGVyJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMucGFwZXJcbn0pKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIG92ZXJmbG93WTogJ2F1dG8nLFxuICBvdmVyZmxvd1g6ICdoaWRkZW4nLFxuICAvLyBTbyB3ZSBzZWUgdGhlIHBvcG92ZXIgd2hlbiBpdCdzIGVtcHR5LlxuICAvLyBJdCdzIG1vc3QgbGlrZWx5IG9uIGlzc3VlIG9uIHVzZXJsYW5kLlxuICBtaW5XaWR0aDogMTYsXG4gIG1pbkhlaWdodDogMTYsXG4gIG1heFdpZHRoOiAnY2FsYygxMDAlIC0gMzJweCknLFxuICBtYXhIZWlnaHQ6ICdjYWxjKDEwMCUgLSAzMnB4KScsXG4gIC8vIFdlIGRpc2FibGUgdGhlIGZvY3VzIHJpbmcgZm9yIG1vdXNlLCB0b3VjaCBhbmQga2V5Ym9hcmQgdXNlcnMuXG4gIG91dGxpbmU6IDBcbn0pO1xuY29uc3QgUG9wb3ZlciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFBvcG92ZXIoaW5Qcm9wcywgcmVmKSB7XG4gIHZhciBfc2xvdFByb3BzJHBhcGVyLCBfc2xvdHMkcm9vdCwgX3Nsb3RzJHBhcGVyO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlQb3BvdmVyJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgYWN0aW9uLFxuICAgICAgYW5jaG9yRWwsXG4gICAgICBhbmNob3JPcmlnaW4gPSB7XG4gICAgICAgIHZlcnRpY2FsOiAndG9wJyxcbiAgICAgICAgaG9yaXpvbnRhbDogJ2xlZnQnXG4gICAgICB9LFxuICAgICAgYW5jaG9yUG9zaXRpb24sXG4gICAgICBhbmNob3JSZWZlcmVuY2UgPSAnYW5jaG9yRWwnLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb250YWluZXI6IGNvbnRhaW5lclByb3AsXG4gICAgICBlbGV2YXRpb24gPSA4LFxuICAgICAgbWFyZ2luVGhyZXNob2xkID0gMTYsXG4gICAgICBvcGVuLFxuICAgICAgUGFwZXJQcm9wczogUGFwZXJQcm9wc1Byb3AgPSB7fSxcbiAgICAgIHNsb3RzLFxuICAgICAgc2xvdFByb3BzLFxuICAgICAgdHJhbnNmb3JtT3JpZ2luID0ge1xuICAgICAgICB2ZXJ0aWNhbDogJ3RvcCcsXG4gICAgICAgIGhvcml6b250YWw6ICdsZWZ0J1xuICAgICAgfSxcbiAgICAgIFRyYW5zaXRpb25Db21wb25lbnQgPSBHcm93LFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiB0cmFuc2l0aW9uRHVyYXRpb25Qcm9wID0gJ2F1dG8nLFxuICAgICAgVHJhbnNpdGlvblByb3BzOiB7XG4gICAgICAgIG9uRW50ZXJpbmdcbiAgICAgIH0gPSB7fVxuICAgIH0gPSBwcm9wcyxcbiAgICBUcmFuc2l0aW9uUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcy5UcmFuc2l0aW9uUHJvcHMsIF9leGNsdWRlZCksXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkMik7XG4gIGNvbnN0IGV4dGVybmFsUGFwZXJTbG90UHJvcHMgPSAoX3Nsb3RQcm9wcyRwYXBlciA9IHNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogc2xvdFByb3BzLnBhcGVyKSAhPSBudWxsID8gX3Nsb3RQcm9wcyRwYXBlciA6IFBhcGVyUHJvcHNQcm9wO1xuICBjb25zdCBwYXBlclJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBoYW5kbGVQYXBlclJlZiA9IHVzZUZvcmtSZWYocGFwZXJSZWYsIGV4dGVybmFsUGFwZXJTbG90UHJvcHMucmVmKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFuY2hvck9yaWdpbixcbiAgICBhbmNob3JSZWZlcmVuY2UsXG4gICAgZWxldmF0aW9uLFxuICAgIG1hcmdpblRocmVzaG9sZCxcbiAgICBleHRlcm5hbFBhcGVyU2xvdFByb3BzLFxuICAgIHRyYW5zZm9ybU9yaWdpbixcbiAgICBUcmFuc2l0aW9uQ29tcG9uZW50LFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdHJhbnNpdGlvbkR1cmF0aW9uUHJvcCxcbiAgICBUcmFuc2l0aW9uUHJvcHNcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcblxuICAvLyBSZXR1cm5zIHRoZSB0b3AvbGVmdCBvZmZzZXQgb2YgdGhlIHBvc2l0aW9uXG4gIC8vIHRvIGF0dGFjaCB0byBvbiB0aGUgYW5jaG9yIGVsZW1lbnQgKG9yIGJvZHkgaWYgbm9uZSBpcyBwcm92aWRlZClcbiAgY29uc3QgZ2V0QW5jaG9yT2Zmc2V0ID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChhbmNob3JSZWZlcmVuY2UgPT09ICdhbmNob3JQb3NpdGlvbicpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghYW5jaG9yUG9zaXRpb24pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdNVUk6IFlvdSBuZWVkIHRvIHByb3ZpZGUgYSBgYW5jaG9yUG9zaXRpb25gIHByb3Agd2hlbiB1c2luZyAnICsgJzxQb3BvdmVyIGFuY2hvclJlZmVyZW5jZT1cImFuY2hvclBvc2l0aW9uXCIgLz4uJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhbmNob3JQb3NpdGlvbjtcbiAgICB9XG4gICAgY29uc3QgcmVzb2x2ZWRBbmNob3JFbCA9IHJlc29sdmVBbmNob3JFbChhbmNob3JFbCk7XG5cbiAgICAvLyBJZiBhbiBhbmNob3IgZWxlbWVudCB3YXNuJ3QgcHJvdmlkZWQsIGp1c3QgdXNlIHRoZSBwYXJlbnQgYm9keSBlbGVtZW50IG9mIHRoaXMgUG9wb3ZlclxuICAgIGNvbnN0IGFuY2hvckVsZW1lbnQgPSByZXNvbHZlZEFuY2hvckVsICYmIHJlc29sdmVkQW5jaG9yRWwubm9kZVR5cGUgPT09IDEgPyByZXNvbHZlZEFuY2hvckVsIDogb3duZXJEb2N1bWVudChwYXBlclJlZi5jdXJyZW50KS5ib2R5O1xuICAgIGNvbnN0IGFuY2hvclJlY3QgPSBhbmNob3JFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zdCBib3ggPSBhbmNob3JFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiYgYm94LnRvcCA9PT0gMCAmJiBib3gubGVmdCA9PT0gMCAmJiBib3gucmlnaHQgPT09IDAgJiYgYm94LmJvdHRvbSA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLndhcm4oWydNVUk6IFRoZSBgYW5jaG9yRWxgIHByb3AgcHJvdmlkZWQgdG8gdGhlIGNvbXBvbmVudCBpcyBpbnZhbGlkLicsICdUaGUgYW5jaG9yIGVsZW1lbnQgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGRvY3VtZW50IGxheW91dC4nLCBcIk1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyBwcmVzZW50IGluIHRoZSBkb2N1bWVudCBvciB0aGF0IGl0J3Mgbm90IGRpc3BsYXkgbm9uZS5cIl0uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdG9wOiBhbmNob3JSZWN0LnRvcCArIGdldE9mZnNldFRvcChhbmNob3JSZWN0LCBhbmNob3JPcmlnaW4udmVydGljYWwpLFxuICAgICAgbGVmdDogYW5jaG9yUmVjdC5sZWZ0ICsgZ2V0T2Zmc2V0TGVmdChhbmNob3JSZWN0LCBhbmNob3JPcmlnaW4uaG9yaXpvbnRhbClcbiAgICB9O1xuICB9LCBbYW5jaG9yRWwsIGFuY2hvck9yaWdpbi5ob3Jpem9udGFsLCBhbmNob3JPcmlnaW4udmVydGljYWwsIGFuY2hvclBvc2l0aW9uLCBhbmNob3JSZWZlcmVuY2VdKTtcblxuICAvLyBSZXR1cm5zIHRoZSBiYXNlIHRyYW5zZm9ybSBvcmlnaW4gdXNpbmcgdGhlIGVsZW1lbnRcbiAgY29uc3QgZ2V0VHJhbnNmb3JtT3JpZ2luID0gUmVhY3QudXNlQ2FsbGJhY2soZWxlbVJlY3QgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXJ0aWNhbDogZ2V0T2Zmc2V0VG9wKGVsZW1SZWN0LCB0cmFuc2Zvcm1PcmlnaW4udmVydGljYWwpLFxuICAgICAgaG9yaXpvbnRhbDogZ2V0T2Zmc2V0TGVmdChlbGVtUmVjdCwgdHJhbnNmb3JtT3JpZ2luLmhvcml6b250YWwpXG4gICAgfTtcbiAgfSwgW3RyYW5zZm9ybU9yaWdpbi5ob3Jpem9udGFsLCB0cmFuc2Zvcm1PcmlnaW4udmVydGljYWxdKTtcbiAgY29uc3QgZ2V0UG9zaXRpb25pbmdTdHlsZSA9IFJlYWN0LnVzZUNhbGxiYWNrKGVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGVsZW1SZWN0ID0ge1xuICAgICAgd2lkdGg6IGVsZW1lbnQub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgfTtcblxuICAgIC8vIEdldCB0aGUgdHJhbnNmb3JtIG9yaWdpbiBwb2ludCBvbiB0aGUgZWxlbWVudCBpdHNlbGZcbiAgICBjb25zdCBlbGVtVHJhbnNmb3JtT3JpZ2luID0gZ2V0VHJhbnNmb3JtT3JpZ2luKGVsZW1SZWN0KTtcbiAgICBpZiAoYW5jaG9yUmVmZXJlbmNlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogbnVsbCxcbiAgICAgICAgbGVmdDogbnVsbCxcbiAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBnZXRUcmFuc2Zvcm1PcmlnaW5WYWx1ZShlbGVtVHJhbnNmb3JtT3JpZ2luKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBHZXQgdGhlIG9mZnNldCBvZiB0aGUgYW5jaG9yaW5nIGVsZW1lbnRcbiAgICBjb25zdCBhbmNob3JPZmZzZXQgPSBnZXRBbmNob3JPZmZzZXQoKTtcblxuICAgIC8vIENhbGN1bGF0ZSBlbGVtZW50IHBvc2l0aW9uaW5nXG4gICAgbGV0IHRvcCA9IGFuY2hvck9mZnNldC50b3AgLSBlbGVtVHJhbnNmb3JtT3JpZ2luLnZlcnRpY2FsO1xuICAgIGxldCBsZWZ0ID0gYW5jaG9yT2Zmc2V0LmxlZnQgLSBlbGVtVHJhbnNmb3JtT3JpZ2luLmhvcml6b250YWw7XG4gICAgY29uc3QgYm90dG9tID0gdG9wICsgZWxlbVJlY3QuaGVpZ2h0O1xuICAgIGNvbnN0IHJpZ2h0ID0gbGVmdCArIGVsZW1SZWN0LndpZHRoO1xuXG4gICAgLy8gVXNlIHRoZSBwYXJlbnQgd2luZG93IG9mIHRoZSBhbmNob3JFbCBpZiBwcm92aWRlZFxuICAgIGNvbnN0IGNvbnRhaW5lcldpbmRvdyA9IG93bmVyV2luZG93KHJlc29sdmVBbmNob3JFbChhbmNob3JFbCkpO1xuXG4gICAgLy8gV2luZG93IHRocmVzaG9sZHMgdGFraW5nIHJlcXVpcmVkIG1hcmdpbiBpbnRvIGFjY291bnRcbiAgICBjb25zdCBoZWlnaHRUaHJlc2hvbGQgPSBjb250YWluZXJXaW5kb3cuaW5uZXJIZWlnaHQgLSBtYXJnaW5UaHJlc2hvbGQ7XG4gICAgY29uc3Qgd2lkdGhUaHJlc2hvbGQgPSBjb250YWluZXJXaW5kb3cuaW5uZXJXaWR0aCAtIG1hcmdpblRocmVzaG9sZDtcblxuICAgIC8vIENoZWNrIGlmIHRoZSB2ZXJ0aWNhbCBheGlzIG5lZWRzIHNoaWZ0aW5nXG4gICAgaWYgKHRvcCA8IG1hcmdpblRocmVzaG9sZCkge1xuICAgICAgY29uc3QgZGlmZiA9IHRvcCAtIG1hcmdpblRocmVzaG9sZDtcbiAgICAgIHRvcCAtPSBkaWZmO1xuICAgICAgZWxlbVRyYW5zZm9ybU9yaWdpbi52ZXJ0aWNhbCArPSBkaWZmO1xuICAgIH0gZWxzZSBpZiAoYm90dG9tID4gaGVpZ2h0VGhyZXNob2xkKSB7XG4gICAgICBjb25zdCBkaWZmID0gYm90dG9tIC0gaGVpZ2h0VGhyZXNob2xkO1xuICAgICAgdG9wIC09IGRpZmY7XG4gICAgICBlbGVtVHJhbnNmb3JtT3JpZ2luLnZlcnRpY2FsICs9IGRpZmY7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoZWxlbVJlY3QuaGVpZ2h0ID4gaGVpZ2h0VGhyZXNob2xkICYmIGVsZW1SZWN0LmhlaWdodCAmJiBoZWlnaHRUaHJlc2hvbGQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogVGhlIHBvcG92ZXIgY29tcG9uZW50IGlzIHRvbyB0YWxsLicsIGBTb21lIHBhcnQgb2YgaXQgY2FuIG5vdCBiZSBzZWVuIG9uIHRoZSBzY3JlZW4gKCR7ZWxlbVJlY3QuaGVpZ2h0IC0gaGVpZ2h0VGhyZXNob2xkfXB4KS5gLCAnUGxlYXNlIGNvbnNpZGVyIGFkZGluZyBhIGBtYXgtaGVpZ2h0YCB0byBpbXByb3ZlIHRoZSB1c2VyLWV4cGVyaWVuY2UuJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIHRoZSBob3Jpem9udGFsIGF4aXMgbmVlZHMgc2hpZnRpbmdcbiAgICBpZiAobGVmdCA8IG1hcmdpblRocmVzaG9sZCkge1xuICAgICAgY29uc3QgZGlmZiA9IGxlZnQgLSBtYXJnaW5UaHJlc2hvbGQ7XG4gICAgICBsZWZ0IC09IGRpZmY7XG4gICAgICBlbGVtVHJhbnNmb3JtT3JpZ2luLmhvcml6b250YWwgKz0gZGlmZjtcbiAgICB9IGVsc2UgaWYgKHJpZ2h0ID4gd2lkdGhUaHJlc2hvbGQpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSByaWdodCAtIHdpZHRoVGhyZXNob2xkO1xuICAgICAgbGVmdCAtPSBkaWZmO1xuICAgICAgZWxlbVRyYW5zZm9ybU9yaWdpbi5ob3Jpem9udGFsICs9IGRpZmY7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0b3A6IGAke01hdGgucm91bmQodG9wKX1weGAsXG4gICAgICBsZWZ0OiBgJHtNYXRoLnJvdW5kKGxlZnQpfXB4YCxcbiAgICAgIHRyYW5zZm9ybU9yaWdpbjogZ2V0VHJhbnNmb3JtT3JpZ2luVmFsdWUoZWxlbVRyYW5zZm9ybU9yaWdpbilcbiAgICB9O1xuICB9LCBbYW5jaG9yRWwsIGFuY2hvclJlZmVyZW5jZSwgZ2V0QW5jaG9yT2Zmc2V0LCBnZXRUcmFuc2Zvcm1PcmlnaW4sIG1hcmdpblRocmVzaG9sZF0pO1xuICBjb25zdCBbaXNQb3NpdGlvbmVkLCBzZXRJc1Bvc2l0aW9uZWRdID0gUmVhY3QudXNlU3RhdGUob3Blbik7XG4gIGNvbnN0IHNldFBvc2l0aW9uaW5nU3R5bGVzID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBwYXBlclJlZi5jdXJyZW50O1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwb3NpdGlvbmluZyA9IGdldFBvc2l0aW9uaW5nU3R5bGUoZWxlbWVudCk7XG4gICAgaWYgKHBvc2l0aW9uaW5nLnRvcCAhPT0gbnVsbCkge1xuICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSBwb3NpdGlvbmluZy50b3A7XG4gICAgfVxuICAgIGlmIChwb3NpdGlvbmluZy5sZWZ0ICE9PSBudWxsKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBwb3NpdGlvbmluZy5sZWZ0O1xuICAgIH1cbiAgICBlbGVtZW50LnN0eWxlLnRyYW5zZm9ybU9yaWdpbiA9IHBvc2l0aW9uaW5nLnRyYW5zZm9ybU9yaWdpbjtcbiAgICBzZXRJc1Bvc2l0aW9uZWQodHJ1ZSk7XG4gIH0sIFtnZXRQb3NpdGlvbmluZ1N0eWxlXSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gKGVsZW1lbnQsIGlzQXBwZWFyaW5nKSA9PiB7XG4gICAgaWYgKG9uRW50ZXJpbmcpIHtcbiAgICAgIG9uRW50ZXJpbmcoZWxlbWVudCwgaXNBcHBlYXJpbmcpO1xuICAgIH1cbiAgICBzZXRQb3NpdGlvbmluZ1N0eWxlcygpO1xuICB9O1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSAoKSA9PiB7XG4gICAgc2V0SXNQb3NpdGlvbmVkKGZhbHNlKTtcbiAgfTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3Blbikge1xuICAgICAgc2V0UG9zaXRpb25pbmdTdHlsZXMoKTtcbiAgICB9XG4gIH0pO1xuICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKGFjdGlvbiwgKCkgPT4gb3BlbiA/IHtcbiAgICB1cGRhdGVQb3NpdGlvbjogKCkgPT4ge1xuICAgICAgc2V0UG9zaXRpb25pbmdTdHlsZXMoKTtcbiAgICB9XG4gIH0gOiBudWxsLCBbb3Blbiwgc2V0UG9zaXRpb25pbmdTdHlsZXNdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZVJlc2l6ZSA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgIHNldFBvc2l0aW9uaW5nU3R5bGVzKCk7XG4gICAgfSk7XG4gICAgY29uc3QgY29udGFpbmVyV2luZG93ID0gb3duZXJXaW5kb3coYW5jaG9yRWwpO1xuICAgIGNvbnRhaW5lcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBoYW5kbGVSZXNpemUuY2xlYXIoKTtcbiAgICAgIGNvbnRhaW5lcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgIH07XG4gIH0sIFthbmNob3JFbCwgb3Blbiwgc2V0UG9zaXRpb25pbmdTdHlsZXNdKTtcbiAgbGV0IHRyYW5zaXRpb25EdXJhdGlvbiA9IHRyYW5zaXRpb25EdXJhdGlvblByb3A7XG4gIGlmICh0cmFuc2l0aW9uRHVyYXRpb25Qcm9wID09PSAnYXV0bycgJiYgIVRyYW5zaXRpb25Db21wb25lbnQubXVpU3VwcG9ydEF1dG8pIHtcbiAgICB0cmFuc2l0aW9uRHVyYXRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBJZiB0aGUgY29udGFpbmVyIHByb3AgaXMgcHJvdmlkZWQsIHVzZSB0aGF0XG4gIC8vIElmIHRoZSBhbmNob3JFbCBwcm9wIGlzIHByb3ZpZGVkLCB1c2UgaXRzIHBhcmVudCBib2R5IGVsZW1lbnQgYXMgdGhlIGNvbnRhaW5lclxuICAvLyBJZiBuZWl0aGVyIGFyZSBwcm92aWRlZCBsZXQgdGhlIE1vZGFsIHRha2UgY2FyZSBvZiBjaG9vc2luZyB0aGUgY29udGFpbmVyXG4gIGNvbnN0IGNvbnRhaW5lciA9IGNvbnRhaW5lclByb3AgfHwgKGFuY2hvckVsID8gb3duZXJEb2N1bWVudChyZXNvbHZlQW5jaG9yRWwoYW5jaG9yRWwpKS5ib2R5IDogdW5kZWZpbmVkKTtcbiAgY29uc3QgUm9vdFNsb3QgPSAoX3Nsb3RzJHJvb3QgPSBzbG90cyA9PSBudWxsID8gdm9pZCAwIDogc2xvdHMucm9vdCkgIT0gbnVsbCA/IF9zbG90cyRyb290IDogUG9wb3ZlclJvb3Q7XG4gIGNvbnN0IFBhcGVyU2xvdCA9IChfc2xvdHMkcGFwZXIgPSBzbG90cyA9PSBudWxsID8gdm9pZCAwIDogc2xvdHMucGFwZXIpICE9IG51bGwgPyBfc2xvdHMkcGFwZXIgOiBQb3BvdmVyUGFwZXI7XG4gIGNvbnN0IHBhcGVyUHJvcHMgPSB1c2VTbG90UHJvcHMoe1xuICAgIGVsZW1lbnRUeXBlOiBQYXBlclNsb3QsXG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IF9leHRlbmRzKHt9LCBleHRlcm5hbFBhcGVyU2xvdFByb3BzLCB7XG4gICAgICBzdHlsZTogaXNQb3NpdGlvbmVkID8gZXh0ZXJuYWxQYXBlclNsb3RQcm9wcy5zdHlsZSA6IF9leHRlbmRzKHt9LCBleHRlcm5hbFBhcGVyU2xvdFByb3BzLnN0eWxlLCB7XG4gICAgICAgIG9wYWNpdHk6IDBcbiAgICAgIH0pXG4gICAgfSksXG4gICAgYWRkaXRpb25hbFByb3BzOiB7XG4gICAgICBlbGV2YXRpb24sXG4gICAgICByZWY6IGhhbmRsZVBhcGVyUmVmXG4gICAgfSxcbiAgICBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnBhcGVyLCBleHRlcm5hbFBhcGVyU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbFBhcGVyU2xvdFByb3BzLmNsYXNzTmFtZSlcbiAgfSk7XG4gIGNvbnN0IF91c2VTbG90UHJvcHMgPSB1c2VTbG90UHJvcHMoe1xuICAgICAgZWxlbWVudFR5cGU6IFJvb3RTbG90LFxuICAgICAgZXh0ZXJuYWxTbG90UHJvcHM6IChzbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHNsb3RQcm9wcy5yb290KSB8fCB7fSxcbiAgICAgIGV4dGVybmFsRm9yd2FyZGVkUHJvcHM6IG90aGVyLFxuICAgICAgYWRkaXRpb25hbFByb3BzOiB7XG4gICAgICAgIHJlZixcbiAgICAgICAgc2xvdFByb3BzOiB7XG4gICAgICAgICAgYmFja2Ryb3A6IHtcbiAgICAgICAgICAgIGludmlzaWJsZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY29udGFpbmVyLFxuICAgICAgICBvcGVuXG4gICAgICB9LFxuICAgICAgb3duZXJTdGF0ZSxcbiAgICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSlcbiAgICB9KSxcbiAgICB7XG4gICAgICBzbG90UHJvcHM6IHJvb3RTbG90UHJvcHNQcm9wXG4gICAgfSA9IF91c2VTbG90UHJvcHMsXG4gICAgcm9vdFByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3VzZVNsb3RQcm9wcywgX2V4Y2x1ZGVkMyk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChSb290U2xvdCwgX2V4dGVuZHMoe30sIHJvb3RQcm9wcywgIWlzSG9zdENvbXBvbmVudChSb290U2xvdCkgJiYge1xuICAgIHNsb3RQcm9wczogcm9vdFNsb3RQcm9wc1Byb3BcbiAgfSwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgICBhcHBlYXI6IHRydWUsXG4gICAgICBpbjogb3BlbixcbiAgICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgICAgb25FeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICAgIHRpbWVvdXQ6IHRyYW5zaXRpb25EdXJhdGlvblxuICAgIH0sIFRyYW5zaXRpb25Qcm9wcywge1xuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFBhcGVyU2xvdCwgX2V4dGVuZHMoe30sIHBhcGVyUHJvcHMsIHtcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICB9KSlcbiAgICB9KSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBQb3BvdmVyLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEEgcmVmIGZvciBpbXBlcmF0aXZlIGFjdGlvbnMuXG4gICAqIEl0IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHVwZGF0ZVBvc2l0aW9uKCkgYWN0aW9uLlxuICAgKi9cbiAgYWN0aW9uOiByZWZUeXBlLFxuICAvKipcbiAgICogQW4gSFRNTCBlbGVtZW50LCBbUG9wb3ZlclZpcnR1YWxFbGVtZW50XSgvbWF0ZXJpYWwtdWkvcmVhY3QtcG9wb3Zlci8jdmlydHVhbC1lbGVtZW50KSxcbiAgICogb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgZWl0aGVyLlxuICAgKiBJdCdzIHVzZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wb3Zlci5cbiAgICovXG4gIGFuY2hvckVsOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMub25lT2ZUeXBlKFtIVE1MRWxlbWVudFR5cGUsIFByb3BUeXBlcy5mdW5jXSksIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMub3BlbiAmJiAoIXByb3BzLmFuY2hvclJlZmVyZW5jZSB8fCBwcm9wcy5hbmNob3JSZWZlcmVuY2UgPT09ICdhbmNob3JFbCcpKSB7XG4gICAgICBjb25zdCByZXNvbHZlZEFuY2hvckVsID0gcmVzb2x2ZUFuY2hvckVsKHByb3BzLmFuY2hvckVsKTtcbiAgICAgIGlmIChyZXNvbHZlZEFuY2hvckVsICYmIHJlc29sdmVkQW5jaG9yRWwubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgY29uc3QgYm94ID0gcmVzb2x2ZWRBbmNob3JFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAndGVzdCcgJiYgYm94LnRvcCA9PT0gMCAmJiBib3gubGVmdCA9PT0gMCAmJiBib3gucmlnaHQgPT09IDAgJiYgYm94LmJvdHRvbSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBuZXcgRXJyb3IoWydNVUk6IFRoZSBgYW5jaG9yRWxgIHByb3AgcHJvdmlkZWQgdG8gdGhlIGNvbXBvbmVudCBpcyBpbnZhbGlkLicsICdUaGUgYW5jaG9yIGVsZW1lbnQgc2hvdWxkIGJlIHBhcnQgb2YgdGhlIGRvY3VtZW50IGxheW91dC4nLCBcIk1ha2Ugc3VyZSB0aGUgZWxlbWVudCBpcyBwcmVzZW50IGluIHRoZSBkb2N1bWVudCBvciB0aGF0IGl0J3Mgbm90IGRpc3BsYXkgbm9uZS5cIl0uam9pbignXFxuJykpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IEVycm9yKFsnTVVJOiBUaGUgYGFuY2hvckVsYCBwcm9wIHByb3ZpZGVkIHRvIHRoZSBjb21wb25lbnQgaXMgaW52YWxpZC4nLCBgSXQgc2hvdWxkIGJlIGFuIEVsZW1lbnQgb3IgUG9wb3ZlclZpcnR1YWxFbGVtZW50IGluc3RhbmNlIGJ1dCBpdCdzIFxcYCR7cmVzb2x2ZWRBbmNob3JFbH1cXGAgaW5zdGVhZC5gXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHBvaW50IG9uIHRoZSBhbmNob3Igd2hlcmUgdGhlIHBvcG92ZXInc1xuICAgKiBgYW5jaG9yRWxgIHdpbGwgYXR0YWNoIHRvLiBUaGlzIGlzIG5vdCB1c2VkIHdoZW4gdGhlXG4gICAqIGFuY2hvclJlZmVyZW5jZSBpcyAnYW5jaG9yUG9zaXRpb24nLlxuICAgKlxuICAgKiBPcHRpb25zOlxuICAgKiB2ZXJ0aWNhbDogW3RvcCwgY2VudGVyLCBib3R0b21dO1xuICAgKiBob3Jpem9udGFsOiBbbGVmdCwgY2VudGVyLCByaWdodF0uXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICB2ZXJ0aWNhbDogJ3RvcCcsXG4gICAqICAgaG9yaXpvbnRhbDogJ2xlZnQnLFxuICAgKiB9XG4gICAqL1xuICBhbmNob3JPcmlnaW46IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaG9yaXpvbnRhbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2xlZnQnLCAncmlnaHQnXSksIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkLFxuICAgIHZlcnRpY2FsOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydib3R0b20nLCAnY2VudGVyJywgJ3RvcCddKSwgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbiAgfSksXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBwb3NpdGlvbiB0aGF0IG1heSBiZSB1c2VkIHRvIHNldCB0aGUgcG9zaXRpb24gb2YgdGhlIHBvcG92ZXIuXG4gICAqIFRoZSBjb29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGFwcGxpY2F0aW9uJ3MgY2xpZW50IGFyZWEuXG4gICAqL1xuICBhbmNob3JQb3NpdGlvbjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBsZWZ0OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgdG9wOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbiAgfSksXG4gIC8qKlxuICAgKiBUaGlzIGRldGVybWluZXMgd2hpY2ggYW5jaG9yIHByb3AgdG8gcmVmZXIgdG8gd2hlbiBzZXR0aW5nXG4gICAqIHRoZSBwb3NpdGlvbiBvZiB0aGUgcG9wb3Zlci5cbiAgICogQGRlZmF1bHQgJ2FuY2hvckVsJ1xuICAgKi9cbiAgYW5jaG9yUmVmZXJlbmNlOiBQcm9wVHlwZXMub25lT2YoWydhbmNob3JFbCcsICdhbmNob3JQb3NpdGlvbicsICdub25lJ10pLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBBbiBIVE1MIGVsZW1lbnQsIGNvbXBvbmVudCBpbnN0YW5jZSwgb3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGVpdGhlci5cbiAgICogVGhlIGBjb250YWluZXJgIHdpbGwgcGFzc2VkIHRvIHRoZSBNb2RhbCBjb21wb25lbnQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGl0IHVzZXMgdGhlIGJvZHkgb2YgdGhlIGFuY2hvckVsJ3MgdG9wLWxldmVsIGRvY3VtZW50IG9iamVjdCxcbiAgICogc28gaXQncyBzaW1wbHkgYGRvY3VtZW50LmJvZHlgIG1vc3Qgb2YgdGhlIHRpbWUuXG4gICAqL1xuICBjb250YWluZXI6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbSFRNTEVsZW1lbnRUeXBlLCBQcm9wVHlwZXMuZnVuY10pLFxuICAvKipcbiAgICogVGhlIGVsZXZhdGlvbiBvZiB0aGUgcG9wb3Zlci5cbiAgICogQGRlZmF1bHQgOFxuICAgKi9cbiAgZWxldmF0aW9uOiBpbnRlZ2VyUHJvcFR5cGUsXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IGNsb3NlIHRvIHRoZSBlZGdlIG9mIHRoZSB3aW5kb3cgdGhlIHBvcG92ZXIgY2FuIGFwcGVhci5cbiAgICogQGRlZmF1bHQgMTZcbiAgICovXG4gIG1hcmdpblRocmVzaG9sZDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGNvbXBvbmVudCByZXF1ZXN0cyB0byBiZSBjbG9zZWQuXG4gICAqIFRoZSBgcmVhc29uYCBwYXJhbWV0ZXIgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCB0byBjb250cm9sIHRoZSByZXNwb25zZSB0byBgb25DbG9zZWAuXG4gICAqL1xuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBzaG93bi5cbiAgICovXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBbYFBhcGVyYF0oL21hdGVyaWFsLXVpL2FwaS9wYXBlci8pIGVsZW1lbnQuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgYHNsb3RQcm9wcy5wYXBlcmAgYW5kIHdpbGwgYmUgb3ZlcnJpZGVuIGJ5IGl0IGlmIGJvdGggYXJlIHVzZWQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgc2xvdFByb3BzLnBhcGVyYCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgUGFwZXJQcm9wczogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uc2hhcGUoe1xuICAgIGNvbXBvbmVudDogZWxlbWVudFR5cGVBY2NlcHRpbmdSZWZcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBwYXBlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgICByb290OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHBhcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgcm9vdDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhpcyBpcyB0aGUgcG9pbnQgb24gdGhlIHBvcG92ZXIgd2hpY2hcbiAgICogd2lsbCBhdHRhY2ggdG8gdGhlIGFuY2hvcidzIG9yaWdpbi5cbiAgICpcbiAgICogT3B0aW9uczpcbiAgICogdmVydGljYWw6IFt0b3AsIGNlbnRlciwgYm90dG9tLCB4KHB4KV07XG4gICAqIGhvcml6b250YWw6IFtsZWZ0LCBjZW50ZXIsIHJpZ2h0LCB4KHB4KV0uXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICB2ZXJ0aWNhbDogJ3RvcCcsXG4gICAqICAgaG9yaXpvbnRhbDogJ2xlZnQnLFxuICAgKiB9XG4gICAqL1xuICB0cmFuc2Zvcm1PcmlnaW46IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaG9yaXpvbnRhbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2xlZnQnLCAncmlnaHQnXSksIFByb3BUeXBlcy5udW1iZXJdKS5pc1JlcXVpcmVkLFxuICAgIHZlcnRpY2FsOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydib3R0b20nLCAnY2VudGVyJywgJ3RvcCddKSwgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSB0cmFuc2l0aW9uLlxuICAgKiBbRm9sbG93IHRoaXMgZ3VpZGVdKC9tYXRlcmlhbC11aS90cmFuc2l0aW9ucy8jdHJhbnNpdGlvbmNvbXBvbmVudC1wcm9wKSB0byBsZWFybiBtb3JlIGFib3V0IHRoZSByZXF1aXJlbWVudHMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCBHcm93XG4gICAqL1xuICBUcmFuc2l0aW9uQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBTZXQgdG8gJ2F1dG8nIHRvIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIHRyYW5zaXRpb24gdGltZSBiYXNlZCBvbiBoZWlnaHQuXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgdHJhbnNpdGlvbkR1cmF0aW9uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydhdXRvJ10pLCBQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFwcGVhcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBlbnRlcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBleGl0OiBQcm9wVHlwZXMubnVtYmVyXG4gIH0pXSksXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSB0cmFuc2l0aW9uIGVsZW1lbnQuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBlbGVtZW50IGlzIGJhc2VkIG9uIHRoaXMgW2BUcmFuc2l0aW9uYF0oaHR0cDovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL3RyYW5zaXRpb24vKSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBUcmFuc2l0aW9uUHJvcHM6IFByb3BUeXBlcy5vYmplY3Rcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBQb3BvdmVyOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRNZW51VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlNZW51Jywgc2xvdCk7XG59XG5jb25zdCBtZW51Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aU1lbnUnLCBbJ3Jvb3QnLCAncGFwZXInLCAnbGlzdCddKTtcbmV4cG9ydCBkZWZhdWx0IG1lbnVDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcIm9uRW50ZXJpbmdcIl0sXG4gIF9leGNsdWRlZDIgPSBbXCJhdXRvRm9jdXNcIiwgXCJjaGlsZHJlblwiLCBcImRpc2FibGVBdXRvRm9jdXNJdGVtXCIsIFwiTWVudUxpc3RQcm9wc1wiLCBcIm9uQ2xvc2VcIiwgXCJvcGVuXCIsIFwiUGFwZXJQcm9wc1wiLCBcIlBvcG92ZXJDbGFzc2VzXCIsIFwidHJhbnNpdGlvbkR1cmF0aW9uXCIsIFwiVHJhbnNpdGlvblByb3BzXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRnJhZ21lbnQgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBIVE1MRWxlbWVudFR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBNZW51TGlzdCBmcm9tICcuLi9NZW51TGlzdCc7XG5pbXBvcnQgUG9wb3ZlciwgeyBQb3BvdmVyUGFwZXIgfSBmcm9tICcuLi9Qb3BvdmVyJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCB7IGdldE1lbnVVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL21lbnVDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBSVExfT1JJR0lOID0ge1xuICB2ZXJ0aWNhbDogJ3RvcCcsXG4gIGhvcml6b250YWw6ICdyaWdodCdcbn07XG5jb25zdCBMVFJfT1JJR0lOID0ge1xuICB2ZXJ0aWNhbDogJ3RvcCcsXG4gIGhvcml6b250YWw6ICdsZWZ0J1xufTtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnXSxcbiAgICBwYXBlcjogWydwYXBlciddLFxuICAgIGxpc3Q6IFsnbGlzdCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0TWVudVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgTWVudVJvb3QgPSBzdHlsZWQoUG9wb3Zlciwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpTWVudScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMucm9vdFxufSkoe30pO1xuZXhwb3J0IGNvbnN0IE1lbnVQYXBlciA9IHN0eWxlZChQb3BvdmVyUGFwZXIsIHtcbiAgbmFtZTogJ011aU1lbnUnLFxuICBzbG90OiAnUGFwZXInLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5wYXBlclxufSkoe1xuICAvLyBzcGVjWjogVGhlIG1heGltdW0gaGVpZ2h0IG9mIGEgc2ltcGxlIG1lbnUgc2hvdWxkIGJlIG9uZSBvciBtb3JlIHJvd3MgbGVzcyB0aGFuIHRoZSB2aWV3XG4gIC8vIGhlaWdodC4gVGhpcyBlbnN1cmVzIGEgdGFwcGFibGUgYXJlYSBvdXRzaWRlIG9mIHRoZSBzaW1wbGUgbWVudSB3aXRoIHdoaWNoIHRvIGRpc21pc3NcbiAgLy8gdGhlIG1lbnUuXG4gIG1heEhlaWdodDogJ2NhbGMoMTAwJSAtIDk2cHgpJyxcbiAgLy8gQWRkIGlPUyBtb21lbnR1bSBzY3JvbGxpbmcgZm9yIGlPUyA8IDEzLjBcbiAgV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6ICd0b3VjaCdcbn0pO1xuY29uc3QgTWVudU1lbnVMaXN0ID0gc3R5bGVkKE1lbnVMaXN0LCB7XG4gIG5hbWU6ICdNdWlNZW51JyxcbiAgc2xvdDogJ0xpc3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5saXN0XG59KSh7XG4gIC8vIFdlIGRpc2FibGUgdGhlIGZvY3VzIHJpbmcgZm9yIG1vdXNlLCB0b3VjaCBhbmQga2V5Ym9hcmQgdXNlcnMuXG4gIG91dGxpbmU6IDBcbn0pO1xuY29uc3QgTWVudSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIE1lbnUoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aU1lbnUnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBhdXRvRm9jdXMgPSB0cnVlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBkaXNhYmxlQXV0b0ZvY3VzSXRlbSA9IGZhbHNlLFxuICAgICAgTWVudUxpc3RQcm9wcyA9IHt9LFxuICAgICAgb25DbG9zZSxcbiAgICAgIG9wZW4sXG4gICAgICBQYXBlclByb3BzID0ge30sXG4gICAgICBQb3BvdmVyQ2xhc3NlcyxcbiAgICAgIHRyYW5zaXRpb25EdXJhdGlvbiA9ICdhdXRvJyxcbiAgICAgIFRyYW5zaXRpb25Qcm9wczoge1xuICAgICAgICBvbkVudGVyaW5nXG4gICAgICB9ID0ge30sXG4gICAgICB2YXJpYW50ID0gJ3NlbGVjdGVkTWVudSdcbiAgICB9ID0gcHJvcHMsXG4gICAgVHJhbnNpdGlvblByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMuVHJhbnNpdGlvblByb3BzLCBfZXhjbHVkZWQpLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZDIpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzUnRsID0gdGhlbWUuZGlyZWN0aW9uID09PSAncnRsJztcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGF1dG9Gb2N1cyxcbiAgICBkaXNhYmxlQXV0b0ZvY3VzSXRlbSxcbiAgICBNZW51TGlzdFByb3BzLFxuICAgIG9uRW50ZXJpbmcsXG4gICAgUGFwZXJQcm9wcyxcbiAgICB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgVHJhbnNpdGlvblByb3BzLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgYXV0b0ZvY3VzSXRlbSA9IGF1dG9Gb2N1cyAmJiAhZGlzYWJsZUF1dG9Gb2N1c0l0ZW0gJiYgb3BlbjtcbiAgY29uc3QgbWVudUxpc3RBY3Rpb25zUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVFbnRlcmluZyA9IChlbGVtZW50LCBpc0FwcGVhcmluZykgPT4ge1xuICAgIGlmIChtZW51TGlzdEFjdGlvbnNSZWYuY3VycmVudCkge1xuICAgICAgbWVudUxpc3RBY3Rpb25zUmVmLmN1cnJlbnQuYWRqdXN0U3R5bGVGb3JTY3JvbGxiYXIoZWxlbWVudCwgdGhlbWUpO1xuICAgIH1cbiAgICBpZiAob25FbnRlcmluZykge1xuICAgICAgb25FbnRlcmluZyhlbGVtZW50LCBpc0FwcGVhcmluZyk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVMaXN0S2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChvbkNsb3NlKSB7XG4gICAgICAgIG9uQ2xvc2UoZXZlbnQsICd0YWJLZXlEb3duJyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiB0aGUgaW5kZXggb2YgdGhlIGl0ZW0gc2hvdWxkIHJlY2VpdmUgZm9jdXNcbiAgICogaW4gYSBgdmFyaWFudD1cInNlbGVjdGVkTWVudVwiYCBpdCdzIHRoZSBmaXJzdCBgc2VsZWN0ZWRgIGl0ZW1cbiAgICogb3RoZXJ3aXNlIGl0J3MgdGhlIHZlcnkgZmlyc3QgaXRlbS5cbiAgICovXG4gIGxldCBhY3RpdmVJdGVtSW5kZXggPSAtMTtcbiAgLy8gc2luY2Ugd2UgaW5qZWN0IGZvY3VzIHJlbGF0ZWQgcHJvcHMgaW50byBjaGlsZHJlbiB3ZSBoYXZlIHRvIGRvIGEgbG9va2FoZWFkXG4gIC8vIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGEgYHNlbGVjdGVkYCBpdGVtLiBXZSdyZSBsb29raW5nIGZvciB0aGUgbGFzdCBgc2VsZWN0ZWRgXG4gIC8vIGl0ZW0gYW5kIHVzZSB0aGUgZmlyc3QgdmFsaWQgaXRlbSBhcyBhIGZhbGxiYWNrXG4gIFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgKGNoaWxkLCBpbmRleCkgPT4ge1xuICAgIGlmICghIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpc0ZyYWdtZW50KGNoaWxkKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtcIk1VSTogVGhlIE1lbnUgY29tcG9uZW50IGRvZXNuJ3QgYWNjZXB0IGEgRnJhZ21lbnQgYXMgYSBjaGlsZC5cIiwgJ0NvbnNpZGVyIHByb3ZpZGluZyBhbiBhcnJheSBpbnN0ZWFkLiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFjaGlsZC5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHZhcmlhbnQgPT09ICdzZWxlY3RlZE1lbnUnICYmIGNoaWxkLnByb3BzLnNlbGVjdGVkKSB7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleCA9IGluZGV4O1xuICAgICAgfSBlbHNlIGlmIChhY3RpdmVJdGVtSW5kZXggPT09IC0xKSB7XG4gICAgICAgIGFjdGl2ZUl0ZW1JbmRleCA9IGluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChNZW51Um9vdCwgX2V4dGVuZHMoe1xuICAgIG9uQ2xvc2U6IG9uQ2xvc2UsXG4gICAgYW5jaG9yT3JpZ2luOiB7XG4gICAgICB2ZXJ0aWNhbDogJ2JvdHRvbScsXG4gICAgICBob3Jpem9udGFsOiBpc1J0bCA/ICdyaWdodCcgOiAnbGVmdCdcbiAgICB9LFxuICAgIHRyYW5zZm9ybU9yaWdpbjogaXNSdGwgPyBSVExfT1JJR0lOIDogTFRSX09SSUdJTixcbiAgICBzbG90czoge1xuICAgICAgcGFwZXI6IE1lbnVQYXBlclxuICAgIH0sXG4gICAgc2xvdFByb3BzOiB7XG4gICAgICBwYXBlcjogX2V4dGVuZHMoe30sIFBhcGVyUHJvcHMsIHtcbiAgICAgICAgY2xhc3NlczogX2V4dGVuZHMoe30sIFBhcGVyUHJvcHMuY2xhc3Nlcywge1xuICAgICAgICAgIHJvb3Q6IGNsYXNzZXMucGFwZXJcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSxcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMucm9vdCxcbiAgICBvcGVuOiBvcGVuLFxuICAgIHJlZjogcmVmLFxuICAgIHRyYW5zaXRpb25EdXJhdGlvbjogdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgIFRyYW5zaXRpb25Qcm9wczogX2V4dGVuZHMoe1xuICAgICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmdcbiAgICB9LCBUcmFuc2l0aW9uUHJvcHMpLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBQb3BvdmVyQ2xhc3NlcyxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goTWVudU1lbnVMaXN0LCBfZXh0ZW5kcyh7XG4gICAgICBvbktleURvd246IGhhbmRsZUxpc3RLZXlEb3duLFxuICAgICAgYWN0aW9uczogbWVudUxpc3RBY3Rpb25zUmVmLFxuICAgICAgYXV0b0ZvY3VzOiBhdXRvRm9jdXMgJiYgKGFjdGl2ZUl0ZW1JbmRleCA9PT0gLTEgfHwgZGlzYWJsZUF1dG9Gb2N1c0l0ZW0pLFxuICAgICAgYXV0b0ZvY3VzSXRlbTogYXV0b0ZvY3VzSXRlbSxcbiAgICAgIHZhcmlhbnQ6IHZhcmlhbnRcbiAgICB9LCBNZW51TGlzdFByb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5saXN0LCBNZW51TGlzdFByb3BzLmNsYXNzTmFtZSksXG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBNZW51LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEFuIEhUTUwgZWxlbWVudCwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lLlxuICAgKiBJdCdzIHVzZWQgdG8gc2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudS5cbiAgICovXG4gIGFuY2hvckVsOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoRGVmYXVsdCkgd2lsbCBmb2N1cyB0aGUgYFtyb2xlPVwibWVudVwiXWAgaWYgbm8gZm9jdXNhYmxlIGNoaWxkIGlzIGZvdW5kLiBEaXNhYmxlZFxuICAgKiBjaGlsZHJlbiBhcmUgbm90IGZvY3VzYWJsZS4gSWYgeW91IHNldCB0aGlzIHByb3AgdG8gYGZhbHNlYCBmb2N1cyB3aWxsIGJlIHBsYWNlZFxuICAgKiBvbiB0aGUgcGFyZW50IG1vZGFsIGNvbnRhaW5lci4gVGhpcyBoYXMgc2V2ZXJlIGFjY2Vzc2liaWxpdHkgaW1wbGljYXRpb25zXG4gICAqIGFuZCBzaG91bGQgb25seSBiZSBjb25zaWRlcmVkIGlmIHlvdSBtYW5hZ2UgZm9jdXMgb3RoZXJ3aXNlLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogTWVudSBjb250ZW50cywgbm9ybWFsbHkgYE1lbnVJdGVtYHMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogV2hlbiBvcGVuaW5nIHRoZSBtZW51IHdpbGwgbm90IGZvY3VzIHRoZSBhY3RpdmUgaXRlbSBidXQgdGhlIGBbcm9sZT1cIm1lbnVcIl1gXG4gICAqIHVubGVzcyBgYXV0b0ZvY3VzYCBpcyBhbHNvIHNldCB0byBgZmFsc2VgLiBOb3QgdXNpbmcgdGhlIGRlZmF1bHQgbWVhbnMgbm90XG4gICAqIGZvbGxvd2luZyBXQUktQVJJQSBhdXRob3JpbmcgcHJhY3RpY2VzLiBQbGVhc2UgYmUgY29uc2lkZXJhdGUgYWJvdXQgcG9zc2libGVcbiAgICogYWNjZXNzaWJpbGl0eSBpbXBsaWNhdGlvbnMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlQXV0b0ZvY3VzSXRlbTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBbYE1lbnVMaXN0YF0oL21hdGVyaWFsLXVpL2FwaS9tZW51LWxpc3QvKSBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgTWVudUxpc3RQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGNvbXBvbmVudCByZXF1ZXN0cyB0byBiZSBjbG9zZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlYXNvbiBDYW4gYmU6IGBcImVzY2FwZUtleURvd25cImAsIGBcImJhY2tkcm9wQ2xpY2tcImAsIGBcInRhYktleURvd25cImAuXG4gICAqL1xuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBzaG93bi5cbiAgICovXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBQYXBlclByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogYGNsYXNzZXNgIHByb3AgYXBwbGllZCB0byB0aGUgW2BQb3BvdmVyYF0oL21hdGVyaWFsLXVpL2FwaS9wb3BvdmVyLykgZWxlbWVudC5cbiAgICovXG4gIFBvcG92ZXJDbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIGxlbmd0aCBvZiB0aGUgdHJhbnNpdGlvbiBpbiBgbXNgLCBvciAnYXV0bydcbiAgICogQGRlZmF1bHQgJ2F1dG8nXG4gICAqL1xuICB0cmFuc2l0aW9uRHVyYXRpb246IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2F1dG8nXSksIFByb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYXBwZWFyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGVudGVyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5udW1iZXJcbiAgfSldKSxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIHRyYW5zaXRpb24gZWxlbWVudC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGVsZW1lbnQgaXMgYmFzZWQgb24gdGhpcyBbYFRyYW5zaXRpb25gXShodHRwOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvdHJhbnNpdGlvbi8pIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIFRyYW5zaXRpb25Qcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS4gVXNlIGBtZW51YCB0byBwcmV2ZW50IHNlbGVjdGVkIGl0ZW1zIGZyb20gaW1wYWN0aW5nIHRoZSBpbml0aWFsIGZvY3VzLlxuICAgKiBAZGVmYXVsdCAnc2VsZWN0ZWRNZW51J1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnbWVudScsICdzZWxlY3RlZE1lbnUnXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBNZW51OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdmdJY29uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlTdmdJY29uJywgc2xvdCk7XG59XG5jb25zdCBzdmdJY29uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVN2Z0ljb24nLCBbJ3Jvb3QnLCAnY29sb3JQcmltYXJ5JywgJ2NvbG9yU2Vjb25kYXJ5JywgJ2NvbG9yQWN0aW9uJywgJ2NvbG9yRXJyb3InLCAnY29sb3JEaXNhYmxlZCcsICdmb250U2l6ZUluaGVyaXQnLCAnZm9udFNpemVTbWFsbCcsICdmb250U2l6ZU1lZGl1bScsICdmb250U2l6ZUxhcmdlJ10pO1xuZXhwb3J0IGRlZmF1bHQgc3ZnSWNvbkNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb2xvclwiLCBcImNvbXBvbmVudFwiLCBcImZvbnRTaXplXCIsIFwiaHRtbENvbG9yXCIsIFwiaW5oZXJpdFZpZXdCb3hcIiwgXCJ0aXRsZUFjY2Vzc1wiLCBcInZpZXdCb3hcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRTdmdJY29uVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9zdmdJY29uQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbG9yLFxuICAgIGZvbnRTaXplLFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGNvbG9yICE9PSAnaW5oZXJpdCcgJiYgYGNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gLCBgZm9udFNpemUke2NhcGl0YWxpemUoZm9udFNpemUpfWBdXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgU3ZnSWNvblJvb3QgPSBzdHlsZWQoJ3N2ZycsIHtcbiAgbmFtZTogJ011aVN2Z0ljb24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF0sIHN0eWxlc1tgZm9udFNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5mb250U2l6ZSl9YF1dO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3RoZW1lJHRyYW5zaXRpb25zLCBfdGhlbWUkdHJhbnNpdGlvbnMkY3IsIF90aGVtZSR0cmFuc2l0aW9uczIsIF90aGVtZSR0eXBvZ3JhcGh5LCBfdGhlbWUkdHlwb2dyYXBoeSRweFQsIF90aGVtZSR0eXBvZ3JhcGh5MiwgX3RoZW1lJHR5cG9ncmFwaHkyJHB4LCBfdGhlbWUkdHlwb2dyYXBoeTMsIF90aGVtZSR0eXBvZ3JhcGh5MyRweCwgX3BhbGV0dGUkb3duZXJTdGF0ZSRjLCBfcGFsZXR0ZSwgX3BhbGV0dGUyLCBfcGFsZXR0ZTM7XG4gIHJldHVybiB7XG4gICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgIHdpZHRoOiAnMWVtJyxcbiAgICBoZWlnaHQ6ICcxZW0nLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIC8vIHRoZSA8c3ZnPiB3aWxsIGRlZmluZSB0aGUgcHJvcGVydHkgdGhhdCBoYXMgYGN1cnJlbnRDb2xvcmBcbiAgICAvLyBlLmcuIGhlcm9pY29ucyB1c2VzIGZpbGw9XCJub25lXCIgYW5kIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgZmlsbDogb3duZXJTdGF0ZS5oYXNTdmdBc0NoaWxkID8gdW5kZWZpbmVkIDogJ2N1cnJlbnRDb2xvcicsXG4gICAgZmxleFNocmluazogMCxcbiAgICB0cmFuc2l0aW9uOiAoX3RoZW1lJHRyYW5zaXRpb25zID0gdGhlbWUudHJhbnNpdGlvbnMpID09IG51bGwgfHwgKF90aGVtZSR0cmFuc2l0aW9ucyRjciA9IF90aGVtZSR0cmFuc2l0aW9ucy5jcmVhdGUpID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHJhbnNpdGlvbnMkY3IuY2FsbChfdGhlbWUkdHJhbnNpdGlvbnMsICdmaWxsJywge1xuICAgICAgZHVyYXRpb246IChfdGhlbWUkdHJhbnNpdGlvbnMyID0gdGhlbWUudHJhbnNpdGlvbnMpID09IG51bGwgfHwgKF90aGVtZSR0cmFuc2l0aW9uczIgPSBfdGhlbWUkdHJhbnNpdGlvbnMyLmR1cmF0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHRyYW5zaXRpb25zMi5zaG9ydGVyXG4gICAgfSksXG4gICAgZm9udFNpemU6IHtcbiAgICAgIGluaGVyaXQ6ICdpbmhlcml0JyxcbiAgICAgIHNtYWxsOiAoKF90aGVtZSR0eXBvZ3JhcGh5ID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkkcHhUID0gX3RoZW1lJHR5cG9ncmFwaHkucHhUb1JlbSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0eXBvZ3JhcGh5JHB4VC5jYWxsKF90aGVtZSR0eXBvZ3JhcGh5LCAyMCkpIHx8ICcxLjI1cmVtJyxcbiAgICAgIG1lZGl1bTogKChfdGhlbWUkdHlwb2dyYXBoeTIgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeTIkcHggPSBfdGhlbWUkdHlwb2dyYXBoeTIucHhUb1JlbSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0eXBvZ3JhcGh5MiRweC5jYWxsKF90aGVtZSR0eXBvZ3JhcGh5MiwgMjQpKSB8fCAnMS41cmVtJyxcbiAgICAgIGxhcmdlOiAoKF90aGVtZSR0eXBvZ3JhcGh5MyA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5MyRweCA9IF90aGVtZSR0eXBvZ3JhcGh5My5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkzJHB4LmNhbGwoX3RoZW1lJHR5cG9ncmFwaHkzLCAzNSkpIHx8ICcyLjE4NzVyZW0nXG4gICAgfVtvd25lclN0YXRlLmZvbnRTaXplXSxcbiAgICAvLyBUT0RPIHY1IGRlcHJlY2F0ZSwgdjYgcmVtb3ZlIGZvciBzeFxuICAgIGNvbG9yOiAoX3BhbGV0dGUkb3duZXJTdGF0ZSRjID0gKF9wYWxldHRlID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgfHwgKF9wYWxldHRlID0gX3BhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0pID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZS5tYWluKSAhPSBudWxsID8gX3BhbGV0dGUkb3duZXJTdGF0ZSRjIDoge1xuICAgICAgYWN0aW9uOiAoX3BhbGV0dGUyID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgfHwgKF9wYWxldHRlMiA9IF9wYWxldHRlMi5hY3Rpb24pID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZTIuYWN0aXZlLFxuICAgICAgZGlzYWJsZWQ6IChfcGFsZXR0ZTMgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUzID0gX3BhbGV0dGUzLmFjdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlMy5kaXNhYmxlZCxcbiAgICAgIGluaGVyaXQ6IHVuZGVmaW5lZFxuICAgIH1bb3duZXJTdGF0ZS5jb2xvcl1cbiAgfTtcbn0pO1xuY29uc3QgU3ZnSWNvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFN2Z0ljb24oaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVN2Z0ljb24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbG9yID0gJ2luaGVyaXQnLFxuICAgICAgY29tcG9uZW50ID0gJ3N2ZycsXG4gICAgICBmb250U2l6ZSA9ICdtZWRpdW0nLFxuICAgICAgaHRtbENvbG9yLFxuICAgICAgaW5oZXJpdFZpZXdCb3ggPSBmYWxzZSxcbiAgICAgIHRpdGxlQWNjZXNzLFxuICAgICAgdmlld0JveCA9ICcwIDAgMjQgMjQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGhhc1N2Z0FzQ2hpbGQgPSAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pICYmIGNoaWxkcmVuLnR5cGUgPT09ICdzdmcnO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgY29tcG9uZW50LFxuICAgIGZvbnRTaXplLFxuICAgIGluc3RhbmNlRm9udFNpemU6IGluUHJvcHMuZm9udFNpemUsXG4gICAgaW5oZXJpdFZpZXdCb3gsXG4gICAgdmlld0JveCxcbiAgICBoYXNTdmdBc0NoaWxkXG4gIH0pO1xuICBjb25zdCBtb3JlID0ge307XG4gIGlmICghaW5oZXJpdFZpZXdCb3gpIHtcbiAgICBtb3JlLnZpZXdCb3ggPSB2aWV3Qm94O1xuICB9XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhTdmdJY29uUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBjb21wb25lbnQsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBmb2N1c2FibGU6IFwiZmFsc2VcIixcbiAgICBjb2xvcjogaHRtbENvbG9yLFxuICAgIFwiYXJpYS1oaWRkZW5cIjogdGl0bGVBY2Nlc3MgPyB1bmRlZmluZWQgOiB0cnVlLFxuICAgIHJvbGU6IHRpdGxlQWNjZXNzID8gJ2ltZycgOiB1bmRlZmluZWQsXG4gICAgcmVmOiByZWZcbiAgfSwgbW9yZSwgb3RoZXIsIGhhc1N2Z0FzQ2hpbGQgJiYgY2hpbGRyZW4ucHJvcHMsIHtcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBbaGFzU3ZnQXNDaGlsZCA/IGNoaWxkcmVuLnByb3BzLmNoaWxkcmVuIDogY2hpbGRyZW4sIHRpdGxlQWNjZXNzID8gLyojX19QVVJFX18qL19qc3goXCJ0aXRsZVwiLCB7XG4gICAgICBjaGlsZHJlbjogdGl0bGVBY2Nlc3NcbiAgICB9KSA6IG51bGxdXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gU3ZnSWNvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBOb2RlIHBhc3NlZCBpbnRvIHRoZSBTVkcgZWxlbWVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogWW91IGNhbiB1c2UgdGhlIGBodG1sQ29sb3JgIHByb3AgdG8gYXBwbHkgYSBjb2xvciBhdHRyaWJ1dGUgdG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCAnaW5oZXJpdCdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAnYWN0aW9uJywgJ2Rpc2FibGVkJywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFRoZSBmb250U2l6ZSBhcHBsaWVkIHRvIHRoZSBpY29uLiBEZWZhdWx0cyB0byAyNHB4LCBidXQgY2FuIGJlIGNvbmZpZ3VyZSB0byBpbmhlcml0IGZvbnQgc2l6ZS5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIGZvbnRTaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAnbGFyZ2UnLCAnbWVkaXVtJywgJ3NtYWxsJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgY29sb3IgYXR0cmlidXRlIHRvIHRoZSBTVkcgZWxlbWVudC5cbiAgICovXG4gIGh0bWxDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJvb3Qgbm9kZSB3aWxsIGluaGVyaXQgdGhlIGN1c3RvbSBgY29tcG9uZW50YCdzIHZpZXdCb3ggYW5kIHRoZSBgdmlld0JveGBcbiAgICogcHJvcCB3aWxsIGJlIGlnbm9yZWQuXG4gICAqIFVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIHJlZmVyZW5jZSBhIGN1c3RvbSBgY29tcG9uZW50YCBhbmQgaGF2ZSBgU3ZnSWNvbmAgcGFzcyB0aGF0XG4gICAqIGBjb21wb25lbnRgJ3Mgdmlld0JveCB0byB0aGUgcm9vdCBub2RlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaW5oZXJpdFZpZXdCb3g6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHNoYXBlLXJlbmRlcmluZyBhdHRyaWJ1dGUuIFRoZSBiZWhhdmlvciBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgaXMgZGVzY3JpYmVkIG9uIHRoZVxuICAgKiBbTUROIFdlYiBEb2NzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9TVkcvQXR0cmlidXRlL3NoYXBlLXJlbmRlcmluZykuXG4gICAqIElmIHlvdSBhcmUgaGF2aW5nIGlzc3VlcyB3aXRoIGJsdXJyeSBpY29ucyB5b3Ugc2hvdWxkIGludmVzdGlnYXRlIHRoaXMgcHJvcC5cbiAgICovXG4gIHNoYXBlUmVuZGVyaW5nOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogUHJvdmlkZXMgYSBodW1hbi1yZWFkYWJsZSB0aXRsZSBmb3IgdGhlIGVsZW1lbnQgdGhhdCBjb250YWlucyBpdC5cbiAgICogaHR0cHM6Ly93d3cudzMub3JnL1RSL1NWRy1hY2Nlc3MvI0VxdWl2YWxlbnRcbiAgICovXG4gIHRpdGxlQWNjZXNzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQWxsb3dzIHlvdSB0byByZWRlZmluZSB3aGF0IHRoZSBjb29yZGluYXRlcyB3aXRob3V0IHVuaXRzIG1lYW4gaW5zaWRlIGFuIFNWRyBlbGVtZW50LlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIFNWRyBlbGVtZW50IGlzIDUwMCAod2lkdGgpIGJ5IDIwMCAoaGVpZ2h0KSxcbiAgICogYW5kIHlvdSBwYXNzIHZpZXdCb3g9XCIwIDAgNTAgMjBcIixcbiAgICogdGhpcyBtZWFucyB0aGF0IHRoZSBjb29yZGluYXRlcyBpbnNpZGUgdGhlIFNWRyB3aWxsIGdvIGZyb20gdGhlIHRvcCBsZWZ0IGNvcm5lciAoMCwwKVxuICAgKiB0byBib3R0b20gcmlnaHQgKDUwLDIwKSBhbmQgZWFjaCB1bml0IHdpbGwgYmUgd29ydGggMTBweC5cbiAgICogQGRlZmF1bHQgJzAgMCAyNCAyNCdcbiAgICovXG4gIHZpZXdCb3g6IFByb3BUeXBlcy5zdHJpbmdcbn0gOiB2b2lkIDA7XG5TdmdJY29uLm11aU5hbWUgPSAnU3ZnSWNvbic7XG5leHBvcnQgZGVmYXVsdCBTdmdJY29uOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgU3ZnSWNvbiBmcm9tICcuLi9TdmdJY29uJztcblxuLyoqXG4gKiBQcml2YXRlIG1vZHVsZSByZXNlcnZlZCBmb3IgQG11aSBwYWNrYWdlcy5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVN2Z0ljb24ocGF0aCwgZGlzcGxheU5hbWUpIHtcbiAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goU3ZnSWNvbiwgX2V4dGVuZHMoe1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBgJHtkaXNwbGF5TmFtZX1JY29uYCxcbiAgICAgIHJlZjogcmVmXG4gICAgfSwgcHJvcHMsIHtcbiAgICAgIGNoaWxkcmVuOiBwYXRoXG4gICAgfSkpO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gTmVlZCB0byBzZXQgYGRpc3BsYXlOYW1lYCBvbiB0aGUgaW5uZXIgY29tcG9uZW50IGZvciBSZWFjdC5tZW1vLlxuICAgIC8vIFJlYWN0IHByaW9yIHRvIDE2LjE0IGlnbm9yZXMgYGRpc3BsYXlOYW1lYCBvbiB0aGUgd3JhcHBlci5cbiAgICBDb21wb25lbnQuZGlzcGxheU5hbWUgPSBgJHtkaXNwbGF5TmFtZX1JY29uYDtcbiAgfVxuICBDb21wb25lbnQubXVpTmFtZSA9IFN2Z0ljb24ubXVpTmFtZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5tZW1vKCAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihDb21wb25lbnQpKTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9kZWJvdW5jZSBhcyBkZWJvdW5jZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZGVib3VuY2U7IiwiaW1wb3J0IHsgdW5zdGFibGVfaXNNdWlFbGVtZW50IGFzIGlzTXVpRWxlbWVudCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgaXNNdWlFbGVtZW50OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTXVpRWxlbWVudChlbGVtZW50LCBtdWlOYW1lcykge1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpICYmIG11aU5hbWVzLmluZGV4T2YoZWxlbWVudC50eXBlLm11aU5hbWUpICE9PSAtMTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9vd25lckRvY3VtZW50IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IG93bmVyRG9jdW1lbnQ7IiwiaW1wb3J0IHsgdW5zdGFibGVfb3duZXJXaW5kb3cgYXMgb3duZXJXaW5kb3cgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IG93bmVyV2luZG93OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgYXMgdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUVuaGFuY2VkRWZmZWN0OyIsIi8vIENvcnJlc3BvbmRzIHRvIDEwIGZyYW1lcyBhdCA2MCBIei5cbi8vIEEgZmV3IGJ5dGVzIHBheWxvYWQgb3ZlcmhlYWQgd2hlbiBsb2Rhc2gvZGVib3VuY2UgaXMgfjMga0IgYW5kIGRlYm91bmNlIH4zMDAgQi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQgPSAxNjYpIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIGZ1bmN0aW9uIGRlYm91bmNlZCguLi5hcmdzKSB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgfVxuICBkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9O1xuICByZXR1cm4gZGVib3VuY2VkO1xufSIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYj1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxjPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksZD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksZT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksZj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksZz1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksaD1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5zZXJ2ZXJfY29udGV4dFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxtPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxuPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLHA9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikscT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIiksdTt1PVN5bWJvbC5mb3IoXCJyZWFjdC5tb2R1bGUucmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gdihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgcj1hLiQkdHlwZW9mO3N3aXRjaChyKXtjYXNlIGI6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgZDpjYXNlIGY6Y2FzZSBlOmNhc2UgbTpjYXNlIG46cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIGg6Y2FzZSBsOmNhc2UgcTpjYXNlIHA6Y2FzZSBnOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHJ9fWNhc2UgYzpyZXR1cm4gcn19fWV4cG9ydHMuQ29udGV4dENvbnN1bWVyPWg7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9ZztleHBvcnRzLkVsZW1lbnQ9YjtleHBvcnRzLkZvcndhcmRSZWY9bDtleHBvcnRzLkZyYWdtZW50PWQ7ZXhwb3J0cy5MYXp5PXE7ZXhwb3J0cy5NZW1vPXA7ZXhwb3J0cy5Qb3J0YWw9YztleHBvcnRzLlByb2ZpbGVyPWY7ZXhwb3J0cy5TdHJpY3RNb2RlPWU7ZXhwb3J0cy5TdXNwZW5zZT1tO1xuZXhwb3J0cy5TdXNwZW5zZUxpc3Q9bjtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1mdW5jdGlvbigpe3JldHVybiExfTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09aH07ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWd9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1ifTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWx9O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWR9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09cX07ZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1wfTtcbmV4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1jfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1mfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWV9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW19O2V4cG9ydHMuaXNTdXNwZW5zZUxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ufTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1kfHxhPT09Znx8YT09PWV8fGE9PT1tfHxhPT09bnx8YT09PXR8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09cXx8YS4kJHR5cGVvZj09PXB8fGEuJCR0eXBlb2Y9PT1nfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWx8fGEuJCR0eXBlb2Y9PT11fHx2b2lkIDAhPT1hLmdldE1vZHVsZUlkKT8hMDohMX07ZXhwb3J0cy50eXBlT2Y9djtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIkdsb2JhbCIsInciLCJwcm9wcyIsImNhY2hlIiwic3R5bGVzIiwic2VyaWFsaXplZCIsInVuZGVmaW5lZCIsIlQiLCJpIiwiX3JlZiIsInNlcmlhbGl6ZWROYW1lcyIsIm5hbWUiLCJzZXJpYWxpemVkU3R5bGVzIiwibmV4dCIsInNob3VsZENhY2hlIiwiY29tcGF0IiwicnVsZXMiLCJpbnNlcnQiLCJzaGVldCIsImtleSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibm9uY2UiLCJzaGVldFJlZiIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwic3BlZWR5IiwiaXNTcGVlZHkiLCJyZWh5ZHJhdGluZyIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0YWdzIiwibGVuZ3RoIiwiYmVmb3JlIiwic2V0QXR0cmlidXRlIiwiaHlkcmF0ZSIsImN1cnJlbnQiLCJmbHVzaCIsInNoZWV0UmVmQ3VycmVudCIsImVsZW1lbnQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJjc3MiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImtleWZyYW1lcyIsImluc2VydGFibGUiLCJhcHBseSIsImFuaW0iLCJ0b1N0cmluZyIsInRoaXMiLCJmb3JtQ29udHJvbFN0YXRlIiwic3RhdGVzIiwibXVpRm9ybUNvbnRyb2wiLCJyZWR1Y2UiLCJhY2MiLCJzdGF0ZSIsInVzZUZvcm1Db250cm9sIiwiX2V4Y2x1ZGVkIiwiZ2V0U3R5bGVWYWx1ZSIsInZhbHVlIiwicGFyc2VJbnQiLCJ2aXNpYmlsaXR5IiwicG9zaXRpb24iLCJvdmVyZmxvdyIsImhlaWdodCIsInRvcCIsImxlZnQiLCJ0cmFuc2Zvcm0iLCJpc0VtcHR5Iiwib2JqIiwiT2JqZWN0Iiwia2V5cyIsIm91dGVySGVpZ2h0U3R5bGUiLCJmb3J3YXJkZWRSZWYiLCJvbkNoYW5nZSIsIm1heFJvd3MiLCJtaW5Sb3dzIiwic3R5bGUiLCJvdGhlciIsImlzQ29udHJvbGxlZCIsImlucHV0UmVmIiwiaGFuZGxlUmVmIiwidXNlRm9ya1JlZiIsInNoYWRvd1JlZiIsInJlbmRlcnMiLCJzZXRTdGF0ZSIsImdldFVwZGF0ZWRTdGF0ZSIsImlucHV0IiwiY29tcHV0ZWRTdHlsZSIsIm93bmVyV2luZG93IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsIndpZHRoIiwiaW5wdXRTaGFsbG93IiwicGxhY2Vob2xkZXIiLCJzbGljZSIsImJveFNpemluZyIsInBhZGRpbmciLCJwYWRkaW5nQm90dG9tIiwicGFkZGluZ1RvcCIsImJvcmRlciIsImJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyVG9wV2lkdGgiLCJpbm5lckhlaWdodCIsInNjcm9sbEhlaWdodCIsInNpbmdsZVJvd0hlaWdodCIsIm91dGVySGVpZ2h0IiwiTWF0aCIsIm1heCIsIk51bWJlciIsIm1pbiIsImFicyIsInVwZGF0ZVN0YXRlIiwicHJldlN0YXRlIiwibmV3U3RhdGUiLCJzeW5jSGVpZ2h0IiwiaGFuZGxlUmVzaXplIiwiZGVib3VuY2UiLCJzeW5jSGVpZ2h0V2l0aEZsdXNoU3luYyIsInJlc2l6ZU9ic2VydmVyIiwiY29udGFpbmVyV2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsIlJlc2l6ZU9ic2VydmVyIiwib2JzZXJ2ZSIsImNsZWFyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRpc2Nvbm5lY3QiLCJ1c2VFbmhhbmNlZEVmZmVjdCIsImNoaWxkcmVuIiwiZXZlbnQiLCJyZWYiLCJyb3dzIiwiY2xhc3NOYW1lIiwicmVhZE9ubHkiLCJ0YWJJbmRleCIsIkdsb2JhbFN0eWxlcyIsImRlZmF1bHRUaGVtZSIsImdsb2JhbFN0eWxlcyIsInRoZW1lSW5wdXQiLCJ0aGVtZUlkIiwidXBwZXJUaGVtZSIsInVzZVRoZW1lIiwicm9vdE92ZXJyaWRlc1Jlc29sdmVyIiwib3duZXJTdGF0ZSIsInJvb3QiLCJmb3JtQ29udHJvbCIsInN0YXJ0QWRvcm5tZW50IiwiYWRvcm5lZFN0YXJ0IiwiZW5kQWRvcm5tZW50IiwiYWRvcm5lZEVuZCIsImVycm9yIiwic2l6ZSIsInNpemVTbWFsbCIsIm11bHRpbGluZSIsImNvbG9yIiwiY2FwaXRhbGl6ZSIsImZ1bGxXaWR0aCIsImhpZGRlbkxhYmVsIiwiaW5wdXRPdmVycmlkZXNSZXNvbHZlciIsImlucHV0U2l6ZVNtYWxsIiwiaW5wdXRNdWx0aWxpbmUiLCJ0eXBlIiwiaW5wdXRUeXBlU2VhcmNoIiwiaW5wdXRBZG9ybmVkU3RhcnQiLCJpbnB1dEFkb3JuZWRFbmQiLCJpbnB1dEhpZGRlbkxhYmVsIiwiSW5wdXRCYXNlUm9vdCIsInN0eWxlZCIsInNsb3QiLCJvdmVycmlkZXNSZXNvbHZlciIsInRoZW1lIiwidHlwb2dyYXBoeSIsImJvZHkxIiwidmFycyIsInBhbGV0dGUiLCJ0ZXh0IiwicHJpbWFyeSIsImxpbmVIZWlnaHQiLCJjdXJzb3IiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImlucHV0QmFzZUNsYXNzZXMiLCJkaXNhYmxlZCIsIklucHV0QmFzZUNvbXBvbmVudCIsImxpZ2h0IiwibW9kZSIsIm9wYWNpdHkiLCJpbnB1dFBsYWNlaG9sZGVyIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiZHVyYXRpb24iLCJzaG9ydGVyIiwicGxhY2Vob2xkZXJIaWRkZW4iLCJwbGFjZWhvbGRlclZpc2libGUiLCJmb250IiwibGV0dGVyU3BhY2luZyIsImJhY2tncm91bmQiLCJtYXJnaW4iLCJXZWJraXRUYXBIaWdobGlnaHRDb2xvciIsIm1pbldpZHRoIiwiYW5pbWF0aW9uTmFtZSIsImFuaW1hdGlvbkR1cmF0aW9uIiwib3V0bGluZSIsImJveFNoYWRvdyIsIldlYmtpdEFwcGVhcmFuY2UiLCJXZWJraXRUZXh0RmlsbENvbG9yIiwicmVzaXplIiwiTW96QXBwZWFyYW5jZSIsImlucHV0R2xvYmFsU3R5bGVzIiwiZnJvbSIsImluUHJvcHMiLCJfc2xvdFByb3BzJGlucHV0IiwidXNlVGhlbWVQcm9wcyIsImFyaWFEZXNjcmliZWRieSIsImF1dG9Db21wbGV0ZSIsImF1dG9Gb2N1cyIsImNvbXBvbmVudHMiLCJjb21wb25lbnRzUHJvcHMiLCJkZWZhdWx0VmFsdWUiLCJkaXNhYmxlSW5qZWN0aW5nR2xvYmFsU3R5bGVzIiwiaWQiLCJpbnB1dENvbXBvbmVudCIsImlucHV0UHJvcHMiLCJpbnB1dFByb3BzUHJvcCIsImlucHV0UmVmUHJvcCIsIm9uQmx1ciIsIm9uQ2xpY2siLCJvbkZvY3VzIiwib25LZXlEb3duIiwib25LZXlVcCIsInJlbmRlclN1ZmZpeCIsInNsb3RQcm9wcyIsInNsb3RzIiwidmFsdWVQcm9wIiwiaGFuZGxlSW5wdXRSZWZXYXJuaW5nIiwiaW5zdGFuY2UiLCJoYW5kbGVJbnB1dFJlZiIsImZvY3VzZWQiLCJzZXRGb2N1c2VkIiwiZmNzIiwib25GaWxsZWQiLCJvbkVtcHR5IiwiY2hlY2tEaXJ0eSIsIklucHV0Q29tcG9uZW50Iiwic2V0QWRvcm5lZFN0YXJ0IiwiQm9vbGVhbiIsImNsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsImciLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsIlJvb3QiLCJyb290UHJvcHMiLCJJbnB1dCIsImlzSG9zdENvbXBvbmVudCIsImN1cnJlbnRUYXJnZXQiLCJ0YXJnZXQiLCJmb2N1cyIsIkZvcm1Db250cm9sQ29udGV4dCIsIlByb3ZpZGVyIiwib25BbmltYXRpb25TdGFydCIsInJlcXVpcmVkIiwiYXMiLCJFcnJvciIsInN0b3BQcm9wYWdhdGlvbiIsImdldElucHV0QmFzZVV0aWxpdHlDbGFzcyIsImhhc1ZhbHVlIiwiaXNBcnJheSIsImlzRmlsbGVkIiwiU1NSIiwiaXNBZG9ybmVkU3RhcnQiLCJnZXRMaXN0VXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiTGlzdFJvb3QiLCJkaXNhYmxlUGFkZGluZyIsImRlbnNlIiwic3ViaGVhZGVyIiwibGlzdFN0eWxlIiwiY29tcG9uZW50IiwiY29udGV4dCIsIkxpc3RDb250ZXh0IiwibmV4dEl0ZW0iLCJsaXN0IiwiaXRlbSIsImRpc2FibGVMaXN0V3JhcCIsImZpcnN0Q2hpbGQiLCJwcmV2aW91c0l0ZW0iLCJsYXN0Q2hpbGQiLCJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwidGV4dENyaXRlcmlhTWF0Y2hlcyIsIm5leHRGb2N1cyIsInRleHRDcml0ZXJpYSIsImlubmVyVGV4dCIsInRleHRDb250ZW50IiwidHJpbSIsInRvTG93ZXJDYXNlIiwicmVwZWF0aW5nIiwiaW5kZXhPZiIsImpvaW4iLCJtb3ZlRm9jdXMiLCJjdXJyZW50Rm9jdXMiLCJkaXNhYmxlZEl0ZW1zRm9jdXNhYmxlIiwidHJhdmVyc2FsRnVuY3Rpb24iLCJ3cmFwcGVkT25jZSIsIm5leHRGb2N1c0Rpc2FibGVkIiwiZ2V0QXR0cmlidXRlIiwiaGFzQXR0cmlidXRlIiwiYWN0aW9ucyIsImF1dG9Gb2N1c0l0ZW0iLCJ2YXJpYW50IiwibGlzdFJlZiIsInRleHRDcml0ZXJpYVJlZiIsInByZXZpb3VzS2V5TWF0Y2hlZCIsImxhc3RUaW1lIiwiYWRqdXN0U3R5bGVGb3JTY3JvbGxiYXIiLCJjb250YWluZXJFbGVtZW50Iiwibm9FeHBsaWNpdFdpZHRoIiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsYmFyU2l6ZSIsIm93bmVyRG9jdW1lbnQiLCJkaXJlY3Rpb24iLCJhY3RpdmVJdGVtSW5kZXgiLCJmb3JFYWNoIiwiY2hpbGQiLCJpbmRleCIsInNlbGVjdGVkIiwibXVpU2tpcExpc3RIaWdobGlnaHQiLCJpdGVtcyIsIm1hcCIsIm5ld0NoaWxkUHJvcHMiLCJMaXN0Iiwicm9sZSIsImFjdGl2ZUVsZW1lbnQiLCJwcmV2ZW50RGVmYXVsdCIsImNyaXRlcmlhIiwibG93ZXJLZXkiLCJjdXJyVGltZSIsInBlcmZvcm1hbmNlIiwibm93IiwicHVzaCIsImtlZXBGb2N1c09uQ3VycmVudCIsImdldFBvcG92ZXJVdGlsaXR5Q2xhc3MiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsImdldE9mZnNldFRvcCIsInJlY3QiLCJ2ZXJ0aWNhbCIsIm9mZnNldCIsImdldE9mZnNldExlZnQiLCJob3Jpem9udGFsIiwiZ2V0VHJhbnNmb3JtT3JpZ2luVmFsdWUiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJuIiwicmVzb2x2ZUFuY2hvckVsIiwiYW5jaG9yRWwiLCJQb3BvdmVyUm9vdCIsIk1vZGFsIiwiUG9wb3ZlclBhcGVyIiwiUGFwZXIiLCJwYXBlciIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsIm1pbkhlaWdodCIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwiX3Nsb3RQcm9wcyRwYXBlciIsIl9zbG90cyRyb290IiwiX3Nsb3RzJHBhcGVyIiwiYWN0aW9uIiwiYW5jaG9yT3JpZ2luIiwiYW5jaG9yUG9zaXRpb24iLCJhbmNob3JSZWZlcmVuY2UiLCJjb250YWluZXJQcm9wIiwiZWxldmF0aW9uIiwibWFyZ2luVGhyZXNob2xkIiwib3BlbiIsIlBhcGVyUHJvcHMiLCJQYXBlclByb3BzUHJvcCIsIlRyYW5zaXRpb25Db21wb25lbnQiLCJHcm93IiwidHJhbnNpdGlvbkR1cmF0aW9uIiwidHJhbnNpdGlvbkR1cmF0aW9uUHJvcCIsIlRyYW5zaXRpb25Qcm9wcyIsIm9uRW50ZXJpbmciLCJleHRlcm5hbFBhcGVyU2xvdFByb3BzIiwicGFwZXJSZWYiLCJoYW5kbGVQYXBlclJlZiIsImdldEFuY2hvck9mZnNldCIsInJlc29sdmVkQW5jaG9yRWwiLCJhbmNob3JSZWN0Iiwibm9kZVR5cGUiLCJib2R5IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiZ2V0VHJhbnNmb3JtT3JpZ2luIiwiZWxlbVJlY3QiLCJnZXRQb3NpdGlvbmluZ1N0eWxlIiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJlbGVtVHJhbnNmb3JtT3JpZ2luIiwiYW5jaG9yT2Zmc2V0IiwiYm90dG9tIiwicmlnaHQiLCJoZWlnaHRUaHJlc2hvbGQiLCJ3aWR0aFRocmVzaG9sZCIsImlubmVyV2lkdGgiLCJkaWZmIiwicm91bmQiLCJpc1Bvc2l0aW9uZWQiLCJzZXRJc1Bvc2l0aW9uZWQiLCJzZXRQb3NpdGlvbmluZ1N0eWxlcyIsInBvc2l0aW9uaW5nIiwidXBkYXRlUG9zaXRpb24iLCJtdWlTdXBwb3J0QXV0byIsIlJvb3RTbG90IiwiUGFwZXJTbG90IiwicGFwZXJQcm9wcyIsInVzZVNsb3RQcm9wcyIsImVsZW1lbnRUeXBlIiwiZXh0ZXJuYWxTbG90UHJvcHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJfdXNlU2xvdFByb3BzIiwiZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcyIsImJhY2tkcm9wIiwiaW52aXNpYmxlIiwicm9vdFNsb3RQcm9wc1Byb3AiLCJhcHBlYXIiLCJpbiIsImlzQXBwZWFyaW5nIiwib25FeGl0ZWQiLCJ0aW1lb3V0IiwiZ2V0TWVudVV0aWxpdHlDbGFzcyIsIlJUTF9PUklHSU4iLCJMVFJfT1JJR0lOIiwiTWVudVJvb3QiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJNZW51UGFwZXIiLCJXZWJraXRPdmVyZmxvd1Njcm9sbGluZyIsIk1lbnVNZW51TGlzdCIsImRpc2FibGVBdXRvRm9jdXNJdGVtIiwiTWVudUxpc3RQcm9wcyIsIm9uQ2xvc2UiLCJQb3BvdmVyQ2xhc3NlcyIsImlzUnRsIiwibWVudUxpc3RBY3Rpb25zUmVmIiwiZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyIsIlN2Z0ljb25Sb290IiwiZm9udFNpemUiLCJfdGhlbWUkdHJhbnNpdGlvbnMiLCJfdGhlbWUkdHJhbnNpdGlvbnMkY3IiLCJfdGhlbWUkdHJhbnNpdGlvbnMyIiwiX3RoZW1lJHR5cG9ncmFwaHkiLCJfdGhlbWUkdHlwb2dyYXBoeSRweFQiLCJfdGhlbWUkdHlwb2dyYXBoeTIiLCJfdGhlbWUkdHlwb2dyYXBoeTIkcHgiLCJfdGhlbWUkdHlwb2dyYXBoeTMiLCJfdGhlbWUkdHlwb2dyYXBoeTMkcHgiLCJfcGFsZXR0ZSRvd25lclN0YXRlJGMiLCJfcGFsZXR0ZSIsIl9wYWxldHRlMiIsIl9wYWxldHRlMyIsInVzZXJTZWxlY3QiLCJmaWxsIiwiaGFzU3ZnQXNDaGlsZCIsImZsZXhTaHJpbmsiLCJjYWxsIiwiaW5oZXJpdCIsInNtYWxsIiwicHhUb1JlbSIsIm1lZGl1bSIsImxhcmdlIiwibWFpbiIsImFjdGl2ZSIsIlN2Z0ljb24iLCJodG1sQ29sb3IiLCJpbmhlcml0Vmlld0JveCIsInRpdGxlQWNjZXNzIiwidmlld0JveCIsImluc3RhbmNlRm9udFNpemUiLCJtb3JlIiwiZm9jdXNhYmxlIiwibXVpTmFtZSIsImNyZWF0ZVN2Z0ljb24iLCJwYXRoIiwiZGlzcGxheU5hbWUiLCJDb21wb25lbnQiLCJtdWlOYW1lcyIsImZ1bmMiLCJ3YWl0IiwiZGVib3VuY2VkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsIlN5bWJvbCIsImZvciJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5342.dce1814e.js.LICENSE.txt b/react_frontend/static/react_frontend/js/5342.dce1814e.js.LICENSE.txt new file mode 100644 index 000000000..53dcf70ce --- /dev/null +++ b/react_frontend/static/react_frontend/js/5342.dce1814e.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5418.63ba6f04.js b/react_frontend/static/react_frontend/js/5418.63ba6f04.js new file mode 100644 index 000000000..2c4e7a0c1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5418.63ba6f04.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5418],{4675:(t,n,e)=>{e.d(n,{A:()=>r}),e(6540);var i=e(2858),o=e(2765),s=e(8312);function r(){const t=(0,i.A)(o.A);return t[s.A]||t}},5186:(t,n,e)=>{e.d(n,{c:()=>o,q:()=>i});const i=t=>t.scrollTop;function o(t,n){var e,i;const{timeout:o,easing:s,style:r={}}=t;return{duration:null!=(e=r.transitionDuration)?e:"number"==typeof o?o:o[n.mode]||0,easing:null!=(i=r.transitionTimingFunction)?i:"object"==typeof s?s[n.mode]:s,delay:r.transitionDelay}}},7353:(t,n,e)=>{e.d(n,{Ay:()=>E});var i=e(8587),o=e(5540),s=e(6540),r=e(961);var a=e(7241),u="unmounted",p="exited",l="entering",c="entered",d="exiting",f=function(t){function n(n,e){var i;i=t.call(this,n,e)||this;var o,s=e&&!e.isMounting?n.enter:n.appear;return i.appearStatus=null,n.in?s?(o=p,i.appearStatus=l):o=c:o=n.unmountOnExit||n.mountOnEnter?u:p,i.state={status:o},i.nextCallback=null,i}(0,o.A)(n,t),n.getDerivedStateFromProps=function(t,n){return t.in&&n.status===u?{status:p}:null};var e=n.prototype;return e.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},e.componentDidUpdate=function(t){var n=null;if(t!==this.props){var e=this.state.status;this.props.in?e!==l&&e!==c&&(n=l):e!==l&&e!==c||(n=d)}this.updateStatus(!1,n)},e.componentWillUnmount=function(){this.cancelNextCallback()},e.getTimeouts=function(){var t,n,e,i=this.props.timeout;return t=n=e=i,null!=i&&"number"!=typeof i&&(t=i.exit,n=i.enter,e=void 0!==i.appear?i.appear:n),{exit:t,enter:n,appear:e}},e.updateStatus=function(t,n){if(void 0===t&&(t=!1),null!==n)if(this.cancelNextCallback(),n===l){if(this.props.unmountOnExit||this.props.mountOnEnter){var e=this.props.nodeRef?this.props.nodeRef.current:r.findDOMNode(this);e&&function(t){t.scrollTop}(e)}this.performEnter(t)}else this.performExit();else this.props.unmountOnExit&&this.state.status===p&&this.setState({status:u})},e.performEnter=function(t){var n=this,e=this.props.enter,i=this.context?this.context.isMounting:t,o=this.props.nodeRef?[i]:[r.findDOMNode(this),i],s=o[0],a=o[1],u=this.getTimeouts(),p=i?u.appear:u.enter;t||e?(this.props.onEnter(s,a),this.safeSetState({status:l},(function(){n.props.onEntering(s,a),n.onTransitionEnd(p,(function(){n.safeSetState({status:c},(function(){n.props.onEntered(s,a)}))}))}))):this.safeSetState({status:c},(function(){n.props.onEntered(s)}))},e.performExit=function(){var t=this,n=this.props.exit,e=this.getTimeouts(),i=this.props.nodeRef?void 0:r.findDOMNode(this);n?(this.props.onExit(i),this.safeSetState({status:d},(function(){t.props.onExiting(i),t.onTransitionEnd(e.exit,(function(){t.safeSetState({status:p},(function(){t.props.onExited(i)}))}))}))):this.safeSetState({status:p},(function(){t.props.onExited(i)}))},e.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},e.safeSetState=function(t,n){n=this.setNextCallback(n),this.setState(t,n)},e.setNextCallback=function(t){var n=this,e=!0;return this.nextCallback=function(i){e&&(e=!1,n.nextCallback=null,t(i))},this.nextCallback.cancel=function(){e=!1},this.nextCallback},e.onTransitionEnd=function(t,n){this.setNextCallback(n);var e=this.props.nodeRef?this.props.nodeRef.current:r.findDOMNode(this),i=null==t&&!this.props.addEndListener;if(e&&!i){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[e,this.nextCallback],s=o[0],a=o[1];this.props.addEndListener(s,a)}null!=t&&setTimeout(this.nextCallback,t)}else setTimeout(this.nextCallback,0)},e.render=function(){var t=this.state.status;if(t===u)return null;var n=this.props,e=n.children,o=(n.in,n.mountOnEnter,n.unmountOnExit,n.appear,n.enter,n.exit,n.timeout,n.addEndListener,n.onEnter,n.onEntering,n.onEntered,n.onExit,n.onExiting,n.onExited,n.nodeRef,(0,i.A)(n,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return s.createElement(a.A.Provider,{value:null},"function"==typeof e?e(t,o):s.cloneElement(s.Children.only(e),o))},n}(s.Component);function h(){}f.contextType=a.A,f.propTypes={},f.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:h,onEntering:h,onEntered:h,onExit:h,onExiting:h,onExited:h},f.UNMOUNTED=u,f.EXITED=p,f.ENTERING=l,f.ENTERED=c,f.EXITING=d;const E=f}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FrVDVCLGFBK0xGLFNBQVM0RSxJQUFRLENBN0xqQjVFLEVBQVc2RSxZQUFjTCxFQUFBLEVBQ3pCeEUsRUFBVzhFLFVBMExQLENBQUMsRUFJTDlFLEVBQVcrRSxhQUFlLENBQ3hCcEUsSUFBSSxFQUNKRSxjQUFjLEVBQ2RELGVBQWUsRUFDZkwsUUFBUSxFQUNSRSxPQUFPLEVBQ1BxQixNQUFNLEVBQ05nQixRQUFTOEIsRUFDVDVCLFdBQVk0QixFQUNaMUIsVUFBVzBCLEVBQ1h4QixPQUFRd0IsRUFDUnZCLFVBQVd1QixFQUNYdEIsU0FBVXNCLEdBRVo1RSxFQUFXTCxVQUFZQSxFQUN2QkssRUFBV0osT0FBU0EsRUFDcEJJLEVBQVdILFNBQVdBLEVBQ3RCRyxFQUFXRixRQUFVQSxFQUNyQkUsRUFBV0QsUUFBVUEsRUFDckIsUyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL3VzZVRoZW1lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdHJhbnNpdGlvbnMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS91dGlscy9yZWZsb3cuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSBhcyB1c2VUaGVtZVN5c3RlbSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBkZWZhdWx0VGhlbWUgZnJvbSAnLi9kZWZhdWx0VGhlbWUnO1xuaW1wb3J0IFRIRU1FX0lEIGZyb20gJy4vaWRlbnRpZmllcic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZVN5c3RlbShkZWZhdWx0VGhlbWUpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIFJlYWN0LnVzZURlYnVnVmFsdWUodGhlbWUpO1xuICB9XG4gIHJldHVybiB0aGVtZVtUSEVNRV9JRF0gfHwgdGhlbWU7XG59IiwiZXhwb3J0IGNvbnN0IHJlZmxvdyA9IG5vZGUgPT4gbm9kZS5zY3JvbGxUb3A7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNpdGlvblByb3BzKHByb3BzLCBvcHRpb25zKSB7XG4gIHZhciBfc3R5bGUkdHJhbnNpdGlvbkR1cmEsIF9zdHlsZSR0cmFuc2l0aW9uVGltaTtcbiAgY29uc3Qge1xuICAgIHRpbWVvdXQsXG4gICAgZWFzaW5nLFxuICAgIHN0eWxlID0ge31cbiAgfSA9IHByb3BzO1xuICByZXR1cm4ge1xuICAgIGR1cmF0aW9uOiAoX3N0eWxlJHRyYW5zaXRpb25EdXJhID0gc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uKSAhPSBudWxsID8gX3N0eWxlJHRyYW5zaXRpb25EdXJhIDogdHlwZW9mIHRpbWVvdXQgPT09ICdudW1iZXInID8gdGltZW91dCA6IHRpbWVvdXRbb3B0aW9ucy5tb2RlXSB8fCAwLFxuICAgIGVhc2luZzogKF9zdHlsZSR0cmFuc2l0aW9uVGltaSA9IHN0eWxlLnRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbikgIT0gbnVsbCA/IF9zdHlsZSR0cmFuc2l0aW9uVGltaSA6IHR5cGVvZiBlYXNpbmcgPT09ICdvYmplY3QnID8gZWFzaW5nW29wdGlvbnMubW9kZV0gOiBlYXNpbmcsXG4gICAgZGVsYXk6IHN0eWxlLnRyYW5zaXRpb25EZWxheVxuICB9O1xufSIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9pbmhlcml0c0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyB0aW1lb3V0c1NoYXBlIH0gZnJvbSAnLi91dGlscy9Qcm9wVHlwZXMnO1xuaW1wb3J0IFRyYW5zaXRpb25Hcm91cENvbnRleHQgZnJvbSAnLi9UcmFuc2l0aW9uR3JvdXBDb250ZXh0JztcbmltcG9ydCB7IGZvcmNlUmVmbG93IH0gZnJvbSAnLi91dGlscy9yZWZsb3cnO1xuZXhwb3J0IHZhciBVTk1PVU5URUQgPSAndW5tb3VudGVkJztcbmV4cG9ydCB2YXIgRVhJVEVEID0gJ2V4aXRlZCc7XG5leHBvcnQgdmFyIEVOVEVSSU5HID0gJ2VudGVyaW5nJztcbmV4cG9ydCB2YXIgRU5URVJFRCA9ICdlbnRlcmVkJztcbmV4cG9ydCB2YXIgRVhJVElORyA9ICdleGl0aW5nJztcbi8qKlxuICogVGhlIFRyYW5zaXRpb24gY29tcG9uZW50IGxldHMgeW91IGRlc2NyaWJlIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBjb21wb25lbnRcbiAqIHN0YXRlIHRvIGFub3RoZXIgX292ZXIgdGltZV8gd2l0aCBhIHNpbXBsZSBkZWNsYXJhdGl2ZSBBUEkuIE1vc3QgY29tbW9ubHlcbiAqIGl0J3MgdXNlZCB0byBhbmltYXRlIHRoZSBtb3VudGluZyBhbmQgdW5tb3VudGluZyBvZiBhIGNvbXBvbmVudCwgYnV0IGNhbiBhbHNvXG4gKiBiZSB1c2VkIHRvIGRlc2NyaWJlIGluLXBsYWNlIHRyYW5zaXRpb24gc3RhdGVzIGFzIHdlbGwuXG4gKlxuICogLS0tXG4gKlxuICogKipOb3RlKio6IGBUcmFuc2l0aW9uYCBpcyBhIHBsYXRmb3JtLWFnbm9zdGljIGJhc2UgY29tcG9uZW50LiBJZiB5b3UncmUgdXNpbmdcbiAqIHRyYW5zaXRpb25zIGluIENTUywgeW91J2xsIHByb2JhYmx5IHdhbnQgdG8gdXNlXG4gKiBbYENTU1RyYW5zaXRpb25gXShodHRwczovL3JlYWN0Y29tbXVuaXR5Lm9yZy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2Nzcy10cmFuc2l0aW9uKVxuICogaW5zdGVhZC4gSXQgaW5oZXJpdHMgYWxsIHRoZSBmZWF0dXJlcyBvZiBgVHJhbnNpdGlvbmAsIGJ1dCBjb250YWluc1xuICogYWRkaXRpb25hbCBmZWF0dXJlcyBuZWNlc3NhcnkgdG8gcGxheSBuaWNlIHdpdGggQ1NTIHRyYW5zaXRpb25zIChoZW5jZSB0aGVcbiAqIG5hbWUgb2YgdGhlIGNvbXBvbmVudCkuXG4gKlxuICogLS0tXG4gKlxuICogQnkgZGVmYXVsdCB0aGUgYFRyYW5zaXRpb25gIGNvbXBvbmVudCBkb2VzIG5vdCBhbHRlciB0aGUgYmVoYXZpb3Igb2YgdGhlXG4gKiBjb21wb25lbnQgaXQgcmVuZGVycywgaXQgb25seSB0cmFja3MgXCJlbnRlclwiIGFuZCBcImV4aXRcIiBzdGF0ZXMgZm9yIHRoZVxuICogY29tcG9uZW50cy4gSXQncyB1cCB0byB5b3UgdG8gZ2l2ZSBtZWFuaW5nIGFuZCBlZmZlY3QgdG8gdGhvc2Ugc3RhdGVzLiBGb3JcbiAqIGV4YW1wbGUgd2UgY2FuIGFkZCBzdHlsZXMgdG8gYSBjb21wb25lbnQgd2hlbiBpdCBlbnRlcnMgb3IgZXhpdHM6XG4gKlxuICogYGBganN4XG4gKiBpbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG4gKlxuICogY29uc3QgZHVyYXRpb24gPSAzMDA7XG4gKlxuICogY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICogICB0cmFuc2l0aW9uOiBgb3BhY2l0eSAke2R1cmF0aW9ufW1zIGVhc2UtaW4tb3V0YCxcbiAqICAgb3BhY2l0eTogMCxcbiAqIH1cbiAqXG4gKiBjb25zdCB0cmFuc2l0aW9uU3R5bGVzID0ge1xuICogICBlbnRlcmluZzogeyBvcGFjaXR5OiAxIH0sXG4gKiAgIGVudGVyZWQ6ICB7IG9wYWNpdHk6IDEgfSxcbiAqICAgZXhpdGluZzogIHsgb3BhY2l0eTogMCB9LFxuICogICBleGl0ZWQ6ICB7IG9wYWNpdHk6IDAgfSxcbiAqIH07XG4gKlxuICogY29uc3QgRmFkZSA9ICh7IGluOiBpblByb3AgfSkgPT4gKFxuICogICA8VHJhbnNpdGlvbiBpbj17aW5Qcm9wfSB0aW1lb3V0PXtkdXJhdGlvbn0+XG4gKiAgICAge3N0YXRlID0+IChcbiAqICAgICAgIDxkaXYgc3R5bGU9e3tcbiAqICAgICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICogICAgICAgICAuLi50cmFuc2l0aW9uU3R5bGVzW3N0YXRlXVxuICogICAgICAgfX0+XG4gKiAgICAgICAgIEknbSBhIGZhZGUgVHJhbnNpdGlvbiFcbiAqICAgICAgIDwvZGl2PlxuICogICAgICl9XG4gKiAgIDwvVHJhbnNpdGlvbj5cbiAqICk7XG4gKiBgYGBcbiAqXG4gKiBUaGVyZSBhcmUgNCBtYWluIHN0YXRlcyBhIFRyYW5zaXRpb24gY2FuIGJlIGluOlxuICogIC0gYCdlbnRlcmluZydgXG4gKiAgLSBgJ2VudGVyZWQnYFxuICogIC0gYCdleGl0aW5nJ2BcbiAqICAtIGAnZXhpdGVkJ2BcbiAqXG4gKiBUcmFuc2l0aW9uIHN0YXRlIGlzIHRvZ2dsZWQgdmlhIHRoZSBgaW5gIHByb3AuIFdoZW4gYHRydWVgIHRoZSBjb21wb25lbnRcbiAqIGJlZ2lucyB0aGUgXCJFbnRlclwiIHN0YWdlLiBEdXJpbmcgdGhpcyBzdGFnZSwgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IGZyb21cbiAqIGl0cyBjdXJyZW50IHRyYW5zaXRpb24gc3RhdGUsIHRvIGAnZW50ZXJpbmcnYCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZVxuICogdHJhbnNpdGlvbiBhbmQgdGhlbiB0byB0aGUgYCdlbnRlcmVkJ2Agc3RhZ2Ugb25jZSBpdCdzIGNvbXBsZXRlLiBMZXQncyB0YWtlXG4gKiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgKHdlJ2xsIHVzZSB0aGVcbiAqIFt1c2VTdGF0ZV0oaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL2hvb2tzLXJlZmVyZW5jZS5odG1sI3VzZXN0YXRlKSBob29rKTpcbiAqXG4gKiBgYGBqc3hcbiAqIGZ1bmN0aW9uIEFwcCgpIHtcbiAqICAgY29uc3QgW2luUHJvcCwgc2V0SW5Qcm9wXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAqICAgcmV0dXJuIChcbiAqICAgICA8ZGl2PlxuICogICAgICAgPFRyYW5zaXRpb24gaW49e2luUHJvcH0gdGltZW91dD17NTAwfT5cbiAqICAgICAgICAge3N0YXRlID0+IChcbiAqICAgICAgICAgICAvLyAuLi5cbiAqICAgICAgICAgKX1cbiAqICAgICAgIDwvVHJhbnNpdGlvbj5cbiAqICAgICAgIDxidXR0b24gb25DbGljaz17KCkgPT4gc2V0SW5Qcm9wKHRydWUpfT5cbiAqICAgICAgICAgQ2xpY2sgdG8gRW50ZXJcbiAqICAgICAgIDwvYnV0dG9uPlxuICogICAgIDwvZGl2PlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogV2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgdGhlIGNvbXBvbmVudCB3aWxsIHNoaWZ0IHRvIHRoZSBgJ2VudGVyaW5nJ2Agc3RhdGVcbiAqIGFuZCBzdGF5IHRoZXJlIGZvciA1MDBtcyAodGhlIHZhbHVlIG9mIGB0aW1lb3V0YCkgYmVmb3JlIGl0IGZpbmFsbHkgc3dpdGNoZXNcbiAqIHRvIGAnZW50ZXJlZCdgLlxuICpcbiAqIFdoZW4gYGluYCBpcyBgZmFsc2VgIHRoZSBzYW1lIHRoaW5nIGhhcHBlbnMgZXhjZXB0IHRoZSBzdGF0ZSBtb3ZlcyBmcm9tXG4gKiBgJ2V4aXRpbmcnYCB0byBgJ2V4aXRlZCdgLlxuICovXG5cbnZhciBUcmFuc2l0aW9uID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFRyYW5zaXRpb24sIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb24ocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9SZWFjdCRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICB2YXIgcGFyZW50R3JvdXAgPSBjb250ZXh0OyAvLyBJbiB0aGUgY29udGV4dCBvZiBhIFRyYW5zaXRpb25Hcm91cCBhbGwgZW50ZXJzIGFyZSByZWFsbHkgYXBwZWFyc1xuXG4gICAgdmFyIGFwcGVhciA9IHBhcmVudEdyb3VwICYmICFwYXJlbnRHcm91cC5pc01vdW50aW5nID8gcHJvcHMuZW50ZXIgOiBwcm9wcy5hcHBlYXI7XG4gICAgdmFyIGluaXRpYWxTdGF0dXM7XG4gICAgX3RoaXMuYXBwZWFyU3RhdHVzID0gbnVsbDtcblxuICAgIGlmIChwcm9wcy5pbikge1xuICAgICAgaWYgKGFwcGVhcikge1xuICAgICAgICBpbml0aWFsU3RhdHVzID0gRVhJVEVEO1xuICAgICAgICBfdGhpcy5hcHBlYXJTdGF0dXMgPSBFTlRFUklORztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFTlRFUkVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvcHMudW5tb3VudE9uRXhpdCB8fCBwcm9wcy5tb3VudE9uRW50ZXIpIHtcbiAgICAgICAgaW5pdGlhbFN0YXR1cyA9IFVOTU9VTlRFRDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxTdGF0dXMgPSBFWElURUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBzdGF0dXM6IGluaXRpYWxTdGF0dXNcbiAgICB9O1xuICAgIF90aGlzLm5leHRDYWxsYmFjayA9IG51bGw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgVHJhbnNpdGlvbi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoX3JlZiwgcHJldlN0YXRlKSB7XG4gICAgdmFyIG5leHRJbiA9IF9yZWYuaW47XG5cbiAgICBpZiAobmV4dEluICYmIHByZXZTdGF0ZS5zdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBFWElURURcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUocHJldlByb3BzKSB7XG4gIC8vICAgbGV0IG5leHRTdGF0dXMgPSBudWxsXG4gIC8vICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAvLyAgICAgY29uc3QgeyBzdGF0dXMgfSA9IHRoaXMuc3RhdGVcbiAgLy8gICAgIGlmICh0aGlzLnByb3BzLmluKSB7XG4gIC8vICAgICAgIGlmIChzdGF0dXMgIT09IEVOVEVSSU5HICYmIHN0YXR1cyAhPT0gRU5URVJFRCkge1xuICAvLyAgICAgICAgIG5leHRTdGF0dXMgPSBFTlRFUklOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBpZiAoc3RhdHVzID09PSBFTlRFUklORyB8fCBzdGF0dXMgPT09IEVOVEVSRUQpIHtcbiAgLy8gICAgICAgICBuZXh0U3RhdHVzID0gRVhJVElOR1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiB7IG5leHRTdGF0dXMgfVxuICAvLyB9XG4gIDtcblxuICB2YXIgX3Byb3RvID0gVHJhbnNpdGlvbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0dXModHJ1ZSwgdGhpcy5hcHBlYXJTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgdmFyIG5leHRTdGF0dXMgPSBudWxsO1xuXG4gICAgaWYgKHByZXZQcm9wcyAhPT0gdGhpcy5wcm9wcykge1xuICAgICAgdmFyIHN0YXR1cyA9IHRoaXMuc3RhdGUuc3RhdHVzO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5pbikge1xuICAgICAgICBpZiAoc3RhdHVzICE9PSBFTlRFUklORyAmJiBzdGF0dXMgIT09IEVOVEVSRUQpIHtcbiAgICAgICAgICBuZXh0U3RhdHVzID0gRU5URVJJTkc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChzdGF0dXMgPT09IEVOVEVSSU5HIHx8IHN0YXR1cyA9PT0gRU5URVJFRCkge1xuICAgICAgICAgIG5leHRTdGF0dXMgPSBFWElUSU5HO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTdGF0dXMoZmFsc2UsIG5leHRTdGF0dXMpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuY2FuY2VsTmV4dENhbGxiYWNrKCk7XG4gIH07XG5cbiAgX3Byb3RvLmdldFRpbWVvdXRzID0gZnVuY3Rpb24gZ2V0VGltZW91dHMoKSB7XG4gICAgdmFyIHRpbWVvdXQgPSB0aGlzLnByb3BzLnRpbWVvdXQ7XG4gICAgdmFyIGV4aXQsIGVudGVyLCBhcHBlYXI7XG4gICAgZXhpdCA9IGVudGVyID0gYXBwZWFyID0gdGltZW91dDtcblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwgJiYgdHlwZW9mIHRpbWVvdXQgIT09ICdudW1iZXInKSB7XG4gICAgICBleGl0ID0gdGltZW91dC5leGl0O1xuICAgICAgZW50ZXIgPSB0aW1lb3V0LmVudGVyOyAvLyBUT0RPOiByZW1vdmUgZmFsbGJhY2sgZm9yIG5leHQgbWFqb3JcblxuICAgICAgYXBwZWFyID0gdGltZW91dC5hcHBlYXIgIT09IHVuZGVmaW5lZCA/IHRpbWVvdXQuYXBwZWFyIDogZW50ZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGV4aXQ6IGV4aXQsXG4gICAgICBlbnRlcjogZW50ZXIsXG4gICAgICBhcHBlYXI6IGFwcGVhclxuICAgIH07XG4gIH07XG5cbiAgX3Byb3RvLnVwZGF0ZVN0YXR1cyA9IGZ1bmN0aW9uIHVwZGF0ZVN0YXR1cyhtb3VudGluZywgbmV4dFN0YXR1cykge1xuICAgIGlmIChtb3VudGluZyA9PT0gdm9pZCAwKSB7XG4gICAgICBtb3VudGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChuZXh0U3RhdHVzICE9PSBudWxsKSB7XG4gICAgICAvLyBuZXh0U3RhdHVzIHdpbGwgYWx3YXlzIGJlIEVOVEVSSU5HIG9yIEVYSVRJTkcuXG4gICAgICB0aGlzLmNhbmNlbE5leHRDYWxsYmFjaygpO1xuXG4gICAgICBpZiAobmV4dFN0YXR1cyA9PT0gRU5URVJJTkcpIHtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCB8fCB0aGlzLnByb3BzLm1vdW50T25FbnRlcikge1xuICAgICAgICAgIHZhciBub2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdGhpcy5wcm9wcy5ub2RlUmVmLmN1cnJlbnQgOiBSZWFjdERPTS5maW5kRE9NTm9kZSh0aGlzKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9wdWxsLzc0OVxuICAgICAgICAgIC8vIFdpdGggdW5tb3VudE9uRXhpdCBvciBtb3VudE9uRW50ZXIsIHRoZSBlbnRlciBhbmltYXRpb24gc2hvdWxkIGhhcHBlbiBhdCB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIGBleGl0ZWRgIGFuZCBgZW50ZXJpbmdgLlxuICAgICAgICAgIC8vIFRvIG1ha2UgdGhlIGFuaW1hdGlvbiBoYXBwZW4sICB3ZSBoYXZlIHRvIHNlcGFyYXRlIGVhY2ggcmVuZGVyaW5nIGFuZCBhdm9pZCBiZWluZyBwcm9jZXNzZWQgYXMgYmF0Y2hlZC5cblxuICAgICAgICAgIGlmIChub2RlKSBmb3JjZVJlZmxvdyhub2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGVyZm9ybUVudGVyKG1vdW50aW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVyZm9ybUV4aXQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudW5tb3VudE9uRXhpdCAmJiB0aGlzLnN0YXRlLnN0YXR1cyA9PT0gRVhJVEVEKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBVTk1PVU5URURcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUVudGVyID0gZnVuY3Rpb24gcGVyZm9ybUVudGVyKG1vdW50aW5nKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgZW50ZXIgPSB0aGlzLnByb3BzLmVudGVyO1xuICAgIHZhciBhcHBlYXJpbmcgPSB0aGlzLmNvbnRleHQgPyB0aGlzLmNvbnRleHQuaXNNb3VudGluZyA6IG1vdW50aW5nO1xuXG4gICAgdmFyIF9yZWYyID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gW2FwcGVhcmluZ10gOiBbUmVhY3RET00uZmluZERPTU5vZGUodGhpcyksIGFwcGVhcmluZ10sXG4gICAgICAgIG1heWJlTm9kZSA9IF9yZWYyWzBdLFxuICAgICAgICBtYXliZUFwcGVhcmluZyA9IF9yZWYyWzFdO1xuXG4gICAgdmFyIHRpbWVvdXRzID0gdGhpcy5nZXRUaW1lb3V0cygpO1xuICAgIHZhciBlbnRlclRpbWVvdXQgPSBhcHBlYXJpbmcgPyB0aW1lb3V0cy5hcHBlYXIgOiB0aW1lb3V0cy5lbnRlcjsgLy8gbm8gZW50ZXIgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRU5URVJFRFxuICAgIC8vIGlmIHdlIGFyZSBtb3VudGluZyBhbmQgcnVubmluZyB0aGlzIGl0IG1lYW5zIGFwcGVhciBfbXVzdF8gYmUgc2V0XG5cbiAgICBpZiAoIW1vdW50aW5nICYmICFlbnRlciB8fCBjb25maWcuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgc3RhdHVzOiBFTlRFUkVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5wcm9wcy5vbkVudGVyZWQobWF5YmVOb2RlKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMub25FbnRlcihtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVOVEVSSU5HXG4gICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJpbmcobWF5YmVOb2RlLCBtYXliZUFwcGVhcmluZyk7XG5cbiAgICAgIF90aGlzMi5vblRyYW5zaXRpb25FbmQoZW50ZXJUaW1lb3V0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMi5zYWZlU2V0U3RhdGUoe1xuICAgICAgICAgIHN0YXR1czogRU5URVJFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnByb3BzLm9uRW50ZXJlZChtYXliZU5vZGUsIG1heWJlQXBwZWFyaW5nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8ucGVyZm9ybUV4aXQgPSBmdW5jdGlvbiBwZXJmb3JtRXhpdCgpIHtcbiAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgIHZhciBleGl0ID0gdGhpcy5wcm9wcy5leGl0O1xuICAgIHZhciB0aW1lb3V0cyA9IHRoaXMuZ2V0VGltZW91dHMoKTtcbiAgICB2YXIgbWF5YmVOb2RlID0gdGhpcy5wcm9wcy5ub2RlUmVmID8gdW5kZWZpbmVkIDogUmVhY3RET00uZmluZERPTU5vZGUodGhpcyk7IC8vIG5vIGV4aXQgYW5pbWF0aW9uIHNraXAgcmlnaHQgdG8gRVhJVEVEXG5cbiAgICBpZiAoIWV4aXQgfHwgY29uZmlnLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICAgIHN0YXR1czogRVhJVEVEXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzMy5wcm9wcy5vbkV4aXRlZChtYXliZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5vbkV4aXQobWF5YmVOb2RlKTtcbiAgICB0aGlzLnNhZmVTZXRTdGF0ZSh7XG4gICAgICBzdGF0dXM6IEVYSVRJTkdcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpczMucHJvcHMub25FeGl0aW5nKG1heWJlTm9kZSk7XG5cbiAgICAgIF90aGlzMy5vblRyYW5zaXRpb25FbmQodGltZW91dHMuZXhpdCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpczMuc2FmZVNldFN0YXRlKHtcbiAgICAgICAgICBzdGF0dXM6IEVYSVRFRFxuICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMzLnByb3BzLm9uRXhpdGVkKG1heWJlTm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLmNhbmNlbE5leHRDYWxsYmFjayA9IGZ1bmN0aW9uIGNhbmNlbE5leHRDYWxsYmFjaygpIHtcbiAgICBpZiAodGhpcy5uZXh0Q2FsbGJhY2sgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCgpO1xuICAgICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uc2FmZVNldFN0YXRlID0gZnVuY3Rpb24gc2FmZVNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spIHtcbiAgICAvLyBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCB0aGVyZSBhcmUgd2VpcmQgcmFjZSBjb25kaXRpb25zIHdpdGhcbiAgICAvLyBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIHVubW91bnRpbmcgaW4gdGVzdGluZywgc28gYWx3YXlzIG1ha2Ugc3VyZSB0aGF0XG4gICAgLy8gd2UgY2FuIGNhbmNlbCBhbnkgcGVuZGluZyBzZXRTdGF0ZSBjYWxsYmFja3MgYWZ0ZXIgd2UgdW5tb3VudC5cbiAgICBjYWxsYmFjayA9IHRoaXMuc2V0TmV4dENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICB0aGlzLnNldFN0YXRlKG5leHRTdGF0ZSwgY2FsbGJhY2spO1xuICB9O1xuXG4gIF9wcm90by5zZXROZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiBzZXROZXh0Q2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgIHZhciBhY3RpdmUgPSB0cnVlO1xuXG4gICAgdGhpcy5uZXh0Q2FsbGJhY2sgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIF90aGlzNC5uZXh0Q2FsbGJhY2sgPSBudWxsO1xuICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMubmV4dENhbGxiYWNrLmNhbmNlbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGFjdGl2ZSA9IGZhbHNlO1xuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5uZXh0Q2FsbGJhY2s7XG4gIH07XG5cbiAgX3Byb3RvLm9uVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIG9uVHJhbnNpdGlvbkVuZCh0aW1lb3V0LCBoYW5kbGVyKSB7XG4gICAgdGhpcy5zZXROZXh0Q2FsbGJhY2soaGFuZGxlcik7XG4gICAgdmFyIG5vZGUgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyB0aGlzLnByb3BzLm5vZGVSZWYuY3VycmVudCA6IFJlYWN0RE9NLmZpbmRET01Ob2RlKHRoaXMpO1xuICAgIHZhciBkb2VzTm90SGF2ZVRpbWVvdXRPckxpc3RlbmVyID0gdGltZW91dCA9PSBudWxsICYmICF0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyO1xuXG4gICAgaWYgKCFub2RlIHx8IGRvZXNOb3RIYXZlVGltZW91dE9yTGlzdGVuZXIpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKSB7XG4gICAgICB2YXIgX3JlZjMgPSB0aGlzLnByb3BzLm5vZGVSZWYgPyBbdGhpcy5uZXh0Q2FsbGJhY2tdIDogW25vZGUsIHRoaXMubmV4dENhbGxiYWNrXSxcbiAgICAgICAgICBtYXliZU5vZGUgPSBfcmVmM1swXSxcbiAgICAgICAgICBtYXliZU5leHRDYWxsYmFjayA9IF9yZWYzWzFdO1xuXG4gICAgICB0aGlzLnByb3BzLmFkZEVuZExpc3RlbmVyKG1heWJlTm9kZSwgbWF5YmVOZXh0Q2FsbGJhY2spO1xuICAgIH1cblxuICAgIGlmICh0aW1lb3V0ICE9IG51bGwpIHtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5uZXh0Q2FsbGJhY2ssIHRpbWVvdXQpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBzdGF0dXMgPSB0aGlzLnN0YXRlLnN0YXR1cztcblxuICAgIGlmIChzdGF0dXMgPT09IFVOTU9VTlRFRCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgY2hpbGRyZW4gPSBfdGhpcyRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgX2luID0gX3RoaXMkcHJvcHMuaW4sXG4gICAgICAgIF9tb3VudE9uRW50ZXIgPSBfdGhpcyRwcm9wcy5tb3VudE9uRW50ZXIsXG4gICAgICAgIF91bm1vdW50T25FeGl0ID0gX3RoaXMkcHJvcHMudW5tb3VudE9uRXhpdCxcbiAgICAgICAgX2FwcGVhciA9IF90aGlzJHByb3BzLmFwcGVhcixcbiAgICAgICAgX2VudGVyID0gX3RoaXMkcHJvcHMuZW50ZXIsXG4gICAgICAgIF9leGl0ID0gX3RoaXMkcHJvcHMuZXhpdCxcbiAgICAgICAgX3RpbWVvdXQgPSBfdGhpcyRwcm9wcy50aW1lb3V0LFxuICAgICAgICBfYWRkRW5kTGlzdGVuZXIgPSBfdGhpcyRwcm9wcy5hZGRFbmRMaXN0ZW5lcixcbiAgICAgICAgX29uRW50ZXIgPSBfdGhpcyRwcm9wcy5vbkVudGVyLFxuICAgICAgICBfb25FbnRlcmluZyA9IF90aGlzJHByb3BzLm9uRW50ZXJpbmcsXG4gICAgICAgIF9vbkVudGVyZWQgPSBfdGhpcyRwcm9wcy5vbkVudGVyZWQsXG4gICAgICAgIF9vbkV4aXQgPSBfdGhpcyRwcm9wcy5vbkV4aXQsXG4gICAgICAgIF9vbkV4aXRpbmcgPSBfdGhpcyRwcm9wcy5vbkV4aXRpbmcsXG4gICAgICAgIF9vbkV4aXRlZCA9IF90aGlzJHByb3BzLm9uRXhpdGVkLFxuICAgICAgICBfbm9kZVJlZiA9IF90aGlzJHByb3BzLm5vZGVSZWYsXG4gICAgICAgIGNoaWxkUHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJpblwiLCBcIm1vdW50T25FbnRlclwiLCBcInVubW91bnRPbkV4aXRcIiwgXCJhcHBlYXJcIiwgXCJlbnRlclwiLCBcImV4aXRcIiwgXCJ0aW1lb3V0XCIsIFwiYWRkRW5kTGlzdGVuZXJcIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRW50ZXJlZFwiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGluZ1wiLCBcIm9uRXhpdGVkXCIsIFwibm9kZVJlZlwiXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgLyojX19QVVJFX18qL1xuICAgICAgLy8gYWxsb3dzIGZvciBuZXN0ZWQgVHJhbnNpdGlvbnNcbiAgICAgIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgfSwgdHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nID8gY2hpbGRyZW4oc3RhdHVzLCBjaGlsZFByb3BzKSA6IFJlYWN0LmNsb25lRWxlbWVudChSZWFjdC5DaGlsZHJlbi5vbmx5KGNoaWxkcmVuKSwgY2hpbGRQcm9wcykpXG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gVHJhbnNpdGlvbjtcbn0oUmVhY3QuQ29tcG9uZW50KTtcblxuVHJhbnNpdGlvbi5jb250ZXh0VHlwZSA9IFRyYW5zaXRpb25Hcm91cENvbnRleHQ7XG5UcmFuc2l0aW9uLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgLyoqXG4gICAqIEEgUmVhY3QgcmVmZXJlbmNlIHRvIERPTSBlbGVtZW50IHRoYXQgbmVlZCB0byB0cmFuc2l0aW9uOlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNTExMjcxMzAvNDY3MTkzMlxuICAgKlxuICAgKiAgIC0gV2hlbiBgbm9kZVJlZmAgcHJvcCBpcyB1c2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZCB0byBjYWxsYmFjayBmdW5jdGlvbnNcbiAgICogICAgICAoZS5nLiBgb25FbnRlcmApIGJlY2F1c2UgdXNlciBhbHJlYWR5IGhhcyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBub2RlLlxuICAgKiAgIC0gV2hlbiBjaGFuZ2luZyBga2V5YCBwcm9wIG9mIGBUcmFuc2l0aW9uYCBpbiBhIGBUcmFuc2l0aW9uR3JvdXBgIGEgbmV3XG4gICAqICAgICBgbm9kZVJlZmAgbmVlZCB0byBiZSBwcm92aWRlZCB0byBgVHJhbnNpdGlvbmAgd2l0aCBjaGFuZ2VkIGBrZXlgIHByb3BcbiAgICogICAgIChzZWVcbiAgICogICAgIFt0ZXN0L0NTU1RyYW5zaXRpb24tdGVzdC5qc10oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9ibG9iLzEzNDM1Zjg5N2IzYWI3MWY2ZTE5ZDcyNGYxNDU1OTZmNTkxMDU4MWMvdGVzdC9DU1NUcmFuc2l0aW9uLXRlc3QuanMjTDM2Mi1MNDM3KSkuXG4gICAqL1xuICBub2RlUmVmOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbnQ6IHR5cGVvZiBFbGVtZW50ID09PSAndW5kZWZpbmVkJyA/IFByb3BUeXBlcy5hbnkgOiBmdW5jdGlvbiAocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tleV07XG4gICAgICByZXR1cm4gUHJvcFR5cGVzLmluc3RhbmNlT2YodmFsdWUgJiYgJ293bmVyRG9jdW1lbnQnIGluIHZhbHVlID8gdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5FbGVtZW50IDogRWxlbWVudCkocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCk7XG4gICAgfVxuICB9KSxcblxuICAvKipcbiAgICogQSBgZnVuY3Rpb25gIGNoaWxkIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgYSBSZWFjdCBlbGVtZW50LiBUaGlzIGZ1bmN0aW9uIGlzXG4gICAqIGNhbGxlZCB3aXRoIHRoZSBjdXJyZW50IHRyYW5zaXRpb24gc3RhdHVzIChgJ2VudGVyaW5nJ2AsIGAnZW50ZXJlZCdgLFxuICAgKiBgJ2V4aXRpbmcnYCwgYCdleGl0ZWQnYCksIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFwcGx5IGNvbnRleHRcbiAgICogc3BlY2lmaWMgcHJvcHMgdG8gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiA8VHJhbnNpdGlvbiBpbj17dGhpcy5zdGF0ZS5pbn0gdGltZW91dD17MTUwfT5cbiAgICogICB7c3RhdGUgPT4gKFxuICAgKiAgICAgPE15Q29tcG9uZW50IGNsYXNzTmFtZT17YGZhZGUgZmFkZS0ke3N0YXRlfWB9IC8+XG4gICAqICAgKX1cbiAgICogPC9UcmFuc2l0aW9uPlxuICAgKiBgYGBcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMuZWxlbWVudC5pc1JlcXVpcmVkXSkuaXNSZXF1aXJlZCxcblxuICAvKipcbiAgICogU2hvdyB0aGUgY29tcG9uZW50OyB0cmlnZ2VycyB0aGUgZW50ZXIgb3IgZXhpdCBzdGF0ZXNcbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgY2hpbGQgY29tcG9uZW50IGlzIG1vdW50ZWQgaW1tZWRpYXRlbHkgYWxvbmcgd2l0aFxuICAgKiB0aGUgcGFyZW50IGBUcmFuc2l0aW9uYCBjb21wb25lbnQuIElmIHlvdSB3YW50IHRvIFwibGF6eSBtb3VudFwiIHRoZSBjb21wb25lbnQgb24gdGhlXG4gICAqIGZpcnN0IGBpbj17dHJ1ZX1gIHlvdSBjYW4gc2V0IGBtb3VudE9uRW50ZXJgLiBBZnRlciB0aGUgZmlyc3QgZW50ZXIgdHJhbnNpdGlvbiB0aGUgY29tcG9uZW50IHdpbGwgc3RheVxuICAgKiBtb3VudGVkLCBldmVuIG9uIFwiZXhpdGVkXCIsIHVubGVzcyB5b3UgYWxzbyBzcGVjaWZ5IGB1bm1vdW50T25FeGl0YC5cbiAgICovXG4gIG1vdW50T25FbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBzdGF5cyBtb3VudGVkIGFmdGVyIGl0IHJlYWNoZXMgdGhlIGAnZXhpdGVkJ2Agc3RhdGUuXG4gICAqIFNldCBgdW5tb3VudE9uRXhpdGAgaWYgeW91J2QgcHJlZmVyIHRvIHVubW91bnQgdGhlIGNvbXBvbmVudCBhZnRlciBpdCBmaW5pc2hlcyBleGl0aW5nLlxuICAgKi9cbiAgdW5tb3VudE9uRXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQgdGhlIGNoaWxkIGNvbXBvbmVudCBkb2VzIG5vdCBwZXJmb3JtIHRoZSBlbnRlciB0cmFuc2l0aW9uIHdoZW5cbiAgICogaXQgZmlyc3QgbW91bnRzLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBgaW5gLiBJZiB5b3Ugd2FudCB0aGlzXG4gICAqIGJlaGF2aW9yLCBzZXQgYm90aCBgYXBwZWFyYCBhbmQgYGluYCB0byBgdHJ1ZWAuXG4gICAqXG4gICAqID4gKipOb3RlKio6IHRoZXJlIGFyZSBubyBzcGVjaWFsIGFwcGVhciBzdGF0ZXMgbGlrZSBgYXBwZWFyaW5nYC9gYXBwZWFyZWRgLCB0aGlzIHByb3BcbiAgICogPiBvbmx5IGFkZHMgYW4gYWRkaXRpb25hbCBlbnRlciB0cmFuc2l0aW9uLiBIb3dldmVyLCBpbiB0aGVcbiAgICogPiBgPENTU1RyYW5zaXRpb24+YCBjb21wb25lbnQgdGhhdCBmaXJzdCBlbnRlciB0cmFuc2l0aW9uIGRvZXMgcmVzdWx0IGluXG4gICAqID4gYWRkaXRpb25hbCBgLmFwcGVhci0qYCBjbGFzc2VzLCB0aGF0IHdheSB5b3UgY2FuIGNob29zZSB0byBzdHlsZSBpdFxuICAgKiA+IGRpZmZlcmVudGx5LlxuICAgKi9cbiAgYXBwZWFyOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlIG9yIGRpc2FibGUgZW50ZXIgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBlbnRlcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIGV4aXQgdHJhbnNpdGlvbnMuXG4gICAqL1xuICBleGl0OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIG9mIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFJlcXVpcmVkIHVubGVzcyBgYWRkRW5kTGlzdGVuZXJgIGlzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zOlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17NTAwfVxuICAgKiBgYGBcbiAgICpcbiAgICogb3IgaW5kaXZpZHVhbGx5OlxuICAgKlxuICAgKiBgYGBqc3hcbiAgICogdGltZW91dD17e1xuICAgKiAgYXBwZWFyOiA1MDAsXG4gICAqICBlbnRlcjogMzAwLFxuICAgKiAgZXhpdDogNTAwLFxuICAgKiB9fVxuICAgKiBgYGBcbiAgICpcbiAgICogLSBgYXBwZWFyYCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYGVudGVyYFxuICAgKiAtIGBlbnRlcmAgZGVmYXVsdHMgdG8gYDBgXG4gICAqIC0gYGV4aXRgIGRlZmF1bHRzIHRvIGAwYFxuICAgKlxuICAgKiBAdHlwZSB7bnVtYmVyIHwgeyBlbnRlcj86IG51bWJlciwgZXhpdD86IG51bWJlciwgYXBwZWFyPzogbnVtYmVyIH19XG4gICAqL1xuICB0aW1lb3V0OiBmdW5jdGlvbiB0aW1lb3V0KHByb3BzKSB7XG4gICAgdmFyIHB0ID0gdGltZW91dHNTaGFwZTtcbiAgICBpZiAoIXByb3BzLmFkZEVuZExpc3RlbmVyKSBwdCA9IHB0LmlzUmVxdWlyZWQ7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHQuYXBwbHkodm9pZCAwLCBbcHJvcHNdLmNvbmNhdChhcmdzKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSB0cmFuc2l0aW9uIGVuZCB0cmlnZ2VyLiBDYWxsZWQgd2l0aCB0aGUgdHJhbnNpdGlvbmluZ1xuICAgKiBET00gbm9kZSBhbmQgYSBgZG9uZWAgY2FsbGJhY2suIEFsbG93cyBmb3IgbW9yZSBmaW5lIGdyYWluZWQgdHJhbnNpdGlvbiBlbmRcbiAgICogbG9naWMuIFRpbWVvdXRzIGFyZSBzdGlsbCB1c2VkIGFzIGEgZmFsbGJhY2sgaWYgcHJvdmlkZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIGBgYGpzeFxuICAgKiBhZGRFbmRMaXN0ZW5lcj17KG5vZGUsIGRvbmUpID0+IHtcbiAgICogICAvLyB1c2UgdGhlIGNzcyB0cmFuc2l0aW9uZW5kIGV2ZW50IHRvIG1hcmsgdGhlIGZpbmlzaCBvZiBhIHRyYW5zaXRpb25cbiAgICogICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBkb25lLCBmYWxzZSk7XG4gICAqIH19XG4gICAqIGBgYFxuICAgKi9cbiAgYWRkRW5kTGlzdGVuZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZW50ZXJpbmdcIiBzdGF0dXMgaXMgYXBwbGllZC4gQW4gZXh0cmEgcGFyYW1ldGVyXG4gICAqIGBpc0FwcGVhcmluZ2AgaXMgc3VwcGxpZWQgdG8gaW5kaWNhdGUgaWYgdGhlIGVudGVyIHN0YWdlIGlzIG9jY3VycmluZyBvbiB0aGUgaW5pdGlhbCBtb3VudFxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCwgaXNBcHBlYXJpbmc6IGJvb2wpIC0+IHZvaWRcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLiBBbiBleHRyYSBwYXJhbWV0ZXJcbiAgICogYGlzQXBwZWFyaW5nYCBpcyBzdXBwbGllZCB0byBpbmRpY2F0ZSBpZiB0aGUgZW50ZXIgc3RhZ2UgaXMgb2NjdXJyaW5nIG9uIHRoZSBpbml0aWFsIG1vdW50XG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWQuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKG5vZGU6IEh0bWxFbGVtZW50LCBpc0FwcGVhcmluZzogYm9vbClcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBhZnRlciB0aGUgXCJlbnRlcmVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuIEFuIGV4dHJhIHBhcmFtZXRlclxuICAgKiBgaXNBcHBlYXJpbmdgIGlzIHN1cHBsaWVkIHRvIGluZGljYXRlIGlmIHRoZSBlbnRlciBzdGFnZSBpcyBvY2N1cnJpbmcgb24gdGhlIGluaXRpYWwgbW91bnRcbiAgICpcbiAgICogKipOb3RlKio6IHdoZW4gYG5vZGVSZWZgIHByb3AgaXMgcGFzc2VkLCBgbm9kZWAgaXMgbm90IHBhc3NlZC5cbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQsIGlzQXBwZWFyaW5nOiBib29sKSAtPiB2b2lkXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCBiZWZvcmUgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGluZ1wiIHN0YXR1cyBpcyBhcHBsaWVkLlxuICAgKlxuICAgKiAqKk5vdGUqKjogd2hlbiBgbm9kZVJlZmAgcHJvcCBpcyBwYXNzZWQsIGBub2RlYCBpcyBub3QgcGFzc2VkLlxuICAgKlxuICAgKiBAdHlwZSBGdW5jdGlvbihub2RlOiBIdG1sRWxlbWVudCkgLT4gdm9pZFxuICAgKi9cbiAgb25FeGl0aW5nOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgYWZ0ZXIgdGhlIFwiZXhpdGVkXCIgc3RhdHVzIGlzIGFwcGxpZWQuXG4gICAqXG4gICAqICoqTm90ZSoqOiB3aGVuIGBub2RlUmVmYCBwcm9wIGlzIHBhc3NlZCwgYG5vZGVgIGlzIG5vdCBwYXNzZWRcbiAgICpcbiAgICogQHR5cGUgRnVuY3Rpb24obm9kZTogSHRtbEVsZW1lbnQpIC0+IHZvaWRcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuY1xufSA6IHt9OyAvLyBOYW1lIHRoZSBmdW5jdGlvbiBzbyBpdCBpcyBjbGVhcmVyIGluIHRoZSBkb2N1bWVudGF0aW9uXG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5UcmFuc2l0aW9uLmRlZmF1bHRQcm9wcyA9IHtcbiAgaW46IGZhbHNlLFxuICBtb3VudE9uRW50ZXI6IGZhbHNlLFxuICB1bm1vdW50T25FeGl0OiBmYWxzZSxcbiAgYXBwZWFyOiBmYWxzZSxcbiAgZW50ZXI6IHRydWUsXG4gIGV4aXQ6IHRydWUsXG4gIG9uRW50ZXI6IG5vb3AsXG4gIG9uRW50ZXJpbmc6IG5vb3AsXG4gIG9uRW50ZXJlZDogbm9vcCxcbiAgb25FeGl0OiBub29wLFxuICBvbkV4aXRpbmc6IG5vb3AsXG4gIG9uRXhpdGVkOiBub29wXG59O1xuVHJhbnNpdGlvbi5VTk1PVU5URUQgPSBVTk1PVU5URUQ7XG5UcmFuc2l0aW9uLkVYSVRFRCA9IEVYSVRFRDtcblRyYW5zaXRpb24uRU5URVJJTkcgPSBFTlRFUklORztcblRyYW5zaXRpb24uRU5URVJFRCA9IEVOVEVSRUQ7XG5UcmFuc2l0aW9uLkVYSVRJTkcgPSBFWElUSU5HO1xuZXhwb3J0IGRlZmF1bHQgVHJhbnNpdGlvbjsiLCJleHBvcnQgdmFyIGZvcmNlUmVmbG93ID0gZnVuY3Rpb24gZm9yY2VSZWZsb3cobm9kZSkge1xuICByZXR1cm4gbm9kZS5zY3JvbGxUb3A7XG59OyJdLCJuYW1lcyI6WyJ1c2VUaGVtZSIsInRoZW1lIiwicmVmbG93Iiwibm9kZSIsInNjcm9sbFRvcCIsImdldFRyYW5zaXRpb25Qcm9wcyIsInByb3BzIiwib3B0aW9ucyIsIl9zdHlsZSR0cmFuc2l0aW9uRHVyYSIsIl9zdHlsZSR0cmFuc2l0aW9uVGltaSIsInRpbWVvdXQiLCJlYXNpbmciLCJzdHlsZSIsImR1cmF0aW9uIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwibW9kZSIsInRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiIsImRlbGF5IiwidHJhbnNpdGlvbkRlbGF5IiwiVU5NT1VOVEVEIiwiRVhJVEVEIiwiRU5URVJJTkciLCJFTlRFUkVEIiwiRVhJVElORyIsIlRyYW5zaXRpb24iLCJfUmVhY3QkQ29tcG9uZW50IiwiY29udGV4dCIsIl90aGlzIiwiY2FsbCIsInRoaXMiLCJpbml0aWFsU3RhdHVzIiwiYXBwZWFyIiwiaXNNb3VudGluZyIsImVudGVyIiwiYXBwZWFyU3RhdHVzIiwiaW4iLCJ1bm1vdW50T25FeGl0IiwibW91bnRPbkVudGVyIiwic3RhdGUiLCJzdGF0dXMiLCJuZXh0Q2FsbGJhY2siLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmIiwicHJldlN0YXRlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiY29tcG9uZW50RGlkTW91bnQiLCJ1cGRhdGVTdGF0dXMiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJuZXh0U3RhdHVzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJjYW5jZWxOZXh0Q2FsbGJhY2siLCJnZXRUaW1lb3V0cyIsImV4aXQiLCJ1bmRlZmluZWQiLCJtb3VudGluZyIsIm5vZGVSZWYiLCJjdXJyZW50IiwiZm9yY2VSZWZsb3ciLCJwZXJmb3JtRW50ZXIiLCJwZXJmb3JtRXhpdCIsInNldFN0YXRlIiwiX3RoaXMyIiwiYXBwZWFyaW5nIiwiX3JlZjIiLCJtYXliZU5vZGUiLCJtYXliZUFwcGVhcmluZyIsInRpbWVvdXRzIiwiZW50ZXJUaW1lb3V0Iiwib25FbnRlciIsInNhZmVTZXRTdGF0ZSIsIm9uRW50ZXJpbmciLCJvblRyYW5zaXRpb25FbmQiLCJvbkVudGVyZWQiLCJfdGhpczMiLCJvbkV4aXQiLCJvbkV4aXRpbmciLCJvbkV4aXRlZCIsImNhbmNlbCIsIm5leHRTdGF0ZSIsImNhbGxiYWNrIiwic2V0TmV4dENhbGxiYWNrIiwiX3RoaXM0IiwiYWN0aXZlIiwiZXZlbnQiLCJoYW5kbGVyIiwiZG9lc05vdEhhdmVUaW1lb3V0T3JMaXN0ZW5lciIsImFkZEVuZExpc3RlbmVyIiwiX3JlZjMiLCJtYXliZU5leHRDYWxsYmFjayIsInNldFRpbWVvdXQiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsImNoaWxkcmVuIiwiY2hpbGRQcm9wcyIsIlRyYW5zaXRpb25Hcm91cENvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwib25seSIsIm5vb3AiLCJjb250ZXh0VHlwZSIsInByb3BUeXBlcyIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5451.360eff43.js b/react_frontend/static/react_frontend/js/5451.360eff43.js new file mode 100644 index 000000000..dc9f3e4a7 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5451.360eff43.js @@ -0,0 +1,3 @@ +/*! For license information please see 5451.360eff43.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5451],{41:(e,t,r)=>{function n(e,t,r){var n="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "})),n}r.d(t,{Rk:()=>n,SF:()=>o,sk:()=>i});var o=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},i=function(e,t,r){o(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var i=t;do{e.insert(t===i?"."+n:"",i,e.sheet,!0),i=i.next}while(void 0!==i)}}},4719:(e,t,r)=>{r.d(t,{A:()=>l});var n=r(7413),o=r(9071),i=r(6544),a=r(8312);const s=(0,i.A)(),l=(0,n.A)({themeId:a.A,defaultTheme:s,defaultClassName:"MuiBox-root",generateClassName:o.A.generate})},9359:(e,t,r)=>{r.d(t,{Ay:()=>b,q_:()=>v});var n=r(8168),o=r(6540),i=r(6289),a=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,i.A)((function(e){return a.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=r(5684),c=r(41),d=r(6899),u=r(1287),p=s,f=function(e){return"theme"!==e},m=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:f},g=function(e,t,r){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},h=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,c.SF)(t,r,n),(0,u.s)((function(){return(0,c.sk)(t,r,n)})),null},y=function e(t,r){var i,a,s=t.__emotion_real===t,u=s&&t.__emotion_base||t;void 0!==r&&(i=r.label,a=r.target);var p=g(t,r,s),f=p||m(u),y=!f("as");return function(){var b=arguments,v=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==i&&v.push("label:"+i+";"),null==b[0]||void 0===b[0].raw)v.push.apply(v,b);else{v.push(b[0][0]);for(var S=b.length,k=1;k{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},7413:(e,t,r)=>{r.d(t,{A:()=>f});var n=r(8168),o=r(8587),i=r(6540),a=r(53),s=r(9359),l=r(3571),c=r(9599),d=r(2858),u=r(4848);const p=["className","component"];function f(e={}){const{themeId:t,defaultTheme:r,defaultClassName:f="MuiBox-root",generateClassName:m}=e,g=(0,s.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.A);return i.forwardRef((function(e,i){const s=(0,d.A)(r),l=(0,c.A)(e),{className:h,component:y="div"}=l,b=(0,o.A)(l,p);return(0,u.jsx)(g,(0,n.A)({as:y,ref:i,className:(0,a.A)(h,m?m(f):f),theme:t&&s[t]||s},b))}))}},9599:(e,t,r)=>{r.d(t,{A:()=>c});var n=r(8168),o=r(8587),i=r(3272),a=r(4188);const s=["sx"],l=e=>{var t,r;const n={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:a.A;return Object.keys(e).forEach((t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]})),n};function c(e){const{sx:t}=e,r=(0,o.A)(e,s),{systemProps:a,otherProps:c}=l(r);let d;return d=Array.isArray(t)?[a,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,i.Q)(r)?(0,n.A)({},a,r):a}:(0,n.A)({},a,t),(0,n.A)({},c,{sx:d})}},2858:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(3221),o=r(3951);const i=(0,n.A)(),a=function(e=i){return(0,o.A)(e)}},9071:(e,t,r)=>{r.d(t,{A:()=>o});const n=e=>e,o=(()=>{let e=n;return{configure(t){e=t},generate:t=>e(t),reset(){e=n}}})()},3266:(e,t,r)=>{r.r(t),r.d(t,{default:()=>f});var n,o,i=r(6540),a=r(4719),s=r(3721),l=r(8306),c=r(4848);function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r").replace(/</g,"<").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&ge;/g,">=").replace(/&le;/g,"<=").replace(/≤/g,"<=").replace(/≥/g,">=").replace(/\\n/g,"\n");RoboticsReactComponents.CodeEditor.setCode(t)}})).catch((function(e){console.error(e)}))}else RoboticsReactComponents.CodeEditor.setCode(r);var i=new CustomEvent("codeLoaded",{detail:{isLoading:!1}});window.dispatchEvent(i)}),[]);var o=d((0,l.useEditorReudcer)(),2),u=o[0],f=o[1];return(0,c.jsx)(a.A,{id:"code-container",children:(0,c.jsx)(s.MonacoEditor,{state:u,dispatch:f,monacoEditorSourceCode:r,setMonacoEditorSourceCode:n,handleMonacoEditorCodeChange:function(e){n(e),RoboticsReactComponents.CodeEditor.setCode(e)}})})}},8306:(e,t,r)=>{r.r(t),r.d(t,{useEditorReudcer:()=>p});var n=r(6540),o=r(3721);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{function n(e){var t,r,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,r=0,o="";r{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNTQ1Mi42YjcyZjdmOS5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUndCLFNBQUNBLEdBQ3ZCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhYnlyaW50aF9lc2NhcGVfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL0xhYnlyaW50aEVzY2FwZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvTGFieXJpbnRoRXNjYXBlLmNzc1wiO1xyXG5cclxuY29uc3QgTGFieXJpbnRoRXNjYXBlID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IExhYnlyaW50aEVzY2FwZTsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5452.451dffff.js.LICENSE.txt b/react_frontend/static/react_frontend/js/5452.451dffff.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5452.451dffff.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5530.bc3a6f36.js b/react_frontend/static/react_frontend/js/5530.bc3a6f36.js new file mode 100644 index 000000000..1cffbe10d --- /dev/null +++ b/react_frontend/static/react_frontend/js/5530.bc3a6f36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5530],{5530:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5582.be2135f5.js b/react_frontend/static/react_frontend/js/5582.be2135f5.js new file mode 100644 index 000000000..98a725567 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5582.be2135f5.js @@ -0,0 +1,3 @@ +/*! For license information please see 5582.be2135f5.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5582,1381],{5582:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(6540),a=r(5556),o=r.n(a),i=r(1381),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";function n(e){return decodeURIComponent(escape(e))}r.r(t),r.d(t,{drawImage:()=>i,drawLeftImage:()=>s});var a=new Image,o=new Image;function i(e){var t=document.getElementById("gui_canvas_right"),r=t.getContext("2d");function o(){window.requestAnimationFrame(o),r.drawImage(a,0,0)}a.onload=function(){o()};var i=JSON.parse(e.image),s=n(i.image),c=i.shape;""!=s&&(a.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}function s(e){var t=document.getElementById("gui_canvas_left"),r=t.getContext("2d");function a(){window.requestAnimationFrame(a),r.drawImage(o,0,0)}o.onload=function(){a()};var i=JSON.parse(e.image_left),s=n(i.image_left),c=i.shape;""!=s&&(o.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,o,i){if(i!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,o={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,n)&&!c.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:u,ref:l,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFbEgsTUFBTWdILEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9wb3NpdGlvbl9jb250cm9sX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY1Bvc2l0aW9uQ29udHJvbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9wb3NpdGlvbl9jb250cm9sX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZXNQb3NpdGlvbkNvbnRyb2wuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IHsgZHJhd0ltYWdlLCBkcmF3TGVmdEltYWdlfSBmcm9tIFwiLi9oZWxwZXJzL3Nob3dJbWFnZXNQb3NpdGlvbkNvbnRyb2xcIjtcclxuXHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY1Bvc2l0aW9uQ29udHJvbChwcm9wcykge1xyXG4gIGNvbnN0IFtpbWFnZSwgc2V0SW1hZ2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2ltYWdlJylcclxuICAgICAgICBjb25zdCBpbWFnZSA9IEpTT04ucGFyc2UobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZSlcclxuICAgICAgICBpZihpbWFnZS5pbWFnZSl7XHJcbiAgICAgICAgICBkcmF3SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSlcclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcbiAgICAgIGlmKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfbGVmdCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2ltYWdlX2xlZnQnKVxyXG4gICAgICAgIGNvbnN0IGltYWdlID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlX2xlZnQpXHJcbiAgICAgICAgaWYoaW1hZ2UuaW1hZ2VfbGVmdCl7XHJcbiAgICAgICAgICBkcmF3TGVmdEltYWdlKG1lc3NhZ2UuZGF0YS51cGRhdGUpXHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG5cclxuICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcblxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgIGhlaWdodDogXCIxMDAlXCJ9fT5cclxuICAgICAgPGNhbnZhcyBpZD1cImd1aV9jYW52YXNfbGVmdFwiPjwvY2FudmFzPlxyXG4gICAgICA8Y2FudmFzIGlkPVwiZ3VpX2NhbnZhc19yaWdodFwiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNQb3NpdGlvbkNvbnRyb2wucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY1Bvc2l0aW9uQ29udHJvbFxyXG4iLCIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY1Bvc2l0aW9uQ29udHJvbCIsInByb3BzIiwiX1JlYWN0JHVzZVN0YXRlMiIsIlJlYWN0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJpbWFnZSIsIkpTT04iLCJwYXJzZSIsImRyYXdJbWFnZSIsImltYWdlX2xlZnQiLCJkcmF3TGVmdEltYWdlIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJjaGlsZHJlbiIsIl9qc3giLCJpZCIsInByb3BUeXBlcyIsImNpcmN1aXQiLCJQcm9wVHlwZXMiLCJkZWNvZGVfdXRmOCIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJJbWFnZSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsImltYWdlX2RhdGEiLCJzb3VyY2UiLCJzaGFwZSIsInNyYyIsImNhbnZhc19sZWZ0IiwiY29udGV4dF9sZWZ0IiwidXBkYXRlX2xlZnRfaW1hZ2UiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5582.be2135f5.js.LICENSE.txt b/react_frontend/static/react_frontend/js/5582.be2135f5.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5582.be2135f5.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5627.e0ae30ef.js b/react_frontend/static/react_frontend/js/5627.e0ae30ef.js new file mode 100644 index 000000000..805fb4ed1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5627.e0ae30ef.js @@ -0,0 +1,3 @@ +/*! For license information please see 5627.e0ae30ef.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5627],{5627:(t,r,e)=>{function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function o(){o=function(){return r};var t,r={},e=Object.prototype,i=e.hasOwnProperty,a=Object.defineProperty||function(t,r,e){t[r]=e.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",s=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function l(t,r,e){return Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[r]}try{l({},"")}catch(t){l=function(t,r,e){return t[r]=e}}function h(t,r,e,n){var o=r&&r.prototype instanceof w?r:w,i=Object.create(o.prototype),c=new G(n||[]);return a(i,"_invoke",{value:j(t,e,c)}),i}function p(t,r,e){try{return{type:"normal",arg:t.call(r,e)}}catch(t){return{type:"throw",arg:t}}}r.wrap=h;var y="suspendedStart",v="suspendedYield",d="executing",g="completed",m={};function w(){}function b(){}function x(){}var E={};l(E,u,(function(){return this}));var L=Object.getPrototypeOf,S=L&&L(L(C([])));S&&S!==e&&i.call(S,u)&&(E=S);var k=x.prototype=w.prototype=Object.create(E);function O(t){["next","throw","return"].forEach((function(r){l(t,r,(function(t){return this._invoke(r,t)}))}))}function _(t,r){function e(o,a,c,u){var s=p(t[o],t,a);if("throw"!==s.type){var f=s.arg,l=f.value;return l&&"object"==n(l)&&i.call(l,"__await")?r.resolve(l.__await).then((function(t){e("next",t,c,u)}),(function(t){e("throw",t,c,u)})):r.resolve(l).then((function(t){f.value=t,c(f)}),(function(t){return e("throw",t,c,u)}))}u(s.arg)}var o;a(this,"_invoke",{value:function(t,n){function i(){return new r((function(r,o){e(t,n,r,o)}))}return o=o?o.then(i,i):i()}})}function j(r,e,n){var o=y;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=N(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var s=p(r,e,n);if("normal"===s.type){if(o=n.done?g:v,s.arg===m)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(o=g,n.method="throw",n.arg=s.arg)}}}function N(r,e){var n=e.method,o=r.iterator[n];if(o===t)return e.delegate=null,"throw"===n&&r.iterator.return&&(e.method="return",e.arg=t,N(r,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=p(o,r.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,m;var a=i.arg;return a?a.done?(e[r.resultName]=a.value,e.next=r.nextLoc,"return"!==e.method&&(e.method="next",e.arg=t),e.delegate=null,m):a:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,m)}function P(t){var r={tryLoc:t[0]};1 in t&&(r.catchLoc=t[1]),2 in t&&(r.finallyLoc=t[2],r.afterLoc=t[3]),this.tryEntries.push(r)}function T(t){var r=t.completion||{};r.type="normal",delete r.arg,t.completion=r}function G(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function C(r){if(r||""===r){var e=r[u];if(e)return e.call(r);if("function"==typeof r.next)return r;if(!isNaN(r.length)){var o=-1,a=function e(){for(;++o=0;--o){var a=this.tryEntries[o],c=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=i.call(a,"catchLoc"),s=i.call(a,"finallyLoc");if(u&&s){if(this.prev=0;--e){var n=this.tryEntries[e];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--r){var e=this.tryEntries[r];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),T(e),m}},catch:function(t){for(var r=this.tryEntries.length-1;r>=0;--r){var e=this.tryEntries[r];if(e.tryLoc===t){var n=e.completion;if("throw"===n.type){var o=n.arg;T(e)}return o}}throw Error("illegal catch attempt")},delegateYield:function(r,e,n){return this.delegate={iterator:C(r),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=t),m}},r}function i(t,r,e,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,o)}e.r(r),e.d(r,{fetchFormatCode:()=>a,getEditorSettingsWidgetsData:()=>s,getMarkerSeverity:()=>c,setEditorSettingsWidgetsData:()=>u});var a=function(){var t,r=(t=o().mark((function t(r){var e,n,i,a,c;return o().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e=r.baseUrl,n=r.monacoEditorSourceCode,i=r.setMonacoEditorSourceCode,t.prev=1,t.next=4,fetch("".concat(e,"/api/v1/format/"),{method:"POST",headers:{"Content-Type":"application/json","X-CSRFToken":context.csrf},body:JSON.stringify({code:n})});case 4:return a=t.sent,t.next=7,a.json();case 7:c=t.sent,a.ok?i(c.formatted_code):console.error("Error formatting code:",c.error),t.next=14;break;case 11:t.prev=11,t.t0=t.catch(1),console.log("error ",t.t0);case 14:case"end":return t.stop()}}),t,null,[[1,11]])})),function(){var r=this,e=arguments;return new Promise((function(n,o){var a=t.apply(r,e);function c(t){i(a,n,o,c,u,"next",t)}function u(t){i(a,n,o,c,u,"throw",t)}c(void 0)}))});return function(t){return r.apply(this,arguments)}}(),c=function(t){var r=t.type,e=t.monaco;switch(r){case"refactor":case"convention":return e.MarkerSeverity.Info;case"error":default:return e.MarkerSeverity.Error;case"warning":case"fatal":return e.MarkerSeverity.Warning}},u=function(t){var r=JSON.stringify(t);localStorage.setItem("editorSettingsWidgets",r)},s=function(){var t=localStorage.getItem("editorSettingsWidgets");return t?JSON.parse(t):null}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQU9DLGVBQWVDLEtBQy9CLElBQUssUUFLTCxRQUNFLE9BQU9GLEVBQU9DLGVBQWVsRixNQUovQixJQUFLLFVBQ0wsSUFBSyxRQUNILE9BQU9pRixFQUFPQyxlQUFlRSxRQUluQyxFQUdhQyxFQUErQixTQUFDN0IsR0FDM0MsSUFBTThCLEVBQWN0QixLQUFLQyxVQUFVVCxHQUNuQytCLGFBQWFDLFFBQVEsd0JBQXlCRixFQUNoRCxFQUVhRyxFQUErQixXQUMxQyxJQUFNakMsRUFBTytCLGFBQWFHLFFBQVEseUJBRWxDLE9BQUlsQyxFQUFhUSxLQUFLMkIsTUFBTW5DLEdBQ3JCLElBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2VkaXRvcnMvbW9uYWNvLWVkaXRvci9oZWxwZXIvaGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIHB5bGludF9lcnJvcixcclxuICBweWxpbnRfd2FybmluZyxcclxuICBweWxpbnRfY29udmVudGlvbixcclxuICBweWxpbnRfcmVmYWN0b3IsXHJcbiAgcHlsaW50X2ZhdGFsLFxyXG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcclxuXHJcbi8vIHBvc3QgYW5kIHJlc3BvbnNlIGNvZGUgZm9ybWF0XHJcbmV4cG9ydCBjb25zdCBmZXRjaEZvcm1hdENvZGUgPSBhc3luYyAoe1xyXG4gIGJhc2VVcmwsXHJcbiAgbW9uYWNvRWRpdG9yU291cmNlQ29kZSxcclxuICBzZXRNb25hY29FZGl0b3JTb3VyY2VDb2RlLFxyXG59KSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vYXBpL3YxL2Zvcm1hdC9gLCB7XHJcbiAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgIGhlYWRlcnM6IHtcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICBcIlgtQ1NSRlRva2VuXCI6IGNvbnRleHQuY3NyZixcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcclxuICAgICAgICBjb2RlOiBtb25hY29FZGl0b3JTb3VyY2VDb2RlLFxyXG4gICAgICB9KSxcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcclxuICAgICAgc2V0TW9uYWNvRWRpdG9yU291cmNlQ29kZShkYXRhLmZvcm1hdHRlZF9jb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBmb3JtYXR0aW5nIGNvZGU6XCIsIGRhdGEuZXJyb3IpO1xyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImVycm9yIFwiLCBlcnJvcik7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldE1hcmtlclNldmVyaXR5ID0gKHsgdHlwZSwgbW9uYWNvIH0pID0+IHtcclxuICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgIGNhc2UgXCJyZWZhY3RvclwiOlxyXG4gICAgY2FzZSBcImNvbnZlbnRpb25cIjpcclxuICAgICAgcmV0dXJuIG1vbmFjby5NYXJrZXJTZXZlcml0eS5JbmZvO1xyXG4gICAgY2FzZSBcImVycm9yXCI6XHJcbiAgICAgIHJldHVybiBtb25hY28uTWFya2VyU2V2ZXJpdHkuRXJyb3I7XHJcbiAgICBjYXNlIFwid2FybmluZ1wiOlxyXG4gICAgY2FzZSBcImZhdGFsXCI6XHJcbiAgICAgIHJldHVybiBtb25hY28uTWFya2VyU2V2ZXJpdHkuV2FybmluZztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHJldHVybiBtb25hY28uTWFya2VyU2V2ZXJpdHkuRXJyb3I7XHJcbiAgfVxyXG59O1xyXG5cclxuLy8gbG9jYWwgc3RvcmFnZSBkYXRhXHJcbmV4cG9ydCBjb25zdCBzZXRFZGl0b3JTZXR0aW5nc1dpZGdldHNEYXRhID0gKGRhdGEpID0+IHtcclxuICBjb25zdCBkYXRhX3N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xyXG4gIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiZWRpdG9yU2V0dGluZ3NXaWRnZXRzXCIsIGRhdGFfc3RyaW5nKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRFZGl0b3JTZXR0aW5nc1dpZGdldHNEYXRhID0gKCkgPT4ge1xyXG4gIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImVkaXRvclNldHRpbmdzV2lkZ2V0c1wiKTtcclxuXHJcbiAgaWYgKGRhdGEpIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gIHJldHVybiBudWxsO1xyXG59O1xyXG4iXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImZldGNoRm9ybWF0Q29kZSIsIl9yZWYyIiwiX2NhbGxlZSIsIl9yZWYiLCJiYXNlVXJsIiwibW9uYWNvRWRpdG9yU291cmNlQ29kZSIsInNldE1vbmFjb0VkaXRvclNvdXJjZUNvZGUiLCJyZXNwb25zZSIsImRhdGEiLCJfY29udGV4dCIsImZldGNoIiwiY29uY2F0IiwiaGVhZGVycyIsImNvbnRleHQiLCJjc3JmIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb2RlIiwianNvbiIsIm9rIiwiZm9ybWF0dGVkX2NvZGUiLCJjb25zb2xlIiwiZXJyb3IiLCJ0MCIsImxvZyIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfeCIsImdldE1hcmtlclNldmVyaXR5IiwiX3JlZjMiLCJtb25hY28iLCJNYXJrZXJTZXZlcml0eSIsIkluZm8iLCJXYXJuaW5nIiwic2V0RWRpdG9yU2V0dGluZ3NXaWRnZXRzRGF0YSIsImRhdGFfc3RyaW5nIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImdldEVkaXRvclNldHRpbmdzV2lkZ2V0c0RhdGEiLCJnZXRJdGVtIiwicGFyc2UiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5627.e0ae30ef.js.LICENSE.txt b/react_frontend/static/react_frontend/js/5627.e0ae30ef.js.LICENSE.txt new file mode 100644 index 000000000..ae386fb79 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5627.e0ae30ef.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/react_frontend/static/react_frontend/js/5665.d3dbd657.js b/react_frontend/static/react_frontend/js/5665.d3dbd657.js new file mode 100644 index 000000000..abe752c41 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5665.d3dbd657.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5665],{5665:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5688.5e92c592.js b/react_frontend/static/react_frontend/js/5688.5e92c592.js new file mode 100644 index 000000000..c7d3a26b6 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5688.5e92c592.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5688,4668],{7437:(e,t,o)=>{o.d(t,{AH:()=>c,i7:()=>d,mL:()=>s});var n=o(5684),a=o(6540),r=o(41),i=o(1287),l=o(6899),s=(o(4300),o(4146),(0,n.w)((function(e,t){var o=e.styles,s=(0,l.J)([o],void 0,a.useContext(n.T));if(!n.i){for(var c,d=s.name,u=s.styles,p=s.next;void 0!==p;)d+=" "+p.name,u+=p.styles,p=p.next;var v=!0===t.compat,m=t.insert("",{name:d,styles:u},t.sheet,v);return v?null:a.createElement("style",((c={})["data-emotion"]=t.key+"-global "+d,c.dangerouslySetInnerHTML={__html:m},c.nonce=t.sheet.nonce,c))}var h=a.useRef();return(0,i.i)((function(){var e=t.key+"-global",o=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,a=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(o.before=t.sheet.tags[0]),null!==a&&(n=!0,a.setAttribute("data-emotion",e),o.hydrate([a])),h.current=[o,n],function(){o.flush()}}),[t]),(0,i.i)((function(){var e=h.current,o=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,r.sk)(t,s.next,!0),o.tags.length){var n=o.tags[o.tags.length-1].nextElementSibling;o.before=n,o.flush()}t.insert("",s,o,!1)}}),[t,s.name]),null})));function c(){for(var e=arguments.length,t=new Array(e),o=0;o{o.d(t,{A:()=>C});var n=o(8587),a=o(8168),r=o(6540),i=o(53),l=o(3726),s=o(5659),c=o(4279),d=o(7577),u=o(4409),p=o(6606),v=o(8466),m=o(8413),h=o(1609);function b(e){return(0,h.A)("MuiButton",e)}const g=(0,m.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var f=o(1848),y=o(4848);const x=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],S=e=>(0,a.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),z=(0,d.Ay)(p.A,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,v.A)(o.color)}`],t[`size${(0,v.A)(o.size)}`],t[`${o.variant}Size${(0,v.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const r="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,a.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,a.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${g.focusVisible}`]:(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${g.disabled}`]:(0,a.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,c.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:r,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${g.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${g.disabled}`]:{boxShadow:"none"}})),A=(0,d.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},S(e)))),w=(0,d.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},S(e)))),C=r.forwardRef((function(e,t){const o=r.useContext(f.A),c=(0,l.A)(o,e),d=(0,u.A)({props:c,name:"MuiButton"}),{children:p,color:m="primary",component:h="button",className:g,disabled:S=!1,disableElevation:C=!1,disableFocusRipple:I=!1,endIcon:$,focusVisibleClassName:E,fullWidth:k=!1,size:R="medium",startIcon:M,type:T,variant:W="text"}=d,B=(0,n.A)(d,x),N=(0,a.A)({},d,{color:m,component:h,disabled:S,disableElevation:C,disableFocusRipple:I,fullWidth:k,size:R,type:T,variant:W}),O=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:r,variant:i,classes:l}=e,c={root:["root",i,`${i}${(0,v.A)(t)}`,`size${(0,v.A)(r)}`,`${i}Size${(0,v.A)(r)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,v.A)(r)}`],endIcon:["endIcon",`iconSize${(0,v.A)(r)}`]},d=(0,s.A)(c,b,l);return(0,a.A)({},l,d)})(N),_=M&&(0,y.jsx)(A,{className:O.startIcon,ownerState:N,children:M}),L=$&&(0,y.jsx)(w,{className:O.endIcon,ownerState:N,children:$});return(0,y.jsxs)(z,(0,a.A)({ownerState:N,className:(0,i.A)(o.className,O.root,g),component:h,disabled:S,focusRipple:!I,focusVisibleClassName:(0,i.A)(O.focusVisible,E),ref:t,type:T},B,{classes:O,children:[_,p,L]}))}))},1848:(e,t,o)=>{o.d(t,{A:()=>n});const n=o(6540).createContext({})},9596:(e,t,o)=>{o.r(t),o.d(t,{PlayCar:()=>l});var n=o(1224),a=o(6540),r=o(4848);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=Array(t);o{r.d(t,{A:()=>R});var n=r(8587),o=r(8168),a=r(6540),i=r(53),s=r(5659),c=r(7437),l=r(8466),u=r(4409),d=r(7577),f=r(8413),m=r(1609);function p(e){return(0,m.A)("MuiCircularProgress",e)}(0,f.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var v=r(4848);const h=["className","color","disableShrink","size","style","thickness","value","variant"];let g,b,y,w,x=e=>e;const A=(0,c.i7)(g||(g=x` + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +`)),S=(0,c.i7)(b||(b=x` + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } +`)),C=(0,d.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],t[`color${(0,l.A)(r.color)}`]]}})((({ownerState:e,theme:t})=>(0,o.A)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,c.AH)(y||(y=x` + animation: ${0} 1.4s linear infinite; + `),A))),j=(0,d.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),E=(0,d.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.circle,t[`circle${(0,l.A)(r.variant)}`],r.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,o.A)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,c.AH)(w||(w=x` + animation: ${0} 1.4s ease-in-out infinite; + `),S))),R=a.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiCircularProgress"}),{className:a,color:c="primary",disableShrink:d=!1,size:f=40,style:m,thickness:g=3.6,value:b=0,variant:y="indeterminate"}=r,w=(0,n.A)(r,h),x=(0,o.A)({},r,{color:c,disableShrink:d,size:f,thickness:g,value:b,variant:y}),A=(e=>{const{classes:t,variant:r,color:n,disableShrink:o}=e,a={root:["root",r,`color${(0,l.A)(n)}`],svg:["svg"],circle:["circle",`circle${(0,l.A)(r)}`,o&&"circleDisableShrink"]};return(0,s.A)(a,p,t)})(x),S={},R={},k={};if("determinate"===y){const e=2*Math.PI*((44-g)/2);S.strokeDasharray=e.toFixed(3),k["aria-valuenow"]=Math.round(b),S.strokeDashoffset=`${((100-b)/100*e).toFixed(3)}px`,R.transform="rotate(-90deg)"}return(0,v.jsx)(C,(0,o.A)({className:(0,i.A)(A.root,a),style:(0,o.A)({width:f,height:f},R,m),ownerState:x,ref:t,role:"progressbar"},k,w,{children:(0,v.jsx)(j,{className:A.svg,ownerState:x,viewBox:"22 22 44 44",children:(0,v.jsx)(E,{className:A.circle,style:S,ownerState:x,cx:44,cy:44,r:(44-g)/2,fill:"none",strokeWidth:g})})}))}))},538:(e,t,r)=>{r.d(t,{A:()=>b});var n=r(8587),o=r(8168),a=r(6540),i=r(53),s=r(5659),c=r(4279),l=r(7577);const u=e=>{let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(t/100).toFixed(2)};var d=r(4409),f=r(8413),m=r(1609);function p(e){return(0,m.A)("MuiPaper",e)}(0,f.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var v=r(4848);const h=["className","component","elevation","square","variant"],g=(0,l.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,t[r.variant],!r.square&&t.rounded,"elevation"===r.variant&&t[`elevation${r.elevation}`]]}})((({theme:e,ownerState:t})=>{var r;return(0,o.A)({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!t.square&&{borderRadius:e.shape.borderRadius},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.divider}`},"elevation"===t.variant&&(0,o.A)({boxShadow:(e.vars||e).shadows[t.elevation]},!e.vars&&"dark"===e.palette.mode&&{backgroundImage:`linear-gradient(${(0,c.X4)("#fff",u(t.elevation))}, ${(0,c.X4)("#fff",u(t.elevation))})`},e.vars&&{backgroundImage:null==(r=e.vars.overlays)?void 0:r[t.elevation]}))})),b=a.forwardRef((function(e,t){const r=(0,d.A)({props:e,name:"MuiPaper"}),{className:a,component:c="div",elevation:l=1,square:u=!1,variant:f="elevation"}=r,m=(0,n.A)(r,h),b=(0,o.A)({},r,{component:c,elevation:l,square:u,variant:f}),y=(e=>{const{square:t,elevation:r,variant:n,classes:o}=e,a={root:["root",n,!t&&"rounded","elevation"===n&&`elevation${r}`]};return(0,s.A)(a,p,o)})(b);return(0,v.jsx)(g,(0,o.A)({as:c,ownerState:b,className:(0,i.A)(y.root,a),ref:t},m))}))},2230:(e,t,r)=>{r.r(t),r.d(t,{default:()=>u}),r(6540);var n=r(6544),o=r(5793),a=r(5556),i=r.n(a),s=r(4848),c=(0,n.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function l(e){return(0,s.jsx)(o.A,{theme:c,children:e.children})}l.propTypes={children:i().node};const u=l},7710:(e,t,r)=>{r.r(t),r.d(t,{default:()=>l}),r(6540);var n=r(833),o=r(1641),a=r(9463),i=r(6730),s=r(2230),c=r(4848);const l=function(e){return(0,c.jsx)(s.default,{children:(0,c.jsxs)(n.A,{color:"loading",variant:"contained",children:[e.url&&(0,c.jsx)(o.A,{href:e.url,target:"_blank",color:"secondary",children:(0,c.jsx)(a.A,{})}),(0,c.jsx)(o.A,{href:"https://forum.unibotics.org/",target:"_blank",color:"secondary",children:(0,c.jsx)(i.A,{})})]})})}},3452:(e,t,r)=>{r.r(t),r.d(t,{default:()=>E});var n=r(6540),o=r(9828),a=r(8532),i=r(7577),s=r(5003),c=r(3357),l=["src","alt","height","width","position","fit","style","className","showLoading","errorIcon","shift","distance","shiftDuration","bgColor","wrapperStyle","iconWrapperStyle","wrapperClassName","iconWrapperClassName","duration","easing","onLoad","onError"];function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,l),I=n.useState(!1),T=I[0],O=I[1],D=n.useState(!1),L=D[0],P=D[1],_=((t={})[b]=T?0:y,t),B={root:u({width:i,height:a,display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:x},A),image:u({position:s,width:"100%",height:"100%",objectFit:m,transitionProperty:(Boolean(b)?b+", ":"")+"opacity",transitionDuration:(Boolean(b)?(w||.3*E)+"ms, ":"")+E/2+"ms",transitionTimingFunction:R,opacity:T?1:0,animation:T?"materialize "+E+"ms 1 "+R:""},Boolean(b)&&_,p),icons:u({width:"100%",marginLeft:"-100%",display:"flex",justifyContent:"center",alignItems:"center",opacity:T?0:1},S)},$="boolean"!=typeof g&&g||n.createElement(d,{style:{fontSize:56,color:"#bdbdbd"}}),z="boolean"!=typeof h&&h||n.createElement(c.A,{size:56,thickness:6});return n.createElement("div",{style:B.root,className:"mui-image-wrapper "+C},n.createElement(f,u({src:r,alt:o,style:B.image,className:"mui-image-img "+v,onLoad:function(){O(!0),P(!1),Boolean(k)&&k()},onError:function(){P(!0),O(!1),Boolean(N)&&N()}},M)),(Boolean(h)||Boolean(g))&&n.createElement("div",{style:B.icons,className:"mui-image-iconWrapper "+j},Boolean(g)&&L&&$,Boolean(h)&&!L&&!T&&z))}m.defaultProps={alt:"",height:"100%",width:"100%",position:"relative",fit:"cover",showLoading:!1,errorIcon:!0,shift:!1,distance:100,shiftDuration:null,bgColor:"inherit",duration:3e3,easing:"cubic-bezier(0.7, 0, 0.6, 1)",className:"",wrapperClassName:"",iconWrapperClassName:""},m.propTypes={};var p=r(4719),v=r(2230),h=r(5556),g=r.n(h),b=r(1644),y=r(7710),w=r(5760),x=r(4511),A=r(2401),S=r(2543),C=r(4848);function j(e){var t=0,r=function e(){t>=3?RoboticsReactComponents.MessageSystem.Alert.showAlert("Error connecting, try reloading the page.","error",(function(){console.log("Reloading"),window.location.reload()}),"RELOAD"):(window.RoboticsReactComponents.MessageSystem.Loading.showLoading("Connecting and launching the exercise."),window.RoboticsExerciseComponents.commsManager.connect().then((function(){var e=JSON.parse(document.getElementById("exercise-config").textContent),t=e[0].tools_config,r=e[0].world.tools_config,n=(0,S.merge)(t,r);window.RoboticsExerciseComponents.commsManager.launchWorld({world:e[0].world,robot:e[0].robot}).then((function(){window.RoboticsExerciseComponents.commsManager.prepareTools({tools:e[0].tools,config:n}).then((function(){RoboticsReactComponents.MessageSystem.Loading.hideLoading(),RoboticsReactComponents.MessageSystem.Alert.showAlert("Exercise loaded successfully.","success")}))})).catch((function(e){RoboticsReactComponents.MessageSystem.Alert.showAlert(e.data.message,"error")}))})).catch((function(r){t++,setTimeout(e,2e3)})))};return n.useEffect((function(){RoboticsExerciseComponents.suscribeOnLoad((function(){r()}))}),[]),(0,b.useUnload)((function(){window.RoboticsExerciseComponents.commsManager.disconnect()})),(0,C.jsx)(v.default,{children:(0,C.jsx)(o.A,{position:"relative",children:(0,C.jsxs)(a.A,{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between"},children:[(0,C.jsx)(p.A,{sx:{display:"inline-flex",justifyContent:"space-between",alignItems:"center"},children:(0,C.jsx)("a",{href:"http://127.0.0.1:7164/exercises/",children:(0,C.jsx)("img",{src:"/static/exercises/assets/img/logo.gif",fit:"cover",width:50})})}),(0,C.jsxs)(p.A,{sx:{display:"flex",gap:"10px",marginLeft:"10px",alignItems:"center",justifyContent:"center"},children:[(0,C.jsx)(x.default,{}),e.children,(0,C.jsx)(A.default,{}),(0,C.jsx)(w.default,{name:e.exerciseName})]}),(0,C.jsx)(p.A,{children:(0,C.jsx)(y.default,{url:e.url})})]})})})}j.propTypes={exerciseName:g().string};const E=j},5760:(e,t,r)=>{r.r(t),r.d(t,{default:()=>l});var n=r(6540),o=r(7839),a=r(4719),i=r(4073),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{default:()=>m});var n=r(6540),o=r(7839),a=r(4719),i=r(4073),s=r(5556),c=r.n(s),l=r(4848);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,a,i,s=[],c=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{default:()=>l});var n=r(6540),o=r(7839),a=r(4719),i=r(4073),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{useUnload:()=>o});var n=r(6540),o=function(e){var t=(0,n.useRef)(e);(0,n.useEffect)((function(){var e=t.current;return window.addEventListener("beforeunload",e),function(){window.removeEventListener("beforeunload",e)}}),[t])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBRTFCLEVBTUEsT0FMQW5FLE9BQU9JLDJCQUEyQkMsYUFBYTZDLFVBQzdDLENBQUNsRCxPQUFPSSwyQkFBMkJDLGFBQWE4QyxPQUFPQyxlQUN2REosR0FHSyxXQUNMaEQsT0FBT0ksMkJBQTJCQyxhQUFhZ0QsWUFDN0MsQ0FBQ3JELE9BQU9JLDJCQUEyQkMsYUFBYThDLE9BQU9DLGVBQ3ZESixFQUVKLENBQ0YsR0FBRyxLQUdEMUksRUFBQUEsRUFBQUEsS0FBQ2dKLEVBQUFBLEVBQU8sQ0FBQ0MsTUFBTSxtQkFBa0IxTCxVQUMvQjZDLEVBQUFBLEVBQUFBLE1BQUMwSCxFQUFBQSxFQUFHLENBQUM3TCxVQUFXMk4sRUFBcUIsUUFBVSxVQUFVck0sU0FBQSxFQUN2RHlDLEVBQUFBLEVBQUFBLEtBQUEsS0FBRy9ELFVBQVUsUUFBT3NCLFNBQUMsU0FDckJ5QyxFQUFBQSxFQUFBQSxLQUFDa0osRUFBQUEsRUFBVSxDQUFDdEIsR0FBSSxDQUFFOUMsU0FBVSxVQUFZN0ksVUFBVSxPQUFNc0IsU0FDckRxTSxFQUFxQixRQUFVLGdCQUsxQyxDLCtEQ2xDYXBDLEVBQVksU0FBQ3NDLEdBQ3hCLElBQU1DLEdBQUtDLEVBQUFBLEVBQUFBLFFBQU9GLElBRWxCckIsRUFBQUEsRUFBQUEsWUFBVSxXQUNSLElBQU13QixFQUFXRixFQUFHRyxRQUVwQixPQURBeEUsT0FBT3lFLGlCQUFpQixlQUFnQkYsR0FDakMsV0FDTHZFLE9BQU8wRSxvQkFBb0IsZUFBZ0JILEVBQzdDLENBQ0YsR0FBRyxDQUFDRixHQUNOLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NpcmN1bGFyUHJvZ3Jlc3MvY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DaXJjdWxhclByb2dyZXNzL0NpcmN1bGFyUHJvZ3Jlc3MuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvZ2V0T3ZlcmxheUFscGhhLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvUGFwZXIvcGFwZXJDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvUGFwZXIvUGFwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9Sb2JvdGljc1RoZW1lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL211aS1pbWFnZS9lcy9JbWFnZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2xheW91dF9jb21wb25lbnRzL01haW5BcHBCYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy92aXN1YWxpemVycy9BcHBJbmRpY2F0b3IuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy92aXN1YWxpemVycy9Db25uZWN0aW9uSW5kaWNhdG9yLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsaXplcnMvVmlzdWFsaXphdGlvbkluZGljYXRvci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9ob29rcy91c2VVbmxvYWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLCBzbG90KTtcbn1cbmNvbnN0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2lyY3VsYXJQcm9ncmVzcycsIFsncm9vdCcsICdkZXRlcm1pbmF0ZScsICdpbmRldGVybWluYXRlJywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdzdmcnLCAnY2lyY2xlJywgJ2NpcmNsZURldGVybWluYXRlJywgJ2NpcmNsZUluZGV0ZXJtaW5hdGUnLCAnY2lyY2xlRGlzYWJsZVNocmluayddKTtcbmV4cG9ydCBkZWZhdWx0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGlzYWJsZVNocmlua1wiLCBcInNpemVcIiwgXCJzdHlsZVwiLCBcInRoaWNrbmVzc1wiLCBcInZhbHVlXCIsIFwidmFyaWFudFwiXTtcbmxldCBfID0gdCA9PiB0LFxuICBfdCxcbiAgX3QyLFxuICBfdDMsXG4gIF90NDtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIGNzcyB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2NpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBTSVpFID0gNDQ7XG5jb25zdCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lID0ga2V5ZnJhbWVzKF90IHx8IChfdCA9IF9gXG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbmApKTtcbmNvbnN0IGNpcmN1bGFyRGFzaEtleWZyYW1lID0ga2V5ZnJhbWVzKF90MiB8fCAoX3QyID0gX2BcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTE1cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjVweDtcbiAgfVxuYCkpO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgdmFyaWFudCxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlU2hyaW5rXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWBdLFxuICAgIHN2ZzogWydzdmcnXSxcbiAgICBjaXJjbGU6IFsnY2lyY2xlJywgYGNpcmNsZSR7Y2FwaXRhbGl6ZSh2YXJpYW50KX1gLCBkaXNhYmxlU2hyaW5rICYmICdjaXJjbGVEaXNhYmxlU2hyaW5rJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBDaXJjdWxhclByb2dyZXNzUm9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJ1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnICYmIHtcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCd0cmFuc2Zvcm0nKVxufSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbn0pLCAoe1xuICBvd25lclN0YXRlXG59KSA9PiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdpbmRldGVybWluYXRlJyAmJiBjc3MoX3QzIHx8IChfdDMgPSBfYFxuICAgICAgYW5pbWF0aW9uOiAkezB9IDEuNHMgbGluZWFyIGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lKSk7XG5jb25zdCBDaXJjdWxhclByb2dyZXNzU1ZHID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJyxcbiAgc2xvdDogJ1N2ZycsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnN2Z1xufSkoe1xuICBkaXNwbGF5OiAnYmxvY2snIC8vIEtlZXBzIHRoZSBwcm9ncmVzcyBjZW50ZXJlZFxufSk7XG5cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUgPSBzdHlsZWQoJ2NpcmNsZScsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnQ2lyY2xlJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5jaXJjbGUsIHN0eWxlc1tgY2lyY2xlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9YF0sIG93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBzdHlsZXMuY2lyY2xlRGlzYWJsZVNocmlua107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcidcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2RldGVybWluYXRlJyAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnKVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYge1xuICAvLyBTb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBsb29rcyBmaW5lIHdhaXRpbmcgZm9yIHRoZSBhbmltYXRpb24gdG8ga2lja3MgaW4uXG4gIHN0cm9rZURhc2hhcnJheTogJzgwcHgsIDIwMHB4JyxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMCAvLyBBZGQgdGhlIHVuaXQgdG8gZml4IGEgRWRnZSAxNiBhbmQgYmVsb3cgYnVnLlxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmICFvd25lclN0YXRlLmRpc2FibGVTaHJpbmsgJiYgY3NzKF90NCB8fCAoX3Q0ID0gX2BcbiAgICAgIGFuaW1hdGlvbjogJHswfSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhckRhc2hLZXlmcmFtZSkpO1xuXG4vKipcbiAqICMjIEFSSUFcbiAqXG4gKiBJZiB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGRlc2NyaWJpbmcgdGhlIGxvYWRpbmcgcHJvZ3Jlc3Mgb2YgYSBwYXJ0aWN1bGFyIHJlZ2lvbiBvZiBhIHBhZ2UsXG4gKiB5b3Ugc2hvdWxkIHVzZSBgYXJpYS1kZXNjcmliZWRieWAgdG8gcG9pbnQgdG8gdGhlIHByb2dyZXNzIGJhciwgYW5kIHNldCB0aGUgYGFyaWEtYnVzeWBcbiAqIGF0dHJpYnV0ZSB0byBgdHJ1ZWAgb24gdGhhdCByZWdpb24gdW50aWwgaXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuXG4gKi9cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3MgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDaXJjdWxhclByb2dyZXNzKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBkaXNhYmxlU2hyaW5rID0gZmFsc2UsXG4gICAgICBzaXplID0gNDAsXG4gICAgICBzdHlsZSxcbiAgICAgIHRoaWNrbmVzcyA9IDMuNixcbiAgICAgIHZhbHVlID0gMCxcbiAgICAgIHZhcmlhbnQgPSAnaW5kZXRlcm1pbmF0ZSdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmssXG4gICAgc2l6ZSxcbiAgICB0aGlja25lc3MsXG4gICAgdmFsdWUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBjaXJjbGVTdHlsZSA9IHt9O1xuICBjb25zdCByb290U3R5bGUgPSB7fTtcbiAgY29uc3Qgcm9vdFByb3BzID0ge307XG4gIGlmICh2YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnKSB7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogKChTSVpFIC0gdGhpY2tuZXNzKSAvIDIpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2UudG9GaXhlZCgzKTtcbiAgICByb290UHJvcHNbJ2FyaWEtdmFsdWVub3cnXSA9IE1hdGgucm91bmQodmFsdWUpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBgJHsoKDEwMCAtIHZhbHVlKSAvIDEwMCAqIGNpcmN1bWZlcmVuY2UpLnRvRml4ZWQoMyl9cHhgO1xuICAgIHJvb3RTdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKC05MGRlZyknO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgaGVpZ2h0OiBzaXplXG4gICAgfSwgcm9vdFN0eWxlLCBzdHlsZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBcInByb2dyZXNzYmFyXCJcbiAgfSwgcm9vdFByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzU1ZHLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3ZnLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHZpZXdCb3g6IGAke1NJWkUgLyAyfSAke1NJWkUgLyAyfSAke1NJWkV9ICR7U0laRX1gLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmNpcmNsZSxcbiAgICAgICAgc3R5bGU6IGNpcmNsZVN0eWxlLFxuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBjeDogU0laRSxcbiAgICAgICAgY3k6IFNJWkUsXG4gICAgICAgIHI6IChTSVpFIC0gdGhpY2tuZXNzKSAvIDIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2VXaWR0aDogdGhpY2tuZXNzXG4gICAgICB9KVxuICAgIH0pXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ2lyY3VsYXJQcm9ncmVzcy5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgc2hyaW5rIGFuaW1hdGlvbiBpcyBkaXNhYmxlZC5cbiAgICogVGhpcyBvbmx5IHdvcmtzIGlmIHZhcmlhbnQgaXMgYGluZGV0ZXJtaW5hdGVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVNocmluazogY2hhaW5Qcm9wVHlwZXMoUHJvcFR5cGVzLmJvb2wsIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMuZGlzYWJsZVNocmluayAmJiBwcm9wcy52YXJpYW50ICYmIHByb3BzLnZhcmlhbnQgIT09ICdpbmRldGVybWluYXRlJykge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignTVVJOiBZb3UgaGF2ZSBwcm92aWRlZCB0aGUgYGRpc2FibGVTaHJpbmtgIHByb3AgJyArICd3aXRoIGEgdmFyaWFudCBvdGhlciB0aGFuIGBpbmRldGVybWluYXRlYC4gVGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJZiB1c2luZyBhIG51bWJlciwgdGhlIHBpeGVsIHVuaXQgaXMgYXNzdW1lZC5cbiAgICogSWYgdXNpbmcgYSBzdHJpbmcsIHlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIENTUyB1bml0LCBlLmcgJzNyZW0nLlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdGhpY2tuZXNzIG9mIHRoZSBjaXJjbGUuXG4gICAqIEBkZWZhdWx0IDMuNlxuICAgKi9cbiAgdGhpY2tuZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgZm9yIHRoZSBkZXRlcm1pbmF0ZSB2YXJpYW50LlxuICAgKiBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIFVzZSBpbmRldGVybWluYXRlIHdoZW4gdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgdmFsdWUuXG4gICAqIEBkZWZhdWx0ICdpbmRldGVybWluYXRlJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnZGV0ZXJtaW5hdGUnLCAnaW5kZXRlcm1pbmF0ZSddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENpcmN1bGFyUHJvZ3Jlc3M7IiwiLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy1pb3MvYmxvYi9iY2EzNjEwNzQwNTU5NGQ1YjdiMTYyNjVhNWIwZWQ2OThmODVhNWVlL2NvbXBvbmVudHMvRWxldmF0aW9uL3NyYy9VSUNvbG9yJTJCTWF0ZXJpYWxFbGV2YXRpb24ubSNMNjFcbmNvbnN0IGdldE92ZXJsYXlBbHBoYSA9IGVsZXZhdGlvbiA9PiB7XG4gIGxldCBhbHBoYVZhbHVlO1xuICBpZiAoZWxldmF0aW9uIDwgMSkge1xuICAgIGFscGhhVmFsdWUgPSA1LjExOTE2ICogZWxldmF0aW9uICoqIDI7XG4gIH0gZWxzZSB7XG4gICAgYWxwaGFWYWx1ZSA9IDQuNSAqIE1hdGgubG9nKGVsZXZhdGlvbiArIDEpICsgMjtcbiAgfVxuICByZXR1cm4gKGFscGhhVmFsdWUgLyAxMDApLnRvRml4ZWQoMik7XG59O1xuZXhwb3J0IGRlZmF1bHQgZ2V0T3ZlcmxheUFscGhhOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXBlclV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpUGFwZXInLCBzbG90KTtcbn1cbmNvbnN0IHBhcGVyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVBhcGVyJywgWydyb290JywgJ3JvdW5kZWQnLCAnb3V0bGluZWQnLCAnZWxldmF0aW9uJywgJ2VsZXZhdGlvbjAnLCAnZWxldmF0aW9uMScsICdlbGV2YXRpb24yJywgJ2VsZXZhdGlvbjMnLCAnZWxldmF0aW9uNCcsICdlbGV2YXRpb241JywgJ2VsZXZhdGlvbjYnLCAnZWxldmF0aW9uNycsICdlbGV2YXRpb244JywgJ2VsZXZhdGlvbjknLCAnZWxldmF0aW9uMTAnLCAnZWxldmF0aW9uMTEnLCAnZWxldmF0aW9uMTInLCAnZWxldmF0aW9uMTMnLCAnZWxldmF0aW9uMTQnLCAnZWxldmF0aW9uMTUnLCAnZWxldmF0aW9uMTYnLCAnZWxldmF0aW9uMTcnLCAnZWxldmF0aW9uMTgnLCAnZWxldmF0aW9uMTknLCAnZWxldmF0aW9uMjAnLCAnZWxldmF0aW9uMjEnLCAnZWxldmF0aW9uMjInLCAnZWxldmF0aW9uMjMnLCAnZWxldmF0aW9uMjQnXSk7XG5leHBvcnQgZGVmYXVsdCBwYXBlckNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZWxldmF0aW9uXCIsIFwic3F1YXJlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzLCBpbnRlZ2VyUHJvcFR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCBnZXRPdmVybGF5QWxwaGEgZnJvbSAnLi4vc3R5bGVzL2dldE92ZXJsYXlBbHBoYSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lJztcbmltcG9ydCB7IGdldFBhcGVyVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9wYXBlckNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzcXVhcmUsXG4gICAgZWxldmF0aW9uLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgIXNxdWFyZSAmJiAncm91bmRlZCcsIHZhcmlhbnQgPT09ICdlbGV2YXRpb24nICYmIGBlbGV2YXRpb24ke2VsZXZhdGlvbn1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFBhcGVyVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBQYXBlclJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aVBhcGVyJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCAhb3duZXJTdGF0ZS5zcXVhcmUgJiYgc3R5bGVzLnJvdW5kZWQsIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2VsZXZhdGlvbicgJiYgc3R5bGVzW2BlbGV2YXRpb24ke293bmVyU3RhdGUuZWxldmF0aW9ufWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSR2YXJzJG92ZXJsYXlzO1xuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYmFja2dyb3VuZC5wYXBlcixcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5wcmltYXJ5LFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnYm94LXNoYWRvdycpXG4gIH0sICFvd25lclN0YXRlLnNxdWFyZSAmJiB7XG4gICAgYm9yZGVyUmFkaXVzOiB0aGVtZS5zaGFwZS5ib3JkZXJSYWRpdXNcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5kaXZpZGVyfWBcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZWxldmF0aW9uJyAmJiBfZXh0ZW5kcyh7XG4gICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1tvd25lclN0YXRlLmVsZXZhdGlvbl1cbiAgfSwgIXRoZW1lLnZhcnMgJiYgdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnZGFyaycgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogYGxpbmVhci1ncmFkaWVudCgke2FscGhhKCcjZmZmJywgZ2V0T3ZlcmxheUFscGhhKG93bmVyU3RhdGUuZWxldmF0aW9uKSl9LCAke2FscGhhKCcjZmZmJywgZ2V0T3ZlcmxheUFscGhhKG93bmVyU3RhdGUuZWxldmF0aW9uKSl9KWBcbiAgfSwgdGhlbWUudmFycyAmJiB7XG4gICAgYmFja2dyb3VuZEltYWdlOiAoX3RoZW1lJHZhcnMkb3ZlcmxheXMgPSB0aGVtZS52YXJzLm92ZXJsYXlzKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHZhcnMkb3ZlcmxheXNbb3duZXJTdGF0ZS5lbGV2YXRpb25dXG4gIH0pKTtcbn0pO1xuY29uc3QgUGFwZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBQYXBlcihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpUGFwZXInXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIGVsZXZhdGlvbiA9IDEsXG4gICAgICBzcXVhcmUgPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAnZWxldmF0aW9uJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGVsZXZhdGlvbixcbiAgICBzcXVhcmUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgICBpZiAodGhlbWUuc2hhZG93c1tlbGV2YXRpb25dID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSBlbGV2YXRpb24gcHJvdmlkZWQgPFBhcGVyIGVsZXZhdGlvbj17JHtlbGV2YXRpb259fT4gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgdGhlbWUuYCwgYFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBcXGB0aGVtZS5zaGFkb3dzWyR7ZWxldmF0aW9ufV1cXGAgaXMgZGVmaW5lZC5gXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChQYXBlclJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZlxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBQYXBlci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogU2hhZG93IGRlcHRoLCBjb3JyZXNwb25kcyB0byBgZHBgIGluIHRoZSBzcGVjLlxuICAgKiBJdCBhY2NlcHRzIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDI0IGluY2x1c2l2ZS5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZWxldmF0aW9uOiBjaGFpblByb3BUeXBlcyhpbnRlZ2VyUHJvcFR5cGUsIHByb3BzID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlbGV2YXRpb24sXG4gICAgICB2YXJpYW50XG4gICAgfSA9IHByb3BzO1xuICAgIGlmIChlbGV2YXRpb24gPiAwICYmIHZhcmlhbnQgPT09ICdvdXRsaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoYE1VSTogQ29tYmluaW5nIFxcYGVsZXZhdGlvbj17JHtlbGV2YXRpb259fVxcYCB3aXRoIFxcYHZhcmlhbnQ9XCIke3ZhcmlhbnR9XCJcXGAgaGFzIG5vIGVmZmVjdC4gRWl0aGVyIHVzZSBcXGBlbGV2YXRpb249ezB9XFxgIG9yIHVzZSBhIGRpZmZlcmVudCBcXGB2YXJpYW50XFxgLmApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHJvdW5kZWQgY29ybmVycyBhcmUgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzcXVhcmU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAnZWxldmF0aW9uJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydlbGV2YXRpb24nLCAnb3V0bGluZWQnXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFBhcGVyOyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgY3JlYXRlVGhlbWUsIFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5cclxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XHJcbiAgcGFsZXR0ZToge1xyXG4gICAgdHlwZTogXCJsaWdodFwiLFxyXG4gICAgcHJpbWFyeToge1xyXG4gICAgICBtYWluOiBcIiNmZmE3MjZcIixcclxuICAgIH0sXHJcbiAgICBzZWNvbmRhcnk6IHtcclxuICAgICAgbWFpbjogXCIjMTQ3YWZmXCIsXHJcbiAgICB9LFxyXG4gICAgc3VjY2Vzczoge1xyXG4gICAgICBtYWluOiBcIiM0Q0FGNTBcIixcclxuICAgIH0sXHJcbiAgICBub3RDb25uZWN0ZWQ6IHtcclxuICAgICAgbWFpbjogXCIjNzU3NTc1XCIsXHJcbiAgICB9LFxyXG4gICAgbG9hZGluZzoge1xyXG4gICAgICBtYWluOiBcIiNFNjRBMTlcIixcclxuICAgIH0sXHJcbiAgICBzZWxlY3Rvcjoge1xyXG4gICAgICBtYWluOiBcIiMzMjlEOUNcIixcclxuICAgIH0sXHJcbiAgfSxcclxuICB0eXBvZ3JhcGh5OiB7XHJcbiAgICBmb250RmFtaWx5OiBcIlJvYm90b1wiLFxyXG4gIH0sXHJcbn0pO1xyXG5cclxuZnVuY3Rpb24gUm9ib3RpY3NUaGVtZShwcm9wcykge1xyXG4gIHJldHVybiA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9Pntwcm9wcy5jaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+O1xyXG59XHJcblxyXG5Sb2JvdGljc1RoZW1lLnByb3BUeXBlcyA9IHtcclxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBSb2JvdGljc1RoZW1lO1xyXG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQnV0dG9uR3JvdXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tIFwiQG11aS9tYXRlcmlhbC9JY29uQnV0dG9uXCI7XHJcbmltcG9ydCBTY2hvb2xPdXRsaW5lZEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2Nob29sT3V0bGluZWRcIjtcclxuaW1wb3J0IENvZGVPdXRsaW5lZEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29kZU91dGxpbmVkXCI7XHJcbmltcG9ydCBDb21tZW50T3V0bGluZWRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbW1lbnRPdXRsaW5lZFwiO1xyXG5pbXBvcnQgUm9ib3RpY3NUaGVtZSBmcm9tIFwiQ29tcG9uZW50cy9Sb2JvdGljc1RoZW1lXCI7XHJcblxyXG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvYnV0dG9ucy9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uLmNzc1wiO1xyXG5cclxuY29uc3QgRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbiA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8Um9ib3RpY3NUaGVtZT5cclxuICAgICAgPEJ1dHRvbkdyb3VwIGNvbG9yPXtcImxvYWRpbmdcIn0gdmFyaWFudD17XCJjb250YWluZWRcIn0+XHJcbiAgICAgICAge3Byb3BzLnVybCAmJiAoXHJcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBocmVmPXtwcm9wcy51cmx9IHRhcmdldD1cIl9ibGFua1wiIGNvbG9yPVwic2Vjb25kYXJ5XCI+XHJcbiAgICAgICAgICAgIDxTY2hvb2xPdXRsaW5lZEljb24gLz5cclxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9mb3J1bS51bmlib3RpY3Mub3JnL1wiXHJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxyXG4gICAgICAgICAgY29sb3I9XCJzZWNvbmRhcnlcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxDb21tZW50T3V0bGluZWRJY29uIC8+XHJcbiAgICAgICAgPC9JY29uQnV0dG9uPlxyXG4gICAgICA8L0J1dHRvbkdyb3VwPlxyXG4gICAgPC9Sb2JvdGljc1RoZW1lPlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBFeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uO1xyXG4iLCJ2YXIgX2V4Y2x1ZGVkID0gW1wic3JjXCIsIFwiYWx0XCIsIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiwgXCJwb3NpdGlvblwiLCBcImZpdFwiLCBcInN0eWxlXCIsIFwiY2xhc3NOYW1lXCIsIFwic2hvd0xvYWRpbmdcIiwgXCJlcnJvckljb25cIiwgXCJzaGlmdFwiLCBcImRpc3RhbmNlXCIsIFwic2hpZnREdXJhdGlvblwiLCBcImJnQ29sb3JcIiwgXCJ3cmFwcGVyU3R5bGVcIiwgXCJpY29uV3JhcHBlclN0eWxlXCIsIFwid3JhcHBlckNsYXNzTmFtZVwiLCBcImljb25XcmFwcGVyQ2xhc3NOYW1lXCIsIFwiZHVyYXRpb25cIiwgXCJlYXNpbmdcIiwgXCJvbkxvYWRcIiwgXCJvbkVycm9yXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHsgY3JlYXRlU3ZnSWNvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvdXRpbHMnO1xuaW1wb3J0IENpcmN1bGFyUHJvZ3Jlc3MgZnJvbSAnQG11aS9tYXRlcmlhbC9DaXJjdWxhclByb2dyZXNzJztcbnZhciBCcm9rZW5JbWFnZUljb24gPSBjcmVhdGVTdmdJY29uKCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInBhdGhcIiwge1xuICBkOiBcIk0yMSA1djYuNTlsLTIuMjktMi4zYy0uMzktLjM5LTEuMDMtLjM5LTEuNDIgMEwxNCAxMi41OSAxMC43MSA5LjNhLjk5NTkuOTk1OSAwIDAgMC0xLjQxIDBMNiAxMi41OSAzIDkuNThWNWMwLTEuMS45LTIgMi0yaDE0YzEuMSAwIDIgLjkgMiAyem0tMyA2LjQyIDMgMy4wMVYxOWMwIDEuMS0uOSAyLTIgMkg1Yy0xLjEgMC0yLS45LTItMnYtNi41OGwyLjI5IDIuMjljLjM5LjM5IDEuMDIuMzkgMS40MSAwbDMuMy0zLjMgMy4yOSAzLjI5Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGwzLjMtMy4yOHpcIlxufSksICdCcm9rZW5JbWFnZUljb24nKTtcbnZhciBJbWcgPSBzdHlsZWQoJ2ltZycpKHtcbiAgJ0BrZXlmcmFtZXMgbWF0ZXJpYWxpemUnOiB7XG4gICAgJzAlJzoge1xuICAgICAgZmlsdGVyOiAnc2F0dXJhdGUoMjAlKSBjb250cmFzdCg1MCUpIGJyaWdodG5lc3MoMTIwJSknXG4gICAgfSxcbiAgICAnNzUlJzoge1xuICAgICAgZmlsdGVyOiAnc2F0dXJhdGUoNjAlKSBjb250cmFzdCgxMDAlKSBicmlnaHRuZXNzKDEwMCUpJ1xuICAgIH0sXG4gICAgJzEwMCUnOiB7XG4gICAgICBmaWx0ZXI6ICdzYXR1cmF0ZSgxMDAlKSBjb250cmFzdCgxMDAlKSBicmlnaHRuZXNzKDEwMCUpJ1xuICAgIH1cbiAgfVxufSk7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBJbWFnZShwcm9wcykge1xuICB2YXIgX3NoaWZ0U3R5bGVzO1xuXG4gIHZhciBzcmMgPSBwcm9wcy5zcmMsXG4gICAgICBhbHQgPSBwcm9wcy5hbHQsXG4gICAgICBoZWlnaHQgPSBwcm9wcy5oZWlnaHQsXG4gICAgICB3aWR0aCA9IHByb3BzLndpZHRoLFxuICAgICAgcG9zaXRpb24gPSBwcm9wcy5wb3NpdGlvbixcbiAgICAgIGZpdCA9IHByb3BzLmZpdCxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBzaG93TG9hZGluZyA9IHByb3BzLnNob3dMb2FkaW5nLFxuICAgICAgZXJyb3JJY29uID0gcHJvcHMuZXJyb3JJY29uLFxuICAgICAgc2hpZnQgPSBwcm9wcy5zaGlmdCxcbiAgICAgIGRpc3RhbmNlID0gcHJvcHMuZGlzdGFuY2UsXG4gICAgICBzaGlmdER1cmF0aW9uID0gcHJvcHMuc2hpZnREdXJhdGlvbixcbiAgICAgIGJnQ29sb3IgPSBwcm9wcy5iZ0NvbG9yLFxuICAgICAgd3JhcHBlclN0eWxlID0gcHJvcHMud3JhcHBlclN0eWxlLFxuICAgICAgaWNvbldyYXBwZXJTdHlsZSA9IHByb3BzLmljb25XcmFwcGVyU3R5bGUsXG4gICAgICB3cmFwcGVyQ2xhc3NOYW1lID0gcHJvcHMud3JhcHBlckNsYXNzTmFtZSxcbiAgICAgIGljb25XcmFwcGVyQ2xhc3NOYW1lID0gcHJvcHMuaWNvbldyYXBwZXJDbGFzc05hbWUsXG4gICAgICBkdXJhdGlvbiA9IHByb3BzLmR1cmF0aW9uLFxuICAgICAgZWFzaW5nID0gcHJvcHMuZWFzaW5nLFxuICAgICAgb25Mb2FkUHJvcCA9IHByb3BzLm9uTG9hZCxcbiAgICAgIG9uRXJyb3JQcm9wID0gcHJvcHMub25FcnJvcixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICB2YXIgX1JlYWN0JHVzZVN0YXRlID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgICAgbG9hZGVkID0gX1JlYWN0JHVzZVN0YXRlWzBdLFxuICAgICAgc2V0TG9hZGVkID0gX1JlYWN0JHVzZVN0YXRlWzFdO1xuXG4gIHZhciBfUmVhY3QkdXNlU3RhdGUyID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpLFxuICAgICAgZXJyb3IgPSBfUmVhY3QkdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0RXJyb3IgPSBfUmVhY3QkdXNlU3RhdGUyWzFdO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XG4gICAgc2V0TG9hZGVkKHRydWUpO1xuICAgIHNldEVycm9yKGZhbHNlKTtcbiAgICBpZiAoQm9vbGVhbihvbkxvYWRQcm9wKSkgb25Mb2FkUHJvcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XG4gICAgc2V0RXJyb3IodHJ1ZSk7XG4gICAgc2V0TG9hZGVkKGZhbHNlKTtcbiAgICBpZiAoQm9vbGVhbihvbkVycm9yUHJvcCkpIG9uRXJyb3JQcm9wKCk7XG4gIH1cblxuICB2YXIgc2hpZnRTdHlsZXMgPSAoX3NoaWZ0U3R5bGVzID0ge30sIF9zaGlmdFN0eWxlc1tzaGlmdF0gPSBsb2FkZWQgPyAwIDogZGlzdGFuY2UsIF9zaGlmdFN0eWxlcyk7XG4gIHZhciBzdHlsZXMgPSB7XG4gICAgcm9vdDogX2V4dGVuZHMoe1xuICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogYmdDb2xvclxuICAgIH0sIHdyYXBwZXJTdHlsZSksXG4gICAgaW1hZ2U6IF9leHRlbmRzKHtcbiAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIG9iamVjdEZpdDogZml0LFxuICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiAoQm9vbGVhbihzaGlmdCkgPyBzaGlmdCArIFwiLCBcIiA6ICcnKSArIFwib3BhY2l0eVwiLFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiBcIlwiICsgKEJvb2xlYW4oc2hpZnQpID8gKHNoaWZ0RHVyYXRpb24gfHwgZHVyYXRpb24gKiAwLjMpICsgXCJtcywgXCIgOiAnJykgKyBkdXJhdGlvbiAvIDIgKyBcIm1zXCIsXG4gICAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246IGVhc2luZyxcbiAgICAgIG9wYWNpdHk6IGxvYWRlZCA/IDEgOiAwLFxuICAgICAgYW5pbWF0aW9uOiBsb2FkZWQgPyBcIm1hdGVyaWFsaXplIFwiICsgZHVyYXRpb24gKyBcIm1zIDEgXCIgKyBlYXNpbmcgOiAnJ1xuICAgIH0sIEJvb2xlYW4oc2hpZnQpICYmIHNoaWZ0U3R5bGVzLCBzdHlsZSksXG4gICAgaWNvbnM6IF9leHRlbmRzKHtcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBtYXJnaW5MZWZ0OiAnLTEwMCUnLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBvcGFjaXR5OiBsb2FkZWQgPyAwIDogMVxuICAgIH0sIGljb25XcmFwcGVyU3R5bGUpXG4gIH07XG4gIHZhciBzaG93RXJyb3JJY29uID0gdHlwZW9mIGVycm9ySWNvbiAhPT0gJ2Jvb2xlYW4nICYmIGVycm9ySWNvbiB8fCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChCcm9rZW5JbWFnZUljb24sIHtcbiAgICBzdHlsZToge1xuICAgICAgZm9udFNpemU6IDU2LFxuICAgICAgY29sb3I6ICcjYmRiZGJkJ1xuICAgIH1cbiAgfSkgLy8gTVVJIGdyZXlbNDAwXVxuICA7XG4gIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gdHlwZW9mIHNob3dMb2FkaW5nICE9PSAnYm9vbGVhbicgJiYgc2hvd0xvYWRpbmcgfHwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ2lyY3VsYXJQcm9ncmVzcywge1xuICAgIHNpemU6IDU2LFxuICAgIHRoaWNrbmVzczogNlxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBzdHlsZTogc3R5bGVzLnJvb3QsXG4gICAgY2xhc3NOYW1lOiBcIm11aS1pbWFnZS13cmFwcGVyIFwiICsgd3JhcHBlckNsYXNzTmFtZVxuICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbWcsIF9leHRlbmRzKHtcbiAgICBzcmM6IHNyYyxcbiAgICBhbHQ6IGFsdCxcbiAgICBzdHlsZTogc3R5bGVzLmltYWdlLFxuICAgIGNsYXNzTmFtZTogXCJtdWktaW1hZ2UtaW1nIFwiICsgY2xhc3NOYW1lLFxuICAgIG9uTG9hZDogaGFuZGxlTG9hZCxcbiAgICBvbkVycm9yOiBoYW5kbGVFcnJvclxuICB9LCByZXN0KSksIChCb29sZWFuKHNob3dMb2FkaW5nKSB8fCBCb29sZWFuKGVycm9ySWNvbikpICYmIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICBzdHlsZTogc3R5bGVzLmljb25zLFxuICAgIGNsYXNzTmFtZTogXCJtdWktaW1hZ2UtaWNvbldyYXBwZXIgXCIgKyBpY29uV3JhcHBlckNsYXNzTmFtZVxuICB9LCBCb29sZWFuKGVycm9ySWNvbikgJiYgZXJyb3IgJiYgc2hvd0Vycm9ySWNvbiwgQm9vbGVhbihzaG93TG9hZGluZykgJiYgIWVycm9yICYmICFsb2FkZWQgJiYgbG9hZGluZ0luZGljYXRvcikpO1xufVxuSW1hZ2UuZGVmYXVsdFByb3BzID0ge1xuICBhbHQ6ICcnLFxuICBoZWlnaHQ6ICcxMDAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIGZpdDogJ2NvdmVyJyxcbiAgc2hvd0xvYWRpbmc6IGZhbHNlLFxuICBlcnJvckljb246IHRydWUsXG4gIHNoaWZ0OiBmYWxzZSxcbiAgZGlzdGFuY2U6IDEwMCxcbiAgc2hpZnREdXJhdGlvbjogbnVsbCxcbiAgYmdDb2xvcjogJ2luaGVyaXQnLFxuICBkdXJhdGlvbjogMzAwMCxcbiAgZWFzaW5nOiAnY3ViaWMtYmV6aWVyKDAuNywgMCwgMC42LCAxKScsXG4gIC8vIFwiaGVhdnkgbW92ZVwiIGZyb20gaHR0cHM6Ly9zcHJhd2xlZG9jdG9wdXMuY29tL2Vhc2luZy9cbiAgY2xhc3NOYW1lOiAnJyxcbiAgd3JhcHBlckNsYXNzTmFtZTogJycsXG4gIGljb25XcmFwcGVyQ2xhc3NOYW1lOiAnJ1xufTtcbkltYWdlLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHtcbiAgc3JjOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGFsdDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGVpZ2h0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIHdpZHRoOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNob3dMb2FkaW5nOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm5vZGVdKSxcbiAgZXJyb3JJY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm5vZGVdKSxcbiAgc2hpZnQ6IFByb3BUeXBlcy5vbmVPZihbZmFsc2UsIG51bGwsICd0b3AnLCAnYm90dG9tJywgJ2xlZnQnLCAncmlnaHQnXSksXG4gIGRpc3RhbmNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIHNoaWZ0RHVyYXRpb246IFByb3BUeXBlcy5udW1iZXIsXG4gIGJnQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHdyYXBwZXJTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgaWNvbldyYXBwZXJTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgd3JhcHBlckNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaWNvbldyYXBwZXJDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGR1cmF0aW9uOiBQcm9wVHlwZXMubnVtYmVyLFxuICBlYXNpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uTG9hZDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICBwb3NpdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnc3RhdGljJywgJ3JlbGF0aXZlJywgJ2Fic29sdXRlJywgJ2ZpeGVkJywgJ3N0aWNreScsICdpbmhlcml0JywgJ2luaXRpYWwnLCAncmV2ZXJ0JywgJ3Vuc2V0J10pLFxuICBmaXQ6IFByb3BUeXBlcy5vbmVPZihbJ2NvbnRhaW4nLCAnY292ZXInLCAnZmlsbCcsICdub25lJywgJ3NjYWxlLWRvd24nLCAnaW5oZXJpdCcsICdpbml0aWFsJywgJ3JldmVydCcsICd1bnNldCddKVxufSA6IHt9OyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgQXBwQmFyIGZyb20gXCJAbXVpL21hdGVyaWFsL0FwcEJhclwiO1xyXG5pbXBvcnQgVG9vbGJhciBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sYmFyXCI7XHJcbmltcG9ydCBJbWFnZSBmcm9tIFwibXVpLWltYWdlXCI7XHJcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XHJcbmltcG9ydCBSb2JvdGljc1RoZW1lIGZyb20gXCJDb21wb25lbnRzL1JvYm90aWNzVGhlbWUuanNcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgeyB1c2VVbmxvYWQgfSBmcm9tIFwiSG9va3MvdXNlVW5sb2FkXCI7XHJcbmltcG9ydCBFeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uIGZyb20gXCIuLi9idXR0b25zL0V4ZXJjaXNlVGhlb3J5Rm9ydW1CdXR0b25cIjtcclxuaW1wb3J0IEFwcEluZGljYXRvciBmcm9tIFwiLi4vdmlzdWFsaXplcnMvQXBwSW5kaWNhdG9yXCI7XHJcbmltcG9ydCBDb25uZWN0aW9uSW5kaWNhdG9yIGZyb20gXCIuLi92aXN1YWxpemVycy9Db25uZWN0aW9uSW5kaWNhdG9yXCI7XHJcbmltcG9ydCBWaXN1YWxpemF0aW9uSW5kaWNhdG9yIGZyb20gXCIuLi92aXN1YWxpemVycy9WaXN1YWxpemF0aW9uSW5kaWNhdG9yXCI7XHJcbmltcG9ydCB7bWVyZ2V9IGZyb20gXCJsb2Rhc2hcIjtcclxuXHJcbmZ1bmN0aW9uIE1haW5BcHBCYXIocHJvcHMpIHtcclxuICBjb25zdCBtYXhDb25uZWN0aW9uQXR0ZW1wdHMgPSAzO1xyXG4gIGxldCBjb25uZWN0aW9uQXR0ZW1wdHMgPSAwO1xyXG5cclxuICBjb25zdCBjb25uZWN0V2l0aFJldHJ5ID0gKCkgPT4ge1xyXG4gICAgaWYgKGNvbm5lY3Rpb25BdHRlbXB0cyA+PSBtYXhDb25uZWN0aW9uQXR0ZW1wdHMpIHtcclxuICAgICAgUm9ib3RpY3NSZWFjdENvbXBvbmVudHMuTWVzc2FnZVN5c3RlbS5BbGVydC5zaG93QWxlcnQoXHJcbiAgICAgICAgXCJFcnJvciBjb25uZWN0aW5nLCB0cnkgcmVsb2FkaW5nIHRoZSBwYWdlLlwiLFxyXG4gICAgICAgIFwiZXJyb3JcIixcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlbG9hZGluZ1wiKTtcclxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiUkVMT0FEXCJcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc1JlYWN0Q29tcG9uZW50cy5NZXNzYWdlU3lzdGVtLkxvYWRpbmcuc2hvd0xvYWRpbmcoXHJcbiAgICAgIFwiQ29ubmVjdGluZyBhbmQgbGF1bmNoaW5nIHRoZSBleGVyY2lzZS5cIlxyXG4gICAgKTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyXHJcbiAgICAgIC5jb25uZWN0KClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImV4ZXJjaXNlLWNvbmZpZ1wiKS50ZXh0Q29udGVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmFyIHRvb2xzX2NvbmZpZ19iYXNlID0gY29uZmlnWzBdLnRvb2xzX2NvbmZpZ1xyXG4gICAgICAgIHZhciB0b29sc19jb25maWdfd29ybGQgPSBjb25maWdbMF0ud29ybGQudG9vbHNfY29uZmlnXHJcbiAgICAgICAgY29uc3QgdG9vbHNfY29uZmlnID0gbWVyZ2UodG9vbHNfY29uZmlnX2Jhc2UsIHRvb2xzX2NvbmZpZ193b3JsZClcclxuXHJcbiAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlclxyXG4gICAgICAgICAgLmxhdW5jaFdvcmxkKHsgd29ybGQ6IGNvbmZpZ1swXS53b3JsZCwgcm9ib3Q6IGNvbmZpZ1swXS5yb2JvdCB9KVxyXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyXHJcbiAgICAgICAgICAgICAgLnByZXBhcmVUb29scyh7IHRvb2xzOiBjb25maWdbMF0udG9vbHMsIGNvbmZpZzogdG9vbHNfY29uZmlnfSlcclxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5NZXNzYWdlU3lzdGVtLkxvYWRpbmcuaGlkZUxvYWRpbmcoKTtcclxuICAgICAgICAgICAgICAgIFJvYm90aWNzUmVhY3RDb21wb25lbnRzLk1lc3NhZ2VTeXN0ZW0uQWxlcnQuc2hvd0FsZXJ0KFxyXG4gICAgICAgICAgICAgICAgICBcIkV4ZXJjaXNlIGxvYWRlZCBzdWNjZXNzZnVsbHkuXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwic3VjY2Vzc1wiXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgICBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5NZXNzYWdlU3lzdGVtLkFsZXJ0LnNob3dBbGVydChcclxuICAgICAgICAgICAgICBlLmRhdGEubWVzc2FnZSxcclxuICAgICAgICAgICAgICBcImVycm9yXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAvLyBDb25uZWN0aW9uIGZhaWxlZCwgdHJ5IGFnYWluIGFmdGVyIGEgZGVsYXlcclxuICAgICAgICBjb25uZWN0aW9uQXR0ZW1wdHMrKztcclxuICAgICAgICBzZXRUaW1lb3V0KGNvbm5lY3RXaXRoUmV0cnksIDIwMDApO1xyXG4gICAgICB9KTtcclxuICB9O1xyXG5cclxuICBjb25zdCBkaXNjb25uZWN0ID0gKCkgPT4ge1xyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5kaXNjb25uZWN0KCk7XHJcbiAgfTtcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIFJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLnN1c2NyaWJlT25Mb2FkKCgpID0+IHtcclxuICAgICAgY29ubmVjdFdpdGhSZXRyeSgpO1xyXG4gICAgfSk7XHJcbiAgfSwgW10pO1xyXG5cclxuICB1c2VVbmxvYWQoKCkgPT4ge1xyXG4gICAgZGlzY29ubmVjdCgpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPFJvYm90aWNzVGhlbWU+XHJcbiAgICAgIDxBcHBCYXIgcG9zaXRpb249XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgIDxUb29sYmFyXHJcbiAgICAgICAgICBzeD17e1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcclxuICAgICAgICAgICAgZmxleFdyYXA6IFwid3JhcFwiLFxyXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxCb3hcclxuICAgICAgICAgICAgc3g9e3tcclxuICAgICAgICAgICAgICBkaXNwbGF5OiBcImlubGluZS1mbGV4XCIsXHJcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxyXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwOi8vMTI3LjAuMC4xOjcxNjQvZXhlcmNpc2VzL1wiPlxyXG4gICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgIHNyYz1cIi9zdGF0aWMvZXhlcmNpc2VzL2Fzc2V0cy9pbWcvbG9nby5naWZcIlxyXG4gICAgICAgICAgICAgICAgZml0PXtcImNvdmVyXCJ9XHJcbiAgICAgICAgICAgICAgICB3aWR0aD17NTB9XHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgPC9Cb3g+XHJcbiAgICAgICAgICA8Qm94XHJcbiAgICAgICAgICAgIHN4PXt7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXHJcbiAgICAgICAgICAgICAgZ2FwOiBcIjEwcHhcIixcclxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiBcIjEwcHhcIixcclxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8Q29ubmVjdGlvbkluZGljYXRvcj48L0Nvbm5lY3Rpb25JbmRpY2F0b3I+XHJcbiAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgPFZpc3VhbGl6YXRpb25JbmRpY2F0b3I+PC9WaXN1YWxpemF0aW9uSW5kaWNhdG9yPlxyXG4gICAgICAgICAgICA8QXBwSW5kaWNhdG9yIG5hbWU9e3Byb3BzLmV4ZXJjaXNlTmFtZX0+PC9BcHBJbmRpY2F0b3I+XHJcbiAgICAgICAgICA8L0JveD5cclxuXHJcbiAgICAgICAgICA8Qm94PlxyXG4gICAgICAgICAgICA8RXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvblxyXG4gICAgICAgICAgICAgIHVybD17cHJvcHMudXJsfVxyXG4gICAgICAgICAgICA+PC9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uPlxyXG4gICAgICAgICAgPC9Cb3g+XHJcbiAgICAgICAgPC9Ub29sYmFyPlxyXG4gICAgICA8L0FwcEJhcj5cclxuICAgIDwvUm9ib3RpY3NUaGVtZT5cclxuICApO1xyXG59XHJcblxyXG5NYWluQXBwQmFyLnByb3BUeXBlcyA9IHtcclxuICBleGVyY2lzZU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNYWluQXBwQmFyO1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHksIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvSW5kaWNhdG9yLmNzc1wiO1xyXG5cclxuZnVuY3Rpb24gQXBwSW5kaWNhdG9yKHByb3BzKSB7XHJcbiAgY29uc3QgW3J1bm5pbmcsIHNldFJ1bm5pbmddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZiAobWVzc2FnZS5kYXRhLnN0YXRlID09PSBcImFwcGxpY2F0aW9uX3J1bm5pbmdcIikge1xyXG4gICAgICAgIHNldFJ1bm5pbmcodHJ1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2V0UnVubmluZyhmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxUb29sdGlwIHRpdGxlPVwiQXBwbGljYXRpb24gUnVubmluZ1wiPlxyXG4gICAgICA8Qm94IGNsYXNzTmFtZT17cnVubmluZyA/IFwicmVhZHlcIiA6IFwid2FpdGluZ1wifT5cclxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0aXRsZVwiPkFwcGxpY2F0aW9uPC9wPlxyXG4gICAgICAgIDxUeXBvZ3JhcGh5IHN4PXt7IGZvbnRTaXplOiBcIjAuOHJlbVwiIH19IGNsYXNzTmFtZT1cIndvcmRcIj5cclxuICAgICAgICAgIHtwcm9wcy5uYW1lfVxyXG4gICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgPC9Cb3g+XHJcbiAgICA8L1Rvb2x0aXA+XHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQXBwSW5kaWNhdG9yO1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHksIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvSW5kaWNhdG9yLmNzc1wiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5mdW5jdGlvbiBDb25uZWN0aW9uSW5kaWNhdG9yKCkge1xyXG4gIGNvbnN0IFtyYWRpVmVyc2lvbiwgc2V0UmFkaVZlcnNpb25dID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW2Nvbm5lY3RlZCwgc2V0Q29ubmVjdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJjb25uZWN0ZWRcIikge1xyXG4gICAgICAgIHNldENvbm5lY3RlZCh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgc2V0UmFkaVZlcnNpb24obWVzc2FnZS5kYXRhLnJvYm90aWNzX2JhY2tlbmRfdmVyc2lvbik7XHJcbiAgICB9O1xyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdXNjcmlicmVPbmNlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuSU5UUk9TUEVDVElPTl0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxUb29sdGlwIHRpdGxlPVwiUm9ib3RpY3MgQmFja2VuZFwiPlxyXG4gICAgICA8Qm94IGNsYXNzTmFtZT17Y29ubmVjdGVkID8gXCJyZWFkeVwiIDogXCJ3YWl0aW5nXCJ9PlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRpdGxlXCI+Um9ib3RpY3MgQmFja2VuZDwvcD5cclxuICAgICAgICA8VHlwb2dyYXBoeSBzeD17eyBmb250U2l6ZTogXCIwLjhyZW1cIiB9fSBjbGFzc05hbWU9XCJ3b3JkXCI+XHJcbiAgICAgICAgICB7cmFkaVZlcnNpb259XHJcbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICA8L0JveD5cclxuICAgIDwvVG9vbHRpcD5cclxuICApO1xyXG59XHJcblxyXG5Db25uZWN0aW9uSW5kaWNhdG9yLnByb3BUeXBlcyA9IHtcclxuICBleGVyY2lzZU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBDb25uZWN0aW9uSW5kaWNhdG9yO1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHksIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvSW5kaWNhdG9yLmNzc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVmlzdWFsaXphdGlvbkluZGljYXRvcihwcm9wcykge1xyXG4gIGNvbnN0IFt2aXN1YWxpemF0aW9uUmVhZHksIHNldFZpc3VhbGl6YXRpb25SZWFkeV0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEuc3RhdGUgPT09IFwidG9vbHNfcmVhZHlcIikge1xyXG4gICAgICAgIHNldFZpc3VhbGl6YXRpb25SZWFkeSh0cnVlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxUb29sdGlwIHRpdGxlPVwiUm9ib3RpY3MgQmFja2VuZFwiPlxyXG4gICAgICA8Qm94IGNsYXNzTmFtZT17dmlzdWFsaXphdGlvblJlYWR5ID8gXCJyZWFkeVwiIDogXCJ3YWl0aW5nXCJ9PlxyXG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRpdGxlXCI+R1VJPC9wPlxyXG4gICAgICAgIDxUeXBvZ3JhcGh5IHN4PXt7IGZvbnRTaXplOiBcIjAuOHJlbVwiIH19IGNsYXNzTmFtZT1cIndvcmRcIj5cclxuICAgICAgICAgIHt2aXN1YWxpemF0aW9uUmVhZHkgPyBcInJlYWR5XCIgOiBcIndhaXRpbmdcIn1cclxuICAgICAgICA8L1R5cG9ncmFwaHk+XHJcbiAgICAgIDwvQm94PlxyXG4gICAgPC9Ub29sdGlwPlxyXG4gICk7XHJcbn1cclxuIiwiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmV4cG9ydCBjb25zdCB1c2VVbmxvYWQgPSAoZm4pID0+IHtcclxuICBjb25zdCBjYiA9IHVzZVJlZihmbik7XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBvblVubG9hZCA9IGNiLmN1cnJlbnQ7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCBvblVubG9hZCk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCBvblVubG9hZCk7XHJcbiAgICB9O1xyXG4gIH0sIFtjYl0pO1xyXG59O1xyXG4iXSwibmFtZXMiOlsiZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl8iLCJ0IiwiY2lyY3VsYXJSb3RhdGVLZXlmcmFtZSIsImNpcmN1bGFyRGFzaEtleWZyYW1lIiwiQ2lyY3VsYXJQcm9ncmVzc1Jvb3QiLCJzdHlsZWQiLCJuYW1lIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsIm93bmVyU3RhdGUiLCJyb290IiwidmFyaWFudCIsImNhcGl0YWxpemUiLCJjb2xvciIsInRoZW1lIiwiZGlzcGxheSIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsInZhcnMiLCJwYWxldHRlIiwibWFpbiIsIkNpcmN1bGFyUHJvZ3Jlc3NTVkciLCJzdmciLCJDaXJjdWxhclByb2dyZXNzQ2lyY2xlIiwiY2lyY2xlIiwiZGlzYWJsZVNocmluayIsImNpcmNsZURpc2FibGVTaHJpbmsiLCJzdHJva2UiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0IiwiaW5Qcm9wcyIsInJlZiIsInVzZVRoZW1lUHJvcHMiLCJjbGFzc05hbWUiLCJzaXplIiwic3R5bGUiLCJ0aGlja25lc3MiLCJ2YWx1ZSIsIm90aGVyIiwiY2xhc3NlcyIsInNsb3RzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImNpcmNsZVN0eWxlIiwicm9vdFN0eWxlIiwicm9vdFByb3BzIiwiY2lyY3VtZmVyZW5jZSIsIk1hdGgiLCJQSSIsInRvRml4ZWQiLCJyb3VuZCIsInRyYW5zZm9ybSIsIndpZHRoIiwiaGVpZ2h0Iiwicm9sZSIsImNoaWxkcmVuIiwidmlld0JveCIsImN4IiwiY3kiLCJyIiwiZmlsbCIsInN0cm9rZVdpZHRoIiwiZWxldmF0aW9uIiwiYWxwaGFWYWx1ZSIsImxvZyIsImdldFBhcGVyVXRpbGl0eUNsYXNzIiwiUGFwZXJSb290Iiwic3F1YXJlIiwicm91bmRlZCIsIl90aGVtZSR2YXJzJG92ZXJsYXlzIiwiYmFja2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZCIsInBhcGVyIiwidGV4dCIsInByaW1hcnkiLCJib3JkZXJSYWRpdXMiLCJzaGFwZSIsImJvcmRlciIsImRpdmlkZXIiLCJib3hTaGFkb3ciLCJzaGFkb3dzIiwibW9kZSIsImJhY2tncm91bmRJbWFnZSIsIm92ZXJsYXlzIiwiY29tcG9uZW50IiwiYXMiLCJjcmVhdGVUaGVtZSIsInR5cGUiLCJzZWNvbmRhcnkiLCJzdWNjZXNzIiwibm90Q29ubmVjdGVkIiwibG9hZGluZyIsInNlbGVjdG9yIiwidHlwb2dyYXBoeSIsImZvbnRGYW1pbHkiLCJSb2JvdGljc1RoZW1lIiwiX2pzeCIsIlRoZW1lUHJvdmlkZXIiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJfanN4cyIsIkJ1dHRvbkdyb3VwIiwidXJsIiwiSWNvbkJ1dHRvbiIsImhyZWYiLCJ0YXJnZXQiLCJTY2hvb2xPdXRsaW5lZEljb24iLCJDb21tZW50T3V0bGluZWRJY29uIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJiaW5kIiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwidGhpcyIsIkJyb2tlbkltYWdlSWNvbiIsImNyZWF0ZVN2Z0ljb24iLCJkIiwiSW1nIiwiZmlsdGVyIiwiX3NoaWZ0U3R5bGVzIiwic3JjIiwiYWx0IiwicG9zaXRpb24iLCJmaXQiLCJzaG93TG9hZGluZyIsImVycm9ySWNvbiIsInNoaWZ0IiwiZGlzdGFuY2UiLCJzaGlmdER1cmF0aW9uIiwiYmdDb2xvciIsIndyYXBwZXJTdHlsZSIsImljb25XcmFwcGVyU3R5bGUiLCJ3cmFwcGVyQ2xhc3NOYW1lIiwiaWNvbldyYXBwZXJDbGFzc05hbWUiLCJkdXJhdGlvbiIsImVhc2luZyIsIm9uTG9hZFByb3AiLCJvbkxvYWQiLCJvbkVycm9yUHJvcCIsIm9uRXJyb3IiLCJyZXN0IiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwia2V5cyIsImluZGV4T2YiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsIl9SZWFjdCR1c2VTdGF0ZSIsImxvYWRlZCIsInNldExvYWRlZCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJlcnJvciIsInNldEVycm9yIiwic2hpZnRTdHlsZXMiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJpbWFnZSIsIm9iamVjdEZpdCIsInRyYW5zaXRpb25Qcm9wZXJ0eSIsIkJvb2xlYW4iLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJ0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCJvcGFjaXR5IiwiYW5pbWF0aW9uIiwiaWNvbnMiLCJtYXJnaW5MZWZ0Iiwic2hvd0Vycm9ySWNvbiIsImZvbnRTaXplIiwibG9hZGluZ0luZGljYXRvciIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJkZWZhdWx0UHJvcHMiLCJNYWluQXBwQmFyIiwiY29ubmVjdGlvbkF0dGVtcHRzIiwiY29ubmVjdFdpdGhSZXRyeSIsIlJvYm90aWNzUmVhY3RDb21wb25lbnRzIiwiTWVzc2FnZVN5c3RlbSIsIkFsZXJ0Iiwic2hvd0FsZXJ0IiwiY29uc29sZSIsIndpbmRvdyIsImxvY2F0aW9uIiwicmVsb2FkIiwiTG9hZGluZyIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwiY29ubmVjdCIsInRoZW4iLCJjb25maWciLCJKU09OIiwicGFyc2UiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidGV4dENvbnRlbnQiLCJ0b29sc19jb25maWdfYmFzZSIsInRvb2xzX2NvbmZpZyIsInRvb2xzX2NvbmZpZ193b3JsZCIsIndvcmxkIiwibWVyZ2UiLCJsYXVuY2hXb3JsZCIsInJvYm90IiwicHJlcGFyZVRvb2xzIiwidG9vbHMiLCJoaWRlTG9hZGluZyIsImUiLCJkYXRhIiwibWVzc2FnZSIsInNldFRpbWVvdXQiLCJSZWFjdCIsInN1c2NyaWJlT25Mb2FkIiwidXNlVW5sb2FkIiwiZGlzY29ubmVjdCIsIkFwcEJhciIsIlRvb2xiYXIiLCJzeCIsImZsZXhXcmFwIiwiQm94IiwiZ2FwIiwiQ29ubmVjdGlvbkluZGljYXRvciIsIlZpc3VhbGl6YXRpb25JbmRpY2F0b3IiLCJBcHBJbmRpY2F0b3IiLCJleGVyY2lzZU5hbWUiLCJFeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uIiwiX3VzZVN0YXRlMiIsInVzZVN0YXRlIiwicnVubmluZyIsInNldFJ1bm5pbmciLCJ1c2VFZmZlY3QiLCJjYWxsYmFjayIsInN0YXRlIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiU1RBVEVfQ0hBTkdFRCIsInVuc3Vic2NyaWJlIiwiVG9vbHRpcCIsInRpdGxlIiwiVHlwb2dyYXBoeSIsIl9zbGljZWRUb0FycmF5IiwicmFkaVZlcnNpb24iLCJzZXRSYWRpVmVyc2lvbiIsIl91c2VTdGF0ZTQiLCJjb25uZWN0ZWQiLCJzZXRDb25uZWN0ZWQiLCJzdXNjcmlicmVPbmNlIiwiSU5UUk9TUEVDVElPTiIsInJvYm90aWNzX2JhY2tlbmRfdmVyc2lvbiIsInZpc3VhbGl6YXRpb25SZWFkeSIsInNldFZpc3VhbGl6YXRpb25SZWFkeSIsImZuIiwiY2IiLCJ1c2VSZWYiLCJvblVubG9hZCIsImN1cnJlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5801.e8465e70.js b/react_frontend/static/react_frontend/js/5801.e8465e70.js new file mode 100644 index 000000000..f19e09ba0 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5801.e8465e70.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5801],{4719:(e,t,n)=>{n.d(t,{A:()=>l});var a=n(7413),r=n(9071),o=n(6544),s=n(8312);const i=(0,o.A)(),l=(0,a.A)({themeId:s.A,defaultTheme:i,defaultClassName:"MuiBox-root",generateClassName:r.A.generate})},538:(e,t,n)=>{n.d(t,{A:()=>x});var a=n(8587),r=n(8168),o=n(6540),s=n(53),i=n(5659),l=n(4279),c=n(7577);const u=e=>{let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(t/100).toFixed(2)};var d=n(4409),v=n(8413),f=n(1609);function A(e){return(0,f.A)("MuiPaper",e)}(0,v.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var p=n(4848);const m=["className","component","elevation","square","variant"],h=(0,c.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t[`elevation${n.elevation}`]]}})((({theme:e,ownerState:t})=>{var n;return(0,r.A)({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!t.square&&{borderRadius:e.shape.borderRadius},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.divider}`},"elevation"===t.variant&&(0,r.A)({boxShadow:(e.vars||e).shadows[t.elevation]},!e.vars&&"dark"===e.palette.mode&&{backgroundImage:`linear-gradient(${(0,l.X4)("#fff",u(t.elevation))}, ${(0,l.X4)("#fff",u(t.elevation))})`},e.vars&&{backgroundImage:null==(n=e.vars.overlays)?void 0:n[t.elevation]}))})),x=o.forwardRef((function(e,t){const n=(0,d.A)({props:e,name:"MuiPaper"}),{className:o,component:l="div",elevation:c=1,square:u=!1,variant:v="elevation"}=n,f=(0,a.A)(n,m),x=(0,r.A)({},n,{component:l,elevation:c,square:u,variant:v}),g=(e=>{const{square:t,elevation:n,variant:a,classes:r}=e,o={root:["root",a,!t&&"rounded","elevation"===a&&`elevation${n}`]};return(0,i.A)(o,A,r)})(x);return(0,p.jsx)(h,(0,r.A)({as:l,ownerState:x,className:(0,s.A)(g.root,o),ref:t},f))}))},1159:(e,t,n)=>{n.d(t,{A:()=>a});const a=n(2501).A},1668:(e,t,n)=>{n.d(t,{A:()=>a});const a=n(4661).A},7413:(e,t,n)=>{n.d(t,{A:()=>f});var a=n(8168),r=n(8587),o=n(6540),s=n(53),i=n(9359),l=n(3571),c=n(9599),u=n(2858),d=n(4848);const v=["className","component"];function f(e={}){const{themeId:t,defaultTheme:n,defaultClassName:f="MuiBox-root",generateClassName:A}=e,p=(0,i.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.A);return o.forwardRef((function(e,o){const i=(0,u.A)(n),l=(0,c.A)(e),{className:m,component:h="div"}=l,x=(0,r.A)(l,v);return(0,d.jsx)(p,(0,a.A)({as:h,ref:o,className:(0,s.A)(m,A?A(f):f),theme:t&&i[t]||i},x))}))}},9599:(e,t,n)=>{n.d(t,{A:()=>c});var a=n(8168),r=n(8587),o=n(3272),s=n(4188);const i=["sx"],l=e=>{var t,n;const a={systemProps:{},otherProps:{}},r=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:s.A;return Object.keys(e).forEach((t=>{r[t]?a.systemProps[t]=e[t]:a.otherProps[t]=e[t]})),a};function c(e){const{sx:t}=e,n=(0,r.A)(e,i),{systemProps:s,otherProps:c}=l(n);let u;return u=Array.isArray(t)?[s,...t]:"function"==typeof t?(...e)=>{const n=t(...e);return(0,o.Q)(n)?(0,a.A)({},s,n):s}:(0,a.A)({},s,t),(0,a.A)({},c,{sx:u})}},2325:(e,t,n)=>{function a(e){return e&&e.ownerDocument||document}n.d(t,{A:()=>a})},2501:(e,t,n)=>{n.d(t,{A:()=>r});var a=n(6540);function r({controlled:e,default:t,name:n,state:r="value"}){const{current:o}=a.useRef(void 0!==e),[s,i]=a.useState(t);return[o?e:s,a.useCallback((e=>{o||i(e)}),[])]}},4661:(e,t,n)=>{var a;n.d(t,{A:()=>i});var r=n(6540);let o=0;const s=(a||(a=n.t(r,2)))["useId".toString()];function i(e){if(void 0!==s){const t=s();return null!=e?e:t}return function(e){const[t,n]=r.useState(e),a=e||t;return r.useEffect((()=>{null==t&&(o+=1,n(`mui-${o}`))}),[t]),a}(e)}},2230:(e,t,n)=>{n.r(t),n.d(t,{default:()=>u}),n(6540);var a=n(6544),r=n(5793),o=n(5556),s=n.n(o),i=n(4848),l=(0,a.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function c(e){return(0,i.jsx)(r.A,{theme:l,children:e.children})}c.propTypes={children:s().node};const u=c},7710:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c}),n(6540);var a=n(833),r=n(1641),o=n(9463),s=n(6730),i=n(2230),l=n(4848);const c=function(e){return(0,l.jsx)(i.default,{children:(0,l.jsxs)(a.A,{color:"loading",variant:"contained",children:[e.url&&(0,l.jsx)(r.A,{href:e.url,target:"_blank",color:"secondary",children:(0,l.jsx)(o.A,{})}),(0,l.jsx)(r.A,{href:"https://forum.unibotics.org/",target:"_blank",color:"secondary",children:(0,l.jsx)(s.A,{})})]})})}},3305:(e,t,n)=>{n.r(t),n.d(t,{default:()=>v});var a=n(9828),r=n(8532),o=n(4719),s=n(2230),i=n(5556),l=n.n(i),c=n(7710),u=n(4848);function d(e){return(0,u.jsx)(s.default,{children:(0,u.jsx)(a.A,{position:"relative",children:(0,u.jsxs)(r.A,{sx:{display:"flex",flexWrap:"wrap",justifyContent:"space-between"},children:[(0,u.jsx)(o.A,{sx:{display:"inline-flex",justifyContent:"space-between",alignItems:"center"},children:(0,u.jsx)("a",{href:"http://127.0.0.1:7164/exercises/",children:(0,u.jsx)("img",{src:"/static/exercises/assets/img/logo.gif",fit:"cover",width:50})})}),(0,u.jsx)(o.A,{children:(0,u.jsx)(c.default,{url:e.url})})]})})})}d.propTypes={exerciseName:l().string};const v=d}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFXaEgsR0FDbEIsT0FDRW1HLEVBQUFBLEVBQUFBLEtBQUNELEVBQUFBLFFBQWEsQ0FBQUcsVUFDWkYsRUFBQUEsRUFBQUEsS0FBQ2MsRUFBQUEsRUFBTSxDQUFDQyxTQUFTLFdBQVViLFVBQ3pCRyxFQUFBQSxFQUFBQSxNQUFDVyxFQUFBQSxFQUFPLENBQ056RCxHQUFJLENBQ0YwRCxRQUFTLE9BQ1RDLFNBQVUsT0FDVkMsZUFBZ0IsaUJBQ2hCakIsU0FBQSxFQUVGRixFQUFBQSxFQUFBQSxLQUFDb0IsRUFBQUEsRUFBRyxDQUNGN0QsR0FBSSxDQUNGMEQsUUFBUyxjQUNURSxlQUFnQixnQkFDaEJFLFdBQVksVUFDWm5CLFVBRUZGLEVBQUFBLEVBQUFBLEtBQUEsS0FBR1MsS0FBSyxtQ0FBa0NQLFVBQ3hDRixFQUFBQSxFQUFBQSxLQUFBLE9BQ0VzQixJQUFJLHdDQUNKQyxJQUFLLFFBQ0xDLE1BQU8sVUFJYnhCLEVBQUFBLEVBQUFBLEtBQUNvQixFQUFBQSxFQUFHLENBQUFsQixVQUNGRixFQUFBQSxFQUFBQSxLQUFDeUIsRUFBQUEsUUFBeUIsQ0FDeEJsQixJQUFLMUcsRUFBTTBHLGNBT3pCLENBRUFNLEVBQVdWLFVBQVksQ0FDckJ1QixhQUFjdEIsSUFBQUEsUUFHaEIsUyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQm94L0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9nZXRPdmVybGF5QWxwaGEuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9QYXBlci9wYXBlckNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9QYXBlci9QYXBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VJZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3JlYXRlQm94LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zdHlsZUZ1bmN0aW9uU3gvZXh0ZW5kU3hQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyRG9jdW1lbnQvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VDb250cm9sbGVkL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlSWQvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9Sb2JvdGljc1RoZW1lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9FeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvbGF5b3V0X2NvbXBvbmVudHMvRW1wdHlBcHBCYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjcmVhdGVCb3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJy4uL2NsYXNzTmFtZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuY29uc3QgZGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCh7XG4gIHRoZW1lSWQ6IFRIRU1FX0lELFxuICBkZWZhdWx0VGhlbWUsXG4gIGRlZmF1bHRDbGFzc05hbWU6ICdNdWlCb3gtcm9vdCcsXG4gIGdlbmVyYXRlQ2xhc3NOYW1lOiBDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGVcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsIi8vIEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRlcmlhbC1jb21wb25lbnRzL21hdGVyaWFsLWNvbXBvbmVudHMtaW9zL2Jsb2IvYmNhMzYxMDc0MDU1OTRkNWI3YjE2MjY1YTViMGVkNjk4Zjg1YTVlZS9jb21wb25lbnRzL0VsZXZhdGlvbi9zcmMvVUlDb2xvciUyQk1hdGVyaWFsRWxldmF0aW9uLm0jTDYxXG5jb25zdCBnZXRPdmVybGF5QWxwaGEgPSBlbGV2YXRpb24gPT4ge1xuICBsZXQgYWxwaGFWYWx1ZTtcbiAgaWYgKGVsZXZhdGlvbiA8IDEpIHtcbiAgICBhbHBoYVZhbHVlID0gNS4xMTkxNiAqIGVsZXZhdGlvbiAqKiAyO1xuICB9IGVsc2Uge1xuICAgIGFscGhhVmFsdWUgPSA0LjUgKiBNYXRoLmxvZyhlbGV2YXRpb24gKyAxKSArIDI7XG4gIH1cbiAgcmV0dXJuIChhbHBoYVZhbHVlIC8gMTAwKS50b0ZpeGVkKDIpO1xufTtcbmV4cG9ydCBkZWZhdWx0IGdldE92ZXJsYXlBbHBoYTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFwZXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVBhcGVyJywgc2xvdCk7XG59XG5jb25zdCBwYXBlckNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlQYXBlcicsIFsncm9vdCcsICdyb3VuZGVkJywgJ291dGxpbmVkJywgJ2VsZXZhdGlvbicsICdlbGV2YXRpb24wJywgJ2VsZXZhdGlvbjEnLCAnZWxldmF0aW9uMicsICdlbGV2YXRpb24zJywgJ2VsZXZhdGlvbjQnLCAnZWxldmF0aW9uNScsICdlbGV2YXRpb242JywgJ2VsZXZhdGlvbjcnLCAnZWxldmF0aW9uOCcsICdlbGV2YXRpb245JywgJ2VsZXZhdGlvbjEwJywgJ2VsZXZhdGlvbjExJywgJ2VsZXZhdGlvbjEyJywgJ2VsZXZhdGlvbjEzJywgJ2VsZXZhdGlvbjE0JywgJ2VsZXZhdGlvbjE1JywgJ2VsZXZhdGlvbjE2JywgJ2VsZXZhdGlvbjE3JywgJ2VsZXZhdGlvbjE4JywgJ2VsZXZhdGlvbjE5JywgJ2VsZXZhdGlvbjIwJywgJ2VsZXZhdGlvbjIxJywgJ2VsZXZhdGlvbjIyJywgJ2VsZXZhdGlvbjIzJywgJ2VsZXZhdGlvbjI0J10pO1xuZXhwb3J0IGRlZmF1bHQgcGFwZXJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiLCBcImVsZXZhdGlvblwiLCBcInNxdWFyZVwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBjaGFpblByb3BUeXBlcywgaW50ZWdlclByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgZ2V0T3ZlcmxheUFscGhhIGZyb20gJy4uL3N0eWxlcy9nZXRPdmVybGF5QWxwaGEnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZSc7XG5pbXBvcnQgeyBnZXRQYXBlclV0aWxpdHlDbGFzcyB9IGZyb20gJy4vcGFwZXJDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgc3F1YXJlLFxuICAgIGVsZXZhdGlvbixcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsICFzcXVhcmUgJiYgJ3JvdW5kZWQnLCB2YXJpYW50ID09PSAnZWxldmF0aW9uJyAmJiBgZWxldmF0aW9uJHtlbGV2YXRpb259YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRQYXBlclV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgUGFwZXJSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlQYXBlcicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgIW93bmVyU3RhdGUuc3F1YXJlICYmIHN0eWxlcy5yb3VuZGVkLCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdlbGV2YXRpb24nICYmIHN0eWxlc1tgZWxldmF0aW9uJHtvd25lclN0YXRlLmVsZXZhdGlvbn1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkdmFycyRvdmVybGF5cztcbiAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmJhY2tncm91bmQucGFwZXIsXG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQucHJpbWFyeSxcbiAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ2JveC1zaGFkb3cnKVxuICB9LCAhb3duZXJTdGF0ZS5zcXVhcmUgJiYge1xuICAgIGJvcmRlclJhZGl1czogdGhlbWUuc2hhcGUuYm9yZGVyUmFkaXVzXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZGl2aWRlcn1gXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2VsZXZhdGlvbicgJiYgX2V4dGVuZHMoe1xuICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3Nbb3duZXJTdGF0ZS5lbGV2YXRpb25dXG4gIH0sICF0aGVtZS52YXJzICYmIHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2RhcmsnICYmIHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGBsaW5lYXItZ3JhZGllbnQoJHthbHBoYSgnI2ZmZicsIGdldE92ZXJsYXlBbHBoYShvd25lclN0YXRlLmVsZXZhdGlvbikpfSwgJHthbHBoYSgnI2ZmZicsIGdldE92ZXJsYXlBbHBoYShvd25lclN0YXRlLmVsZXZhdGlvbikpfSlgXG4gIH0sIHRoZW1lLnZhcnMgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogKF90aGVtZSR2YXJzJG92ZXJsYXlzID0gdGhlbWUudmFycy5vdmVybGF5cykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR2YXJzJG92ZXJsYXlzW293bmVyU3RhdGUuZWxldmF0aW9uXVxuICB9KSk7XG59KTtcbmNvbnN0IFBhcGVyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gUGFwZXIoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVBhcGVyJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ2RpdicsXG4gICAgICBlbGV2YXRpb24gPSAxLFxuICAgICAgc3F1YXJlID0gZmFsc2UsXG4gICAgICB2YXJpYW50ID0gJ2VsZXZhdGlvbidcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbXBvbmVudCxcbiAgICBlbGV2YXRpb24sXG4gICAgc3F1YXJlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gICAgaWYgKHRoZW1lLnNoYWRvd3NbZWxldmF0aW9uXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBUaGUgZWxldmF0aW9uIHByb3ZpZGVkIDxQYXBlciBlbGV2YXRpb249eyR7ZWxldmF0aW9ufX0+IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHRoZW1lLmAsIGBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgXFxgdGhlbWUuc2hhZG93c1ske2VsZXZhdGlvbn1dXFxgIGlzIGRlZmluZWQuYF0uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUGFwZXJSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcmVmOiByZWZcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gUGFwZXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFNoYWRvdyBkZXB0aCwgY29ycmVzcG9uZHMgdG8gYGRwYCBpbiB0aGUgc3BlYy5cbiAgICogSXQgYWNjZXB0cyB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAyNCBpbmNsdXNpdmUuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIGVsZXZhdGlvbjogY2hhaW5Qcm9wVHlwZXMoaW50ZWdlclByb3BUeXBlLCBwcm9wcyA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgZWxldmF0aW9uLFxuICAgICAgdmFyaWFudFxuICAgIH0gPSBwcm9wcztcbiAgICBpZiAoZWxldmF0aW9uID4gMCAmJiB2YXJpYW50ID09PSAnb3V0bGluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBNVUk6IENvbWJpbmluZyBcXGBlbGV2YXRpb249eyR7ZWxldmF0aW9ufX1cXGAgd2l0aCBcXGB2YXJpYW50PVwiJHt2YXJpYW50fVwiXFxgIGhhcyBubyBlZmZlY3QuIEVpdGhlciB1c2UgXFxgZWxldmF0aW9uPXswfVxcYCBvciB1c2UgYSBkaWZmZXJlbnQgXFxgdmFyaWFudFxcYC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCByb3VuZGVkIGNvcm5lcnMgYXJlIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgc3F1YXJlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ2VsZXZhdGlvbidcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZWxldmF0aW9uJywgJ291dGxpbmVkJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBQYXBlcjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUNvbnRyb2xsZWQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlQ29udHJvbGxlZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlkIGFzIHVzZUlkIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCBzdHlsZUZ1bmN0aW9uU3gsIHsgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnLi9zdHlsZUZ1bmN0aW9uU3gnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4vdXNlVGhlbWUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUJveChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lSWQsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIGRlZmF1bHRDbGFzc05hbWUgPSAnTXVpQm94LXJvb3QnLFxuICAgIGdlbmVyYXRlQ2xhc3NOYW1lXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBCb3hSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gICAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcHJvcCAhPT0gJ3RoZW1lJyAmJiBwcm9wICE9PSAnc3gnICYmIHByb3AgIT09ICdhcydcbiAgfSkoc3R5bGVGdW5jdGlvblN4KTtcbiAgY29uc3QgQm94ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQm94KGluUHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgICBjb25zdCBfZXh0ZW5kU3hQcm9wID0gZXh0ZW5kU3hQcm9wKGluUHJvcHMpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIGNvbXBvbmVudCA9ICdkaXYnXG4gICAgICB9ID0gX2V4dGVuZFN4UHJvcCxcbiAgICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX2V4dGVuZFN4UHJvcCwgX2V4Y2x1ZGVkKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQm94Um9vdCwgX2V4dGVuZHMoe1xuICAgICAgYXM6IGNvbXBvbmVudCxcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzTmFtZSwgZ2VuZXJhdGVDbGFzc05hbWUgPyBnZW5lcmF0ZUNsYXNzTmFtZShkZWZhdWx0Q2xhc3NOYW1lKSA6IGRlZmF1bHRDbGFzc05hbWUpLFxuICAgICAgdGhlbWU6IHRoZW1lSWQgPyB0aGVtZVt0aGVtZUlkXSB8fCB0aGVtZSA6IHRoZW1lXG4gICAgfSwgb3RoZXIpKTtcbiAgfSk7XG4gIHJldHVybiBCb3g7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInN4XCJdO1xuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGRlZmF1bHRTeENvbmZpZyBmcm9tICcuL2RlZmF1bHRTeENvbmZpZyc7XG5jb25zdCBzcGxpdFByb3BzID0gcHJvcHMgPT4ge1xuICB2YXIgX3Byb3BzJHRoZW1lJHVuc3RhYmxlLCBfcHJvcHMkdGhlbWU7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBzeXN0ZW1Qcm9wczoge30sXG4gICAgb3RoZXJQcm9wczoge31cbiAgfTtcbiAgY29uc3QgY29uZmlnID0gKF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA9IHByb3BzID09IG51bGwgfHwgKF9wcm9wcyR0aGVtZSA9IHByb3BzLnRoZW1lKSA9PSBudWxsID8gdm9pZCAwIDogX3Byb3BzJHRoZW1lLnVuc3RhYmxlX3N4Q29uZmlnKSAhPSBudWxsID8gX3Byb3BzJHRoZW1lJHVuc3RhYmxlIDogZGVmYXVsdFN4Q29uZmlnO1xuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChwcm9wID0+IHtcbiAgICBpZiAoY29uZmlnW3Byb3BdKSB7XG4gICAgICByZXN1bHQuc3lzdGVtUHJvcHNbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0Lm90aGVyUHJvcHNbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVuZFN4UHJvcChwcm9wcykge1xuICBjb25zdCB7XG4gICAgICBzeDogaW5TeFxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCB7XG4gICAgc3lzdGVtUHJvcHMsXG4gICAgb3RoZXJQcm9wc1xuICB9ID0gc3BsaXRQcm9wcyhvdGhlcik7XG4gIGxldCBmaW5hbFN4O1xuICBpZiAoQXJyYXkuaXNBcnJheShpblN4KSkge1xuICAgIGZpbmFsU3ggPSBbc3lzdGVtUHJvcHMsIC4uLmluU3hdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpblN4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZmluYWxTeCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpblN4KC4uLmFyZ3MpO1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHN5c3RlbVByb3BzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgcmVzdWx0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGZpbmFsU3ggPSBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIGluU3gpO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3RoZXJQcm9wcywge1xuICAgIHN4OiBmaW5hbFN4XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcywgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb250cm9sbGVkKHtcbiAgY29udHJvbGxlZCxcbiAgZGVmYXVsdDogZGVmYXVsdFByb3AsXG4gIG5hbWUsXG4gIHN0YXRlID0gJ3ZhbHVlJ1xufSkge1xuICAvLyBpc0NvbnRyb2xsZWQgaXMgaWdub3JlZCBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RzIGFzIGl0IHNob3VsZCBuZXZlciBjaGFuZ2UuXG4gIGNvbnN0IHtcbiAgICBjdXJyZW50OiBpc0NvbnRyb2xsZWRcbiAgfSA9IFJlYWN0LnVzZVJlZihjb250cm9sbGVkICE9PSB1bmRlZmluZWQpO1xuICBjb25zdCBbdmFsdWVTdGF0ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICBjb25zdCB2YWx1ZSA9IGlzQ29udHJvbGxlZCA/IGNvbnRyb2xsZWQgOiB2YWx1ZVN0YXRlO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDb250cm9sbGVkICE9PSAoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgJHtpc0NvbnRyb2xsZWQgPyAnJyA6ICd1bid9Y29udHJvbGxlZCAke3N0YXRlfSBzdGF0ZSBvZiAke25hbWV9IHRvIGJlICR7aXNDb250cm9sbGVkID8gJ3VuJyA6ICcnfWNvbnRyb2xsZWQuYCwgJ0VsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLicsIGBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICR7bmFtZX0gYCArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4nLCBcIlRoZSBuYXR1cmUgb2YgdGhlIHN0YXRlIGlzIGRldGVybWluZWQgZHVyaW5nIHRoZSBmaXJzdCByZW5kZXIuIEl0J3MgY29uc2lkZXJlZCBjb250cm9sbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgYHVuZGVmaW5lZGAuXCIsICdNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH0sIFtzdGF0ZSwgbmFtZSwgY29udHJvbGxlZF0pO1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGRlZmF1bHRWYWx1ZVxuICAgIH0gPSBSZWFjdC51c2VSZWYoZGVmYXVsdFByb3ApO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQ29udHJvbGxlZCAmJiBkZWZhdWx0VmFsdWUgIT09IGRlZmF1bHRQcm9wKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IEEgY29tcG9uZW50IGlzIGNoYW5naW5nIHRoZSBkZWZhdWx0ICR7c3RhdGV9IHN0YXRlIG9mIGFuIHVuY29udHJvbGxlZCAke25hbWV9IGFmdGVyIGJlaW5nIGluaXRpYWxpemVkLiBgICsgYFRvIHN1cHByZXNzIHRoaXMgd2FybmluZyBvcHQgdG8gdXNlIGEgY29udHJvbGxlZCAke25hbWV9LmBdLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFByb3ApXSk7XG4gIH1cbiAgY29uc3Qgc2V0VmFsdWVJZlVuY29udHJvbGxlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKG5ld1ZhbHVlID0+IHtcbiAgICBpZiAoIWlzQ29udHJvbGxlZCkge1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH1cbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZUlmVW5jb250cm9sbGVkXTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBnbG9iYWxJZCA9IDA7XG5mdW5jdGlvbiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKSB7XG4gIGNvbnN0IFtkZWZhdWx0SWQsIHNldERlZmF1bHRJZF0gPSBSZWFjdC51c2VTdGF0ZShpZE92ZXJyaWRlKTtcbiAgY29uc3QgaWQgPSBpZE92ZXJyaWRlIHx8IGRlZmF1bHRJZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdElkID09IG51bGwpIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHRoaXMgZGVmYXVsdCBpZCB3aGVuIHBvc3NpYmxlLlxuICAgICAgLy8gVXNlIHRoZSBpbmNyZW1lbnRpbmcgdmFsdWUgZm9yIGNsaWVudC1zaWRlIHJlbmRlcmluZyBvbmx5LlxuICAgICAgLy8gV2UgY2FuJ3QgdXNlIGl0IHNlcnZlci1zaWRlLlxuICAgICAgLy8gSWYgeW91IHdhbnQgdG8gdXNlIHJhbmRvbSB2YWx1ZXMgcGxlYXNlIGNvbnNpZGVyIHRoZSBCaXJ0aGRheSBQcm9ibGVtOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaXJ0aGRheV9wcm9ibGVtXG4gICAgICBnbG9iYWxJZCArPSAxO1xuICAgICAgc2V0RGVmYXVsdElkKGBtdWktJHtnbG9iYWxJZH1gKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0SWRdKTtcbiAgcmV0dXJuIGlkO1xufVxuXG4vLyBkb3duc3RyZWFtIGJ1bmRsZXJzIG1heSByZW1vdmUgdW5uZWNlc3NhcnkgY29uY2F0ZW5hdGlvbiwgYnV0IHdvbid0IHJlbW92ZSB0b1N0cmluZyBjYWxsIC0tIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svaXNzdWVzLzE0ODE0XG5jb25zdCBtYXliZVJlYWN0VXNlSWQgPSBSZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldO1xuLyoqXG4gKlxuICogQGV4YW1wbGUgPGRpdiBpZD17dXNlSWQoKX0gLz5cbiAqIEBwYXJhbSBpZE92ZXJyaWRlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VJZChpZE92ZXJyaWRlKSB7XG4gIGlmIChtYXliZVJlYWN0VXNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHJlYWN0SWQgPSBtYXliZVJlYWN0VXNlSWQoKTtcbiAgICByZXR1cm4gaWRPdmVycmlkZSAhPSBudWxsID8gaWRPdmVycmlkZSA6IHJlYWN0SWQ7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIC0tIGBSZWFjdC51c2VJZGAgaXMgaW52YXJpYW50IGF0IHJ1bnRpbWUuXG4gIHJldHVybiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKTtcbn0iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IGNyZWF0ZVRoZW1lLCBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuXHJcbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xyXG4gIHBhbGV0dGU6IHtcclxuICAgIHR5cGU6IFwibGlnaHRcIixcclxuICAgIHByaW1hcnk6IHtcclxuICAgICAgbWFpbjogXCIjZmZhNzI2XCIsXHJcbiAgICB9LFxyXG4gICAgc2Vjb25kYXJ5OiB7XHJcbiAgICAgIG1haW46IFwiIzE0N2FmZlwiLFxyXG4gICAgfSxcclxuICAgIHN1Y2Nlc3M6IHtcclxuICAgICAgbWFpbjogXCIjNENBRjUwXCIsXHJcbiAgICB9LFxyXG4gICAgbm90Q29ubmVjdGVkOiB7XHJcbiAgICAgIG1haW46IFwiIzc1NzU3NVwiLFxyXG4gICAgfSxcclxuICAgIGxvYWRpbmc6IHtcclxuICAgICAgbWFpbjogXCIjRTY0QTE5XCIsXHJcbiAgICB9LFxyXG4gICAgc2VsZWN0b3I6IHtcclxuICAgICAgbWFpbjogXCIjMzI5RDlDXCIsXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgdHlwb2dyYXBoeToge1xyXG4gICAgZm9udEZhbWlseTogXCJSb2JvdG9cIixcclxuICB9LFxyXG59KTtcclxuXHJcbmZ1bmN0aW9uIFJvYm90aWNzVGhlbWUocHJvcHMpIHtcclxuICByZXR1cm4gPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57cHJvcHMuY2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPjtcclxufVxyXG5cclxuUm9ib3RpY3NUaGVtZS5wcm9wVHlwZXMgPSB7XHJcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgUm9ib3RpY3NUaGVtZTtcclxuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IEJ1dHRvbkdyb3VwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IEljb25CdXR0b24gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvblwiO1xyXG5pbXBvcnQgU2Nob29sT3V0bGluZWRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NjaG9vbE91dGxpbmVkXCI7XHJcbmltcG9ydCBDb2RlT3V0bGluZWRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvZGVPdXRsaW5lZFwiO1xyXG5pbXBvcnQgQ29tbWVudE91dGxpbmVkSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db21tZW50T3V0bGluZWRcIjtcclxuaW1wb3J0IFJvYm90aWNzVGhlbWUgZnJvbSBcIkNvbXBvbmVudHMvUm9ib3RpY3NUaGVtZVwiO1xyXG5cclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL2J1dHRvbnMvRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbi5jc3NcIjtcclxuXHJcbmNvbnN0IEV4ZXJjaXNlVGhlb3J5Rm9ydW1CdXR0b24gPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPFJvYm90aWNzVGhlbWU+XHJcbiAgICAgIDxCdXR0b25Hcm91cCBjb2xvcj17XCJsb2FkaW5nXCJ9IHZhcmlhbnQ9e1wiY29udGFpbmVkXCJ9PlxyXG4gICAgICAgIHtwcm9wcy51cmwgJiYgKFxyXG4gICAgICAgICAgPEljb25CdXR0b24gaHJlZj17cHJvcHMudXJsfSB0YXJnZXQ9XCJfYmxhbmtcIiBjb2xvcj1cInNlY29uZGFyeVwiPlxyXG4gICAgICAgICAgICA8U2Nob29sT3V0bGluZWRJY29uIC8+XHJcbiAgICAgICAgICA8L0ljb25CdXR0b24+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vZm9ydW0udW5pYm90aWNzLm9yZy9cIlxyXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcclxuICAgICAgICAgIGNvbG9yPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8Q29tbWVudE91dGxpbmVkSWNvbiAvPlxyXG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cclxuICAgICAgPC9CdXR0b25Hcm91cD5cclxuICAgIDwvUm9ib3RpY3NUaGVtZT5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbjtcclxuIiwiaW1wb3J0IEFwcEJhciBmcm9tIFwiQG11aS9tYXRlcmlhbC9BcHBCYXJcIjtcclxuaW1wb3J0IFRvb2xiYXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbGJhclwiO1xyXG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgUm9ib3RpY3NUaGVtZSBmcm9tIFwiQ29tcG9uZW50cy9Sb2JvdGljc1RoZW1lLmpzXCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IEV4ZXJjaXNlVGhlb3J5Rm9ydW1CdXR0b24gZnJvbSBcIi4uL2J1dHRvbnMvRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvblwiO1xyXG5cclxuZnVuY3Rpb24gTWFpbkFwcEJhcihwcm9wcykge1xyXG4gIHJldHVybiAoXHJcbiAgICA8Um9ib3RpY3NUaGVtZT5cclxuICAgICAgPEFwcEJhciBwb3NpdGlvbj1cInJlbGF0aXZlXCI+XHJcbiAgICAgICAgPFRvb2xiYXJcclxuICAgICAgICAgIHN4PXt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgICBmbGV4V3JhcDogXCJ3cmFwXCIsXHJcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPEJveFxyXG4gICAgICAgICAgICBzeD17e1xyXG4gICAgICAgICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWZsZXhcIixcclxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXHJcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGEgaHJlZj1cImh0dHA6Ly8xMjcuMC4wLjE6NzE2NC9leGVyY2lzZXMvXCI+XHJcbiAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiL3N0YXRpYy9leGVyY2lzZXMvYXNzZXRzL2ltZy9sb2dvLmdpZlwiXHJcbiAgICAgICAgICAgICAgICBmaXQ9e1wiY292ZXJcIn1cclxuICAgICAgICAgICAgICAgIHdpZHRoPXs1MH1cclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICA8L0JveD5cclxuICAgICAgICAgIDxCb3g+XHJcbiAgICAgICAgICAgIDxFeGVyY2lzZVRoZW9yeUZvcnVtQnV0dG9uXHJcbiAgICAgICAgICAgICAgdXJsPXtwcm9wcy51cmx9XHJcbiAgICAgICAgICAgID48L0V4ZXJjaXNlVGhlb3J5Rm9ydW1CdXR0b24+XHJcbiAgICAgICAgICA8L0JveD5cclxuICAgICAgICA8L1Rvb2xiYXI+XHJcbiAgICAgIDwvQXBwQmFyPlxyXG4gICAgPC9Sb2JvdGljc1RoZW1lPlxyXG4gICk7XHJcbn1cclxuXHJcbk1haW5BcHBCYXIucHJvcFR5cGVzID0ge1xyXG4gIGV4ZXJjaXNlTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1haW5BcHBCYXI7XHJcbiJdLCJuYW1lcyI6WyJkZWZhdWx0VGhlbWUiLCJ0aGVtZUlkIiwiZGVmYXVsdENsYXNzTmFtZSIsImdlbmVyYXRlQ2xhc3NOYW1lIiwiZ2VuZXJhdGUiLCJlbGV2YXRpb24iLCJhbHBoYVZhbHVlIiwiTWF0aCIsImxvZyIsInRvRml4ZWQiLCJnZXRQYXBlclV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJQYXBlclJvb3QiLCJzdHlsZWQiLCJuYW1lIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsIm93bmVyU3RhdGUiLCJyb290IiwidmFyaWFudCIsInNxdWFyZSIsInJvdW5kZWQiLCJ0aGVtZSIsIl90aGVtZSR2YXJzJG92ZXJsYXlzIiwiYmFja2dyb3VuZENvbG9yIiwidmFycyIsInBhbGV0dGUiLCJiYWNrZ3JvdW5kIiwicGFwZXIiLCJjb2xvciIsInRleHQiLCJwcmltYXJ5IiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiYm9yZGVyUmFkaXVzIiwic2hhcGUiLCJib3JkZXIiLCJkaXZpZGVyIiwiYm94U2hhZG93Iiwic2hhZG93cyIsIm1vZGUiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJvdmVybGF5cyIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiY2xhc3NOYW1lIiwiY29tcG9uZW50Iiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJjcmVhdGVCb3giLCJvcHRpb25zIiwiQm94Um9vdCIsInNob3VsZEZvcndhcmRQcm9wIiwicHJvcCIsIl9leHRlbmRTeFByb3AiLCJzcGxpdFByb3BzIiwiX3Byb3BzJHRoZW1lJHVuc3RhYmxlIiwiX3Byb3BzJHRoZW1lIiwicmVzdWx0Iiwic3lzdGVtUHJvcHMiLCJvdGhlclByb3BzIiwiY29uZmlnIiwidW5zdGFibGVfc3hDb25maWciLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImV4dGVuZFN4UHJvcCIsInN4IiwiaW5TeCIsImZpbmFsU3giLCJBcnJheSIsImlzQXJyYXkiLCJhcmdzIiwib3duZXJEb2N1bWVudCIsIm5vZGUiLCJkb2N1bWVudCIsInVzZUNvbnRyb2xsZWQiLCJjb250cm9sbGVkIiwiZGVmYXVsdCIsImRlZmF1bHRQcm9wIiwic3RhdGUiLCJjdXJyZW50IiwiaXNDb250cm9sbGVkIiwidW5kZWZpbmVkIiwidmFsdWVTdGF0ZSIsInNldFZhbHVlIiwibmV3VmFsdWUiLCJnbG9iYWxJZCIsIm1heWJlUmVhY3RVc2VJZCIsInRvU3RyaW5nIiwidXNlSWQiLCJpZE92ZXJyaWRlIiwicmVhY3RJZCIsImRlZmF1bHRJZCIsInNldERlZmF1bHRJZCIsImlkIiwidXNlR2xvYmFsSWQiLCJjcmVhdGVUaGVtZSIsInR5cGUiLCJtYWluIiwic2Vjb25kYXJ5Iiwic3VjY2VzcyIsIm5vdENvbm5lY3RlZCIsImxvYWRpbmciLCJzZWxlY3RvciIsInR5cG9ncmFwaHkiLCJmb250RmFtaWx5IiwiUm9ib3RpY3NUaGVtZSIsIl9qc3giLCJUaGVtZVByb3ZpZGVyIiwiY2hpbGRyZW4iLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJfanN4cyIsIkJ1dHRvbkdyb3VwIiwidXJsIiwiSWNvbkJ1dHRvbiIsImhyZWYiLCJ0YXJnZXQiLCJTY2hvb2xPdXRsaW5lZEljb24iLCJDb21tZW50T3V0bGluZWRJY29uIiwiTWFpbkFwcEJhciIsIkFwcEJhciIsInBvc2l0aW9uIiwiVG9vbGJhciIsImRpc3BsYXkiLCJmbGV4V3JhcCIsImp1c3RpZnlDb250ZW50IiwiQm94IiwiYWxpZ25JdGVtcyIsInNyYyIsImZpdCIsIndpZHRoIiwiRXhlcmNpc2VUaGVvcnlGb3J1bUJ1dHRvbiIsImV4ZXJjaXNlTmFtZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/581.de1f5559.js b/react_frontend/static/react_frontend/js/581.de1f5559.js new file mode 100644 index 000000000..093b5491b --- /dev/null +++ b/react_frontend/static/react_frontend/js/581.de1f5559.js @@ -0,0 +1,3 @@ +/*! For license information please see 581.de1f5559.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[581],{581:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNTgxLmRiY2I3Yjk0LmpzIiwibWFwcGluZ3MiOiI7b0tBYUEsUUFSOEIsU0FBQ0EsR0FDN0IsT0FDRUMsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsU0FBUSxDQUFBQyxTQUNSSCxFQUFNRyxVQUdYLGtCQ0ZhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFNUIsTUFBTTBCLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDQyxFQUFRakMsU0FBU00sRUFBRTJCLEVBQVFDLElBQUlmLEVBQUVjLEVBQVFFLEtBQUtoQixrQkNQeFdpQixFQUFPSCxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvYmFzaWNfY29tcHV0ZXJfdmlzaW9uL3JlYWN0LWNvbXBvbmVudHMvQmFzaWNDb21wdXRlclZpc2lvblJSLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9CYXNpY0NvbXB1dGVyVmlzaW9uUlIuY3NzXCI7XHJcblxyXG5jb25zdCBCYXNpY0NvbXB1dGVyVmlzaW9uUlIgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzaWNDb21wdXRlclZpc2lvblJSO1xyXG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/581.de1f5559.js.LICENSE.txt b/react_frontend/static/react_frontend/js/581.de1f5559.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/581.de1f5559.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5860.a6bde3f1.js b/react_frontend/static/react_frontend/js/5860.a6bde3f1.js new file mode 100644 index 000000000..c1b6167df --- /dev/null +++ b/react_frontend/static/react_frontend/js/5860.a6bde3f1.js @@ -0,0 +1,3 @@ +/*! For license information please see 5860.a6bde3f1.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5860],{5860:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNTg2MC4xN2ZiNmY5YS5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnFCLFNBQUNBLEdBQ3BCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19wZXJzb24vcmVhY3QtY29tcG9uZW50cy9Gb2xsb3dQZXJzb25SUi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvRm9sbG93UGVyc29uUlIuY3NzXCI7XHJcblxyXG5jb25zdCBGb2xsb3dMaW5lUlIgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRm9sbG93TGluZVJSOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/5860.a6bde3f1.js.LICENSE.txt b/react_frontend/static/react_frontend/js/5860.a6bde3f1.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5860.a6bde3f1.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/5923.036ae385.js b/react_frontend/static/react_frontend/js/5923.036ae385.js new file mode 100644 index 000000000..db0e54330 --- /dev/null +++ b/react_frontend/static/react_frontend/js/5923.036ae385.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[5923],{5923:(t,e,r)=>{r.r(e),r.d(e,{default:()=>g});var n=r(6540),o=r(9828),i=r(4719),a=r(1543),l=r(8620),c=r(1641),s=r(9799),u=r(2969),d=r(2274),f=r(8532),m=r(4073),h=r(1224),p=r(7620),y=r(4337),b=r(4848);function x(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{r.r(e),r.d(e,{default:()=>w});var n=r(6540),o=r(7577),i=r(4279),a=r(4745),l=r(2183),c=r(4215),s=r(1641),u=r(9741),d=r(6554),f=r(4389),m=r(4719),h=r(8359),p=r(4848);function y(t){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},y(t)}function b(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{r.r(e),r.d(e,{HomepageProvider:()=>d,default:()=>f});var n=r(6540),o=r(5556),i=r.n(o),a=r(4848);function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,l=[],c=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(l.push(n.value),l.length!==e);c=!0);}catch(t){s=!0,o=t}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return l}}(t,e)||c(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){if(t){if("string"==typeof t)return s(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNjA0OS5lNjBjNDJiMi5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjJCLFNBQUNBLEdBQzFCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fbGFzZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvTW9udGVjYXJsb0xhc2VyTG9jLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9Nb250ZWNhcmxvTGFzZXJMb2MuY3NzXCI7XHJcblxyXG5jb25zdCBNb250ZWNhcmxvTGFzZXJMb2MgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9udGVjYXJsb0xhc2VyTG9jOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6049.62ab636c.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6049.62ab636c.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6049.62ab636c.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/6160.59062f08.js b/react_frontend/static/react_frontend/js/6160.59062f08.js new file mode 100644 index 000000000..608256eb7 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6160.59062f08.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6160],{6160:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6162.e507dc26.js b/react_frontend/static/react_frontend/js/6162.e507dc26.js new file mode 100644 index 000000000..3bde52254 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6162.e507dc26.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6162],{6162:(e,t,i)=>{i.r(t),i.d(t,{basic_snippets:()=>s});var s=[{type:"snippet",label:"import numpy as np",code:"import numpy as np",descriptions:"import numpy as np"},{type:"snippet",label:"import numpy",code:"import numpy",descriptions:"import numpy"},{type:"snippet",label:"import math",code:"import math",descriptions:"import math"},{type:"snippet",label:"import cv2",code:"import cv2",descriptions:"import cv2"},{type:"snippet",label:"RA: Template-01",code:"import WebGUI\nimport HAL\nimport Frecuencies\n# Enter sequential code!\n\nwhile True:\n # Enter iterative code!\n Frecuencies.tick()",descriptions:"import WebGUI\nimport HAL\nimport Frecuencies\n# Enter sequential code!\n\nwhile True:\n # Enter iterative code!\n Frecuencies.tick()"},{type:"snippet",label:"def",code:"def ${1:function_name}(${2:args}):\n\t${3:pass}",descriptions:"def ${1:function_name}(${2:args}):\n\t${3:pass}"},{type:"snippet",label:"if",code:"if ${1:condition}:\n\t${2:# code}",descriptions:"if ${1:condition}:\n\t${2:# code}"},{type:"snippet",label:"ifelif",code:"elif ${1:condition}:\n\t${2:# code}",descriptions:"if ${1:condition}:\n\t${2:# code}\nelif ${3:condition}:\n\t${4:# code}"},{type:"snippet",label:"ifelse",code:"else:\n\t${1:# code}",descriptions:"if ${1:condition}:\n\t${2:# code}\nelse:\n\t${3:# code}"},{type:"snippet",label:"for",detail:"For Item",code:"for ${1:item} in ${2:iterable}:\n\t${3:# code}",descriptions:"for ${1:item} in ${2:iterable}:\n\t${3:# code}"},{type:"snippet",label:"while",code:"while ${1:condition}:\n\t${2:# code}",descriptions:"while ${1:condition}:\n\t${2:# code}"},{type:"snippet",label:"tryexcept",code:"try:\n\t# comment:\nexcept Exception as e:\n\traise e\n# end try",descriptions:"try:\n\t# comment:\nexcept Exception as e:\n\traise e\n# end try"},{type:"snippet",label:"all",code:"all(iterable)",descriptions:"all(iterable)"},{type:"snippet",label:"any",code:"any(iterable)",descriptions:"any(iterable)"},{type:"snippet",label:"ascii",code:"ascii(object)",descriptions:"ascii(object)"},{type:"snippet",label:"bin",code:"bin(x)",descriptions:"bin(x)"},{type:"snippet",label:"bool",code:"bool(object)",descriptions:"bool(object)"},{type:"snippet",label:"bytearray",code:"bytearray([source[, encoding[, errors]]])",descriptions:"bytearray([source[, encoding[, errors]]])"},{type:"snippet",label:"bytes",code:"bytes(x, encoding, error)",descriptions:"bytes(x, encoding, error)"},{type:"snippet",label:"callable",code:"callable(object)",descriptions:"callable(object)"},{type:"snippet",label:"chr",code:"chr(i)",descriptions:"chr(i)"},{type:"snippet",label:"classmethod",code:"classmethod(function)",descriptions:"classmethod(function)"},{type:"snippet",label:"compile",code:"compile(source, filename, mode, flag, dont_inherit, optimize)",descriptions:"compile(source, filename, mode, flag, dont_inherit, optimize)"},{type:"snippet",label:"complex",code:"complex(real, imaginary)",descriptions:"complex(real, imaginary)"},{type:"snippet",label:"delattr",code:"delattr(object, attribute)",descriptions:"delattr(object, attribute)"},{type:"snippet",label:"dict",code:"dict(keyword arguments)",descriptions:"dict(keyword arguments)"},{type:"snippet",label:"dir",code:"dir(object)",descriptions:"dir(object)"},{type:"snippet",label:"divmod",code:"divmod(divident, divisor)",descriptions:"divmod(divident, divisor)"},{type:"snippet",label:"enumerate",code:"enumerate(iterable, start)",descriptions:"enumerate(iterable, start)"},{type:"snippet",label:"eval",code:"eval(expression, globals, locals)",descriptions:"eval(expression, globals, locals)"},{type:"snippet",label:"exec",code:"exec(object, globals, locals)",descriptions:"exec(object, globals, locals)"},{type:"snippet",label:"filter",code:"filter(function, iterable)",descriptions:"filter(function, iterable)"},{type:"snippet",label:"float",code:"float(value)",descriptions:"float(value)"},{type:"snippet",label:"format",code:"format(value, format)",descriptions:"format(value, format)"},{type:"snippet",label:"frozenset",code:"frozenset(iterable)",descriptions:"frozenset(iterable)"},{type:"snippet",label:"getattr",code:"getattr(object, attribute, default)",descriptions:"getattr(object, attribute, default)"},{type:"snippet",label:"globals",code:"globals()",descriptions:"globals()"},{type:"snippet",label:"hasattr",code:"hasattr(object, attribute)",descriptions:"hasattr(object, attribute)"},{type:"snippet",label:"hash",code:"hash(object)",descriptions:"hash(object)"},{type:"snippet",label:"help",code:"help(object)",descriptions:"help(object)"},{type:"snippet",label:"hex",code:"hex(number)",descriptions:"hex(number)"},{type:"snippet",label:"int",code:"int(value, base)",descriptions:"int(value, base)"},{type:"snippet",label:"id",code:"id(object)",descriptions:"id(object)"},{type:"snippet",label:"input",code:"input(prompt)",descriptions:"input(prompt)"},{type:"snippet",label:"isinstance",code:"isinstance(object, type)",descriptions:"isinstance(object, type)"},{type:"snippet",label:"issubclass",code:"issubclass(object, subclass)",descriptions:"issubclass(object, subclass)"},{type:"snippet",label:"iter",code:"iter(object, subclass)",descriptions:"iter(object, subclass)"},{type:"snippet",label:"len",code:"len(s)",descriptions:"len(s)"},{type:"snippet",label:"list",code:"list([iterable])",descriptions:"list([iterable])"},{type:"snippet",label:"locals",code:"locals()",descriptions:"locals()"},{type:"snippet",label:"map",code:"map(function, iterables)",descriptions:"map(function, iterables)"},{type:"snippet",label:"max",code:"max(iterable)",descriptions:"max(iterable)"},{type:"snippet",label:"memoryview",code:"memoryview(obj)",descriptions:"memoryview(obj)"},{type:"snippet",label:"min",code:"min(iterable)",descriptions:"min(iterable)"},{type:"snippet",label:"next",code:"next(iterable, default)",descriptions:"next(iterable, default)"},{type:"snippet",label:"object",code:"object()",descriptions:"object()"},{type:"snippet",label:"oct",code:"oct(x)",descriptions:"oct(x)"},{type:"snippet",label:"open",code:"open(file, mode)",descriptions:"open(file, mode)"},{type:"snippet",label:"ord",code:"ord(c)",descriptions:"ord(c)"},{type:"snippet",label:"pow",code:"pow(x, y)",descriptions:"pow(x, y)"},{type:"snippet",label:"print",code:"print(object(s), separator=separator, end=end, file=file, flush=flush)",descriptions:"print(object(s), separator=separator, end=end, file=file, flush=flush)"},{type:"snippet",label:"property",code:"property(fget=None, fset=None, fdel=None, doc=None)",descriptions:"property(fget=None, fset=None, fdel=None, doc=None)"},{type:"snippet",label:"range",code:"range(start, stop, step)",descriptions:"range(start, stop, step)"},{type:"snippet",label:"repr",code:"repr(object)",descriptions:"repr(object)"},{type:"snippet",label:"reversed",code:"reversed(seq)",descriptions:"reversed(seq)"},{type:"snippet",label:"round",code:"round(number[, ndigits])",descriptions:"round(number[, ndigits])"},{type:"snippet",label:"set",code:"set(iterable)",descriptions:"set(iterable)"},{type:"snippet",label:"setattr",code:"setattr(object, name, value)",descriptions:"setattr(object, name, value)"},{type:"snippet",label:"slice",code:"slice(start, end, step)",descriptions:"slice(start, end, step)"},{type:"snippet",label:"sorted",code:"sorted(iterable, key=key, reverse=reverse)",descriptions:"sorted(iterable, key=key, reverse=reverse)"},{type:"snippet",label:"staticmethod",code:"staticmethod(function)",descriptions:"staticmethod(function)"},{type:"snippet",label:"str",code:"str(object, encoding=encoding, errors=errors)",descriptions:"str(object, encoding=encoding, errors=errors)"},{type:"snippet",label:"sum",code:"sum(iterable, start)",descriptions:"sum(iterable, start)"},{type:"snippet",label:"super",code:"super(type[, object-or-type])",descriptions:"super(type[, object-or-type])"},{type:"snippet",label:"tuple",code:"tuple(iterable)",descriptions:"tuple(iterable)"},{type:"snippet",label:"type",code:"type(object, bases, dict)",descriptions:"type(object, bases, dict)"},{type:"snippet",label:"unichr",code:"unichr(i)",descriptions:"unichr(i)"},{type:"snippet",label:"vars",code:"vars(object)",descriptions:"vars(object)"},{type:"snippet",label:"zip",code:"zip(iterator1, iterqator2, iterator3 ...)",descriptions:"zip(iterator1, iterqator2, iterator3 ...)"},{type:"snippet",label:"if",code:"if condition:\n pass",descriptions:"if condition:\n pass"},{type:"snippet",label:"ifelif",code:"if condition:\n pass\nelif condition:\n pass",descriptions:"if condition:\n pass\nelif condition:\n pass"},{type:"snippet",label:"ifelifelse",code:"if condition:\n pass\nelif condition:\n pass\nelse:\n pass",descriptions:"if condition:\n pass\nelif condition:\n pass\nelse:\n pass"},{type:"snippet",label:"ifel",code:"if condition:\n pass\nelse:\n pass",descriptions:"if condition:\n pass\nelse:\n pass"},{type:"snippet",label:"elif",code:"else:\n pass",descriptions:"else:\n pass"},{type:"snippet",label:"ifshort",code:"print('A') if a > b else print('A')",descriptions:"print('A') if a > b else print('A')"},{type:"snippet",label:"lambda",code:"lambda arguments : expression",descriptions:"lambda arguments : expression"},{type:"snippet",label:"for",code:"for item in range:\n ",descriptions:"for item in range:\n "},{type:"snippet",label:"for=>range_function_1",code:"for x in range(6):\n print(x)",descriptions:"for x in range(6):\n print(x)"},{type:"snippet",label:"for=>for_else",code:"for x in range(2, 6):\n print(x)\nelse:\n print('Finally finished!')",descriptions:"for x in range(2, 6):\n print(x)\nelse:\n print('Finally finished!')"},{type:"snippet",label:"while",code:"while expression:\n pass",descriptions:"while expression:\n pass"},{type:"snippet",label:"while_else",code:"while expression:\n pass\nelse:\n pass",descriptions:"while expression:\n pass\nelse:\n pass"},{type:"snippet",label:"while=>",code:"i = 1\nwhile i < 6:\n print(i)\n i += 1",descriptions:"i = 1\nwhile i < 6:\n print(i)\n i += 1"},{type:"snippet",label:"while=>break_statement",code:"i = 1\nwhile i < 6:\n print(i)\n if i == 3:\n break\n i += 1",descriptions:"i = 1\nwhile i < 6:\n print(i)\n if i == 3:\n break\n i += 1"},{type:"snippet",label:"while=>continue_statement",code:"i = 1\nwhile i < 6:\n i += 1\n print(i)\n if i == 3:\n continue\n print(i)",descriptions:"i = 1\nwhile i < 6:\n i += 1\n print(i)\n if i == 3:\n continue\n print(i)"},{type:"snippet",label:"function",code:"def name(args):\n pass",descriptions:"def name(args):\n pass"},{type:"snippet",label:"def",code:"def name(args):\n pass",descriptions:"def name(args):\n pass"},{type:"snippet",label:"capitalize",code:".capitalize()",descriptions:".capitalize()"},{type:"snippet",label:"casefold",code:".casefold()",descriptions:".casefold()"},{type:"snippet",label:"center",code:".center()",descriptions:".center()"},{type:"snippet",label:"string.count",code:".count()",descriptions:".count()"},{type:"snippet",label:"encode",code:".encode()",descriptions:".encode()"},{type:"snippet",label:"endswith",code:".endswith()",descriptions:".endswith()"},{type:"snippet",label:"expandtabs",code:".expandtabs()",descriptions:".expandtabs()"},{type:"snippet",label:"find",code:".find()",descriptions:".find()"},{type:"snippet",label:"format",code:".format()",descriptions:".format()"},{type:"snippet",label:"format_map",code:".format_map()",descriptions:".format_map()"},{type:"snippet",label:"index",code:".index()",descriptions:".index()"},{type:"snippet",label:"isalnum",code:".isalnum()",descriptions:".isalnum()"},{type:"snippet",label:"isalpha",code:".isalpha()",descriptions:".isalpha()"},{type:"snippet",label:"isdecimal",code:".isdecimal()",descriptions:".isdecimal()"},{type:"snippet",label:"isdigit",code:".isdigit()",descriptions:".isdigit()"},{type:"snippet",label:"isidentifier",code:".isidentifier()",descriptions:".isidentifier()"},{type:"snippet",label:"islower",code:".islower()",descriptions:".islower()"},{type:"snippet",label:"isnumeric",code:".isnumeric()",descriptions:".isnumeric()"},{type:"snippet",label:"isprintable",code:".isprintable()",descriptions:".isprintable()"},{type:"snippet",label:"isspace",code:".isspace()",descriptions:".isspace()"},{type:"snippet",label:"istitle",code:".istitle()",descriptions:".istitle()"},{type:"snippet",label:"isupper",code:".isupper()",descriptions:".isupper()"},{type:"snippet",label:"join",code:".join()",descriptions:".join()"},{type:"snippet",label:"ljust",code:".ljust()",descriptions:".ljust()"},{type:"snippet",label:"lower",code:".lower()",descriptions:".lower()"},{type:"snippet",label:"lstrip",code:".lstrip()",descriptions:".lstrip()"},{type:"snippet",label:"maketrans",code:".maketrans()",descriptions:".maketrans()"},{type:"snippet",label:"partition",code:".partition()",descriptions:".partition()"},{type:"snippet",label:"replace",code:".replace(x, y)",descriptions:".replace(x, y)"},{type:"snippet",label:"rfind",code:".rfind()",descriptions:".rfind()"},{type:"snippet",label:"rindex",code:".rindex()",descriptions:".rindex()"},{type:"snippet",label:"rpartition",code:".rpartition()",descriptions:".rpartition()"},{type:"snippet",label:"rsplit",code:".rsplit()",descriptions:".rsplit()"},{type:"snippet",label:"split",code:".split()",descriptions:".split()"},{type:"snippet",label:"splitlines",code:".splitlines()",descriptions:".splitlines()"},{type:"snippet",label:"string.splitlines=>",code:"txt = 'Thank you for the music\nWelcome to the jungle'\nx = txt.splitlines()\nprint(x)",descriptions:"txt = 'Thank you for the music\nWelcome to the jungle'\nx = txt.splitlines()\nprint(x)"},{type:"snippet",label:"string.splitlines=>",code:"txt = 'Thank you for the music\nWelcome to the jungle'\nx = txt.splitlines(True)\nprint(x)",descriptions:"txt = 'Thank you for the music\nWelcome to the jungle'\nx = txt.splitlines(True)\nprint(x)"},{type:"snippet",label:"startswith",code:".startswith()",descriptions:".startswith()"},{type:"snippet",label:"swapcase",code:".swapcase()",descriptions:".swapcase()"},{type:"snippet",label:"title",code:".title()",descriptions:".title()"},{type:"snippet",label:"translate",code:".translate()",descriptions:".translate()"},{type:"snippet",label:"upper",code:".upper()",descriptions:".upper()"},{type:"snippet",label:"string.upper=>",code:"txt = 'Hello my friends'\nx = txt.upper()\nprint(x)",descriptions:"txt = 'Hello my friends'\nx = txt.upper()\nprint(x)"},{type:"snippet",label:"zfill",code:".zfill()",descriptions:".zfill()"},{type:"snippet",label:"append",code:".append()",descriptions:".append()"},{type:"snippet",label:"clear",code:".clear()",descriptions:".clear()"},{type:"snippet",label:"copy",code:".copy()",descriptions:".copy()"},{type:"snippet",label:"list.count",code:".count",descriptions:".count"},{type:"snippet",label:"extend",code:".extend()",descriptions:".extend()"},{type:"snippet",label:"index",code:".index()",descriptions:".index()"},{type:"snippet",label:"insert",code:".insert()",descriptions:".insert()"},{type:"snippet",label:"pop",code:".pop()",descriptions:".pop()"},{type:"snippet",label:"remove",code:".remove()",descriptions:".remove()"},{type:"snippet",label:"reverse",code:".reverse()",descriptions:".reverse()"},{type:"snippet",label:"sort",code:".sort()",descriptions:".sort()"},{type:"snippet",label:"comprehensions",code:"[ expression for item in list if conditional ]",descriptions:"[ expression for item in list if conditional ]"},{type:"snippet",label:"clear",code:".clear()",descriptions:".clear()"},{type:"snippet",label:"copy",code:".copy()",descriptions:".copy()"},{type:"snippet",label:"fromkeys",code:".fromkeys(x, y)",descriptions:".fromkeys(x, y)"},{type:"snippet",label:"get",code:".get()",descriptions:".get()"},{type:"snippet",label:"items",code:".items()",descriptions:".items()"},{type:"snippet",label:"keys",code:".keys()",descriptions:".keys()"},{type:"snippet",label:"pop",code:".pop()",descriptions:".pop()"},{type:"snippet",label:"popitem",code:".popitem()",descriptions:".popitem()"},{type:"snippet",label:"setdefault",code:".setdefault()",descriptions:".setdefault()"},{type:"snippet",label:"update",code:".update()",descriptions:".update()"},{type:"snippet",label:"values",code:".values()",descriptions:".values()"},{type:"snippet",label:"tuple.count",code:".count(value)",descriptions:".count(value)"},{type:"snippet",label:"index",code:".index(value)",descriptions:".index(value)"},{type:"snippet",label:"add",code:".add()",descriptions:".add()"},{type:"snippet",label:"clear",code:".clear()",descriptions:".clear()"},{type:"snippet",label:"copy",code:".copy()",descriptions:".copy()"},{type:"snippet",label:"difference",code:"x.difference(y)",descriptions:"x.difference(y)"},{type:"snippet",label:"difference_update",code:"x.difference_update(y)",descriptions:"x.difference_update(y)"},{type:"snippet",label:"discard",code:".discard()",descriptions:".discard()"},{type:"snippet",label:"intersection",code:"x.intersection(y)",descriptions:"x.intersection(y)"},{type:"snippet",label:"intersection_update",code:"x.intersection_update(y)",descriptions:"x.intersection_update(y)"},{type:"snippet",label:"isdisjoint",code:"x.isdisjoint(y)",descriptions:"x.isdisjoint(y)"},{type:"snippet",label:"issubset",code:"x.issubset(y)",descriptions:"x.issubset(y)"},{type:"snippet",label:"issuperset",code:"x.issuperset(y)",descriptions:"x.issuperset(y)"},{type:"snippet",label:"symmetric_difference",code:"x.symmetric_difference(y)",descriptions:"x.symmetric_difference(y)"},{type:"snippet",label:"symmetric_difference_update",code:"x.symmetric_difference_update(y)",descriptions:"x.symmetric_difference_update(y)"},{type:"snippet",label:"class",code:"class MyClass:\n pass",descriptions:"class MyClass:\n pass"},{type:"snippet",label:"__init__",code:"def __init__(self, name, age):\n self.name = name\n self.age = age",descriptions:"def __init__(self, name, age):\n self.name = name\n self.age = age"},{type:"snippet",label:"__iter__",code:"def __iter__(self):\n self.a = 1\n return self",descriptions:"def __iter__(self):\n self.a = 1\n return self"},{type:"snippet",label:"__next__",code:"def __next__(self):\n x = self.a\n self.a += 1\n return x",descriptions:"def __next__(self):\n x = self.a\n self.a += 1\n return x"},{type:"snippet",label:"tryexcept",code:"try:\n print(x)\nexcept:\n print('An exception occurred')",descriptions:"try:\n print(x)\nexcept:\n print('An exception occurred')"},{type:"snippet",label:"tryexceptfinally",code:"try:\n print(x)\nexcept:\n print('Something went wrong')\nfinally:\n print('The try except is finished')",descriptions:"try:\n print(x)\nexcept:\n print('Something went wrong')\nfinally:\n print('The try except is finished')"},{type:"snippet",label:"openFile",code:"f = open('demofile.txt', 'r')\nprint(f.read())",descriptions:"f = open('demofile.txt', 'r')\nprint(f.read())"},{type:"snippet",label:"openFileReadLine",code:"f = open('demofile.txt', 'r')\nprint(f.readline())",descriptions:"f = open('demofile.txt', 'r')\nprint(f.readline())"},{type:"snippet",label:"readImgColor",detail:"cv2",code:"cv2.imread(${1:image_path}, cv2.IMREAD_COLOR)",descriptions:"This method is used to read an image from its path."},{type:"snippet",label:"readImgBW",detail:"cv2",code:"cv2.imread(${1:image_path}, cv2.IMREAD_GRAYSCALE)",descriptions:"This method is used to read an image from its path."},{type:"snippet",label:"line",detail:"cv2",code:"cv2.line(${1:img}, ${2:start_coordinates}, ${3:end_coordinate}, ${4:color_in_bgr}, ${5:thickness})",descriptions:"Draws a line segment connecting two points."},{type:"snippet",label:"rectangle",detail:"cv2",code:"cv2.rectangle(${1:img},${2:top_left_vertex_coordinates}, ${3:lower_right_vertex_coordinates}, ${4:color_in_bgr}, ${5:thickness})",descriptions:"Draws a simple, thick, or filled up-right rectangle."},{type:"snippet",label:"circle",detail:"cv2",code:"cv2.circle(${1:img}, ${2:center_coordinates}, ${3:radius}, ${4:color}, ${5:thickness})",descriptions:"Draws a circle"},{type:"snippet",label:"polylines",detail:"cv2",code:"cv2.polylines(${1:img}, ${2:[pts]}, ${3:isClosed}, ${4:color}, ${5:thickness})",descriptions:"Draws several polygonal curves."},{type:"snippet",label:"text",detail:"cv2",code:"cv2.putText(${1:img}, ${2:‘TextContent’}, ${3:‘text_starting_point_coordinates’})",descriptions:"Draws a text string."},{type:"snippet",label:"addImg",detail:"cv2",code:"cv2.add(${1:img1}, ${2:img2})",descriptions:"This function is used to add two images."},{type:"snippet",label:"subtractImg",detail:"cv2",code:"cv2.subtract(${1:img1}, ${2:img2})",descriptions:"This function is used to subtract two images."},{type:"snippet",label:"addWeightedImg",detail:"cv2",code:"cv2.addWeighted(${1:img1}, ${2:weight1}, ${3:img2}, ${4:weight2}, ${5:gammaValue})",descriptions:"This is also known as Alpha Blending. This is nothing but a weighted blending process of two images."},{type:"snippet",label:"bitwise_and",detail:"cv2",code:"cv2.bitwise_and(${1:img1}, ${2:img2}, ${3:destination}, ${4:mask})",descriptions:"This performs bitwise and logical operations between two images."},{type:"snippet",label:"bitwise_or",detail:"cv2",code:"cv2.bitwise_or(${1:img1}, ${2:img2}, ${3:destination}, ${4:mask})",descriptions:"This performs bitwise or logical operations between two images."},{type:"snippet",label:"bitwise_not",detail:"cv2",code:"cv2.bitwise_not(${1:img}, ${2:destination}, ${3:mask})",descriptions:"This performs bitwise not logical operations between an image and a mask."},{type:"snippet",label:"bitwise_xor",detail:"cv2",code:"cv2.bitwise_xor(${1:img1}, ${2:img2}, ${3:destination}, ${4:mask})",descriptions:"This performs bitwise xor logical operations between two images."},{type:"snippet",label:"inRange",detail:"cv2",code:"cv2.inRange(${1:raw_img}, ${2:lower}, ${3:upper})",descriptions:"Checks if array elements lie between the elements of two other arrays."},{type:"snippet",label:"bgr2gray",detail:"cv2",code:"cv2.cvtColor(${1:img}, cv2.COLOR_BGR2GRAY)",descriptions:"Converts an image from one BGR color space to GRAY."},{type:"snippet",label:"bgr2hsv",detail:"cv2",code:"cv2.cvtColor(${1:img}, cv2.COLOR_BGR2HSV)",descriptions:"Converts an image from one BGR color space to HSV."}]}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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T0FBTyxNQUNQRixLQUFNLHlGQUNOQyxhQUFjLGtCQUVoQixDQUNFSCxLQUFNLFVBQ05DLE1BQU8sWUFDUEcsT0FBTyxNQUNQRixLQUFNLGlGQUNOQyxhQUFjLG1DQUVoQixDQUNFSCxLQUFNLFVBQ05DLE1BQU8sT0FDUEcsT0FBTyxNQUNQRixLQUFNLG9GQUNOQyxhQUFjLHdCQUVoQixDQUNFSCxLQUFNLFVBQ05DLE1BQU8sU0FDUEcsT0FBTyxNQUNQRixLQUFNLGdDQUNOQyxhQUFjLDRDQUVoQixDQUNFSCxLQUFNLFVBQ05DLE1BQU8sY0FDUEcsT0FBTyxNQUNQRixLQUFNLHFDQUNOQyxhQUFjLGlEQUVoQixDQUNFSCxLQUFNLFVBQ05DLE1BQU8saUJBQ1BHLE9BQU8sTUFDUEYsS0FBTSxxRkFDTkMsYUFDRSx3R0FFSixDQUNFSCxLQUFNLFVBQ05DLE1BQU8sY0FDUEcsT0FBTyxNQUNQRixLQUFNLHFFQUNOQyxhQUNFLG9FQUVKLENBQ0VILEtBQU0sVUFDTkMsTUFBTyxhQUNQRyxPQUFPLE1BQ1BGLEtBQU0sb0VBQ05DLGFBQ0UsbUVBRUosQ0FDRUgsS0FBTSxVQUNOQyxNQUFPLGNBQ1BHLE9BQU8sTUFDUEYsS0FBTSx5REFDTkMsYUFDRSw2RUFFSixDQUNFSCxLQUFNLFVBQ05DLE1BQU8sY0FDUEcsT0FBTyxNQUNQRixLQUFNLHFFQUNOQyxhQUNFLG9FQUVKLENBQ0VILEtBQU0sVUFDTkMsTUFBTyxVQUNQRyxPQUFPLE1BQ1BGLEtBQU0sb0RBQ05DLGFBQ0UsMEVBRUosQ0FDRUgsS0FBTSxVQUNOQyxNQUFPLFdBQ1BHLE9BQU8sTUFDUEYsS0FBTSw2Q0FDTkMsYUFBYyx1REFFaEIsQ0FDRUgsS0FBTSxVQUNOQyxNQUFPLFVBQ1BHLE9BQU8sTUFDUEYsS0FBTSw0Q0FDTkMsYUFBYyxzRCIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2F1dG9jb21wbGV0ZS1zbmlwcGV0cy9iYXNpY19zbmlwcGV0cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgYmFzaWNfc25pcHBldHMgPSBbXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpbXBvcnQgbnVtcHkgYXMgbnBcIixcclxuICAgIGNvZGU6IFwiaW1wb3J0IG51bXB5IGFzIG5wXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaW1wb3J0IG51bXB5IGFzIG5wXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImltcG9ydCBudW1weVwiLFxyXG4gICAgY29kZTogXCJpbXBvcnQgbnVtcHlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpbXBvcnQgbnVtcHlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaW1wb3J0IG1hdGhcIixcclxuICAgIGNvZGU6IFwiaW1wb3J0IG1hdGhcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpbXBvcnQgbWF0aFwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpbXBvcnQgY3YyXCIsXHJcbiAgICBjb2RlOiBcImltcG9ydCBjdjJcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpbXBvcnQgY3YyXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcIlJBOiBUZW1wbGF0ZS0wMVwiLFxyXG4gICAgY29kZTogXCJpbXBvcnQgV2ViR1VJXFxuaW1wb3J0IEhBTFxcbmltcG9ydCBGcmVjdWVuY2llc1xcbiMgRW50ZXIgc2VxdWVudGlhbCBjb2RlIVxcblxcbndoaWxlIFRydWU6XFxuICAgICMgRW50ZXIgaXRlcmF0aXZlIGNvZGUhXFxuICAgIEZyZWN1ZW5jaWVzLnRpY2soKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICBcImltcG9ydCBXZWJHVUlcXG5pbXBvcnQgSEFMXFxuaW1wb3J0IEZyZWN1ZW5jaWVzXFxuIyBFbnRlciBzZXF1ZW50aWFsIGNvZGUhXFxuXFxud2hpbGUgVHJ1ZTpcXG4gICAgIyBFbnRlciBpdGVyYXRpdmUgY29kZSFcXG4gICAgRnJlY3VlbmNpZXMudGljaygpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRlZlwiLFxyXG4gICAgY29kZTogXCJkZWYgJHsxOmZ1bmN0aW9uX25hbWV9KCR7MjphcmdzfSk6XFxuXFx0JHszOnBhc3N9XCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZGVmICR7MTpmdW5jdGlvbl9uYW1lfSgkezI6YXJnc30pOlxcblxcdCR7MzpwYXNzfVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpZlwiLFxyXG4gICAgY29kZTogXCJpZiAkezE6Y29uZGl0aW9ufTpcXG5cXHQkezI6IyBjb2RlfVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImlmICR7MTpjb25kaXRpb259OlxcblxcdCR7MjojIGNvZGV9XCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlmZWxpZlwiLFxyXG4gICAgY29kZTogXCJlbGlmICR7MTpjb25kaXRpb259OlxcblxcdCR7MjojIGNvZGV9XCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaWYgJHsxOmNvbmRpdGlvbn06XFxuXFx0JHsyOiMgY29kZX1cXG5lbGlmICR7Mzpjb25kaXRpb259OlxcblxcdCR7NDojIGNvZGV9XCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlmZWxzZVwiLFxyXG4gICAgY29kZTogXCJlbHNlOlxcblxcdCR7MTojIGNvZGV9XCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaWYgJHsxOmNvbmRpdGlvbn06XFxuXFx0JHsyOiMgY29kZX1cXG5lbHNlOlxcblxcdCR7MzojIGNvZGV9XCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImZvclwiLFxyXG4gICAgZGV0YWlsOiBcIkZvciBJdGVtXCIsXHJcbiAgICBjb2RlOiBcImZvciAkezE6aXRlbX0gaW4gJHsyOml0ZXJhYmxlfTpcXG5cXHQkezM6IyBjb2RlfVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImZvciAkezE6aXRlbX0gaW4gJHsyOml0ZXJhYmxlfTpcXG5cXHQkezM6IyBjb2RlfVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ3aGlsZVwiLFxyXG4gICAgY29kZTogXCJ3aGlsZSAkezE6Y29uZGl0aW9ufTpcXG5cXHQkezI6IyBjb2RlfVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIndoaWxlICR7MTpjb25kaXRpb259OlxcblxcdCR7MjojIGNvZGV9XCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInRyeWV4Y2VwdFwiLFxyXG4gICAgY29kZTogXCJ0cnk6XFxuXFx0IyBjb21tZW50OlxcbmV4Y2VwdCBFeGNlcHRpb24gYXMgZTpcXG5cXHRyYWlzZSBlXFxuIyBlbmQgdHJ5XCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwidHJ5OlxcblxcdCMgY29tbWVudDpcXG5leGNlcHQgRXhjZXB0aW9uIGFzIGU6XFxuXFx0cmFpc2UgZVxcbiMgZW5kIHRyeVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJhbGxcIixcclxuICAgIGNvZGU6IFwiYWxsKGl0ZXJhYmxlKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImFsbChpdGVyYWJsZSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiYW55XCIsXHJcbiAgICBjb2RlOiBcImFueShpdGVyYWJsZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJhbnkoaXRlcmFibGUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImFzY2lpXCIsXHJcbiAgICBjb2RlOiBcImFzY2lpKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJhc2NpaShvYmplY3QpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImJpblwiLFxyXG4gICAgY29kZTogXCJiaW4oeClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJiaW4oeClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiYm9vbFwiLFxyXG4gICAgY29kZTogXCJib29sKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJib29sKG9iamVjdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiYnl0ZWFycmF5XCIsXHJcbiAgICBjb2RlOiBcImJ5dGVhcnJheShbc291cmNlWywgZW5jb2RpbmdbLCBlcnJvcnNdXV0pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiYnl0ZWFycmF5KFtzb3VyY2VbLCBlbmNvZGluZ1ssIGVycm9yc11dXSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiYnl0ZXNcIixcclxuICAgIGNvZGU6IFwiYnl0ZXMoeCwgZW5jb2RpbmcsIGVycm9yKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImJ5dGVzKHgsIGVuY29kaW5nLCBlcnJvcilcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY2FsbGFibGVcIixcclxuICAgIGNvZGU6IFwiY2FsbGFibGUob2JqZWN0KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImNhbGxhYmxlKG9iamVjdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY2hyXCIsXHJcbiAgICBjb2RlOiBcImNocihpKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImNocihpKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJjbGFzc21ldGhvZFwiLFxyXG4gICAgY29kZTogXCJjbGFzc21ldGhvZChmdW5jdGlvbilcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJjbGFzc21ldGhvZChmdW5jdGlvbilcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY29tcGlsZVwiLFxyXG4gICAgY29kZTogXCJjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWcsIGRvbnRfaW5oZXJpdCwgb3B0aW1pemUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFnLCBkb250X2luaGVyaXQsIG9wdGltaXplKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJjb21wbGV4XCIsXHJcbiAgICBjb2RlOiBcImNvbXBsZXgocmVhbCwgaW1hZ2luYXJ5KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImNvbXBsZXgocmVhbCwgaW1hZ2luYXJ5KVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJkZWxhdHRyXCIsXHJcbiAgICBjb2RlOiBcImRlbGF0dHIob2JqZWN0LCBhdHRyaWJ1dGUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZGVsYXR0cihvYmplY3QsIGF0dHJpYnV0ZSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZGljdFwiLFxyXG4gICAgY29kZTogXCJkaWN0KGtleXdvcmQgYXJndW1lbnRzKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImRpY3Qoa2V5d29yZCBhcmd1bWVudHMpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRpclwiLFxyXG4gICAgY29kZTogXCJkaXIob2JqZWN0KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImRpcihvYmplY3QpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRpdm1vZFwiLFxyXG4gICAgY29kZTogXCJkaXZtb2QoZGl2aWRlbnQsIGRpdmlzb3IpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZGl2bW9kKGRpdmlkZW50LCBkaXZpc29yKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJlbnVtZXJhdGVcIixcclxuICAgIGNvZGU6IFwiZW51bWVyYXRlKGl0ZXJhYmxlLCBzdGFydClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJlbnVtZXJhdGUoaXRlcmFibGUsIHN0YXJ0KVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJldmFsXCIsXHJcbiAgICBjb2RlOiBcImV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscywgbG9jYWxzKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscywgbG9jYWxzKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJleGVjXCIsXHJcbiAgICBjb2RlOiBcImV4ZWMob2JqZWN0LCBnbG9iYWxzLCBsb2NhbHMpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZXhlYyhvYmplY3QsIGdsb2JhbHMsIGxvY2FscylcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZmlsdGVyXCIsXHJcbiAgICBjb2RlOiBcImZpbHRlcihmdW5jdGlvbiwgaXRlcmFibGUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZmlsdGVyKGZ1bmN0aW9uLCBpdGVyYWJsZSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZmxvYXRcIixcclxuICAgIGNvZGU6IFwiZmxvYXQodmFsdWUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZmxvYXQodmFsdWUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImZvcm1hdFwiLFxyXG4gICAgY29kZTogXCJmb3JtYXQodmFsdWUsIGZvcm1hdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJmb3JtYXQodmFsdWUsIGZvcm1hdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZnJvemVuc2V0XCIsXHJcbiAgICBjb2RlOiBcImZyb3plbnNldChpdGVyYWJsZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJmcm96ZW5zZXQoaXRlcmFibGUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImdldGF0dHJcIixcclxuICAgIGNvZGU6IFwiZ2V0YXR0cihvYmplY3QsIGF0dHJpYnV0ZSwgZGVmYXVsdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJnZXRhdHRyKG9iamVjdCwgYXR0cmlidXRlLCBkZWZhdWx0KVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJnbG9iYWxzXCIsXHJcbiAgICBjb2RlOiBcImdsb2JhbHMoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImdsb2JhbHMoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJoYXNhdHRyXCIsXHJcbiAgICBjb2RlOiBcImhhc2F0dHIob2JqZWN0LCBhdHRyaWJ1dGUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaGFzYXR0cihvYmplY3QsIGF0dHJpYnV0ZSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaGFzaFwiLFxyXG4gICAgY29kZTogXCJoYXNoKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJoYXNoKG9iamVjdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaGVscFwiLFxyXG4gICAgY29kZTogXCJoZWxwKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJoZWxwKG9iamVjdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaGV4XCIsXHJcbiAgICBjb2RlOiBcImhleChudW1iZXIpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaGV4KG51bWJlcilcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaW50XCIsXHJcbiAgICBjb2RlOiBcImludCh2YWx1ZSwgYmFzZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpbnQodmFsdWUsIGJhc2UpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlkXCIsXHJcbiAgICBjb2RlOiBcImlkKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpZChvYmplY3QpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlucHV0XCIsXHJcbiAgICBjb2RlOiBcImlucHV0KHByb21wdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpbnB1dChwcm9tcHQpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlzaW5zdGFuY2VcIixcclxuICAgIGNvZGU6IFwiaXNpbnN0YW5jZShvYmplY3QsIHR5cGUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaXNpbnN0YW5jZShvYmplY3QsIHR5cGUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlzc3ViY2xhc3NcIixcclxuICAgIGNvZGU6IFwiaXNzdWJjbGFzcyhvYmplY3QsIHN1YmNsYXNzKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImlzc3ViY2xhc3Mob2JqZWN0LCBzdWJjbGFzcylcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXRlclwiLFxyXG4gICAgY29kZTogXCJpdGVyKG9iamVjdCwgc3ViY2xhc3MpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaXRlcihvYmplY3QsIHN1YmNsYXNzKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJsZW5cIixcclxuICAgIGNvZGU6IFwibGVuKHMpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwibGVuKHMpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImxpc3RcIixcclxuICAgIGNvZGU6IFwibGlzdChbaXRlcmFibGVdKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImxpc3QoW2l0ZXJhYmxlXSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibG9jYWxzXCIsXHJcbiAgICBjb2RlOiBcImxvY2FscygpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwibG9jYWxzKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibWFwXCIsXHJcbiAgICBjb2RlOiBcIm1hcChmdW5jdGlvbiwgaXRlcmFibGVzKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIm1hcChmdW5jdGlvbiwgaXRlcmFibGVzKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJtYXhcIixcclxuICAgIGNvZGU6IFwibWF4KGl0ZXJhYmxlKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIm1heChpdGVyYWJsZSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibWVtb3J5dmlld1wiLFxyXG4gICAgY29kZTogXCJtZW1vcnl2aWV3KG9iailcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJtZW1vcnl2aWV3KG9iailcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibWluXCIsXHJcbiAgICBjb2RlOiBcIm1pbihpdGVyYWJsZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJtaW4oaXRlcmFibGUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcIm5leHRcIixcclxuICAgIGNvZGU6IFwibmV4dChpdGVyYWJsZSwgZGVmYXVsdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJuZXh0KGl0ZXJhYmxlLCBkZWZhdWx0KVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJvYmplY3RcIixcclxuICAgIGNvZGU6IFwib2JqZWN0KClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJvYmplY3QoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJvY3RcIixcclxuICAgIGNvZGU6IFwib2N0KHgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwib2N0KHgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcIm9wZW5cIixcclxuICAgIGNvZGU6IFwib3BlbihmaWxlLCBtb2RlKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIm9wZW4oZmlsZSwgbW9kZSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwib3JkXCIsXHJcbiAgICBjb2RlOiBcIm9yZChjKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIm9yZChjKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJwb3dcIixcclxuICAgIGNvZGU6IFwicG93KHgsIHkpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwicG93KHgsIHkpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInByaW50XCIsXHJcbiAgICBjb2RlOiBcInByaW50KG9iamVjdChzKSwgc2VwYXJhdG9yPXNlcGFyYXRvciwgZW5kPWVuZCwgZmlsZT1maWxlLCBmbHVzaD1mbHVzaClcIixcclxuICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgXCJwcmludChvYmplY3QocyksIHNlcGFyYXRvcj1zZXBhcmF0b3IsIGVuZD1lbmQsIGZpbGU9ZmlsZSwgZmx1c2g9Zmx1c2gpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInByb3BlcnR5XCIsXHJcbiAgICBjb2RlOiBcInByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInByb3BlcnR5KGZnZXQ9Tm9uZSwgZnNldD1Ob25lLCBmZGVsPU5vbmUsIGRvYz1Ob25lKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJyYW5nZVwiLFxyXG4gICAgY29kZTogXCJyYW5nZShzdGFydCwgc3RvcCwgc3RlcClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJyYW5nZShzdGFydCwgc3RvcCwgc3RlcClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicmVwclwiLFxyXG4gICAgY29kZTogXCJyZXByKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJyZXByKG9iamVjdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicmV2ZXJzZWRcIixcclxuICAgIGNvZGU6IFwicmV2ZXJzZWQoc2VxKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInJldmVyc2VkKHNlcSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicm91bmRcIixcclxuICAgIGNvZGU6IFwicm91bmQobnVtYmVyWywgbmRpZ2l0c10pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwicm91bmQobnVtYmVyWywgbmRpZ2l0c10pXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInNldFwiLFxyXG4gICAgY29kZTogXCJzZXQoaXRlcmFibGUpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwic2V0KGl0ZXJhYmxlKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzZXRhdHRyXCIsXHJcbiAgICBjb2RlOiBcInNldGF0dHIob2JqZWN0LCBuYW1lLCB2YWx1ZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJzZXRhdHRyKG9iamVjdCwgbmFtZSwgdmFsdWUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInNsaWNlXCIsXHJcbiAgICBjb2RlOiBcInNsaWNlKHN0YXJ0LCBlbmQsIHN0ZXApXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwic2xpY2Uoc3RhcnQsIGVuZCwgc3RlcClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic29ydGVkXCIsXHJcbiAgICBjb2RlOiBcInNvcnRlZChpdGVyYWJsZSwga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInNvcnRlZChpdGVyYWJsZSwga2V5PWtleSwgcmV2ZXJzZT1yZXZlcnNlKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzdGF0aWNtZXRob2RcIixcclxuICAgIGNvZGU6IFwic3RhdGljbWV0aG9kKGZ1bmN0aW9uKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInN0YXRpY21ldGhvZChmdW5jdGlvbilcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic3RyXCIsXHJcbiAgICBjb2RlOiBcInN0cihvYmplY3QsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInN0cihvYmplY3QsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzdW1cIixcclxuICAgIGNvZGU6IFwic3VtKGl0ZXJhYmxlLCBzdGFydClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJzdW0oaXRlcmFibGUsIHN0YXJ0KVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzdXBlclwiLFxyXG4gICAgY29kZTogXCJzdXBlcih0eXBlWywgb2JqZWN0LW9yLXR5cGVdKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInN1cGVyKHR5cGVbLCBvYmplY3Qtb3ItdHlwZV0pXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInR1cGxlXCIsXHJcbiAgICBjb2RlOiBcInR1cGxlKGl0ZXJhYmxlKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInR1cGxlKGl0ZXJhYmxlKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ0eXBlXCIsXHJcbiAgICBjb2RlOiBcInR5cGUob2JqZWN0LCBiYXNlcywgZGljdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ0eXBlKG9iamVjdCwgYmFzZXMsIGRpY3QpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInVuaWNoclwiLFxyXG4gICAgY29kZTogXCJ1bmljaHIoaSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ1bmljaHIoaSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwidmFyc1wiLFxyXG4gICAgY29kZTogXCJ2YXJzKG9iamVjdClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ2YXJzKG9iamVjdClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiemlwXCIsXHJcbiAgICBjb2RlOiBcInppcChpdGVyYXRvcjEsIGl0ZXJxYXRvcjIsIGl0ZXJhdG9yMyAuLi4pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiemlwKGl0ZXJhdG9yMSwgaXRlcnFhdG9yMiwgaXRlcmF0b3IzIC4uLilcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaWZcIixcclxuICAgIGNvZGU6IFwiaWYgY29uZGl0aW9uOlxcbiAgcGFzc1wiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImlmIGNvbmRpdGlvbjpcXG4gIHBhc3NcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaWZlbGlmXCIsXHJcbiAgICBjb2RlOiBcImlmIGNvbmRpdGlvbjpcXG4gIHBhc3NcXG5lbGlmIGNvbmRpdGlvbjpcXG4gIHBhc3NcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJpZiBjb25kaXRpb246XFxuICBwYXNzXFxuZWxpZiBjb25kaXRpb246XFxuICBwYXNzXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlmZWxpZmVsc2VcIixcclxuICAgIGNvZGU6IFwiaWYgY29uZGl0aW9uOlxcbiAgcGFzc1xcbmVsaWYgY29uZGl0aW9uOlxcbiAgcGFzc1xcbmVsc2U6XFxuICBwYXNzXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiaWYgY29uZGl0aW9uOlxcbiAgcGFzc1xcbmVsaWYgY29uZGl0aW9uOlxcbiAgcGFzc1xcbmVsc2U6XFxuICBwYXNzXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlmZWxcIixcclxuICAgIGNvZGU6IFwiaWYgY29uZGl0aW9uOlxcbiAgcGFzc1xcbmVsc2U6XFxuICBwYXNzXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaWYgY29uZGl0aW9uOlxcbiAgcGFzc1xcbmVsc2U6XFxuICBwYXNzXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImVsaWZcIixcclxuICAgIGNvZGU6IFwiZWxzZTpcXG4gIHBhc3NcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJlbHNlOlxcbiAgcGFzc1wiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpZnNob3J0XCIsXHJcbiAgICBjb2RlOiBcInByaW50KCdBJykgaWYgYSA+IGIgZWxzZSBwcmludCgnQScpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwicHJpbnQoJ0EnKSBpZiBhID4gYiBlbHNlIHByaW50KCdBJylcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibGFtYmRhXCIsXHJcbiAgICBjb2RlOiBcImxhbWJkYSBhcmd1bWVudHMgOiBleHByZXNzaW9uXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwibGFtYmRhIGFyZ3VtZW50cyA6IGV4cHJlc3Npb25cIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZm9yXCIsXHJcbiAgICBjb2RlOiBcImZvciBpdGVtIGluIHJhbmdlOlxcbiBcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJmb3IgaXRlbSBpbiByYW5nZTpcXG4gXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImZvcj0+cmFuZ2VfZnVuY3Rpb25fMVwiLFxyXG4gICAgY29kZTogXCJmb3IgeCBpbiByYW5nZSg2KTpcXG4gcHJpbnQoeClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJmb3IgeCBpbiByYW5nZSg2KTpcXG4gcHJpbnQoeClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZm9yPT5mb3JfZWxzZVwiLFxyXG4gICAgY29kZTogXCJmb3IgeCBpbiByYW5nZSgyLCA2KTpcXG4gcHJpbnQoeClcXG5lbHNlOlxcbiBwcmludCgnRmluYWxseSBmaW5pc2hlZCEnKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICBcImZvciB4IGluIHJhbmdlKDIsIDYpOlxcbiBwcmludCh4KVxcbmVsc2U6XFxuIHByaW50KCdGaW5hbGx5IGZpbmlzaGVkIScpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcIndoaWxlXCIsXHJcbiAgICBjb2RlOiBcIndoaWxlIGV4cHJlc3Npb246XFxuICBwYXNzXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwid2hpbGUgZXhwcmVzc2lvbjpcXG4gIHBhc3NcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwid2hpbGVfZWxzZVwiLFxyXG4gICAgY29kZTogXCJ3aGlsZSBleHByZXNzaW9uOlxcbiAgcGFzc1xcbmVsc2U6XFxuICBwYXNzXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwid2hpbGUgZXhwcmVzc2lvbjpcXG4gIHBhc3NcXG5lbHNlOlxcbiAgcGFzc1wiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ3aGlsZT0+XCIsXHJcbiAgICBjb2RlOiBcImkgPSAxXFxud2hpbGUgaSA8IDY6XFxuICBwcmludChpKVxcbiAgaSArPSAxXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiaSA9IDFcXG53aGlsZSBpIDwgNjpcXG4gIHByaW50KGkpXFxuICBpICs9IDFcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwid2hpbGU9PmJyZWFrX3N0YXRlbWVudFwiLFxyXG4gICAgY29kZTogXCJpID0gMVxcbndoaWxlIGkgPCA2OlxcbiBwcmludChpKVxcbiAgaWYgaSA9PSAzOlxcbiAgICBicmVha1xcbiAgaSArPSAxXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiaSA9IDFcXG53aGlsZSBpIDwgNjpcXG4gcHJpbnQoaSlcXG4gIGlmIGkgPT0gMzpcXG4gICAgYnJlYWtcXG4gIGkgKz0gMVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ3aGlsZT0+Y29udGludWVfc3RhdGVtZW50XCIsXHJcbiAgICBjb2RlOiBcImkgPSAxXFxud2hpbGUgaSA8IDY6XFxuICBpICs9IDFcXG4gIHByaW50KGkpXFxuICBpZiBpID09IDM6XFxuICAgIGNvbnRpbnVlXFxuICBwcmludChpKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICBcImkgPSAxXFxud2hpbGUgaSA8IDY6XFxuICBpICs9IDFcXG4gIHByaW50KGkpXFxuICBpZiBpID09IDM6XFxuICAgIGNvbnRpbnVlXFxuICBwcmludChpKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJmdW5jdGlvblwiLFxyXG4gICAgY29kZTogXCJkZWYgbmFtZShhcmdzKTpcXG4gcGFzc1wiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImRlZiBuYW1lKGFyZ3MpOlxcbiBwYXNzXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRlZlwiLFxyXG4gICAgY29kZTogXCJkZWYgbmFtZShhcmdzKTpcXG4gcGFzc1wiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImRlZiBuYW1lKGFyZ3MpOlxcbiBwYXNzXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImNhcGl0YWxpemVcIixcclxuICAgIGNvZGU6IFwiLmNhcGl0YWxpemUoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5jYXBpdGFsaXplKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY2FzZWZvbGRcIixcclxuICAgIGNvZGU6IFwiLmNhc2Vmb2xkKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuY2FzZWZvbGQoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJjZW50ZXJcIixcclxuICAgIGNvZGU6IFwiLmNlbnRlcigpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmNlbnRlcigpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInN0cmluZy5jb3VudFwiLFxyXG4gICAgY29kZTogXCIuY291bnQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5jb3VudCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImVuY29kZVwiLFxyXG4gICAgY29kZTogXCIuZW5jb2RlKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuZW5jb2RlKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZW5kc3dpdGhcIixcclxuICAgIGNvZGU6IFwiLmVuZHN3aXRoKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuZW5kc3dpdGgoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJleHBhbmR0YWJzXCIsXHJcbiAgICBjb2RlOiBcIi5leHBhbmR0YWJzKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuZXhwYW5kdGFicygpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImZpbmRcIixcclxuICAgIGNvZGU6IFwiLmZpbmQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5maW5kKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZm9ybWF0XCIsXHJcbiAgICBjb2RlOiBcIi5mb3JtYXQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5mb3JtYXQoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJmb3JtYXRfbWFwXCIsXHJcbiAgICBjb2RlOiBcIi5mb3JtYXRfbWFwKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuZm9ybWF0X21hcCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImluZGV4XCIsXHJcbiAgICBjb2RlOiBcIi5pbmRleCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmluZGV4KClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXNhbG51bVwiLFxyXG4gICAgY29kZTogXCIuaXNhbG51bSgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmlzYWxudW0oKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpc2FscGhhXCIsXHJcbiAgICBjb2RlOiBcIi5pc2FscGhhKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuaXNhbHBoYSgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlzZGVjaW1hbFwiLFxyXG4gICAgY29kZTogXCIuaXNkZWNpbWFsKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuaXNkZWNpbWFsKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXNkaWdpdFwiLFxyXG4gICAgY29kZTogXCIuaXNkaWdpdCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmlzZGlnaXQoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpc2lkZW50aWZpZXJcIixcclxuICAgIGNvZGU6IFwiLmlzaWRlbnRpZmllcigpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmlzaWRlbnRpZmllcigpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlzbG93ZXJcIixcclxuICAgIGNvZGU6IFwiLmlzbG93ZXIoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5pc2xvd2VyKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXNudW1lcmljXCIsXHJcbiAgICBjb2RlOiBcIi5pc251bWVyaWMoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5pc251bWVyaWMoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpc3ByaW50YWJsZVwiLFxyXG4gICAgY29kZTogXCIuaXNwcmludGFibGUoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5pc3ByaW50YWJsZSgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImlzc3BhY2VcIixcclxuICAgIGNvZGU6IFwiLmlzc3BhY2UoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5pc3NwYWNlKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXN0aXRsZVwiLFxyXG4gICAgY29kZTogXCIuaXN0aXRsZSgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmlzdGl0bGUoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpc3VwcGVyXCIsXHJcbiAgICBjb2RlOiBcIi5pc3VwcGVyKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuaXN1cHBlcigpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImpvaW5cIixcclxuICAgIGNvZGU6IFwiLmpvaW4oKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5qb2luKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibGp1c3RcIixcclxuICAgIGNvZGU6IFwiLmxqdXN0KClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIubGp1c3QoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJsb3dlclwiLFxyXG4gICAgY29kZTogXCIubG93ZXIoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5sb3dlcigpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImxzdHJpcFwiLFxyXG4gICAgY29kZTogXCIubHN0cmlwKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIubHN0cmlwKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibWFrZXRyYW5zXCIsXHJcbiAgICBjb2RlOiBcIi5tYWtldHJhbnMoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5tYWtldHJhbnMoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJwYXJ0aXRpb25cIixcclxuICAgIGNvZGU6IFwiLnBhcnRpdGlvbigpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnBhcnRpdGlvbigpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInJlcGxhY2VcIixcclxuICAgIGNvZGU6IFwiLnJlcGxhY2UoeCwgeSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIucmVwbGFjZSh4LCB5KVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJyZmluZFwiLFxyXG4gICAgY29kZTogXCIucmZpbmQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5yZmluZCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInJpbmRleFwiLFxyXG4gICAgY29kZTogXCIucmluZGV4KClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIucmluZGV4KClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicnBhcnRpdGlvblwiLFxyXG4gICAgY29kZTogXCIucnBhcnRpdGlvbigpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnJwYXJ0aXRpb24oKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJyc3BsaXRcIixcclxuICAgIGNvZGU6IFwiLnJzcGxpdCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnJzcGxpdCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInNwbGl0XCIsXHJcbiAgICBjb2RlOiBcIi5zcGxpdCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnNwbGl0KClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic3BsaXRsaW5lc1wiLFxyXG4gICAgY29kZTogXCIuc3BsaXRsaW5lcygpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnNwbGl0bGluZXMoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzdHJpbmcuc3BsaXRsaW5lcz0+XCIsXHJcbiAgICBjb2RlOiBcInR4dCA9ICdUaGFuayB5b3UgZm9yIHRoZSBtdXNpY1xcbldlbGNvbWUgdG8gdGhlIGp1bmdsZSdcXG54ID0gdHh0LnNwbGl0bGluZXMoKVxcbnByaW50KHgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwidHh0ID0gJ1RoYW5rIHlvdSBmb3IgdGhlIG11c2ljXFxuV2VsY29tZSB0byB0aGUganVuZ2xlJ1xcbnggPSB0eHQuc3BsaXRsaW5lcygpXFxucHJpbnQoeClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic3RyaW5nLnNwbGl0bGluZXM9PlwiLFxyXG4gICAgY29kZTogXCJ0eHQgPSAnVGhhbmsgeW91IGZvciB0aGUgbXVzaWNcXG5XZWxjb21lIHRvIHRoZSBqdW5nbGUnXFxueCA9IHR4dC5zcGxpdGxpbmVzKFRydWUpXFxucHJpbnQoeClcIixcclxuICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgXCJ0eHQgPSAnVGhhbmsgeW91IGZvciB0aGUgbXVzaWNcXG5XZWxjb21lIHRvIHRoZSBqdW5nbGUnXFxueCA9IHR4dC5zcGxpdGxpbmVzKFRydWUpXFxucHJpbnQoeClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic3RhcnRzd2l0aFwiLFxyXG4gICAgY29kZTogXCIuc3RhcnRzd2l0aCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnN0YXJ0c3dpdGgoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzd2FwY2FzZVwiLFxyXG4gICAgY29kZTogXCIuc3dhcGNhc2UoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5zd2FwY2FzZSgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInRpdGxlXCIsXHJcbiAgICBjb2RlOiBcIi50aXRsZSgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnRpdGxlKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwidHJhbnNsYXRlXCIsXHJcbiAgICBjb2RlOiBcIi50cmFuc2xhdGUoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi50cmFuc2xhdGUoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ1cHBlclwiLFxyXG4gICAgY29kZTogXCIudXBwZXIoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi51cHBlcigpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInN0cmluZy51cHBlcj0+XCIsXHJcbiAgICBjb2RlOiBcInR4dCA9ICdIZWxsbyBteSBmcmllbmRzJ1xcbnggPSB0eHQudXBwZXIoKVxcbnByaW50KHgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwidHh0ID0gJ0hlbGxvIG15IGZyaWVuZHMnXFxueCA9IHR4dC51cHBlcigpXFxucHJpbnQoeClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiemZpbGxcIixcclxuICAgIGNvZGU6IFwiLnpmaWxsKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuemZpbGwoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJhcHBlbmRcIixcclxuICAgIGNvZGU6IFwiLmFwcGVuZCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmFwcGVuZCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImNsZWFyXCIsXHJcbiAgICBjb2RlOiBcIi5jbGVhcigpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmNsZWFyKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY29weVwiLFxyXG4gICAgY29kZTogXCIuY29weSgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmNvcHkoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJsaXN0LmNvdW50XCIsXHJcbiAgICBjb2RlOiBcIi5jb3VudFwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5jb3VudFwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJleHRlbmRcIixcclxuICAgIGNvZGU6IFwiLmV4dGVuZCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmV4dGVuZCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImluZGV4XCIsXHJcbiAgICBjb2RlOiBcIi5pbmRleCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmluZGV4KClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaW5zZXJ0XCIsXHJcbiAgICBjb2RlOiBcIi5pbnNlcnQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5pbnNlcnQoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJwb3BcIixcclxuICAgIGNvZGU6IFwiLnBvcCgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnBvcCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInJlbW92ZVwiLFxyXG4gICAgY29kZTogXCIucmVtb3ZlKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIucmVtb3ZlKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicmV2ZXJzZVwiLFxyXG4gICAgY29kZTogXCIucmV2ZXJzZSgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnJldmVyc2UoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzb3J0XCIsXHJcbiAgICBjb2RlOiBcIi5zb3J0KClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuc29ydCgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImNvbXByZWhlbnNpb25zXCIsXHJcbiAgICBjb2RlOiBcIlsgZXhwcmVzc2lvbiBmb3IgaXRlbSBpbiBsaXN0IGlmIGNvbmRpdGlvbmFsIF1cIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJbIGV4cHJlc3Npb24gZm9yIGl0ZW0gaW4gbGlzdCBpZiBjb25kaXRpb25hbCBdXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImNsZWFyXCIsXHJcbiAgICBjb2RlOiBcIi5jbGVhcigpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmNsZWFyKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY29weVwiLFxyXG4gICAgY29kZTogXCIuY29weSgpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLmNvcHkoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJmcm9ta2V5c1wiLFxyXG4gICAgY29kZTogXCIuZnJvbWtleXMoeCwgeSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuZnJvbWtleXMoeCwgeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiZ2V0XCIsXHJcbiAgICBjb2RlOiBcIi5nZXQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5nZXQoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJpdGVtc1wiLFxyXG4gICAgY29kZTogXCIuaXRlbXMoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5pdGVtcygpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImtleXNcIixcclxuICAgIGNvZGU6IFwiLmtleXMoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5rZXlzKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicG9wXCIsXHJcbiAgICBjb2RlOiBcIi5wb3AoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5wb3AoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJwb3BpdGVtXCIsXHJcbiAgICBjb2RlOiBcIi5wb3BpdGVtKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIucG9waXRlbSgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInNldGRlZmF1bHRcIixcclxuICAgIGNvZGU6IFwiLnNldGRlZmF1bHQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5zZXRkZWZhdWx0KClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwidXBkYXRlXCIsXHJcbiAgICBjb2RlOiBcIi51cGRhdGUoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi51cGRhdGUoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ2YWx1ZXNcIixcclxuICAgIGNvZGU6IFwiLnZhbHVlcygpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiLnZhbHVlcygpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInR1cGxlLmNvdW50XCIsXHJcbiAgICBjb2RlOiBcIi5jb3VudCh2YWx1ZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuY291bnQodmFsdWUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImluZGV4XCIsXHJcbiAgICBjb2RlOiBcIi5pbmRleCh2YWx1ZSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuaW5kZXgodmFsdWUpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImFkZFwiLFxyXG4gICAgY29kZTogXCIuYWRkKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuYWRkKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY2xlYXJcIixcclxuICAgIGNvZGU6IFwiLmNsZWFyKClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuY2xlYXIoKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJjb3B5XCIsXHJcbiAgICBjb2RlOiBcIi5jb3B5KClcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCIuY29weSgpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRpZmZlcmVuY2VcIixcclxuICAgIGNvZGU6IFwieC5kaWZmZXJlbmNlKHkpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwieC5kaWZmZXJlbmNlKHkpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRpZmZlcmVuY2VfdXBkYXRlXCIsXHJcbiAgICBjb2RlOiBcInguZGlmZmVyZW5jZV91cGRhdGUoeSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ4LmRpZmZlcmVuY2VfdXBkYXRlKHkpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImRpc2NhcmRcIixcclxuICAgIGNvZGU6IFwiLmRpc2NhcmQoKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIi5kaXNjYXJkKClcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaW50ZXJzZWN0aW9uXCIsXHJcbiAgICBjb2RlOiBcInguaW50ZXJzZWN0aW9uKHkpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwieC5pbnRlcnNlY3Rpb24oeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaW50ZXJzZWN0aW9uX3VwZGF0ZVwiLFxyXG4gICAgY29kZTogXCJ4LmludGVyc2VjdGlvbl91cGRhdGUoeSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ4LmludGVyc2VjdGlvbl91cGRhdGUoeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXNkaXNqb2ludFwiLFxyXG4gICAgY29kZTogXCJ4LmlzZGlzam9pbnQoeSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ4LmlzZGlzam9pbnQoeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXNzdWJzZXRcIixcclxuICAgIGNvZGU6IFwieC5pc3N1YnNldCh5KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInguaXNzdWJzZXQoeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaXNzdXBlcnNldFwiLFxyXG4gICAgY29kZTogXCJ4Lmlzc3VwZXJzZXQoeSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ4Lmlzc3VwZXJzZXQoeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic3ltbWV0cmljX2RpZmZlcmVuY2VcIixcclxuICAgIGNvZGU6IFwieC5zeW1tZXRyaWNfZGlmZmVyZW5jZSh5KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcInguc3ltbWV0cmljX2RpZmZlcmVuY2UoeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwic3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlXCIsXHJcbiAgICBjb2RlOiBcInguc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKHkpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwieC5zeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUoeSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY2xhc3NcIixcclxuICAgIGNvZGU6IFwiY2xhc3MgTXlDbGFzczpcXG4gIHBhc3NcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJjbGFzcyBNeUNsYXNzOlxcbiAgcGFzc1wiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJfX2luaXRfX1wiLFxyXG4gICAgY29kZTogXCJkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYWdlKTpcXG4gIHNlbGYubmFtZSA9IG5hbWVcXG4gIHNlbGYuYWdlID0gYWdlXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGFnZSk6XFxuICBzZWxmLm5hbWUgPSBuYW1lXFxuICBzZWxmLmFnZSA9IGFnZVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJfX2l0ZXJfX1wiLFxyXG4gICAgY29kZTogXCJkZWYgX19pdGVyX18oc2VsZik6XFxuICBzZWxmLmEgPSAxXFxuICByZXR1cm4gc2VsZlwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcImRlZiBfX2l0ZXJfXyhzZWxmKTpcXG4gIHNlbGYuYSA9IDFcXG4gIHJldHVybiBzZWxmXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcIl9fbmV4dF9fXCIsXHJcbiAgICBjb2RlOiBcImRlZiBfX25leHRfXyhzZWxmKTpcXG4gIHggPSBzZWxmLmFcXG4gIHNlbGYuYSArPSAxXFxuICByZXR1cm4geFwiLFxyXG4gICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICBcImRlZiBfX25leHRfXyhzZWxmKTpcXG4gIHggPSBzZWxmLmFcXG4gIHNlbGYuYSArPSAxXFxuICByZXR1cm4geFwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ0cnlleGNlcHRcIixcclxuICAgIGNvZGU6IFwidHJ5OlxcbiAgcHJpbnQoeClcXG5leGNlcHQ6XFxuICBwcmludCgnQW4gZXhjZXB0aW9uIG9jY3VycmVkJylcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJ0cnk6XFxuICBwcmludCh4KVxcbmV4Y2VwdDpcXG4gIHByaW50KCdBbiBleGNlcHRpb24gb2NjdXJyZWQnKVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJ0cnlleGNlcHRmaW5hbGx5XCIsXHJcbiAgICBjb2RlOiBcInRyeTpcXG4gIHByaW50KHgpXFxuZXhjZXB0OlxcbiAgcHJpbnQoJ1NvbWV0aGluZyB3ZW50IHdyb25nJylcXG5maW5hbGx5OlxcbiAgcHJpbnQoJ1RoZSB0cnkgZXhjZXB0IGlzIGZpbmlzaGVkJylcIixcclxuICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgXCJ0cnk6XFxuICBwcmludCh4KVxcbmV4Y2VwdDpcXG4gIHByaW50KCdTb21ldGhpbmcgd2VudCB3cm9uZycpXFxuZmluYWxseTpcXG4gIHByaW50KCdUaGUgdHJ5IGV4Y2VwdCBpcyBmaW5pc2hlZCcpXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcIm9wZW5GaWxlXCIsXHJcbiAgICBjb2RlOiBcImYgPSBvcGVuKCdkZW1vZmlsZS50eHQnLCAncicpXFxucHJpbnQoZi5yZWFkKCkpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiZiA9IG9wZW4oJ2RlbW9maWxlLnR4dCcsICdyJylcXG5wcmludChmLnJlYWQoKSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwib3BlbkZpbGVSZWFkTGluZVwiLFxyXG4gICAgY29kZTogXCJmID0gb3BlbignZGVtb2ZpbGUudHh0JywgJ3InKVxcbnByaW50KGYucmVhZGxpbmUoKSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJmID0gb3BlbignZGVtb2ZpbGUudHh0JywgJ3InKVxcbnByaW50KGYucmVhZGxpbmUoKSlcIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwicmVhZEltZ0NvbG9yXCIsXHJcbiAgICBkZXRhaWw6XCJjdjJcIixcclxuICAgIGNvZGU6IFwiY3YyLmltcmVhZCgkezE6aW1hZ2VfcGF0aH0sIGN2Mi5JTVJFQURfQ09MT1IpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiVGhpcyBtZXRob2QgaXMgdXNlZCB0byByZWFkIGFuIGltYWdlIGZyb20gaXRzIHBhdGguXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInJlYWRJbWdCV1wiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5pbXJlYWQoJHsxOmltYWdlX3BhdGh9LCBjdjIuSU1SRUFEX0dSQVlTQ0FMRSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHJlYWQgYW4gaW1hZ2UgZnJvbSBpdHMgcGF0aC5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwibGluZVwiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5saW5lKCR7MTppbWd9LCAkezI6c3RhcnRfY29vcmRpbmF0ZXN9LCAkezM6ZW5kX2Nvb3JkaW5hdGV9LCAkezQ6Y29sb3JfaW5fYmdyfSwgJHs1OnRoaWNrbmVzc30pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiRHJhd3MgYSBsaW5lIHNlZ21lbnQgY29ubmVjdGluZyB0d28gcG9pbnRzLlwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJyZWN0YW5nbGVcIixcclxuICAgIGRldGFpbDpcImN2MlwiLFxyXG4gICAgY29kZTogXCJjdjIucmVjdGFuZ2xlKCR7MTppbWd9LCR7Mjp0b3BfbGVmdF92ZXJ0ZXhfY29vcmRpbmF0ZXN9LCAkezM6bG93ZXJfcmlnaHRfdmVydGV4X2Nvb3JkaW5hdGVzfSwgJHs0OmNvbG9yX2luX2Jncn0sICR7NTp0aGlja25lc3N9KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIkRyYXdzIGEgc2ltcGxlLCB0aGljaywgb3IgZmlsbGVkIHVwLXJpZ2h0IHJlY3RhbmdsZS5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiY2lyY2xlXCIsXHJcbiAgICBkZXRhaWw6XCJjdjJcIixcclxuICAgIGNvZGU6IFwiY3YyLmNpcmNsZSgkezE6aW1nfSwgJHsyOmNlbnRlcl9jb29yZGluYXRlc30sICR7MzpyYWRpdXN9LCAkezQ6Y29sb3J9LCAkezU6dGhpY2tuZXNzfSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJEcmF3cyBhIGNpcmNsZVwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJwb2x5bGluZXNcIixcclxuICAgIGRldGFpbDpcImN2MlwiLFxyXG4gICAgY29kZTogXCJjdjIucG9seWxpbmVzKCR7MTppbWd9LCAkezI6W3B0c119LCAkezM6aXNDbG9zZWR9LCAkezQ6Y29sb3J9LCAkezU6dGhpY2tuZXNzfSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJEcmF3cyBzZXZlcmFsIHBvbHlnb25hbCBjdXJ2ZXMuXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcInRleHRcIixcclxuICAgIGRldGFpbDpcImN2MlwiLFxyXG4gICAgY29kZTogXCJjdjIucHV0VGV4dCgkezE6aW1nfSwgJHsyOuKAmFRleHRDb250ZW504oCZfSwgJHszOuKAmHRleHRfc3RhcnRpbmdfcG9pbnRfY29vcmRpbmF0ZXPigJl9KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIkRyYXdzIGEgdGV4dCBzdHJpbmcuXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImFkZEltZ1wiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5hZGQoJHsxOmltZzF9LCAkezI6aW1nMn0pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkZCB0d28gaW1hZ2VzLlwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJzdWJ0cmFjdEltZ1wiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5zdWJ0cmFjdCgkezE6aW1nMX0sICR7MjppbWcyfSlcIixcclxuICAgIGRlc2NyaXB0aW9uczogXCJUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc3VidHJhY3QgdHdvIGltYWdlcy5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiYWRkV2VpZ2h0ZWRJbWdcIixcclxuICAgIGRldGFpbDpcImN2MlwiLFxyXG4gICAgY29kZTogXCJjdjIuYWRkV2VpZ2h0ZWQoJHsxOmltZzF9LCAkezI6d2VpZ2h0MX0sICR7MzppbWcyfSwgJHs0OndlaWdodDJ9LCAkezU6Z2FtbWFWYWx1ZX0pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiVGhpcyBpcyBhbHNvIGtub3duIGFzIEFscGhhIEJsZW5kaW5nLiBUaGlzIGlzIG5vdGhpbmcgYnV0IGEgd2VpZ2h0ZWQgYmxlbmRpbmcgcHJvY2VzcyBvZiB0d28gaW1hZ2VzLlwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJiaXR3aXNlX2FuZFwiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5iaXR3aXNlX2FuZCgkezE6aW1nMX0sICR7MjppbWcyfSwgJHszOmRlc3RpbmF0aW9ufSwgJHs0Om1hc2t9KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICBcIlRoaXMgcGVyZm9ybXMgYml0d2lzZSBhbmQgbG9naWNhbCBvcGVyYXRpb25zIGJldHdlZW4gdHdvIGltYWdlcy5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiYml0d2lzZV9vclwiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5iaXR3aXNlX29yKCR7MTppbWcxfSwgJHsyOmltZzJ9LCAkezM6ZGVzdGluYXRpb259LCAkezQ6bWFza30pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiVGhpcyBwZXJmb3JtcyBiaXR3aXNlIG9yIGxvZ2ljYWwgb3BlcmF0aW9ucyBiZXR3ZWVuIHR3byBpbWFnZXMuXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImJpdHdpc2Vfbm90XCIsXHJcbiAgICBkZXRhaWw6XCJjdjJcIixcclxuICAgIGNvZGU6IFwiY3YyLmJpdHdpc2Vfbm90KCR7MTppbWd9LCAkezI6ZGVzdGluYXRpb259LCAkezM6bWFza30pXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6XHJcbiAgICAgIFwiVGhpcyBwZXJmb3JtcyBiaXR3aXNlIG5vdCBsb2dpY2FsIG9wZXJhdGlvbnMgYmV0d2VlbiBhbiBpbWFnZSBhbmQgYSBtYXNrLlwiLFxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogXCJzbmlwcGV0XCIsXHJcbiAgICBsYWJlbDogXCJiaXR3aXNlX3hvclwiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5iaXR3aXNlX3hvcigkezE6aW1nMX0sICR7MjppbWcyfSwgJHszOmRlc3RpbmF0aW9ufSwgJHs0Om1hc2t9KVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOlxyXG4gICAgICBcIlRoaXMgcGVyZm9ybXMgYml0d2lzZSB4b3IgbG9naWNhbCBvcGVyYXRpb25zIGJldHdlZW4gdHdvIGltYWdlcy5cIixcclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6IFwic25pcHBldFwiLFxyXG4gICAgbGFiZWw6IFwiaW5SYW5nZVwiLFxyXG4gICAgZGV0YWlsOlwiY3YyXCIsXHJcbiAgICBjb2RlOiBcImN2Mi5pblJhbmdlKCR7MTpyYXdfaW1nfSwgJHsyOmxvd2VyfSwgJHszOnVwcGVyfSlcIixcclxuICAgIGRlc2NyaXB0aW9uczpcclxuICAgICAgXCJDaGVja3MgaWYgYXJyYXkgZWxlbWVudHMgbGllIGJldHdlZW4gdGhlIGVsZW1lbnRzIG9mIHR3byBvdGhlciBhcnJheXMuXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImJncjJncmF5XCIsXHJcbiAgICBkZXRhaWw6XCJjdjJcIixcclxuICAgIGNvZGU6IFwiY3YyLmN2dENvbG9yKCR7MTppbWd9LCBjdjIuQ09MT1JfQkdSMkdSQVkpXCIsXHJcbiAgICBkZXNjcmlwdGlvbnM6IFwiQ29udmVydHMgYW4gaW1hZ2UgZnJvbSBvbmUgQkdSIGNvbG9yIHNwYWNlIHRvIEdSQVkuXCIsXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiBcInNuaXBwZXRcIixcclxuICAgIGxhYmVsOiBcImJncjJoc3ZcIixcclxuICAgIGRldGFpbDpcImN2MlwiLFxyXG4gICAgY29kZTogXCJjdjIuY3Z0Q29sb3IoJHsxOmltZ30sIGN2Mi5DT0xPUl9CR1IySFNWKVwiLFxyXG4gICAgZGVzY3JpcHRpb25zOiBcIkNvbnZlcnRzIGFuIGltYWdlIGZyb20gb25lIEJHUiBjb2xvciBzcGFjZSB0byBIU1YuXCIsXHJcbiAgfVxyXG5dO1xyXG4iXSwibmFtZXMiOlsiYmFzaWNfc25pcHBldHMiLCJ0eXBlIiwibGFiZWwiLCJjb2RlIiwiZGVzY3JpcHRpb25zIiwiZGV0YWlsIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6354.7c788f98.js b/react_frontend/static/react_frontend/js/6354.7c788f98.js new file mode 100644 index 000000000..4df9a9173 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6354.7c788f98.js @@ -0,0 +1,3 @@ +/*! For license information please see 6354.7c788f98.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6354,917],{6354:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(6540),a=r(5556),o=r.n(a),i=r(917),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";function n(e){return decodeURIComponent(escape(e))}r.r(t),r.d(t,{drawImage:()=>i,drawLeftImage:()=>s});var a=new Image,o=new Image;function i(e){var t=document.getElementById("gui_canvas_right"),r=t.getContext("2d");function o(){window.requestAnimationFrame(o),r.drawImage(a,0,0)}a.onload=function(){o()};var i=JSON.parse(e.image),s=n(i.image),c=i.shape;""!=s&&(a.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}function s(e){var t=document.getElementById("gui_canvas_left"),r=t.getContext("2d");function a(){window.requestAnimationFrame(a),r.drawImage(o,0,0)}o.onload=function(){a()};var i=JSON.parse(e.image_left),s=n(i.image_left),c=i.shape;""!=s&&(o.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,o,i){if(i!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,o={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,n)&&!c.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:u,ref:l,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFbEgsTUFBTWdILEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9kcm9uZV9neW1raGFuYV9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNEcm9uZUd5bWtoYW5hLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2d5bWtoYW5hX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZXNEcm9uZUd5bWtoYW5hLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCB7IGRyYXdJbWFnZSwgZHJhd0xlZnRJbWFnZX0gZnJvbSBcIi4vaGVscGVycy9zaG93SW1hZ2VzRHJvbmVHeW1raGFuYVwiO1xyXG5cclxuXHJcbmZ1bmN0aW9uIFNwZWNpZmljRHJvbmVHeW1raGFuYShwcm9wcykge1xyXG4gIGNvbnN0IFtpbWFnZSwgc2V0SW1hZ2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2ltYWdlJylcclxuICAgICAgICBjb25zdCBpbWFnZSA9IEpTT04ucGFyc2UobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZSlcclxuICAgICAgICBpZihpbWFnZS5pbWFnZSl7XHJcbiAgICAgICAgICBkcmF3SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSlcclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcbiAgICAgIGlmKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfbGVmdCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2ltYWdlX2xlZnQnKVxyXG4gICAgICAgIGNvbnN0IGltYWdlID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlX2xlZnQpXHJcbiAgICAgICAgaWYoaW1hZ2UuaW1hZ2VfbGVmdCl7XHJcbiAgICAgICAgICBkcmF3TGVmdEltYWdlKG1lc3NhZ2UuZGF0YS51cGRhdGUpXHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG5cclxuICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcblxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgIGhlaWdodDogXCIxMDAlXCJ9fT5cclxuICAgICAgPGNhbnZhcyBpZD1cImd1aV9jYW52YXNfbGVmdFwiPjwvY2FudmFzPlxyXG4gICAgICA8Y2FudmFzIGlkPVwiZ3VpX2NhbnZhc19yaWdodFwiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNEcm9uZUd5bWtoYW5hLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNEcm9uZUd5bWtoYW5hXHJcbiIsIi8vIFRvIGRlY29kZSB0aGUgaW1hZ2Ugc3RyaW5nIHdlIHdpbGwgcmVjZWl2ZSBmcm9tIHNlcnZlclxyXG5mdW5jdGlvbiBkZWNvZGVfdXRmOChzKXtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKVxyXG59XHJcblxyXG5sZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxubGV0IGltYWdlX2xlZnQgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3SW1hZ2UgKGRhdGEpe1xyXG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKSxcclxuICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2ltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgZnVuY3Rpb24gdXBkYXRlX2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuICAgIFxyXG4gICAgaWYoc291cmNlICE9IFwiXCIpe1xyXG4gICAgICAgIGltYWdlLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICB9ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3TGVmdEltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXNfbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19sZWZ0XCIpLFxyXG4gICAgY29udGV4dF9sZWZ0ID0gY2FudmFzX2xlZnQuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlX2xlZnQub25sb2FkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICB1cGRhdGVfbGVmdF9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9sZWZ0X2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfbGVmdF9pbWFnZSk7XHJcbiAgICAgICAgY29udGV4dF9sZWZ0LmRyYXdJbWFnZShpbWFnZV9sZWZ0LCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZV9sZWZ0LnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXNfbGVmdC53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgIGNhbnZhc19sZWZ0LmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIlNwZWNpZmljRHJvbmVHeW1raGFuYSIsInByb3BzIiwiX1JlYWN0JHVzZVN0YXRlMiIsIlJlYWN0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJpbWFnZSIsIkpTT04iLCJwYXJzZSIsImRyYXdJbWFnZSIsImltYWdlX2xlZnQiLCJkcmF3TGVmdEltYWdlIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJjaGlsZHJlbiIsIl9qc3giLCJpZCIsInByb3BUeXBlcyIsImNpcmN1aXQiLCJQcm9wVHlwZXMiLCJkZWNvZGVfdXRmOCIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJJbWFnZSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsImltYWdlX2RhdGEiLCJzb3VyY2UiLCJzaGFwZSIsInNyYyIsImNhbnZhc19sZWZ0IiwiY29udGV4dF9sZWZ0IiwidXBkYXRlX2xlZnRfaW1hZ2UiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6354.7c788f98.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6354.7c788f98.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6354.7c788f98.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/6357.b5a601fb.js b/react_frontend/static/react_frontend/js/6357.b5a601fb.js new file mode 100644 index 000000000..7c46d282c --- /dev/null +++ b/react_frontend/static/react_frontend/js/6357.b5a601fb.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6357],{6357:(e,a,t)=>{function n(e){return decodeURIComponent(escape(e))}t.r(a),t.d(a,{drawImage:()=>o,drawLeftImage:()=>d});var i=new Image,r=new Image;function o(e){var a=document.getElementById("gui_canvas_right"),t=a.getContext("2d");function r(){window.requestAnimationFrame(r),t.drawImage(i,0,0)}i.onload=function(){r()};var o=JSON.parse(e.image),d=n(o.image),g=o.shape;""!=d&&(i.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}function d(e){var a=document.getElementById("gui_canvas_left"),t=a.getContext("2d");function i(){window.requestAnimationFrame(i),t.drawImage(r,0,0)}r.onload=function(){i()};var o=JSON.parse(e.image_left),d=n(o.image_left),g=o.shape;""!=d&&(r.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNjM1Ny5kOTkwNzI3NS5qcyIsIm1hcHBpbmdzIjoiZ0hBQ0EsU0FBU0EsRUFBWUMsR0FDakIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNyQyxDLG9EQUVBLElBQUlHLEVBQVEsSUFBSUMsTUFDWkMsRUFBYSxJQUFJRCxNQUVkLFNBQVNFLEVBQVdDLEdBQ3ZCLElBQUlDLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0xDLE9BQU9DLHNCQUFzQkYsR0FDN0JGLEVBQVFMLFVBQVVILEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNYSxPQUFTLFdBQ1hILEdBQ0osRUFTQSxJQUFJSSxFQUFhQyxLQUFLQyxNQUFNWixFQUFLSixPQUM3QmlCLEVBQVNyQixFQUFZa0IsRUFBV2QsT0FDaENrQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NqQixFQUFNbUIsSUFBTSwwQkFBNEJGLEVBQ3hDWixFQUFPZSxNQUFRRixFQUFNLEdBQ3JCYixFQUFPZ0IsT0FBU0gsRUFBTSxHQUU5QixDQUVPLFNBQVNJLEVBQWVsQixHQUMzQixJQUFJbUIsRUFBY2pCLFNBQVNDLGVBQWUsbUJBQzFDaUIsRUFBZUQsRUFBWWQsV0FBVyxNQVF0QyxTQUFTZ0IsSUFDTGQsT0FBT0Msc0JBQXNCYSxHQUM3QkQsRUFBYXJCLFVBQVVELEVBQVksRUFBRyxFQUMxQyxDQVJBQSxFQUFXVyxPQUFTLFdBQ2hCWSxHQUNKLEVBU0EsSUFBSVgsRUFBYUMsS0FBS0MsTUFBTVosRUFBS0YsWUFDN0JlLEVBQVNyQixFQUFZa0IsRUFBV1osWUFDaENnQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NmLEVBQVdpQixJQUFNLDBCQUE0QkYsRUFDN0NNLEVBQVlILE1BQVFGLEVBQU0sR0FDMUJLLEVBQVlGLE9BQVNILEVBQU0sR0FFbkMsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2hhbmdhcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvaGVscGVycy9zaG93SW1hZ2VzRHJvbmVIYW5nYXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpe1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbn1cclxuXHJcbmxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG5sZXQgaW1hZ2VfbGVmdCA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzX3JpZ2h0XCIpLFxyXG4gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcblxyXG4gICAgLy8gRm9yIGltYWdlIG9iamVjdFxyXG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICB1cGRhdGVfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfaW1hZ2UoKXtcclxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZV9pbWFnZSk7XHJcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xyXG4gICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2Uuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMZWZ0SW1hZ2UgKGRhdGEpe1xyXG4gICAgdmFyIGNhbnZhc19sZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzX2xlZnRcIiksXHJcbiAgICBjb250ZXh0X2xlZnQgPSBjYW52YXNfbGVmdC5nZXRDb250ZXh0KCcyZCcpXHJcblxyXG4gICAgLy8gRm9yIGltYWdlIG9iamVjdFxyXG4gICAgaW1hZ2VfbGVmdC5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9sZWZ0X2ltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgZnVuY3Rpb24gdXBkYXRlX2xlZnRfaW1hZ2UoKXtcclxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZV9sZWZ0X2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0X2xlZnQuZHJhd0ltYWdlKGltYWdlX2xlZnQsIDAsIDApO1xyXG4gICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuICAgIFxyXG4gICAgaWYoc291cmNlICE9IFwiXCIpe1xyXG4gICAgICAgIGltYWdlX2xlZnQuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgICAgIGNhbnZhc19sZWZ0LndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzX2xlZnQuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICB9ICAgXHJcbn1cclxuIl0sIm5hbWVzIjpbImRlY29kZV91dGY4IiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsImltYWdlIiwiSW1hZ2UiLCJpbWFnZV9sZWZ0IiwiZHJhd0ltYWdlIiwiZGF0YSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsIndpbmRvdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsImltYWdlX2RhdGEiLCJKU09OIiwicGFyc2UiLCJzb3VyY2UiLCJzaGFwZSIsInNyYyIsIndpZHRoIiwiaGVpZ2h0IiwiZHJhd0xlZnRJbWFnZSIsImNhbnZhc19sZWZ0IiwiY29udGV4dF9sZWZ0IiwidXBkYXRlX2xlZnRfaW1hZ2UiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6440.e840f4fe.js b/react_frontend/static/react_frontend/js/6440.e840f4fe.js new file mode 100644 index 000000000..8ebdffa33 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6440.e840f4fe.js @@ -0,0 +1,3 @@ +/*! For license information please see 6440.e840f4fe.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6440,7144],{2230:(t,e,r)=>{r.r(e),r.d(e,{default:()=>u}),r(6540);var n=r(6544),o=r(5793),i=r(5556),a=r.n(i),c=r(4848),l=(0,n.A)({palette:{type:"light",primary:{main:"#ffa726"},secondary:{main:"#147aff"},success:{main:"#4CAF50"},notConnected:{main:"#757575"},loading:{main:"#E64A19"},selector:{main:"#329D9C"}},typography:{fontFamily:"Roboto"}});function s(t){return(0,c.jsx)(o.A,{theme:l,children:t.children})}s.propTypes={children:a().node};const u=s},4078:(t,e,r)=>{r.r(e),r.d(e,{default:()=>y});var n=r(6540),o=r(4848);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function c(t){for(var e=1;e=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var l=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(l&&s){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),g}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:M(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),g}},e}function u(t,e,r,n,o,i,a){try{var c=t[i](a),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(n,o)}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return d(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&h>0?"#008D01":"white"}),children:[(0,o.jsx)("div",{onClick:function(){return g.current.click()},className:"cursor-pointer w-16 h-9 flex justify-center items-center",children:(0,o.jsx)(v,{fillColor:a.length>0&&h>0?"white":"#008D01"})}),(0,o.jsx)("div",{className:"tooltip-details",children:a.length>0&&h>0?(0,o.jsxs)("div",{className:"flex flex-col items-center text-sm text-white gap-2",title:a,children:[a.length>0&&(0,o.jsxs)("p",{children:["File Name: ",a]}),h>0&&(0,o.jsxs)("p",{children:["File Size: ",(h/1048576).toFixed(4)," MB"]})]}):(0,o.jsx)("p",{className:"text-sm text-white",children:"Upload a .onnx model"})}),(0,o.jsx)("input",{type:"file",accept:".onnx",onChange:b,ref:g,style:{display:"none"},className:"cursor-pointer",onClick:function(t){t.target.value=null}})]}):null})};var m={uploadButtonContainer:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",borderRadius:"6px"}},v=function(t){var e=t.cssClass,r=t.fillColor;return(0,o.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -960 960 960",width:"28",height:"28",fill:r||"currentColor",className:"".concat(e),children:[(0,o.jsx)("path",{d:"M440-320v-326L336-542l-56-58 200-200 200 200-56 58-104-104v326h-80ZM240-160q-33 0-56.5-23.5T160-240v-120h80v120h480v-120h80v120q0 33-23.5 56.5T720-160H240Z"}),"Add commentMore actions"]})}},8130:(t,e,r)=>{r.r(e),r.d(e,{default:()=>s});var n=r(1099),o=r(1224),i=(r(6540),r(5556)),a=r.n(i),c=r(4848),l=function(t){return(0,c.jsxs)(o.A,{variant:"contained",sx:{m:1},color:"secondary",startIcon:(0,c.jsx)(n.A,{}),component:"label",children:["Load file",(0,c.jsx)("input",{hidden:!0,accept:".py",type:"file",onChange:function(t){t.preventDefault();var e=new FileReader;e.onload=function(){RoboticsReactComponents.CodeEditor.setCode(e.result)},e.readAsText(t.target.files[0])}})]})};l.propTypes={context:a().any};const s=l},7229:(t,e,r)=>{r.r(e),r.d(e,{default:()=>d});var n=r(6540),o=r(5556),i=r.n(o),a=r(3718),c=r(4634),l=r(4848);function s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return u(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{r.r(e),r.d(e,{default:()=>p});var n=r(6540),o=r(8984),i=r(4719),a=r(1224),c=r(2471),l=r(7144),s=r(5556),u=r.n(s),f=r(4848);function d(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r{r.r(e),r.d(e,{Frequencies:()=>l,default:()=>s});var n=r(4073),o=r(6540),i=r(4848);function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){s=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return c(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=0&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.A,{children:"/"}),(0,i.jsx)(n.A,{children:"RTF:"}),(0,i.jsx)(n.A,{title:"RTF",children:r.rtf})]}),r.fps>=0&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.A,{children:"/"}),(0,i.jsx)(n.A,{children:"FPS:"}),(0,i.jsx)(n.A,{title:"FPS",children:r.fps<10?0===r.fps?"0":"0".concat(r.fps):r.fps})]}),r.lat>=0&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.A,{children:"/"}),(0,i.jsx)(n.A,{children:"LATENCY:"}),(0,i.jsx)(n.A,{title:"LATENCY",children:r.lat>=1e3?"".concat((r.lat/1e3).toFixed(0)," s"):"".concat(r.lat," ms")})]}),s&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.A,{children:"/"}),(0,i.jsx)(n.A,{children:s[0]}),(0,i.jsx)(n.A,{children:s[1]})]}),(0,i.jsx)(n.A,{children:"/"}),(0,i.jsx)(n.A,{children:"GPU"}),(0,i.jsx)(n.A,{children:d})]})};const s=l},7144:(t,e,r)=>{r.r(e),r.d(e,{decode_utf8:()=>c,get_inner_size:()=>n,get_novnc_size:()=>i,get_novnc_size_react:()=>o,saveCode:()=>a});var n=function(t){var e=getComputedStyle(t),r=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),n=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),o=parseFloat(e.borderLeftWidth)+parseFloat(e.borderRightWidth),i=parseFloat(e.borderTopWidth)+parseFloat(e.borderBottomWidth),a=t.offsetWidth-r-o,c=t.offsetHeight-n-i;return{width:Math.floor(a),height:Math.floor(c)}},o=function(){var t=getComputedStyle(document.getElementById("iframe")).width,e=getComputedStyle(document.getElementById("iframe")).height;return{width:parseInt(t,10),height:parseInt(e,10)}},i=function(){var t=n(document.getElementById("iframe"));return{width:t.width||document.body.clientWidth,height:Math.floor(.5*t.height)||document.body.clientHeight}},a=function(t,e){var r=new Blob([e],{type:"text/plain; charset=utf-8"}),n=document.createElement("a"),o=URL.createObjectURL(r);n.href=o,n.download=t+".py",document.body.appendChild(n),n.click(),setTimeout((function(){document.body.removeChild(n),window.URL.revokeObjectURL(o)}),0)},c=function(t){return decodeURIComponent(escape(t))}},284:(t,e,r)=>{t.exports=r.p+"1dcd3b9fbf544c35da90.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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U0FBQy9HLEVBQVV1SyxHQUNqQyxJQUFNQyxFQUFPLElBQUlDLEtBQUssQ0FBQ0YsR0FBYyxDQUFFdFQsS0FBTSw4QkFDdkM4QixFQUFJZ1IsU0FBU1csY0FBYyxLQUMvQkMsRUFBTUMsSUFBSUMsZ0JBQWdCTCxHQUM1QnpSLEVBQUUrUixLQUFPSCxFQUNUNVIsRUFBRWdTLFNBQVcvSyxFQUFXLE1BQ3hCK0osU0FBU0ssS0FBS1ksWUFBWWpTLEdBQzFCQSxFQUFFNkosUUFDRnFJLFlBQVcsV0FDVGxCLFNBQVNLLEtBQUtjLFlBQVluUyxHQUMxQnNHLE9BQU91TCxJQUFJTyxnQkFBZ0JSLEVBQzdCLEdBQUcsRUFDTCxFQUVhUyxFQUFjLFNBQUNoUixHQUMxQixPQUFPaVIsbUJBQW1CQyxPQUFPbFIsR0FDbkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL1JvYm90aWNzVGhlbWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9idXR0b25zL0RMTW9kZWxVcGxvYWRCdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9idXR0b25zL0xvYWRGaWxlQnV0dG9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9SZXNldEJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvU2F2ZUJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL3Zpc3VhbGl6ZXJzL0ZyZXF1ZW5jaWVzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2hlbHBlcnMvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBjcmVhdGVUaGVtZSwgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcclxuICBwYWxldHRlOiB7XHJcbiAgICB0eXBlOiBcImxpZ2h0XCIsXHJcbiAgICBwcmltYXJ5OiB7XHJcbiAgICAgIG1haW46IFwiI2ZmYTcyNlwiLFxyXG4gICAgfSxcclxuICAgIHNlY29uZGFyeToge1xyXG4gICAgICBtYWluOiBcIiMxNDdhZmZcIixcclxuICAgIH0sXHJcbiAgICBzdWNjZXNzOiB7XHJcbiAgICAgIG1haW46IFwiIzRDQUY1MFwiLFxyXG4gICAgfSxcclxuICAgIG5vdENvbm5lY3RlZDoge1xyXG4gICAgICBtYWluOiBcIiM3NTc1NzVcIixcclxuICAgIH0sXHJcbiAgICBsb2FkaW5nOiB7XHJcbiAgICAgIG1haW46IFwiI0U2NEExOVwiLFxyXG4gICAgfSxcclxuICAgIHNlbGVjdG9yOiB7XHJcbiAgICAgIG1haW46IFwiIzMyOUQ5Q1wiLFxyXG4gICAgfSxcclxuICB9LFxyXG4gIHR5cG9ncmFwaHk6IHtcclxuICAgIGZvbnRGYW1pbHk6IFwiUm9ib3RvXCIsXHJcbiAgfSxcclxufSk7XHJcblxyXG5mdW5jdGlvbiBSb2JvdGljc1RoZW1lKHByb3BzKSB7XHJcbiAgcmV0dXJuIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e3Byb3BzLmNoaWxkcmVufTwvVGhlbWVQcm92aWRlcj47XHJcbn1cclxuXHJcblJvYm90aWNzVGhlbWUucHJvcFR5cGVzID0ge1xyXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFJvYm90aWNzVGhlbWU7XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFwiLi8uLi8uLi9zdHlsZXMvYnV0dG9ucy9ETE1vZGVsVXBsb2FkQnV0dG9uLmNzc1wiO1xyXG5pbXBvcnQgXCIuLy4uLy4uL3N0eWxlcy90YWlsd2luZC5jc3NcIjtcclxuXHJcbi8vIENvbnN0YW50c1xyXG5jb25zdCB3aGl0ZV9saXN0X2V4ZXJjaXNlcyA9IFtcImRpZ2l0X2NsYXNzaWZpY2F0aW9uXCIsIFwiaHVtYW5fZGV0ZWN0aW9uXCJdO1xyXG5jb25zdCBNQiA9IDEwMjQgKiAxMDI0O1xyXG5cclxud2luZG93LlJvYm90aWNzUmVhY3RDb21wb25lbnRzID0gd2luZG93LlJvYm90aWNzUmVhY3RDb21wb25lbnRzIHx8IHt9O1xyXG5cclxud2luZG93LlJvYm90aWNzUmVhY3RDb21wb25lbnRzLkRlZXBMZWFybmluZ01vZGVsID0gKGZ1bmN0aW9uICgpIHtcclxuICBsZXQgbW9kZWxfYnVmZmVyID0gbnVsbDtcclxuXHJcbiAgY29uc3Qgc2V0TW9kZWxCdWZmZXIgPSAobW9kZWxCdWZmZXIpID0+IHtcclxuICAgIG1vZGVsX2J1ZmZlciA9IG1vZGVsQnVmZmVyO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGdldE1vZGVsQnVmZmVyID0gKCkgPT4gbW9kZWxfYnVmZmVyO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgc2V0TW9kZWxCdWZmZXI6IHNldE1vZGVsQnVmZmVyLFxyXG4gICAgZ2V0TW9kZWxCdWZmZXI6IGdldE1vZGVsQnVmZmVyLFxyXG4gIH07XHJcbn0pKCk7XHJcblxyXG4vLyBEZWVwIExlYXJuaW5nIE1vZGVsIFVwbG9hZCBCdXR0b24gQ29tcG9uZW50XHJcbmNvbnN0IERMTW9kZWxVcGxvYWRCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgW2V4ZXJjaXNlTmFtZSwgc2V0RXhlcmNpc2VOYW1lXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IFtmaWxlTmFtZSwgc2V0RmlsZU5hbWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW2ZpbGVTaXplLCBzZXRGaWxlU2l6ZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTtcclxuICBjb25zdCBmaWxlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xyXG5cclxuICAvLyBFZmZlY3QgdG8gc2V0IHRoZSBleGVyY2lzZSBuYW1lIGJhc2VkIG9uIHRoZSBjdXJyZW50IFVSTFxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjdXJyZW50UGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcclxuICAgIGNvbnN0IHNwbGl0ID0gY3VycmVudFBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcihCb29sZWFuKTsgLy8gR2V0IHRoZSBsYXN0IHBhcnQgb2YgdGhlIFVSTFxyXG4gICAgY29uc3QgZXhlcmNpc2UgPSBzcGxpdFtzcGxpdC5sZW5ndGggLSAxXTsgLy8gQXNzdW1pbmcgdGhlIGxhc3QgcGFydCBpcyB0aGUgZXhlcmNpc2UgbmFtZVxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGV4ZXJjaXNlIGlzIGluIHRoZSB3aGl0ZWxpc3RcclxuICAgIGlmICh3aGl0ZV9saXN0X2V4ZXJjaXNlcy5pbmNsdWRlcyhleGVyY2lzZSkpIHtcclxuICAgICAgc2V0RXhlcmNpc2VOYW1lKGV4ZXJjaXNlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldEV4ZXJjaXNlTmFtZShcIlwiKTsgLy8gUmVzZXQgaWYgbm90IGluIHRoZSB3aGl0ZWxpc3RcclxuICAgIH1cclxuICB9LCBbXSk7XHJcblxyXG4gIC8vIEhhbmRsZSBmaWxlIHVwbG9hZFxyXG4gIGNvbnN0IGhhbmRsZVVwbG9hZCA9IGFzeW5jIChldmVudCkgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGlmICghZmlsZSB8fCAhZmlsZS5uYW1lLmVuZHNXaXRoKFwiLm9ubnhcIikpIHtcclxuICAgICAgYWxlcnQoXCJQbGVhc2UgdXBsb2FkIGEgdmFsaWQgLm9ubnggZmlsZVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKTsgLy8gQmluYXJ5IGJ1ZmZlclxyXG5cclxuICAgIGNvbnNvbGUubG9nKFwiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XCIpO1xyXG4gICAgY29uc29sZS5sb2coXCJGaWxlIHVwbG9hZGVkOlwiLCBmaWxlLm5hbWUpO1xyXG4gICAgY29uc29sZS5sb2coXCJGaWxlIHNpemU6XCIsIChmaWxlLnNpemUgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDIpLCBcIk1CXCIpO1xyXG4gICAgY29uc29sZS5sb2coXCJGaWxlIHR5cGU6XCIsIGZpbGUudHlwZSk7XHJcbiAgICBjb25zb2xlLmxvZyhcIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVwiKTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIG1vZGVsIGluIHRoZSBEZWVwTGVhcm5pbmdNb2RlbCBjb21wb25lbnRcclxuICAgIHdpbmRvdy5Sb2JvdGljc1JlYWN0Q29tcG9uZW50cy5EZWVwTGVhcm5pbmdNb2RlbC5zZXRNb2RlbEJ1ZmZlcihidWZmZXIpO1xyXG4gICAgLy8gVXBkYXRlIHRoZSBzdGF0ZSB3aXRoIGZpbGUgZGV0YWlsc1xyXG4gICAgc2V0RmlsZU5hbWUoZmlsZS5uYW1lKTtcclxuICAgIHNldEZpbGVTaXplKGZpbGUuc2l6ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy8gUmVuZGVyIHRoZSB1cGxvYWQgYnV0dG9uIGlmIHRoZSBleGVyY2lzZSBpcyBpbiB0aGUgd2hpdGVsaXN0XHJcbiAgcmV0dXJuIChcclxuICAgIDw+XHJcbiAgICAgIHtleGVyY2lzZU5hbWUgJiYgd2hpdGVfbGlzdF9leGVyY2lzZXMuaW5jbHVkZXMoZXhlcmNpc2VOYW1lKSA/IChcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2B0b29sdGlwLWNvbnRhaW5lciBtLTEgYm9yZGVyLVsxcHhdIGhvdmVyOmJvcmRlci1bMS44cHhdIGJvcmRlci1bIzAwOEQwMTdGXSBob3Zlcjpib3JkZXItWyMwMDhEMDFdIGN1cnNvci1wb2ludGVyIGR1cmF0aW9uLVsyNTBtc10gdHJhbnNpdGlvbi1jb2xvcnNgfVxyXG4gICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgLi4uc3R5bGVzLnVwbG9hZEJ1dHRvbkNvbnRhaW5lcixcclxuICAgICAgICAgICAgYmFja2dyb3VuZDpcclxuICAgICAgICAgICAgICBmaWxlTmFtZS5sZW5ndGggPiAwICYmIGZpbGVTaXplID4gMCA/IFwiIzAwOEQwMVwiIDogXCJ3aGl0ZVwiLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGZpbGVSZWYuY3VycmVudC5jbGljaygpfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJjdXJzb3ItcG9pbnRlciB3LTE2IGgtOSBmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxVcGxvYWRJY29uXHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yPXtcclxuICAgICAgICAgICAgICAgIGZpbGVOYW1lLmxlbmd0aCA+IDAgJiYgZmlsZVNpemUgPiAwID8gXCJ3aGl0ZVwiIDogXCIjMDA4RDAxXCJcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICB7LyogZmlsZSBkZXRhaWxzICovfVxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0b29sdGlwLWRldGFpbHNcIj5cclxuICAgICAgICAgICAge2ZpbGVOYW1lLmxlbmd0aCA+IDAgJiYgZmlsZVNpemUgPiAwID8gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHRleHQtc20gdGV4dC13aGl0ZSBnYXAtMlwiXHJcbiAgICAgICAgICAgICAgICB0aXRsZT17ZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2ZpbGVOYW1lLmxlbmd0aCA+IDAgJiYgPHA+RmlsZSBOYW1lOiB7ZmlsZU5hbWV9PC9wPn1cclxuICAgICAgICAgICAgICAgIHtmaWxlU2l6ZSA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgICAgICA8cD5GaWxlIFNpemU6IHsoZmlsZVNpemUgLyBNQikudG9GaXhlZCg0KX0gTUI8L3A+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC13aGl0ZVwiPlVwbG9hZCBhIC5vbm54IG1vZGVsPC9wPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgYWNjZXB0PVwiLm9ubnhcIlxyXG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlVXBsb2FkfVxyXG4gICAgICAgICAgICByZWY9e2ZpbGVSZWZ9XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwibm9uZVwiIH0gLyogSGlkZSB0aGUgZGVmYXVsdCBmaWxlIGlucHV0ICovfVxyXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSBudWxsOyAvLyBSZXNldCB0aGUgZmlsZSBpbnB1dCB2YWx1ZVxyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKSA6IG51bGx9XHJcbiAgICA8Lz5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRExNb2RlbFVwbG9hZEJ1dHRvbjtcclxuXHJcbi8qIHN0eWxlcyAqL1xyXG5jb25zdCBzdHlsZXMgPSB7XHJcbiAgdXBsb2FkQnV0dG9uQ29udGFpbmVyOiB7XHJcbiAgICBkaXNwbGF5OiBcImZsZXhcIixcclxuICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXHJcbiAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcclxuICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXHJcbiAgICBib3JkZXJSYWRpdXM6IFwiNnB4XCIsXHJcbiAgfSxcclxufTtcclxuLy8gZGlnaXRfY2xhc3NpZmljYXRpb247XHJcbmNvbnN0IFVwbG9hZEljb24gPSAoeyBjc3NDbGFzcywgZmlsbENvbG9yIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjI4XCJcclxuICAgIGhlaWdodD1cIjI4XCJcclxuICAgIGZpbGw9e2ZpbGxDb2xvciB8fCBcImN1cnJlbnRDb2xvclwifVxyXG4gICAgY2xhc3NOYW1lPXtgJHtjc3NDbGFzc31gfVxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNNDQwLTMyMHYtMzI2TDMzNi01NDJsLTU2LTU4IDIwMC0yMDAgMjAwIDIwMC01NiA1OC0xMDQtMTA0djMyNmgtODBaTTI0MC0xNjBxLTMzIDAtNTYuNS0yMy41VDE2MC0yNDB2LTEyMGg4MHYxMjBoNDgwdi0xMjBoODB2MTIwcTAgMzMtMjMuNSA1Ni41VDcyMC0xNjBIMjQwWlwiIC8+XHJcbiAgICBBZGQgY29tbWVudE1vcmUgYWN0aW9uc1xyXG4gIDwvc3ZnPlxyXG4pO1xyXG4iLCJpbXBvcnQgQ2xvdWRVcGxvYWRPdXRsaW5lZEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvdWRVcGxvYWRPdXRsaW5lZFwiO1xyXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5cclxuY29uc3QgTG9hZEZpbGVCdXR0b24gPSAocHJvcHMpID0+IHtcclxuICBjb25zdCBsb2FkRmlsZSA9IChldmVudCkgPT4ge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIHZhciBmciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICBmci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIFJvYm90aWNzUmVhY3RDb21wb25lbnRzLkNvZGVFZGl0b3Iuc2V0Q29kZShmci5yZXN1bHQpO1xyXG4gICAgfTtcclxuICAgIGZyLnJlYWRBc1RleHQoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8QnV0dG9uXHJcbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxyXG4gICAgICBzeD17eyBtOiAxIH19XHJcbiAgICAgIGNvbG9yPXtcInNlY29uZGFyeVwifVxyXG4gICAgICBzdGFydEljb249ezxDbG91ZFVwbG9hZE91dGxpbmVkSWNvbiAvPn1cclxuICAgICAgY29tcG9uZW50PVwibGFiZWxcIlxyXG4gICAgPlxyXG4gICAgICBMb2FkIGZpbGVcclxuICAgICAgPGlucHV0IGhpZGRlbiBhY2NlcHQ9XCIucHlcIiB0eXBlPVwiZmlsZVwiIG9uQ2hhbmdlPXtsb2FkRmlsZX0gLz5cclxuICAgIDwvQnV0dG9uPlxyXG4gICk7XHJcbn07XHJcblxyXG5Mb2FkRmlsZUJ1dHRvbi5wcm9wVHlwZXMgPSB7XHJcbiAgY29udGV4dDogUHJvcFR5cGVzLmFueSxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IExvYWRGaWxlQnV0dG9uO1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCBMb2FkaW5nQnV0dG9uIGZyb20gXCJAbXVpL2xhYi9Mb2FkaW5nQnV0dG9uXCI7XHJcbmltcG9ydCBSZXBsYXlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1JlcGxheVwiO1xyXG5cclxuY29uc3QgUmVzZXRCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSlcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChtZXNzYWdlLmRhdGEuc3RhdGUgPT09IFwiYXBwbGljYXRpb25fcnVubmluZ1wiKSB8XHJcbiAgICAgICAgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJwYXVzZWRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2V0RGlzYWJsZWQoZmFsc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNldERpc2FibGVkKHRydWUpO1xyXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxMb2FkaW5nQnV0dG9uXHJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cclxuICAgICAgaWQ9e1wicGxheVwifVxyXG4gICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICBjb2xvcj17XCJzZWNvbmRhcnlcIn1cclxuICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlclxyXG4gICAgICAgICAgLnRlcm1pbmF0ZV9hcHBsaWNhdGlvbigpXHJcbiAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzZXRlZFwiKVxyXG4gICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKHJlc3BvbnNlKSA9PiBjb25zb2xlLmxvZyhyZXNwb25zZSkpO1xyXG4gICAgICB9fVxyXG4gICAgICBzeD17eyBtOiAwLjUgfX1cclxuICAgICAgdmFyaWFudD17XCJvdXRsaW5lZFwifVxyXG4gICAgPlxyXG4gICAgICA8UmVwbGF5SWNvbiAvPlxyXG4gICAgPC9Mb2FkaW5nQnV0dG9uPlxyXG4gICk7XHJcbn07XHJcblJlc2V0QnV0dG9uLnByb3BUeXBlcyA9IHtcclxuICBjb250ZXh0OiBQcm9wVHlwZXMuYW55LFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgUmVzZXRCdXR0b247XHJcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgU2F2ZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2F2ZVwiO1xyXG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgc2F2ZUNvZGUgfSBmcm9tIFwiLi4vLi4vaGVscGVycy91dGlsc1wiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5jb25zdCBTYXZlRmlsZUJ1dHRvbiA9IChwcm9wcykgPT4ge1xyXG4gIGNvbnN0IFtmaWxlTmFtZSwgc2V0RmlsZU5hbWVdID0gUmVhY3QudXNlU3RhdGUoXCJteUNvZGVcIik7XHJcbiAgY29uc3Qgc2F2ZUZpbGUgPSAoKSA9PiB7XHJcbiAgICBsZXQgdXNlckNvZGUgPSBcIlwiO1xyXG4gICAgdXNlckNvZGUgPSBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5Db2RlRWRpdG9yLmdldENvZGUoKTtcclxuICAgIHNhdmVDb2RlKGZpbGVOYW1lLCB1c2VyQ29kZSk7XHJcbiAgfTtcclxuICByZXR1cm4gKFxyXG4gICAgPEJveCBzeD17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgPEJ1dHRvblxyXG4gICAgICAgIGlkPXtcInNhdmVcIn1cclxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcclxuICAgICAgICBjb2xvcj17XCJzZWNvbmRhcnlcIn1cclxuICAgICAgICBzdGFydEljb249ezxTYXZlSWNvbiAvPn1cclxuICAgICAgICBzeD17eyBtOiAxIH19XHJcbiAgICAgICAgb25DbGljaz17c2F2ZUZpbGV9XHJcbiAgICAgID5cclxuICAgICAgICBTYXZlIGZpbGVcclxuICAgICAgPC9CdXR0b24+XHJcbiAgICAgIDxUZXh0RmllbGRcclxuICAgICAgICBzeD17eyBtOiAxIH19XHJcbiAgICAgICAgc2l6ZT17XCJzbWFsbFwifVxyXG4gICAgICAgIGlkPVwiZmlsZW5hbWVcIlxyXG4gICAgICAgIGxhYmVsPVwiRmlsZW5hbWVcIlxyXG4gICAgICAgIGNvbG9yPXtcInNlY29uZGFyeVwifVxyXG4gICAgICAgIHZhbHVlPXtmaWxlTmFtZX1cclxuICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgIHNldEZpbGVOYW1lKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICB9fVxyXG4gICAgICAvPlxyXG4gICAgPC9Cb3g+XHJcbiAgKTtcclxufTtcclxuXHJcblNhdmVGaWxlQnV0dG9uLnByb3BUeXBlcyA9IHtcclxuICBjb250ZXh0OiBQcm9wVHlwZXMuYW55LFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2F2ZUZpbGVCdXR0b247XHJcbiIsImltcG9ydCB7IFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Zpc3VhbGl6ZXJzL0ZyZXF1ZW5jaWVzLmNzc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZyZXF1ZW5jaWVzID0gKHByb3BzKSA9PiB7XHJcbiAgY29uc3QgW2ZyZXF1ZW5jaWVzLCBzZXRGcmVxdWVuY2llc10gPSB1c2VTdGF0ZSh7XHJcbiAgICBicmFpbjogMCxcclxuICAgIGd1aTogMCxcclxuICAgIHJ0ZjogLTEsXHJcbiAgICBmcHM6IC0xLFxyXG4gICAgbGF0OiAtMSxcclxuICB9KTtcclxuICBjb25zdCBbcm9zVmVyc2lvbiwgc2V0Um9zVmVyc2lvbl0gPSB1c2VTdGF0ZShudWxsKTtcclxuICBjb25zdCBbZ3B1VmVuZG9yLCBzZXRncHVWZW5kb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IG1lc3NhZ2UuZGF0YS51cGRhdGU7XHJcbiAgICAgIGlmICh1cGRhdGUuYnJhaW4pIHtcclxuICAgICAgICBzZXRGcmVxdWVuY2llcyh1cGRhdGUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGxldCB2ZXJzaW9uID0gbWVzc2FnZS5kYXRhLnJvc192ZXJzaW9uLnRyaW0oKTtcclxuICAgICAgaWYgKHZlcnNpb24pIHtcclxuICAgICAgICBzZXRSb3NWZXJzaW9uKFtcclxuICAgICAgICAgIFwiUk9TMlwiLFxyXG4gICAgICAgICAgdmVyc2lvbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZlcnNpb24uc2xpY2UoMSksXHJcbiAgICAgICAgXSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cobWVzc2FnZS5kYXRhLmdwdV9hdmFsaWFibGUpO1xyXG4gICAgICBzZXRncHVWZW5kb3IobWVzc2FnZS5kYXRhLmdwdV9hdmFsaWFibGUpO1xyXG4gICAgfTtcclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3VzY3JpYnJlT25jZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLklOVFJPU1BFQ1RJT05dLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17cHJvcHMuc3R5bGV9PlxyXG4gICAgICA8VHlwb2dyYXBoeT5BRjo8L1R5cG9ncmFwaHk+XHJcbiAgICAgIDxUeXBvZ3JhcGh5IHRpdGxlPVwiQUZcIj57ZnJlcXVlbmNpZXMuYnJhaW4udG9GaXhlZCgwKX08L1R5cG9ncmFwaHk+XHJcbiAgICAgIDxUeXBvZ3JhcGh5Pkh6PC9UeXBvZ3JhcGh5PlxyXG4gICAgICB7ZnJlcXVlbmNpZXMucnRmID49IDAgJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT4vPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+UlRGOjwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHRpdGxlPVwiUlRGXCI+e2ZyZXF1ZW5jaWVzLnJ0Zn08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICl9XHJcbiAgICAgIHtmcmVxdWVuY2llcy5mcHMgPj0gMCAmJiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5Pi88L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT5GUFM6PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHkgdGl0bGU9XCJGUFNcIj5cclxuICAgICAgICAgICAge2ZyZXF1ZW5jaWVzLmZwcyA8IDEwXHJcbiAgICAgICAgICAgICAgPyBmcmVxdWVuY2llcy5mcHMgPT09IDBcclxuICAgICAgICAgICAgICAgID8gYDBgXHJcbiAgICAgICAgICAgICAgICA6IGAwJHtmcmVxdWVuY2llcy5mcHN9YFxyXG4gICAgICAgICAgICAgIDogZnJlcXVlbmNpZXMuZnBzfVxyXG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDwvPlxyXG4gICAgICApfVxyXG4gICAgICB7ZnJlcXVlbmNpZXMubGF0ID49IDAgJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT4vPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+TEFURU5DWTo8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeSB0aXRsZT1cIkxBVEVOQ1lcIj5cclxuICAgICAgICAgICAge2ZyZXF1ZW5jaWVzLmxhdCA+PSAxMDAwXHJcbiAgICAgICAgICAgICAgPyBgJHsoZnJlcXVlbmNpZXMubGF0IC8gMTAwMCkudG9GaXhlZCgwKX0gc2BcclxuICAgICAgICAgICAgICA6IGAke2ZyZXF1ZW5jaWVzLmxhdH0gbXNgfVxyXG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDwvPlxyXG4gICAgICApfVxyXG4gICAgICB7cm9zVmVyc2lvbiAmJiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5Pi88L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT57cm9zVmVyc2lvblswXX08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT57cm9zVmVyc2lvblsxXX08L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICl9XHJcbiAgICAgIDxUeXBvZ3JhcGh5Pi88L1R5cG9ncmFwaHk+XHJcbiAgICAgIDxUeXBvZ3JhcGh5PkdQVTwvVHlwb2dyYXBoeT5cclxuICAgICAgPFR5cG9ncmFwaHk+e2dwdVZlbmRvcn08L1R5cG9ncmFwaHk+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRnJlcXVlbmNpZXM7XHJcbiIsImV4cG9ydCBjb25zdCBnZXRfaW5uZXJfc2l6ZSA9IChlbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgY3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xyXG4gIGNvbnN0IHBhZGRpbmdfeCA9IHBhcnNlRmxvYXQoY3MucGFkZGluZ0xlZnQpICsgcGFyc2VGbG9hdChjcy5wYWRkaW5nUmlnaHQpO1xyXG4gIGNvbnN0IHBhZGRpbmdfeSA9IHBhcnNlRmxvYXQoY3MucGFkZGluZ1RvcCkgKyBwYXJzZUZsb2F0KGNzLnBhZGRpbmdCb3R0b20pO1xyXG5cclxuICBjb25zdCBib3JkZXJfeCA9XHJcbiAgICBwYXJzZUZsb2F0KGNzLmJvcmRlckxlZnRXaWR0aCkgKyBwYXJzZUZsb2F0KGNzLmJvcmRlclJpZ2h0V2lkdGgpO1xyXG4gIGNvbnN0IGJvcmRlcl95ID1cclxuICAgIHBhcnNlRmxvYXQoY3MuYm9yZGVyVG9wV2lkdGgpICsgcGFyc2VGbG9hdChjcy5ib3JkZXJCb3R0b21XaWR0aCk7XHJcblxyXG4gIC8vIEVsZW1lbnQgd2lkdGggYW5kIGhlaWdodCBtaW51cyBwYWRkaW5nIGFuZCBib3JkZXJcclxuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggLSBwYWRkaW5nX3ggLSBib3JkZXJfeDtcclxuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCAtIHBhZGRpbmdfeSAtIGJvcmRlcl95O1xyXG5cclxuICByZXR1cm4geyB3aWR0aDogTWF0aC5mbG9vcih3aWR0aCksIGhlaWdodDogTWF0aC5mbG9vcihoZWlnaHQpIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0X25vdm5jX3NpemVfcmVhY3QgPSAoKSA9PiB7XHJcbiAgY29uc3Qgd2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWZyYW1lXCIpKS53aWR0aDtcclxuICBjb25zdCBoZWlnaHQgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWZyYW1lXCIpKS5oZWlnaHQ7XHJcbiAgcmV0dXJuIHsgd2lkdGg6IHBhcnNlSW50KHdpZHRoLCAxMCksIGhlaWdodDogcGFyc2VJbnQoaGVpZ2h0LCAxMCkgfTtcclxufTtcclxuZXhwb3J0IGNvbnN0IGdldF9ub3ZuY19zaXplID0gKCkgPT4ge1xyXG4gIGNvbnN0IGlubmVyX3NpemUgPSBnZXRfaW5uZXJfc2l6ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlmcmFtZVwiKSk7XHJcbiAgY29uc3Qgd2lkdGggPSBpbm5lcl9zaXplLndpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgLy8gU2luY2Ugb25seSA1MCUgb2YgaGVpZ2h0IGlzIHVzZWQgZm9yIGdhemVibyBpZnJhbWVcclxuICBjb25zdCBoZWlnaHQgPVxyXG4gICAgTWF0aC5mbG9vcigwLjUgKiBpbm5lcl9zaXplLmhlaWdodCkgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XHJcbiAgcmV0dXJuIHsgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNhdmVDb2RlID0gKGZpbGVOYW1lLCBweXRob25fY29kZSkgPT4ge1xyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcHl0aG9uX2NvZGVdLCB7IHR5cGU6IFwidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOFwiIH0pO1xyXG4gIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSxcclxuICAgIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgYS5ocmVmID0gdXJsO1xyXG4gIGEuZG93bmxvYWQgPSBmaWxlTmFtZSArIFwiLnB5XCI7XHJcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICBhLmNsaWNrKCk7XHJcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICB9LCAwKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWNvZGVfdXRmOCA9IChzKSA9PiB7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpO1xyXG59O1xyXG4iXSwibmFtZXMiOlsidGhlbWUiLCJjcmVhdGVUaGVtZSIsInBhbGV0dGUiLCJ0eXBlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJzdWNjZXNzIiwibm90Q29ubmVjdGVkIiwibG9hZGluZyIsInNlbGVjdG9yIiwidHlwb2dyYXBoeSIsImZvbnRGYW1pbHkiLCJSb2JvdGljc1RoZW1lIiwicHJvcHMiLCJfanN4IiwiVGhlbWVQcm92aWRlciIsImNoaWxkcmVuIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX3NsaWNlZFRvQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiZnJvbSIsInRlc3QiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwibW9kZWxfYnVmZmVyIiwid2hpdGVfbGlzdF9leGVyY2lzZXMiLCJ3aW5kb3ciLCJSb2JvdGljc1JlYWN0Q29tcG9uZW50cyIsIkRlZXBMZWFybmluZ01vZGVsIiwic2V0TW9kZWxCdWZmZXIiLCJtb2RlbEJ1ZmZlciIsImdldE1vZGVsQnVmZmVyIiwiX1JlYWN0JHVzZVN0YXRlMiIsIlJlYWN0IiwiZXhlcmNpc2VOYW1lIiwic2V0RXhlcmNpc2VOYW1lIiwiX1JlYWN0JHVzZVN0YXRlNCIsImZpbGVOYW1lIiwic2V0RmlsZU5hbWUiLCJfUmVhY3QkdXNlU3RhdGU2IiwiZmlsZVNpemUiLCJzZXRGaWxlU2l6ZSIsImZpbGVSZWYiLCJzcGxpdCIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJmaWx0ZXIiLCJCb29sZWFuIiwiZXhlcmNpc2UiLCJpbmNsdWRlcyIsImhhbmRsZVVwbG9hZCIsIl9yZWYiLCJfY2FsbGVlIiwiZXZlbnQiLCJmaWxlIiwiYnVmZmVyIiwiX2NvbnRleHQiLCJ0YXJnZXQiLCJmaWxlcyIsImVuZHNXaXRoIiwiYWxlcnQiLCJhcnJheUJ1ZmZlciIsImNvbnNvbGUiLCJsb2ciLCJzaXplIiwidG9GaXhlZCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX25leHQiLCJfdGhyb3ciLCJfeCIsIl9GcmFnbWVudCIsIl9qc3hzIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwic3R5bGVzIiwidXBsb2FkQnV0dG9uQ29udGFpbmVyIiwiYmFja2dyb3VuZCIsIm9uQ2xpY2siLCJjdXJyZW50IiwiY2xpY2siLCJVcGxvYWRJY29uIiwiZmlsbENvbG9yIiwidGl0bGUiLCJhY2NlcHQiLCJvbkNoYW5nZSIsInJlZiIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiYm9yZGVyUmFkaXVzIiwiX3JlZjIiLCJjc3NDbGFzcyIsInhtbG5zIiwidmlld0JveCIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsImNvbmNhdCIsIkxvYWRGaWxlQnV0dG9uIiwiQnV0dG9uIiwidmFyaWFudCIsInN4IiwibSIsImNvbG9yIiwic3RhcnRJY29uIiwiQ2xvdWRVcGxvYWRPdXRsaW5lZEljb24iLCJjb21wb25lbnQiLCJoaWRkZW4iLCJwcmV2ZW50RGVmYXVsdCIsImZyIiwiRmlsZVJlYWRlciIsIm9ubG9hZCIsIkNvZGVFZGl0b3IiLCJzZXRDb2RlIiwicmVzdWx0IiwicmVhZEFzVGV4dCIsImNvbnRleHQiLCJSZXNldEJ1dHRvbiIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJfdXNlU3RhdGU0Iiwic2V0TG9hZGluZyIsInVzZUVmZmVjdCIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJzdGF0ZSIsIlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzIiwiY29tbXNNYW5hZ2VyIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiU1RBVEVfQ0hBTkdFRCIsInVuc3Vic2NyaWJlIiwiTG9hZGluZ0J1dHRvbiIsImlkIiwidGVybWluYXRlX2FwcGxpY2F0aW9uIiwicmVzcG9uc2UiLCJSZXBsYXlJY29uIiwiU2F2ZUZpbGVCdXR0b24iLCJCb3giLCJTYXZlSWNvbiIsInVzZXJDb2RlIiwiZ2V0Q29kZSIsInNhdmVDb2RlIiwiVGV4dEZpZWxkIiwibGFiZWwiLCJGcmVxdWVuY2llcyIsImJyYWluIiwiZ3VpIiwicnRmIiwiZnBzIiwibGF0IiwiZnJlcXVlbmNpZXMiLCJzZXRGcmVxdWVuY2llcyIsInJvc1ZlcnNpb24iLCJzZXRSb3NWZXJzaW9uIiwiX3VzZVN0YXRlNiIsImdwdVZlbmRvciIsInNldGdwdVZlbmRvciIsInVwZGF0ZSIsIlVQREFURSIsInN1c2NyaWJyZU9uY2UiLCJJTlRST1NQRUNUSU9OIiwidmVyc2lvbiIsInJvc192ZXJzaW9uIiwidHJpbSIsInRvVXBwZXJDYXNlIiwiZ3B1X2F2YWxpYWJsZSIsIlR5cG9ncmFwaHkiLCJnZXRfaW5uZXJfc2l6ZSIsImVsZW1lbnQiLCJjcyIsImdldENvbXB1dGVkU3R5bGUiLCJwYWRkaW5nX3giLCJwYXJzZUZsb2F0IiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJwYWRkaW5nX3kiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsImJvcmRlcl94IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlcl95IiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsIm9mZnNldFdpZHRoIiwib2Zmc2V0SGVpZ2h0IiwiTWF0aCIsImZsb29yIiwiZ2V0X25vdm5jX3NpemVfcmVhY3QiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicGFyc2VJbnQiLCJnZXRfbm92bmNfc2l6ZSIsImlubmVyX3NpemUiLCJib2R5IiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJweXRob25fY29kZSIsImJsb2IiLCJCbG9iIiwiY3JlYXRlRWxlbWVudCIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImFwcGVuZENoaWxkIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwicmV2b2tlT2JqZWN0VVJMIiwiZGVjb2RlX3V0ZjgiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6440.e840f4fe.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6440.e840f4fe.js.LICENSE.txt new file mode 100644 index 000000000..ae386fb79 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6440.e840f4fe.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/react_frontend/static/react_frontend/js/6762.0e67b0aa.js b/react_frontend/static/react_frontend/js/6762.0e67b0aa.js new file mode 100644 index 000000000..47f17cb28 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6762.0e67b0aa.js @@ -0,0 +1,3 @@ +/*! For license information please see 6762.0e67b0aa.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6762],{6762:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNjc2Mi45ZmQ3ZTRkNy5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUm9CLFNBQUNBLEdBQ25CLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2hhbmdhcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvRHJvbmVIYW5nYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL0Ryb25lSGFuZ2FyLmNzc1wiO1xyXG5cclxuY29uc3QgRHJvbmVIYW5nYXIgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRHJvbmVIYW5nYXI7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiX2pzeCIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6762.0e67b0aa.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6762.0e67b0aa.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6762.0e67b0aa.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/6780.355a652d.js b/react_frontend/static/react_frontend/js/6780.355a652d.js new file mode 100644 index 000000000..95afb3d00 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6780.355a652d.js @@ -0,0 +1,3 @@ +/*! For license information please see 6780.355a652d.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6780,1166],{9096:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>m});var r=n(6540),o=n(5556),i=n.n(o),s=n(1166);const a=n.p+"ced0b01fc91e7c893441.svg",c=n.p+"bc1a91558ccad4d10db3.png";var l=n(4848);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],c=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";n.r(t),n.d(t,{updatePath:()=>r});var r=function(e,t,n,r){for(var o="M ",i=0;i0&&t(o)}},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,s){if(s!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),i=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var r,i={},l=null,u=null;for(r in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)s.call(t,r)&&!c.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:o,type:e,key:l,ref:u,props:i,_owner:a.current}}t.Fragment=i,t.jsx=l,t.jsxs=l},4848:(e,t,n)=>{"use strict";e.exports=n(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFFNUssTUFBTW9HLEVBQUU2RSxPQUFPbkIsRUFBRW9CLFFBQVEsQ0FBQzNELEVBQVE0RCxTQUFTMUIsRUFBRWxDLEVBQVE2RCxJQUFJZCxFQUFFL0MsRUFBUThELEtBQUtmLCtCQ1B4V2hELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9nbG9iYWxfbmF2aWdhdGlvbi9yZWFjdC1jb21wb25lbnRzL0dsb2JhbE5hdmlnYXRpb25TcGVjaWZpYy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9nbG9iYWxfbmF2aWdhdGlvbi9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvR2xvYmFsTmF2aWdhdGlvbkhlbHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQge3VwZGF0ZVBhdGh9IGZyb20gXCIuL2hlbHBlcnMvR2xvYmFsTmF2aWdhdGlvbkhlbHBlclwiO1xyXG5pbXBvcnQgQ2FyIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL2Nhci10b3Atdmlldy5zdmdcIjtcclxuaW1wb3J0IENpdHlNYXAgZnJvbSBcIi4uL3Jlc291cmNlcy9pbWFnZXMvY2l0eUxhcmdlbkJpbi5wbmdcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL0dVSUNhbnZhcy5jc3NcIjtcclxuXHJcbnZhciBjb29yZHMgPSB1bmRlZmluZWQ7XHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY0dsb2JhbE5hdmlnYXRpb24ocHJvcHMpIHtcclxuICBjb25zdCBbc2hvd0ltYWdlLCBzZXRTaG93SW1hZ2VdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xyXG4gIGNvbnN0IFtjYXJQb3NlLCBzZXRDYXJQb3NlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXHJcbiAgY29uc3QgW2Rlc3RpbmF0aW9uLCBzZXREZXN0aW5hdGlvbl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxyXG4gIGNvbnN0IFtwYXRoLCBzZXRQYXRoXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpXHJcbiAgXHJcbiAgdmFyIHRyYWlsID0gW107XHJcbiAgdmFyIGxhc3RQb3NlID0gdW5kZWZpbmVkO1xyXG4gIGxldCBzaG93TWFwID0gZmFsc2U7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XHJcbiAgICAgIHZhciBpbWcgPSBlbnRyaWVzWzBdLnRhcmdldDsgXHJcbiAgICAgIC8vb3IgaG93ZXZlciB5b3UgZ2V0IGEgaGFuZGxlIHRvIHRoZSBJTUdcclxuICAgICAgdmFyIHdpZHRoID0gaW1nLmNsaWVudFdpZHRoIC8gNDAwO1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gaW1nLmNsaWVudEhlaWdodCAvIDQwMDtcclxuXHJcbiAgICAgIHVwZGF0ZVBhdGgodHJhaWwsIHNldFBhdGgsIGhlaWdodCwgd2lkdGgpO1xyXG5cclxuICAgICAgaWYgKGxhc3RQb3NlKSB7XHJcbiAgICAgICAgc2V0Q2FyUG9zZShbbGFzdFBvc2VbMV0qaGVpZ2h0LGxhc3RQb3NlWzBdKndpZHRoLCBNYXRoLlBJIC0gbGFzdFBvc2VbMl1dKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgZ2V0TWFwRGF0YUFuZERyYXcgPSAoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YS5tYXAgJiYgc2hvd01hcCkge1xyXG4gICAgICAgIGNvbnN0IHBvc2UgPSBkYXRhLm1hcC5zdWJzdHJpbmcoMSwgZGF0YS5tYXAubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgY29uc3QgY29udGVudCA9IHBvc2Uuc3BsaXQoJywnKS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoaXRlbSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBsYXN0UG9zZSA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJyk7IFxyXG4gICAgICAgIC8vb3IgaG93ZXZlciB5b3UgZ2V0IGEgaGFuZGxlIHRvIHRoZSBJTUdcclxuICAgICAgICB2YXIgd2lkdGggPSBpbWcuY2xpZW50V2lkdGggLyA0MDA7XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IGltZy5jbGllbnRIZWlnaHQgLyA0MDA7XHJcblxyXG4gICAgICAgIHNldENhclBvc2UoW2NvbnRlbnRbMV0qaGVpZ2h0LGNvbnRlbnRbMF0qd2lkdGgsIE1hdGguUEkgLSBjb250ZW50WzJdXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBnZXRJbWFnZUFuZERpc3BsYXkgPSAoZGF0YSkgPT4ge1xyXG4gICAgICBpZihkYXRhLmltYWdlKSB7XHJcbiAgICAgICAgbGV0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpLWNhbnZhcy1udW1weVwiKTtcclxuICAgICAgICAgIC8vUGFyc2UgZW5jb2RlZCBpbWFnZSBkYXRhIGFuZCBkZWNvZGUgaXRcclxuICAgICAgICBmdW5jdGlvbiBkZWNvZGVfdXRmOChzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG5cclxuICAgICAgICBpZihzb3VyY2UgIT09IFwiXCIpe1xyXG4gICAgICAgICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZ2V0UGF0aEFuZERpc3BsYXkgPSAoZGF0YSkgPT4geyAgXHJcbiAgICAgIGlmKGRhdGEuYXJyYXkgJiYgc2hvd01hcCl7XHJcbiAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGVyY2lzZS1pbWcnKTsgXHJcbiAgICAgICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgICAgIHZhciB3aWR0aCA9IGltZy5jbGllbnRXaWR0aCAvIDQwMDtcclxuICAgICAgICB2YXIgaGVpZ2h0ID0gaW1nLmNsaWVudEhlaWdodCAvIDQwMDtcclxuXHJcbiAgICAgICAgdHJhaWwgPSBKU09OLnBhcnNlKGRhdGEuYXJyYXkpO1xyXG4gICAgICAgIHVwZGF0ZVBhdGgodHJhaWwsIHNldFBhdGgsIGhlaWdodCwgd2lkdGgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gbWVzc2FnZS5kYXRhLnVwZGF0ZTtcclxuICAgICAgY29uc29sZS5sb2coZGF0YSlcclxuICAgICAgZ2V0TWFwRGF0YUFuZERyYXcoZGF0YSlcclxuICAgICAgZ2V0SW1hZ2VBbmREaXNwbGF5KGRhdGEpXHJcbiAgICAgIGdldFBhdGhBbmREaXNwbGF5KGRhdGEpXHJcblxyXG4gICAgICAvLyBTZW5kIHRoZSBBQ0sgb2YgdGhlIG1zZ1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJhY2tcIik7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJykpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UuZGF0YS5zdGF0ZSlcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiKSB7XHJcbiAgICAgICAgc2hvd01hcCA9IGZhbHNlXHJcbiAgICAgICAgc2V0U2hvd0ltYWdlKGZhbHNlKVxyXG4gICAgICAgIHRyYWlsID0gW11cclxuICAgICAgICBzZXRQYXRoKFwiXCIpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc2hvd01hcCA9IHRydWVcclxuICAgICAgICBzZXRTaG93SW1hZ2UodHJ1ZSlcclxuICAgICAgICAvLyBSZXNlbmQgVGFyZ2V0XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJSZXNlbmQgdGFyZ2V0OlwiLCBjb29yZHMpXHJcbiAgICAgICAgaWYgKGNvb3Jkcykge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIGBwaWNrJHtjb29yZHN9YClcclxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICB9ICBcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlNUQVRFX0NIQU5HRURdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgZnVuY3Rpb24gZGVzdGluYXRpb25QaWNrZXIoZXZlbnQpIHtcclxuICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJyk7IFxyXG4gICAgbGV0IHJlY3QgPSBpbWcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgdmFyIHdpZHRoID0gaW1nLmNsaWVudFdpZHRoIC8gNDAwO1xyXG4gICAgdmFyIGhlaWdodCA9IGltZy5jbGllbnRIZWlnaHQgLyA0MDA7XHJcblxyXG4gICAgbGV0IGN1cnNvclggPSAoZXZlbnQuY2xpZW50WCAtIHJlY3QubGVmdCk7XHJcbiAgICBsZXQgY3Vyc29yWSA9IChldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xyXG4gICAgXHJcbiAgICBsZXQgY3Vyc29yWE1hcCA9IGN1cnNvclggLyB3aWR0aDtcclxuICAgIGxldCBjdXJzb3JZTWFwID0gY3Vyc29yWSAvIGhlaWdodDtcclxuXHJcbiAgICBzZXREZXN0aW5hdGlvbihbKGN1cnNvclkqMTAwKS9pbWcuY2xpZW50SGVpZ2h0LCAoY3Vyc29yWCoxMDApLyhpbWcuY2xpZW50V2lkdGgqMildKVxyXG4gICAgcmV0dXJuIFtjdXJzb3JYTWFwLCBjdXJzb3JZTWFwXTtcclxuICB9XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsICAgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fT5cclxuICAgICAgPGltZyBzcmM9e0NpdHlNYXB9IGFsdD1cIlwiIGNsYXNzTmFtZT1cImV4ZXJjaXNlLWNhbnZhc1wiIGlkPVwiZXhlcmNpc2UtaW1nXCJcclxuICAgICAgICBvbkNsaWNrPXsgZnVuY3Rpb24gcGlja0xvYyhldmVudCl7XHJcbiAgICAgICAgICB2YXIgZGF0YSA9IGRlc3RpbmF0aW9uUGlja2VyKGV2ZW50KVxyXG4gICAgICAgICAgY29vcmRzID0gZGF0YVxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIGBwaWNrJHtkYXRhfWApXHJcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgfSAgXHJcbiAgICAgICAgfX1cclxuICAgICAgLz5cclxuICAgICAge2NhclBvc2UgJiZcclxuICAgICAgICA8aW1nIHNyYz17Q2FyfSBpZD1cImNhclwiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIGNhclBvc2VbMl0rXCJyYWRcIiwgdG9wOiBjYXJQb3NlWzBdIC01ICwgbGVmdDogY2FyUG9zZVsxXSAtNX19Lz5cclxuICAgICAgfVxyXG4gICAgICB7ZGVzdGluYXRpb24gJiZcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRhcmdldFwiIHN0eWxlPXt7dG9wOiBgJHtkZXN0aW5hdGlvblswXX0lYCwgbGVmdDogYGNhbGMoJHtkZXN0aW5hdGlvblsxXX0lIC0gJHsxMH1weClgfX0vPlxyXG4gICAgICB9XHJcbiAgICAgIHtwYXRoICYmXHJcbiAgICAgICAgPHN2ZyBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9XCI1MCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9e3t6SW5kZXg6Mn19PlxyXG4gICAgICAgICAgPHBhdGggeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGQ9e3BhdGh9IFxyXG4gICAgICAgICAgICBzdHlsZT17e3N0cm9rZVdpZHRoOiBcIjJweFwiLCBzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsIHN0cm9rZTogXCJncmVlblwiLCBmaWxsOiBcIm5vbmVcIn19XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICB9XHJcbiAgICAgIHsgc2hvd0ltYWdlID8gXHJcbiAgICAgICAgKFxyXG4gICAgICAgIDxpbWcgaWQ9XCJndWktY2FudmFzLW51bXB5XCIgd2lkdGg9XCI0MDBcIiBoZWlnaHQ9XCI0MDBcIiBzdHlsZT17e1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxyXG4gICAgICAgICAgICBsZWZ0OiBcIjUwJVwiLFxyXG4gICAgICAgICAgICB3aWR0aDogXCI1MCVcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgICB9fT48L2ltZz5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgIDxkaXYgaWQ9XCJndWktY2FudmFzLW51bXB5LWVtcHR5XCIgd2lkdGg9XCI0MDBcIiBoZWlnaHQ9XCI0MDBcIiBzdHlsZT17e1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxyXG4gICAgICAgICAgICBsZWZ0OiBcIjUwJVwiLFxyXG4gICAgICAgICAgICB3aWR0aDogXCI1MCVcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDBcIlxyXG4gICAgICAgIH19PjwvZGl2PlxyXG4gICAgICAgIClcclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNHbG9iYWxOYXZpZ2F0aW9uLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNHbG9iYWxOYXZpZ2F0aW9uXHJcbiIsImV4cG9ydCBjb25zdCB1cGRhdGVQYXRoID0gKHRyYWlsLCBzZXRQYXRoQ2FsbGJhY2ssIGhlaWdodCwgd2lkdGgpID0+IHtcclxuICB2YXIgbmV3UGF0aCA9IFwiTSBcIjtcclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRyYWlsLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRyYWlsW2luZGV4XTtcclxuICAgIHZhciB0b3AgID0gZWxlbWVudFsxXSAqIGhlaWdodDtcclxuICAgIHZhciBsZWZ0ID0gZWxlbWVudFswXSAqIHdpZHRoO1xyXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIG5ld1BhdGggKz0gbGVmdC50b1N0cmluZygpKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbmV3UGF0aCArPSBcIiBMIFwiICsgbGVmdC50b1N0cmluZygpICsgXCIsXCIgKyB0b3AudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGlmICh0cmFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICBzZXRQYXRoQ2FsbGJhY2sobmV3UGF0aClcclxuICB9XHJcbn1cclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsiY29vcmRzIiwidW5kZWZpbmVkIiwiU3BlY2lmaWNHbG9iYWxOYXZpZ2F0aW9uIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdCIsInNob3dJbWFnZSIsInNldFNob3dJbWFnZSIsIl9SZWFjdCR1c2VTdGF0ZTQiLCJjYXJQb3NlIiwic2V0Q2FyUG9zZSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJkZXN0aW5hdGlvbiIsInNldERlc3RpbmF0aW9uIiwiX1JlYWN0JHVzZVN0YXRlOCIsInBhdGgiLCJzZXRQYXRoIiwidHJhaWwiLCJsYXN0UG9zZSIsInNob3dNYXAiLCJjb25zb2xlIiwibG9nIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJpbWciLCJ0YXJnZXQiLCJ3aWR0aCIsImNsaWVudFdpZHRoIiwiaGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwidXBkYXRlUGF0aCIsIk1hdGgiLCJQSSIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJtYXAiLCJjb250ZW50Iiwic3Vic3RyaW5nIiwibGVuZ3RoIiwic3BsaXQiLCJpdGVtIiwicGFyc2VGbG9hdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJnZXRNYXBEYXRhQW5kRHJhdyIsImltYWdlIiwiY2FudmFzIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsInNvdXJjZSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJzaGFwZSIsInNyYyIsImdldEltYWdlQW5kRGlzcGxheSIsImFycmF5IiwiZ2V0UGF0aEFuZERpc3BsYXkiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInNlbmQiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJvYnNlcnZlIiwidW5zdWJzY3JpYmUiLCJzdGF0ZSIsImNvbmNhdCIsImVycm9yIiwiU1RBVEVfQ0hBTkdFRCIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJjaGlsZHJlbiIsIl9qc3giLCJDaXR5TWFwIiwiYWx0IiwiY2xhc3NOYW1lIiwiaWQiLCJvbkNsaWNrIiwiZXZlbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY3Vyc29yWCIsImNsaWVudFgiLCJsZWZ0IiwiY3Vyc29yWSIsImNsaWVudFkiLCJ0b3AiLCJjdXJzb3JYTWFwIiwiY3Vyc29yWU1hcCIsImRlc3RpbmF0aW9uUGlja2VyIiwiQ2FyIiwicm90YXRlIiwieG1sbnMiLCJ6SW5kZXgiLCJkIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZSIsImZpbGwiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwic2V0UGF0aENhbGxiYWNrIiwibmV3UGF0aCIsImluZGV4IiwiZWxlbWVudCIsInRvU3RyaW5nIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6780.355a652d.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6780.355a652d.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6780.355a652d.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/6802.a47c0c25.js b/react_frontend/static/react_frontend/js/6802.a47c0c25.js new file mode 100644 index 000000000..33aed536a --- /dev/null +++ b/react_frontend/static/react_frontend/js/6802.a47c0c25.js @@ -0,0 +1,3 @@ +/*! For license information please see 6802.a47c0c25.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6802],{41:(e,t,r)=>{function n(e,t,r){var n="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):n+=r+" "})),n}r.d(t,{Rk:()=>n,SF:()=>o,sk:()=>a});var o=function(e,t,r){var n=e.key+"-"+t.name;!1===r&&void 0===e.registered[n]&&(e.registered[n]=t.styles)},a=function(e,t,r){o(e,t,r);var n=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var a=t;do{e.insert(t===a?"."+n:"",a,e.sheet,!0),a=a.next}while(void 0!==a)}}},2765:(e,t,r)=>{r.d(t,{A:()=>n});const n=(0,r(6544).A)()},7577:(e,t,r)=>{r.d(t,{Ay:()=>b,ep:()=>v,_n:()=>k});var n=r(8587),o=r(8168),a=r(9359),i=r(3221),s=r(3967);const l=["variant"];function c(e){return 0===e.length}function d(e){const{variant:t}=e,r=(0,n.A)(e,l);let o=t||"";return Object.keys(r).sort().forEach((t=>{o+="color"===t?c(o)?e[t]:(0,s.A)(e[t]):`${c(o)?t:(0,s.A)(t)}${(0,s.A)(e[t].toString())}`})),o}var u=r(3571);const p=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function m(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}const f=(0,i.A)();function h({defaultTheme:e,theme:t,themeId:r}){return n=t,0===Object.keys(n).length?e:t[r]||t;var n}var g=r(2765),y=r(8312);const v=e=>m(e)&&"classes"!==e,k=m,A=function(e={}){const{themeId:t,defaultTheme:r=f,rootShouldForwardProp:i=m,slotShouldForwardProp:s=m}=e,l=e=>(0,u.A)((0,o.A)({},e,{theme:h((0,o.A)({},e,{defaultTheme:r,themeId:t}))}));return l.__mui_systemSx=!0,(e,c={})=>{(0,a.q_)(e,(e=>e.filter((e=>!(null!=e&&e.__mui_systemSx)))));const{name:u,slot:f,skipVariantsResolver:g,skipSx:y,overridesResolver:v}=c,k=(0,n.A)(c,p),A=void 0!==g?g:f&&"Root"!==f||!1,b=y||!1;let _=m;"Root"===f?_=i:f?_=s:function(e){return"string"==typeof e&&e.charCodeAt(0)>96}(e)&&(_=void 0);const x=(0,a.Ay)(e,(0,o.A)({shouldForwardProp:_,label:void 0},k)),w=(n,...a)=>{const i=a?a.map((e=>"function"==typeof e&&e.__emotion_real!==e?n=>e((0,o.A)({},n,{theme:h((0,o.A)({},n,{defaultTheme:r,themeId:t}))})):e)):[];let s=n;u&&v&&i.push((e=>{const n=h((0,o.A)({},e,{defaultTheme:r,themeId:t})),a=((e,t)=>t.components&&t.components[e]&&t.components[e].styleOverrides?t.components[e].styleOverrides:null)(u,n);if(a){const t={};return Object.entries(a).forEach((([r,a])=>{t[r]="function"==typeof a?a((0,o.A)({},e,{theme:n})):a})),v(e,t)}return null})),u&&!A&&i.push((e=>{const n=h((0,o.A)({},e,{defaultTheme:r,themeId:t}));return((e,t,r,n)=>{var o;const{ownerState:a={}}=e,i=[],s=null==r||null==(o=r.components)||null==(o=o[n])?void 0:o.variants;return s&&s.forEach((r=>{let n=!0;Object.keys(r.props).forEach((t=>{a[t]!==r.props[t]&&e[t]!==r.props[t]&&(n=!1)})),n&&i.push(t[d(r.props)])})),i})(e,((e,t)=>{let r=[];t&&t.components&&t.components[e]&&t.components[e].variants&&(r=t.components[e].variants);const n={};return r.forEach((e=>{const t=d(e.props);n[t]=e.style})),n})(u,n),n,u)})),b||i.push(l);const c=i.length-a.length;if(Array.isArray(n)&&c>0){const e=new Array(c).fill("");s=[...n,...e],s.raw=[...n.raw,...e]}else"function"==typeof n&&n.__emotion_real!==n&&(s=e=>n((0,o.A)({},e,{theme:h((0,o.A)({},e,{defaultTheme:r,themeId:t}))})));const p=x(s,...i);return e.muiName&&(p.muiName=e.muiName),p};return x.withConfig&&(w.withConfig=x.withConfig),w}}({themeId:y.A,defaultTheme:g.A,rootShouldForwardProp:v}),b=A},4409:(e,t,r)=>{r.d(t,{A:()=>s});var n=r(3726),o=r(2858);var a=r(2765),i=r(8312);function s({props:e,name:t}){return function({props:e,name:t,defaultTheme:r,themeId:a}){let i=(0,o.A)(r);a&&(i=i[a]||i);const s=function(e){const{theme:t,name:r,props:o}=e;return t&&t.components&&t.components[r]&&t.components[r].defaultProps?(0,n.A)(t.components[r].defaultProps,o):o}({theme:i,name:t,props:e});return s}({props:e,name:t,defaultTheme:a.A,themeId:i.A})}},8466:(e,t,r)=>{r.d(t,{A:()=>n});const n=r(3967).A},9359:(e,t,r)=>{r.d(t,{Ay:()=>v,q_:()=>k});var n=r(8168),o=r(6540),a=r(6289),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,a.A)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),l=r(5684),c=r(41),d=r(6899),u=r(1287),p=s,m=function(e){return"theme"!==e},f=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:m},h=function(e,t,r){var n;if(t){var o=t.shouldForwardProp;n=e.__emotion_forwardProp&&o?function(t){return e.__emotion_forwardProp(t)&&o(t)}:o}return"function"!=typeof n&&r&&(n=e.__emotion_forwardProp),n},g=function(e){var t=e.cache,r=e.serialized,n=e.isStringTag;return(0,c.SF)(t,r,n),(0,u.s)((function(){return(0,c.sk)(t,r,n)})),null},y=function e(t,r){var a,i,s=t.__emotion_real===t,u=s&&t.__emotion_base||t;void 0!==r&&(a=r.label,i=r.target);var p=h(t,r,s),m=p||f(u),y=!m("as");return function(){var v=arguments,k=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==a&&k.push("label:"+a+";"),null==v[0]||void 0===v[0].raw)k.push.apply(k,v);else{k.push(v[0][0]);for(var A=v.length,b=1;b{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},2858:(e,t,r)=>{r.d(t,{A:()=>i});var n=r(3221),o=r(3951);const a=(0,n.A)(),i=function(e=a){return(0,o.A)(e)}},9071:(e,t,r)=>{r.d(t,{A:()=>o});const n=e=>e,o=(()=>{let e=n;return{configure(t){e=t},generate:t=>e(t),reset(){e=n}}})()},5659:(e,t,r)=>{function n(e,t,r=void 0){const n={};return Object.keys(e).forEach((o=>{n[o]=e[o].reduce(((e,n)=>{if(n){const o=t(n);""!==o&&e.push(o),r&&r[n]&&e.push(r[n])}return e}),[]).join(" ")})),n}r.d(t,{A:()=>n})},1609:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(9071);const o={active:"active",checked:"checked",completed:"completed",disabled:"disabled",readOnly:"readOnly",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",required:"required",selected:"selected"};function a(e,t,r="Mui"){const a=o[t];return a?`${r}-${a}`:`${n.A.generate(e)}-${t}`}},8413:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(1609);function o(e,t,r="Mui"){const o={};return t.forEach((t=>{o[t]=(0,n.A)(e,t,r)})),o}},3726:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(8168);function o(e,t){const r=(0,n.A)({},t);return Object.keys(e).forEach((a=>{if(a.toString().match(/^(components|slots)$/))r[a]=(0,n.A)({},e[a],r[a]);else if(a.toString().match(/^(componentsProps|slotProps)$/)){const i=e[a]||{},s=t[a];r[a]={},s&&Object.keys(s)?i&&Object.keys(i)?(r[a]=(0,n.A)({},s),Object.keys(i).forEach((e=>{r[a][e]=o(i[e],s[e])}))):r[a]=s:r[a]=i}else void 0===r[a]&&(r[a]=e[a])})),r}},53:(e,t,r)=>{function n(e){var t,r,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,r=0,o="";r{"use strict";t.r(n),t.d(n,{default:()=>l});var r=t(6540),o=t(2597),s=t(5556),i=t.n(s),a=t(4848);function c(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t{"use strict";var r=t(6925);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,n,t,o,s,i){if(i!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:s,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,n,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,n,t)=>{"use strict";var r=t(6540),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,n,t){var r,s={},u=null,l=null;for(r in void 0!==t&&(u=""+t),void 0!==n.key&&(u=""+n.key),void 0!==n.ref&&(l=n.ref),n)i.call(n,r)&&!c.hasOwnProperty(r)&&(s[r]=n[r]);if(e&&e.defaultProps)for(r in n=e.defaultProps)void 0===s[r]&&(s[r]=n[r]);return{$$typeof:o,type:e,key:u,ref:l,props:s,_owner:a.current}}n.Fragment=s,n.jsx=u,n.jsxs=u},4848:(e,n,t)=>{"use strict";e.exports=t(1020)},2597:(e,n,t)=>{"use strict";e.exports=t.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUZvQiw0RUNBZCxJQUFJaUMsRUFBRSxFQUFRLE1BQVNDLEVBQUVDLE9BQU9DLElBQUksaUJBQWlCQyxFQUFFRixPQUFPQyxJQUFJLGtCQUFrQkUsRUFBRUMsT0FBT0MsVUFBVUMsZUFBZUMsRUFBRVQsRUFBRVUsbURBQW1EQyxrQkFBa0JDLEVBQUUsQ0FBQ0MsS0FBSSxFQUFHQyxLQUFJLEVBQUdDLFFBQU8sRUFBR0MsVUFBUyxHQUNoUCxTQUFTQyxFQUFFQyxFQUFFQyxFQUFFQyxHQUFHLElBQUlDLEVBQUVDLEVBQUUsQ0FBQyxFQUFFQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUgsVUFBaEYsSUFBU0QsSUFBSUcsRUFBRSxHQUFHSCxRQUFHLElBQVNELEVBQUVOLE1BQU1VLEVBQUUsR0FBR0osRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNVSxFQUFFTCxFQUFFTCxLQUFjSyxFQUFFZCxFQUFFb0IsS0FBS04sRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFUSxhQUFhLElBQUlMLEtBQUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTMUIsRUFBRTJCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUV2RyxNQUFNcUcsRUFBRU8sT0FBT3BCLEVBQUVxQixRQUFRLENBQUMvRCxFQUFRZ0UsU0FBUzNCLEVBQUVyQyxFQUFRaUUsSUFBSWYsRUFBRWxELEVBQVFrRSxLQUFLaEIsK0JDUHhXbkQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19wZXJzb24vcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY0ZvbGxvd1BlcnNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgbm9JbWFnZSBmcm9tIFwiLi4vLi4vYXNzZXRzL2ltZy9ub0ltYWdlLnBuZ1wiO1xyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuXHJcbmZ1bmN0aW9uIFNwZWNpZmljRm9sbG93UGVyc29uKHByb3BzKSB7XHJcbiAgY29uc3QgW2ltYWdlLCBzZXRJbWFnZV0gPSBSZWFjdC51c2VTdGF0ZShcclxuICAgIG5vSW1hZ2VcclxuICApO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuXHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGNvbnN0IHVwZGF0ZSA9IG1lc3NhZ2UuZGF0YS51cGRhdGU7XHJcbiAgICAgIGlmICh1cGRhdGUuaW1hZ2UpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIk5ldyBpbWcgcmVjZWl2ZWRcIik7XHJcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBKU09OLnBhcnNlKHVwZGF0ZS5pbWFnZSk7XHJcbiAgICAgICAgc2V0SW1hZ2UoYGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwke2ltYWdlLmltYWdlfWApO1xyXG5cclxuICAgICAgICAvLyBTZW5kIHRoZSBBQ0sgb2YgdGhlIGltZ1xyXG4gICAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImFja1wiKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFxyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgbGlzdGVuX2tleSgpO1xyXG4gIH0sIFtdKTtcclxuXHJcbiAgZnVuY3Rpb24gbGlzdGVuX2tleSgpIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgIGlmIChldmVudC5jb2RlID09PSBcIktleVNcIikge1xyXG4gICAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImtleV9zXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09IFwiS2V5V1wiKSB7XHJcbiAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwia2V5X3dcIik7XHJcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gXCJLZXlBXCIpIHtcclxuICAgICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJrZXlfYVwiKTtcclxuICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSBcIktleURcIikge1xyXG4gICAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImtleV9kXCIpO1xyXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09IFwiS2V5WFwiKSB7XHJcbiAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwia2V5X3hcIik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCIsIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwifX0+XHJcbiAgICAgIDxpbWcgY2xhc3NOYW1lPVwiaW1hZ2VcIiBpZD1cImd1aV9jYW52YXNcIiBzcmM9e2ltYWdlfS8+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG5cclxufVxyXG5cclxuU3BlY2lmaWNGb2xsb3dQZXJzb24ucHJvcFR5cGVzID0ge1xyXG4gIGNvbnRleHQ6IFByb3BUeXBlcy5hbnksXHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IFNwZWNpZmljRm9sbG93UGVyc29uOyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIlNwZWNpZmljRm9sbG93UGVyc29uIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiUmVhY3QiLCJub0ltYWdlIiwiaW1hZ2UiLCJzZXRJbWFnZSIsImNvbnNvbGUiLCJsb2ciLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJ1cGRhdGUiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwiY29uY2F0Iiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzZW5kIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiVVBEQVRFIiwidW5zdWJzY3JpYmUiLCJ1c2VFZmZlY3QiLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJjb2RlIiwiX2pzeCIsInN0eWxlIiwiZGlzcGxheSIsIndpZHRoIiwiaGVpZ2h0IiwicG9zaXRpb24iLCJqdXN0aWZ5Q29udGVudCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiaWQiLCJzcmMiLCJwcm9wVHlwZXMiLCJjb250ZXh0IiwiUHJvcFR5cGVzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwiZXhwb3J0cyIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6824.cb5bffe4.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6824.cb5bffe4.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6824.cb5bffe4.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/6885.ca00900b.js b/react_frontend/static/react_frontend/js/6885.ca00900b.js new file mode 100644 index 000000000..7a8704733 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6885.ca00900b.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6885],{6544:(e,t,a)=>{a.d(t,{A:()=>R});var n=a(8168),r=a(8587),i=a(2599),o=a(3272),f=a(3221),c=a(4188),s=a(3571),l=a(4279);const d={black:"#000",white:"#fff"},h={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},u={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},g={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},p={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},b={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},m={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},y={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},A=["mode","contrastThreshold","tonalOffset"],x={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.white,default:d.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},k={text:{primary:d.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:d.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function v(e,t,a,n){const r=n.light||n,i=n.dark||1.5*n;e[t]||(e.hasOwnProperty(a)?e[t]=e[a]:"light"===t?e.light=(0,l.a)(e.main,r):"dark"===t&&(e.dark=(0,l.e$)(e.main,i)))}const $=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"],O={textTransform:"uppercase"},w='"Roboto", "Helvetica", "Arial", sans-serif';function S(e,t){const a="function"==typeof t?t(e):t,{fontFamily:i=w,fontSize:f=14,fontWeightLight:c=300,fontWeightRegular:s=400,fontWeightMedium:l=500,fontWeightBold:d=700,htmlFontSize:h=16,allVariants:u,pxToRem:g}=a,p=(0,r.A)(a,$),b=f/14,m=g||(e=>e/h*b+"rem"),y=(e,t,a,r,o)=>{return(0,n.A)({fontFamily:i,fontWeight:e,fontSize:m(t),lineHeight:a},i===w?{letterSpacing:(f=r/t,Math.round(1e5*f)/1e5+"em")}:{},o,u);var f},A={h1:y(c,96,1.167,-1.5),h2:y(c,60,1.2,-.5),h3:y(s,48,1.167,0),h4:y(s,34,1.235,.25),h5:y(s,24,1.334,0),h6:y(l,20,1.6,.15),subtitle1:y(s,16,1.75,.15),subtitle2:y(l,14,1.57,.1),body1:y(s,16,1.5,.15),body2:y(s,14,1.43,.15),button:y(l,14,1.75,.4,O),caption:y(s,12,1.66,.4),overline:y(s,12,2.66,1,O),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,o.A)((0,n.A)({htmlFontSize:h,pxToRem:m,fontFamily:i,fontSize:f,fontWeightLight:c,fontWeightRegular:s,fontWeightMedium:l,fontWeightBold:d},A),p,{clone:!1})}function M(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}const W=["none",M(0,2,1,-1,0,1,1,0,0,1,3,0),M(0,3,1,-2,0,2,2,0,0,1,5,0),M(0,3,3,-2,0,3,4,0,0,1,8,0),M(0,2,4,-1,0,4,5,0,0,1,10,0),M(0,3,5,-1,0,5,8,0,0,1,14,0),M(0,3,5,-1,0,6,10,0,0,1,18,0),M(0,4,5,-2,0,7,10,1,0,2,16,1),M(0,5,5,-3,0,8,10,1,0,3,14,2),M(0,5,6,-3,0,9,12,1,0,3,16,2),M(0,6,6,-3,0,10,14,1,0,4,18,3),M(0,6,7,-4,0,11,15,1,0,4,20,3),M(0,7,8,-4,0,12,17,2,0,5,22,4),M(0,7,8,-4,0,13,19,2,0,5,24,4),M(0,7,9,-4,0,14,21,2,0,5,26,4),M(0,8,9,-5,0,15,22,2,0,6,28,5),M(0,8,10,-5,0,16,24,2,0,6,30,5),M(0,8,11,-5,0,17,26,2,0,6,32,5),M(0,9,11,-5,0,18,28,2,0,7,34,6),M(0,9,12,-6,0,19,29,2,0,7,36,6),M(0,10,13,-6,0,20,31,3,0,8,38,7),M(0,10,13,-6,0,21,33,3,0,8,40,7),M(0,10,14,-6,0,22,35,3,0,8,42,7),M(0,11,14,-7,0,23,36,3,0,9,44,8),M(0,11,15,-7,0,24,38,3,0,9,46,8)];var z=a(7091);const F={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},T=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];const R=function(e={},...t){const{mixins:a={},palette:$={},transitions:O={},typography:w={}}=e,M=(0,r.A)(e,T);if(e.vars)throw new Error((0,i.A)(18));const R=function(e){const{mode:t="light",contrastThreshold:a=3,tonalOffset:f=.2}=e,c=(0,r.A)(e,A),s=e.primary||function(e="light"){return"dark"===e?{main:b[200],light:b[50],dark:b[400]}:{main:b[700],light:b[400],dark:b[800]}}(t),$=e.secondary||function(e="light"){return"dark"===e?{main:u[200],light:u[50],dark:u[400]}:{main:u[500],light:u[300],dark:u[700]}}(t),O=e.error||function(e="light"){return"dark"===e?{main:g[500],light:g[300],dark:g[700]}:{main:g[700],light:g[400],dark:g[800]}}(t),w=e.info||function(e="light"){return"dark"===e?{main:m[400],light:m[300],dark:m[700]}:{main:m[700],light:m[500],dark:m[900]}}(t),S=e.success||function(e="light"){return"dark"===e?{main:y[400],light:y[300],dark:y[700]}:{main:y[800],light:y[500],dark:y[900]}}(t),M=e.warning||function(e="light"){return"dark"===e?{main:p[400],light:p[300],dark:p[700]}:{main:"#ed6c02",light:p[500],dark:p[900]}}(t);function W(e){return(0,l.eM)(e,k.text.primary)>=a?k.text.primary:x.text.primary}const z=({color:e,name:t,mainShade:a=500,lightShade:r=300,darkShade:o=700})=>{if(!(e=(0,n.A)({},e)).main&&e[a]&&(e.main=e[a]),!e.hasOwnProperty("main"))throw new Error((0,i.A)(11,t?` (${t})`:"",a));if("string"!=typeof e.main)throw new Error((0,i.A)(12,t?` (${t})`:"",JSON.stringify(e.main)));return v(e,"light",r,f),v(e,"dark",o,f),e.contrastText||(e.contrastText=W(e.main)),e},F={dark:k,light:x};return(0,o.A)((0,n.A)({common:(0,n.A)({},d),mode:t,primary:z({color:s,name:"primary"}),secondary:z({color:$,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:z({color:O,name:"error"}),warning:z({color:M,name:"warning"}),info:z({color:w,name:"info"}),success:z({color:S,name:"success"}),grey:h,contrastThreshold:a,getContrastText:W,augmentColor:z,tonalOffset:f},F[t]),c)}($),H=(0,f.A)(e);let I=(0,o.A)(H,{mixins:(B=H.breakpoints,C=a,(0,n.A)({toolbar:{minHeight:56,[B.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[B.up("sm")]:{minHeight:64}}},C)),palette:R,shadows:W.slice(),typography:S(R,w),transitions:(0,z.Ay)(O),zIndex:(0,n.A)({},F)});var B,C;return I=(0,o.A)(I,M),I=t.reduce(((e,t)=>(0,o.A)(e,t)),I),I.unstable_sxConfig=(0,n.A)({},c.A,null==M?void 0:M.unstable_sxConfig),I.unstable_sx=function(e){return(0,s.A)({sx:e,theme:this})},I}},7091:(e,t,a)=>{a.d(t,{Ay:()=>l,p0:()=>f});var n=a(8587),r=a(8168);const i=["duration","easing","delay"],o={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},f={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function c(e){return`${Math.round(e)}ms`}function s(e){if(!e)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function l(e){const t=(0,r.A)({},o,e.easing),a=(0,r.A)({},f,e.duration);return(0,r.A)({getAutoHeightDuration:s,create:(e=["all"],r={})=>{const{duration:o=a.standard,easing:f=t.easeInOut,delay:s=0}=r;return(0,n.A)(r,i),(Array.isArray(e)?e:[e]).map((e=>`${e} ${"string"==typeof o?o:c(o)} ${f} ${"string"==typeof s?s:c(s)}`)).join(",")}},e,{easing:t,duration:a})}},8312:(e,t,a)=>{a.d(t,{A:()=>n});const n="$$material"},4279:(e,t,a)=>{a.d(t,{X4:()=>s,a:()=>d,e$:()=>l,eM:()=>c});var n=a(2599);function r(e,t=0,a=1){return Math.min(Math.max(t,e),a)}function i(e){if(e.type)return e;if("#"===e.charAt(0))return i(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length>=6?2:1}}`,"g");let a=e.match(t);return a&&1===a[0].length&&(a=a.map((e=>e+e))),a?`rgb${4===a.length?"a":""}(${a.map(((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}(e));const t=e.indexOf("("),a=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(a))throw new Error((0,n.A)(9,e));let r,o=e.substring(t+1,e.length-1);if("color"===a){if(o=o.split(" "),r=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,n.A)(10,r))}else o=o.split(",");return o=o.map((e=>parseFloat(e))),{type:a,values:o,colorSpace:r}}function o(e){const{type:t,colorSpace:a}=e;let{values:n}=e;return-1!==t.indexOf("rgb")?n=n.map(((e,t)=>t<3?parseInt(e,10):e)):-1!==t.indexOf("hsl")&&(n[1]=`${n[1]}%`,n[2]=`${n[2]}%`),n=-1!==t.indexOf("color")?`${a} ${n.join(" ")}`:`${n.join(", ")}`,`${t}(${n})`}function f(e){let t="hsl"===(e=i(e)).type||"hsla"===e.type?i(function(e){e=i(e);const{values:t}=e,a=t[0],n=t[1]/100,r=t[2]/100,f=n*Math.min(r,1-r),c=(e,t=(e+a/30)%12)=>r-f*Math.max(Math.min(t-3,9-t,1),-1);let s="rgb";const l=[Math.round(255*c(0)),Math.round(255*c(8)),Math.round(255*c(4))];return"hsla"===e.type&&(s+="a",l.push(t[3])),o({type:s,values:l})}(e)).values:e.values;return t=t.map((t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4))),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function c(e,t){const a=f(e),n=f(t);return(Math.max(a,n)+.05)/(Math.min(a,n)+.05)}function s(e,t){return e=i(e),t=r(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]=`/${t}`:e.values[3]=t,o(e)}function l(e,t){if(e=i(e),t=r(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let a=0;a<3;a+=1)e.values[a]*=1-t;return o(e)}function d(e,t){if(e=i(e),t=r(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let a=0;a<3;a+=1)e.values[a]+=(255-e.values[a])*t;else if(-1!==e.type.indexOf("color"))for(let a=0;a<3;a+=1)e.values[a]+=(1-e.values[a])*t;return o(e)}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSUEsRUFBYSxFQUFHLEVB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T0FBT0ssS0FBTyxJQUFNdEYsRUFBTWlGLE9BQU9LLElBQU1vQixPQUUxQyxJQUFxQyxJQUFqQzFHLEVBQU1rRSxLQUFLWSxRQUFRLFNBQzVCLElBQUssSUFBSVEsRUFBSSxFQUFHQSxFQUFJLEVBQUdBLEdBQUssRUFDMUJ0RixFQUFNaUYsT0FBT0ssS0FBTyxFQUFJdEYsRUFBTWlGLE9BQU9LLElBQU1vQixFQUcvQyxPQUFPckIsRUFBZXJGLEVBQ3hCLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2NvbG9ycy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9jb2xvcnMvZ3JleS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2NvbG9ycy9wdXJwbGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9jb2xvcnMvcmVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvY29sb3JzL29yYW5nZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2NvbG9ycy9ibHVlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvY29sb3JzL2xpZ2h0Qmx1ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2NvbG9ycy9ncmVlbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9jcmVhdGVQYWxldHRlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL2NyZWF0ZVR5cG9ncmFwaHkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvc2hhZG93cy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy96SW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvY3JlYXRlVGhlbWUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvY3JlYXRlTWl4aW5zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL2NyZWF0ZVRyYW5zaXRpb25zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL2lkZW50aWZpZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NvbG9yTWFuaXB1bGF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29tbW9uID0ge1xuICBibGFjazogJyMwMDAnLFxuICB3aGl0ZTogJyNmZmYnXG59O1xuZXhwb3J0IGRlZmF1bHQgY29tbW9uOyIsImNvbnN0IGdyZXkgPSB7XG4gIDUwOiAnI2ZhZmFmYScsXG4gIDEwMDogJyNmNWY1ZjUnLFxuICAyMDA6ICcjZWVlZWVlJyxcbiAgMzAwOiAnI2UwZTBlMCcsXG4gIDQwMDogJyNiZGJkYmQnLFxuICA1MDA6ICcjOWU5ZTllJyxcbiAgNjAwOiAnIzc1NzU3NScsXG4gIDcwMDogJyM2MTYxNjEnLFxuICA4MDA6ICcjNDI0MjQyJyxcbiAgOTAwOiAnIzIxMjEyMScsXG4gIEExMDA6ICcjZjVmNWY1JyxcbiAgQTIwMDogJyNlZWVlZWUnLFxuICBBNDAwOiAnI2JkYmRiZCcsXG4gIEE3MDA6ICcjNjE2MTYxJ1xufTtcbmV4cG9ydCBkZWZhdWx0IGdyZXk7IiwiY29uc3QgcHVycGxlID0ge1xuICA1MDogJyNmM2U1ZjUnLFxuICAxMDA6ICcjZTFiZWU3JyxcbiAgMjAwOiAnI2NlOTNkOCcsXG4gIDMwMDogJyNiYTY4YzgnLFxuICA0MDA6ICcjYWI0N2JjJyxcbiAgNTAwOiAnIzljMjdiMCcsXG4gIDYwMDogJyM4ZTI0YWEnLFxuICA3MDA6ICcjN2IxZmEyJyxcbiAgODAwOiAnIzZhMWI5YScsXG4gIDkwMDogJyM0YTE0OGMnLFxuICBBMTAwOiAnI2VhODBmYycsXG4gIEEyMDA6ICcjZTA0MGZiJyxcbiAgQTQwMDogJyNkNTAwZjknLFxuICBBNzAwOiAnI2FhMDBmZidcbn07XG5leHBvcnQgZGVmYXVsdCBwdXJwbGU7IiwiY29uc3QgcmVkID0ge1xuICA1MDogJyNmZmViZWUnLFxuICAxMDA6ICcjZmZjZGQyJyxcbiAgMjAwOiAnI2VmOWE5YScsXG4gIDMwMDogJyNlNTczNzMnLFxuICA0MDA6ICcjZWY1MzUwJyxcbiAgNTAwOiAnI2Y0NDMzNicsXG4gIDYwMDogJyNlNTM5MzUnLFxuICA3MDA6ICcjZDMyZjJmJyxcbiAgODAwOiAnI2M2MjgyOCcsXG4gIDkwMDogJyNiNzFjMWMnLFxuICBBMTAwOiAnI2ZmOGE4MCcsXG4gIEEyMDA6ICcjZmY1MjUyJyxcbiAgQTQwMDogJyNmZjE3NDQnLFxuICBBNzAwOiAnI2Q1MDAwMCdcbn07XG5leHBvcnQgZGVmYXVsdCByZWQ7IiwiY29uc3Qgb3JhbmdlID0ge1xuICA1MDogJyNmZmYzZTAnLFxuICAxMDA6ICcjZmZlMGIyJyxcbiAgMjAwOiAnI2ZmY2M4MCcsXG4gIDMwMDogJyNmZmI3NGQnLFxuICA0MDA6ICcjZmZhNzI2JyxcbiAgNTAwOiAnI2ZmOTgwMCcsXG4gIDYwMDogJyNmYjhjMDAnLFxuICA3MDA6ICcjZjU3YzAwJyxcbiAgODAwOiAnI2VmNmMwMCcsXG4gIDkwMDogJyNlNjUxMDAnLFxuICBBMTAwOiAnI2ZmZDE4MCcsXG4gIEEyMDA6ICcjZmZhYjQwJyxcbiAgQTQwMDogJyNmZjkxMDAnLFxuICBBNzAwOiAnI2ZmNmQwMCdcbn07XG5leHBvcnQgZGVmYXVsdCBvcmFuZ2U7IiwiY29uc3QgYmx1ZSA9IHtcbiAgNTA6ICcjZTNmMmZkJyxcbiAgMTAwOiAnI2JiZGVmYicsXG4gIDIwMDogJyM5MGNhZjknLFxuICAzMDA6ICcjNjRiNWY2JyxcbiAgNDAwOiAnIzQyYTVmNScsXG4gIDUwMDogJyMyMTk2ZjMnLFxuICA2MDA6ICcjMWU4OGU1JyxcbiAgNzAwOiAnIzE5NzZkMicsXG4gIDgwMDogJyMxNTY1YzAnLFxuICA5MDA6ICcjMGQ0N2ExJyxcbiAgQTEwMDogJyM4MmIxZmYnLFxuICBBMjAwOiAnIzQ0OGFmZicsXG4gIEE0MDA6ICcjMjk3OWZmJyxcbiAgQTcwMDogJyMyOTYyZmYnXG59O1xuZXhwb3J0IGRlZmF1bHQgYmx1ZTsiLCJjb25zdCBsaWdodEJsdWUgPSB7XG4gIDUwOiAnI2UxZjVmZScsXG4gIDEwMDogJyNiM2U1ZmMnLFxuICAyMDA6ICcjODFkNGZhJyxcbiAgMzAwOiAnIzRmYzNmNycsXG4gIDQwMDogJyMyOWI2ZjYnLFxuICA1MDA6ICcjMDNhOWY0JyxcbiAgNjAwOiAnIzAzOWJlNScsXG4gIDcwMDogJyMwMjg4ZDEnLFxuICA4MDA6ICcjMDI3N2JkJyxcbiAgOTAwOiAnIzAxNTc5YicsXG4gIEExMDA6ICcjODBkOGZmJyxcbiAgQTIwMDogJyM0MGM0ZmYnLFxuICBBNDAwOiAnIzAwYjBmZicsXG4gIEE3MDA6ICcjMDA5MWVhJ1xufTtcbmV4cG9ydCBkZWZhdWx0IGxpZ2h0Qmx1ZTsiLCJjb25zdCBncmVlbiA9IHtcbiAgNTA6ICcjZThmNWU5JyxcbiAgMTAwOiAnI2M4ZTZjOScsXG4gIDIwMDogJyNhNWQ2YTcnLFxuICAzMDA6ICcjODFjNzg0JyxcbiAgNDAwOiAnIzY2YmI2YScsXG4gIDUwMDogJyM0Y2FmNTAnLFxuICA2MDA6ICcjNDNhMDQ3JyxcbiAgNzAwOiAnIzM4OGUzYycsXG4gIDgwMDogJyMyZTdkMzInLFxuICA5MDA6ICcjMWI1ZTIwJyxcbiAgQTEwMDogJyNiOWY2Y2EnLFxuICBBMjAwOiAnIzY5ZjBhZScsXG4gIEE0MDA6ICcjMDBlNjc2JyxcbiAgQTcwMDogJyMwMGM4NTMnXG59O1xuZXhwb3J0IGRlZmF1bHQgZ3JlZW47IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCB7IGZvcm1hdE11aUVycm9yTWVzc2FnZSBhcyBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlIH0gZnJvbSBcIkBtdWkvdXRpbHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcIm1vZGVcIiwgXCJjb250cmFzdFRocmVzaG9sZFwiLCBcInRvbmFsT2Zmc2V0XCJdO1xuaW1wb3J0IHsgZGVlcG1lcmdlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyBkYXJrZW4sIGdldENvbnRyYXN0UmF0aW8sIGxpZ2h0ZW4gfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgY29tbW9uIGZyb20gJy4uL2NvbG9ycy9jb21tb24nO1xuaW1wb3J0IGdyZXkgZnJvbSAnLi4vY29sb3JzL2dyZXknO1xuaW1wb3J0IHB1cnBsZSBmcm9tICcuLi9jb2xvcnMvcHVycGxlJztcbmltcG9ydCByZWQgZnJvbSAnLi4vY29sb3JzL3JlZCc7XG5pbXBvcnQgb3JhbmdlIGZyb20gJy4uL2NvbG9ycy9vcmFuZ2UnO1xuaW1wb3J0IGJsdWUgZnJvbSAnLi4vY29sb3JzL2JsdWUnO1xuaW1wb3J0IGxpZ2h0Qmx1ZSBmcm9tICcuLi9jb2xvcnMvbGlnaHRCbHVlJztcbmltcG9ydCBncmVlbiBmcm9tICcuLi9jb2xvcnMvZ3JlZW4nO1xuZXhwb3J0IGNvbnN0IGxpZ2h0ID0ge1xuICAvLyBUaGUgY29sb3JzIHVzZWQgdG8gc3R5bGUgdGhlIHRleHQuXG4gIHRleHQ6IHtcbiAgICAvLyBUaGUgbW9zdCBpbXBvcnRhbnQgdGV4dC5cbiAgICBwcmltYXJ5OiAncmdiYSgwLCAwLCAwLCAwLjg3KScsXG4gICAgLy8gU2Vjb25kYXJ5IHRleHQuXG4gICAgc2Vjb25kYXJ5OiAncmdiYSgwLCAwLCAwLCAwLjYpJyxcbiAgICAvLyBEaXNhYmxlZCB0ZXh0IGhhdmUgZXZlbiBsb3dlciB2aXN1YWwgcHJvbWluZW5jZS5cbiAgICBkaXNhYmxlZDogJ3JnYmEoMCwgMCwgMCwgMC4zOCknXG4gIH0sXG4gIC8vIFRoZSBjb2xvciB1c2VkIHRvIGRpdmlkZSBkaWZmZXJlbnQgZWxlbWVudHMuXG4gIGRpdmlkZXI6ICdyZ2JhKDAsIDAsIDAsIDAuMTIpJyxcbiAgLy8gVGhlIGJhY2tncm91bmQgY29sb3JzIHVzZWQgdG8gc3R5bGUgdGhlIHN1cmZhY2VzLlxuICAvLyBDb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZXNlIHZhbHVlcyBpcyBpbXBvcnRhbnQuXG4gIGJhY2tncm91bmQ6IHtcbiAgICBwYXBlcjogY29tbW9uLndoaXRlLFxuICAgIGRlZmF1bHQ6IGNvbW1vbi53aGl0ZVxuICB9LFxuICAvLyBUaGUgY29sb3JzIHVzZWQgdG8gc3R5bGUgdGhlIGFjdGlvbiBlbGVtZW50cy5cbiAgYWN0aW9uOiB7XG4gICAgLy8gVGhlIGNvbG9yIG9mIGFuIGFjdGl2ZSBhY3Rpb24gbGlrZSBhbiBpY29uIGJ1dHRvbi5cbiAgICBhY3RpdmU6ICdyZ2JhKDAsIDAsIDAsIDAuNTQpJyxcbiAgICAvLyBUaGUgY29sb3Igb2YgYW4gaG92ZXJlZCBhY3Rpb24uXG4gICAgaG92ZXI6ICdyZ2JhKDAsIDAsIDAsIDAuMDQpJyxcbiAgICBob3Zlck9wYWNpdHk6IDAuMDQsXG4gICAgLy8gVGhlIGNvbG9yIG9mIGEgc2VsZWN0ZWQgYWN0aW9uLlxuICAgIHNlbGVjdGVkOiAncmdiYSgwLCAwLCAwLCAwLjA4KScsXG4gICAgc2VsZWN0ZWRPcGFjaXR5OiAwLjA4LFxuICAgIC8vIFRoZSBjb2xvciBvZiBhIGRpc2FibGVkIGFjdGlvbi5cbiAgICBkaXNhYmxlZDogJ3JnYmEoMCwgMCwgMCwgMC4yNiknLFxuICAgIC8vIFRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIGEgZGlzYWJsZWQgYWN0aW9uLlxuICAgIGRpc2FibGVkQmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgIGRpc2FibGVkT3BhY2l0eTogMC4zOCxcbiAgICBmb2N1czogJ3JnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgIGZvY3VzT3BhY2l0eTogMC4xMixcbiAgICBhY3RpdmF0ZWRPcGFjaXR5OiAwLjEyXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZGFyayA9IHtcbiAgdGV4dDoge1xuICAgIHByaW1hcnk6IGNvbW1vbi53aGl0ZSxcbiAgICBzZWNvbmRhcnk6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyknLFxuICAgIGRpc2FibGVkOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJyxcbiAgICBpY29uOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpJ1xuICB9LFxuICBkaXZpZGVyOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKScsXG4gIGJhY2tncm91bmQ6IHtcbiAgICBwYXBlcjogJyMxMjEyMTInLFxuICAgIGRlZmF1bHQ6ICcjMTIxMjEyJ1xuICB9LFxuICBhY3Rpb246IHtcbiAgICBhY3RpdmU6IGNvbW1vbi53aGl0ZSxcbiAgICBob3ZlcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCknLFxuICAgIGhvdmVyT3BhY2l0eTogMC4wOCxcbiAgICBzZWxlY3RlZDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNiknLFxuICAgIHNlbGVjdGVkT3BhY2l0eTogMC4xNixcbiAgICBkaXNhYmxlZDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKScsXG4gICAgZGlzYWJsZWRCYWNrZ3JvdW5kOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKScsXG4gICAgZGlzYWJsZWRPcGFjaXR5OiAwLjM4LFxuICAgIGZvY3VzOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKScsXG4gICAgZm9jdXNPcGFjaXR5OiAwLjEyLFxuICAgIGFjdGl2YXRlZE9wYWNpdHk6IDAuMjRcbiAgfVxufTtcbmZ1bmN0aW9uIGFkZExpZ2h0T3JEYXJrKGludGVudCwgZGlyZWN0aW9uLCBzaGFkZSwgdG9uYWxPZmZzZXQpIHtcbiAgY29uc3QgdG9uYWxPZmZzZXRMaWdodCA9IHRvbmFsT2Zmc2V0LmxpZ2h0IHx8IHRvbmFsT2Zmc2V0O1xuICBjb25zdCB0b25hbE9mZnNldERhcmsgPSB0b25hbE9mZnNldC5kYXJrIHx8IHRvbmFsT2Zmc2V0ICogMS41O1xuICBpZiAoIWludGVudFtkaXJlY3Rpb25dKSB7XG4gICAgaWYgKGludGVudC5oYXNPd25Qcm9wZXJ0eShzaGFkZSkpIHtcbiAgICAgIGludGVudFtkaXJlY3Rpb25dID0gaW50ZW50W3NoYWRlXTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2xpZ2h0Jykge1xuICAgICAgaW50ZW50LmxpZ2h0ID0gbGlnaHRlbihpbnRlbnQubWFpbiwgdG9uYWxPZmZzZXRMaWdodCk7XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdkYXJrJykge1xuICAgICAgaW50ZW50LmRhcmsgPSBkYXJrZW4oaW50ZW50Lm1haW4sIHRvbmFsT2Zmc2V0RGFyayk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0UHJpbWFyeShtb2RlID0gJ2xpZ2h0Jykge1xuICBpZiAobW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW46IGJsdWVbMjAwXSxcbiAgICAgIGxpZ2h0OiBibHVlWzUwXSxcbiAgICAgIGRhcms6IGJsdWVbNDAwXVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtYWluOiBibHVlWzcwMF0sXG4gICAgbGlnaHQ6IGJsdWVbNDAwXSxcbiAgICBkYXJrOiBibHVlWzgwMF1cbiAgfTtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRTZWNvbmRhcnkobW9kZSA9ICdsaWdodCcpIHtcbiAgaWYgKG1vZGUgPT09ICdkYXJrJykge1xuICAgIHJldHVybiB7XG4gICAgICBtYWluOiBwdXJwbGVbMjAwXSxcbiAgICAgIGxpZ2h0OiBwdXJwbGVbNTBdLFxuICAgICAgZGFyazogcHVycGxlWzQwMF1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogcHVycGxlWzUwMF0sXG4gICAgbGlnaHQ6IHB1cnBsZVszMDBdLFxuICAgIGRhcms6IHB1cnBsZVs3MDBdXG4gIH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0RXJyb3IobW9kZSA9ICdsaWdodCcpIHtcbiAgaWYgKG1vZGUgPT09ICdkYXJrJykge1xuICAgIHJldHVybiB7XG4gICAgICBtYWluOiByZWRbNTAwXSxcbiAgICAgIGxpZ2h0OiByZWRbMzAwXSxcbiAgICAgIGRhcms6IHJlZFs3MDBdXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1haW46IHJlZFs3MDBdLFxuICAgIGxpZ2h0OiByZWRbNDAwXSxcbiAgICBkYXJrOiByZWRbODAwXVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdEluZm8obW9kZSA9ICdsaWdodCcpIHtcbiAgaWYgKG1vZGUgPT09ICdkYXJrJykge1xuICAgIHJldHVybiB7XG4gICAgICBtYWluOiBsaWdodEJsdWVbNDAwXSxcbiAgICAgIGxpZ2h0OiBsaWdodEJsdWVbMzAwXSxcbiAgICAgIGRhcms6IGxpZ2h0Qmx1ZVs3MDBdXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1haW46IGxpZ2h0Qmx1ZVs3MDBdLFxuICAgIGxpZ2h0OiBsaWdodEJsdWVbNTAwXSxcbiAgICBkYXJrOiBsaWdodEJsdWVbOTAwXVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdFN1Y2Nlc3MobW9kZSA9ICdsaWdodCcpIHtcbiAgaWYgKG1vZGUgPT09ICdkYXJrJykge1xuICAgIHJldHVybiB7XG4gICAgICBtYWluOiBncmVlbls0MDBdLFxuICAgICAgbGlnaHQ6IGdyZWVuWzMwMF0sXG4gICAgICBkYXJrOiBncmVlbls3MDBdXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1haW46IGdyZWVuWzgwMF0sXG4gICAgbGlnaHQ6IGdyZWVuWzUwMF0sXG4gICAgZGFyazogZ3JlZW5bOTAwXVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdFdhcm5pbmcobW9kZSA9ICdsaWdodCcpIHtcbiAgaWYgKG1vZGUgPT09ICdkYXJrJykge1xuICAgIHJldHVybiB7XG4gICAgICBtYWluOiBvcmFuZ2VbNDAwXSxcbiAgICAgIGxpZ2h0OiBvcmFuZ2VbMzAwXSxcbiAgICAgIGRhcms6IG9yYW5nZVs3MDBdXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1haW46ICcjZWQ2YzAyJyxcbiAgICAvLyBjbG9zZXN0IHRvIG9yYW5nZVs4MDBdIHRoYXQgcGFzcyAzOjEuXG4gICAgbGlnaHQ6IG9yYW5nZVs1MDBdLFxuICAgIGRhcms6IG9yYW5nZVs5MDBdXG4gIH07XG59XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVQYWxldHRlKHBhbGV0dGUpIHtcbiAgY29uc3Qge1xuICAgICAgbW9kZSA9ICdsaWdodCcsXG4gICAgICBjb250cmFzdFRocmVzaG9sZCA9IDMsXG4gICAgICB0b25hbE9mZnNldCA9IDAuMlxuICAgIH0gPSBwYWxldHRlLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocGFsZXR0ZSwgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgcHJpbWFyeSA9IHBhbGV0dGUucHJpbWFyeSB8fCBnZXREZWZhdWx0UHJpbWFyeShtb2RlKTtcbiAgY29uc3Qgc2Vjb25kYXJ5ID0gcGFsZXR0ZS5zZWNvbmRhcnkgfHwgZ2V0RGVmYXVsdFNlY29uZGFyeShtb2RlKTtcbiAgY29uc3QgZXJyb3IgPSBwYWxldHRlLmVycm9yIHx8IGdldERlZmF1bHRFcnJvcihtb2RlKTtcbiAgY29uc3QgaW5mbyA9IHBhbGV0dGUuaW5mbyB8fCBnZXREZWZhdWx0SW5mbyhtb2RlKTtcbiAgY29uc3Qgc3VjY2VzcyA9IHBhbGV0dGUuc3VjY2VzcyB8fCBnZXREZWZhdWx0U3VjY2Vzcyhtb2RlKTtcbiAgY29uc3Qgd2FybmluZyA9IHBhbGV0dGUud2FybmluZyB8fCBnZXREZWZhdWx0V2FybmluZyhtb2RlKTtcblxuICAvLyBVc2UgdGhlIHNhbWUgbG9naWMgYXNcbiAgLy8gQm9vdHN0cmFwOiBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi8xZDZlMzcxMGRkNDQ3ZGUxYTIwMGYyOWU4ZmE1MjFmOGEwOTA4ZjcwL3Njc3MvX2Z1bmN0aW9ucy5zY3NzI0w1OVxuICAvLyBhbmQgbWF0ZXJpYWwtY29tcG9uZW50cy13ZWIgaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy13ZWIvYmxvYi9hYzQ2Yjg4NjNjNGRhYjlmYzIyYzRjNjYyZGM2YmQxYjY1ZGQ2NTJmL3BhY2thZ2VzL21kYy10aGVtZS9fZnVuY3Rpb25zLnNjc3MjTDU0XG4gIGZ1bmN0aW9uIGdldENvbnRyYXN0VGV4dChiYWNrZ3JvdW5kKSB7XG4gICAgY29uc3QgY29udHJhc3RUZXh0ID0gZ2V0Q29udHJhc3RSYXRpbyhiYWNrZ3JvdW5kLCBkYXJrLnRleHQucHJpbWFyeSkgPj0gY29udHJhc3RUaHJlc2hvbGQgPyBkYXJrLnRleHQucHJpbWFyeSA6IGxpZ2h0LnRleHQucHJpbWFyeTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc3QgY29udHJhc3QgPSBnZXRDb250cmFzdFJhdGlvKGJhY2tncm91bmQsIGNvbnRyYXN0VGV4dCk7XG4gICAgICBpZiAoY29udHJhc3QgPCAzKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSBjb250cmFzdCByYXRpbyBvZiAke2NvbnRyYXN0fToxIGZvciAke2NvbnRyYXN0VGV4dH0gb24gJHtiYWNrZ3JvdW5kfWAsICdmYWxscyBiZWxvdyB0aGUgV0NBRyByZWNvbW1lbmRlZCBhYnNvbHV0ZSBtaW5pbXVtIGNvbnRyYXN0IHJhdGlvIG9mIDM6MS4nLCAnaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDgvUkVDLVdDQUcyMC0yMDA4MTIxMS8jdmlzdWFsLWF1ZGlvLWNvbnRyYXN0LWNvbnRyYXN0J10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29udHJhc3RUZXh0O1xuICB9XG4gIGNvbnN0IGF1Z21lbnRDb2xvciA9ICh7XG4gICAgY29sb3IsXG4gICAgbmFtZSxcbiAgICBtYWluU2hhZGUgPSA1MDAsXG4gICAgbGlnaHRTaGFkZSA9IDMwMCxcbiAgICBkYXJrU2hhZGUgPSA3MDBcbiAgfSkgPT4ge1xuICAgIGNvbG9yID0gX2V4dGVuZHMoe30sIGNvbG9yKTtcbiAgICBpZiAoIWNvbG9yLm1haW4gJiYgY29sb3JbbWFpblNoYWRlXSkge1xuICAgICAgY29sb3IubWFpbiA9IGNvbG9yW21haW5TaGFkZV07XG4gICAgfVxuICAgIGlmICghY29sb3IuaGFzT3duUHJvcGVydHkoJ21haW4nKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGBNVUk6IFRoZSBjb2xvciR7bmFtZSA/IGAgKCR7bmFtZX0pYCA6ICcnfSBwcm92aWRlZCB0byBhdWdtZW50Q29sb3IoY29sb3IpIGlzIGludmFsaWQuXG5UaGUgY29sb3Igb2JqZWN0IG5lZWRzIHRvIGhhdmUgYSBcXGBtYWluXFxgIHByb3BlcnR5IG9yIGEgXFxgJHttYWluU2hhZGV9XFxgIHByb3BlcnR5LmAgOiBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlKDExLCBuYW1lID8gYCAoJHtuYW1lfSlgIDogJycsIG1haW5TaGFkZSkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGNvbG9yLm1haW4gIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gYE1VSTogVGhlIGNvbG9yJHtuYW1lID8gYCAoJHtuYW1lfSlgIDogJyd9IHByb3ZpZGVkIHRvIGF1Z21lbnRDb2xvcihjb2xvcikgaXMgaW52YWxpZC5cblxcYGNvbG9yLm1haW5cXGAgc2hvdWxkIGJlIGEgc3RyaW5nLCBidXQgXFxgJHtKU09OLnN0cmluZ2lmeShjb2xvci5tYWluKX1cXGAgd2FzIHByb3ZpZGVkIGluc3RlYWQuXG5cbkRpZCB5b3UgaW50ZW5kIHRvIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBhcHByb2FjaGVzP1xuXG5pbXBvcnQgeyBncmVlbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsL2NvbG9yc1wiO1xuXG5jb25zdCB0aGVtZTEgPSBjcmVhdGVUaGVtZSh7IHBhbGV0dGU6IHtcbiAgcHJpbWFyeTogZ3JlZW4sXG59IH0pO1xuXG5jb25zdCB0aGVtZTIgPSBjcmVhdGVUaGVtZSh7IHBhbGV0dGU6IHtcbiAgcHJpbWFyeTogeyBtYWluOiBncmVlbls1MDBdIH0sXG59IH0pO2AgOiBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlKDEyLCBuYW1lID8gYCAoJHtuYW1lfSlgIDogJycsIEpTT04uc3RyaW5naWZ5KGNvbG9yLm1haW4pKSk7XG4gICAgfVxuICAgIGFkZExpZ2h0T3JEYXJrKGNvbG9yLCAnbGlnaHQnLCBsaWdodFNoYWRlLCB0b25hbE9mZnNldCk7XG4gICAgYWRkTGlnaHRPckRhcmsoY29sb3IsICdkYXJrJywgZGFya1NoYWRlLCB0b25hbE9mZnNldCk7XG4gICAgaWYgKCFjb2xvci5jb250cmFzdFRleHQpIHtcbiAgICAgIGNvbG9yLmNvbnRyYXN0VGV4dCA9IGdldENvbnRyYXN0VGV4dChjb2xvci5tYWluKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9O1xuICBjb25zdCBtb2RlcyA9IHtcbiAgICBkYXJrLFxuICAgIGxpZ2h0XG4gIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKCFtb2Rlc1ttb2RlXSkge1xuICAgICAgY29uc29sZS5lcnJvcihgTVVJOiBUaGUgcGFsZXR0ZSBtb2RlIFxcYCR7bW9kZX1cXGAgaXMgbm90IHN1cHBvcnRlZC5gKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFsZXR0ZU91dHB1dCA9IGRlZXBtZXJnZShfZXh0ZW5kcyh7XG4gICAgLy8gQSBjb2xsZWN0aW9uIG9mIGNvbW1vbiBjb2xvcnMuXG4gICAgY29tbW9uOiBfZXh0ZW5kcyh7fSwgY29tbW9uKSxcbiAgICAvLyBwcmV2ZW50IG11dGFibGUgb2JqZWN0LlxuICAgIC8vIFRoZSBwYWxldHRlIG1vZGUsIGNhbiBiZSBsaWdodCBvciBkYXJrLlxuICAgIG1vZGUsXG4gICAgLy8gVGhlIGNvbG9ycyB1c2VkIHRvIHJlcHJlc2VudCBwcmltYXJ5IGludGVyZmFjZSBlbGVtZW50cyBmb3IgYSB1c2VyLlxuICAgIHByaW1hcnk6IGF1Z21lbnRDb2xvcih7XG4gICAgICBjb2xvcjogcHJpbWFyeSxcbiAgICAgIG5hbWU6ICdwcmltYXJ5J1xuICAgIH0pLFxuICAgIC8vIFRoZSBjb2xvcnMgdXNlZCB0byByZXByZXNlbnQgc2Vjb25kYXJ5IGludGVyZmFjZSBlbGVtZW50cyBmb3IgYSB1c2VyLlxuICAgIHNlY29uZGFyeTogYXVnbWVudENvbG9yKHtcbiAgICAgIGNvbG9yOiBzZWNvbmRhcnksXG4gICAgICBuYW1lOiAnc2Vjb25kYXJ5JyxcbiAgICAgIG1haW5TaGFkZTogJ0E0MDAnLFxuICAgICAgbGlnaHRTaGFkZTogJ0EyMDAnLFxuICAgICAgZGFya1NoYWRlOiAnQTcwMCdcbiAgICB9KSxcbiAgICAvLyBUaGUgY29sb3JzIHVzZWQgdG8gcmVwcmVzZW50IGludGVyZmFjZSBlbGVtZW50cyB0aGF0IHRoZSB1c2VyIHNob3VsZCBiZSBtYWRlIGF3YXJlIG9mLlxuICAgIGVycm9yOiBhdWdtZW50Q29sb3Ioe1xuICAgICAgY29sb3I6IGVycm9yLFxuICAgICAgbmFtZTogJ2Vycm9yJ1xuICAgIH0pLFxuICAgIC8vIFRoZSBjb2xvcnMgdXNlZCB0byByZXByZXNlbnQgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIGFjdGlvbnMgb3IgaW1wb3J0YW50IG1lc3NhZ2VzLlxuICAgIHdhcm5pbmc6IGF1Z21lbnRDb2xvcih7XG4gICAgICBjb2xvcjogd2FybmluZyxcbiAgICAgIG5hbWU6ICd3YXJuaW5nJ1xuICAgIH0pLFxuICAgIC8vIFRoZSBjb2xvcnMgdXNlZCB0byBwcmVzZW50IGluZm9ybWF0aW9uIHRvIHRoZSB1c2VyIHRoYXQgaXMgbmV1dHJhbCBhbmQgbm90IG5lY2Vzc2FyaWx5IGltcG9ydGFudC5cbiAgICBpbmZvOiBhdWdtZW50Q29sb3Ioe1xuICAgICAgY29sb3I6IGluZm8sXG4gICAgICBuYW1lOiAnaW5mbydcbiAgICB9KSxcbiAgICAvLyBUaGUgY29sb3JzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiBvZiBhbiBhY3Rpb24gdGhhdCB1c2VyIHRyaWdnZXJlZC5cbiAgICBzdWNjZXNzOiBhdWdtZW50Q29sb3Ioe1xuICAgICAgY29sb3I6IHN1Y2Nlc3MsXG4gICAgICBuYW1lOiAnc3VjY2VzcydcbiAgICB9KSxcbiAgICAvLyBUaGUgZ3JleSBjb2xvcnMuXG4gICAgZ3JleSxcbiAgICAvLyBVc2VkIGJ5IGBnZXRDb250cmFzdFRleHQoKWAgdG8gbWF4aW1pemUgdGhlIGNvbnRyYXN0IGJldHdlZW5cbiAgICAvLyB0aGUgYmFja2dyb3VuZCBhbmQgdGhlIHRleHQuXG4gICAgY29udHJhc3RUaHJlc2hvbGQsXG4gICAgLy8gVGFrZXMgYSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCByZXR1cm5zIHRoZSB0ZXh0IGNvbG9yIHRoYXQgbWF4aW1pemVzIHRoZSBjb250cmFzdC5cbiAgICBnZXRDb250cmFzdFRleHQsXG4gICAgLy8gR2VuZXJhdGUgYSByaWNoIGNvbG9yIG9iamVjdC5cbiAgICBhdWdtZW50Q29sb3IsXG4gICAgLy8gVXNlZCBieSB0aGUgZnVuY3Rpb25zIGJlbG93IHRvIHNoaWZ0IGEgY29sb3IncyBsdW1pbmFuY2UgYnkgYXBwcm94aW1hdGVseVxuICAgIC8vIHR3byBpbmRleGVzIHdpdGhpbiBpdHMgdG9uYWwgcGFsZXR0ZS5cbiAgICAvLyBFLmcuLCBzaGlmdCBmcm9tIFJlZCA1MDAgdG8gUmVkIDMwMCBvciBSZWQgNzAwLlxuICAgIHRvbmFsT2Zmc2V0XG4gIH0sIG1vZGVzW21vZGVdKSwgb3RoZXIpO1xuICByZXR1cm4gcGFsZXR0ZU91dHB1dDtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiZm9udEZhbWlseVwiLCBcImZvbnRTaXplXCIsIFwiZm9udFdlaWdodExpZ2h0XCIsIFwiZm9udFdlaWdodFJlZ3VsYXJcIiwgXCJmb250V2VpZ2h0TWVkaXVtXCIsIFwiZm9udFdlaWdodEJvbGRcIiwgXCJodG1sRm9udFNpemVcIiwgXCJhbGxWYXJpYW50c1wiLCBcInB4VG9SZW1cIl07XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmZ1bmN0aW9uIHJvdW5kKHZhbHVlKSB7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogMWU1KSAvIDFlNTtcbn1cbmNvbnN0IGNhc2VBbGxDYXBzID0ge1xuICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJ1xufTtcbmNvbnN0IGRlZmF1bHRGb250RmFtaWx5ID0gJ1wiUm9ib3RvXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZic7XG5cbi8qKlxuICogQHNlZSBAbGlua3todHRwczovL20yLm1hdGVyaWFsLmlvL2Rlc2lnbi90eXBvZ3JhcGh5L3RoZS10eXBlLXN5c3RlbS5odG1sfVxuICogQHNlZSBAbGlua3todHRwczovL20yLm1hdGVyaWFsLmlvL2Rlc2lnbi90eXBvZ3JhcGh5L3VuZGVyc3RhbmRpbmctdHlwb2dyYXBoeS5odG1sfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVUeXBvZ3JhcGh5KHBhbGV0dGUsIHR5cG9ncmFwaHkpIHtcbiAgY29uc3QgX3JlZiA9IHR5cGVvZiB0eXBvZ3JhcGh5ID09PSAnZnVuY3Rpb24nID8gdHlwb2dyYXBoeShwYWxldHRlKSA6IHR5cG9ncmFwaHksXG4gICAge1xuICAgICAgZm9udEZhbWlseSA9IGRlZmF1bHRGb250RmFtaWx5LFxuICAgICAgLy8gVGhlIGRlZmF1bHQgZm9udCBzaXplIG9mIHRoZSBNYXRlcmlhbCBTcGVjaWZpY2F0aW9uLlxuICAgICAgZm9udFNpemUgPSAxNCxcbiAgICAgIC8vIHB4XG4gICAgICBmb250V2VpZ2h0TGlnaHQgPSAzMDAsXG4gICAgICBmb250V2VpZ2h0UmVndWxhciA9IDQwMCxcbiAgICAgIGZvbnRXZWlnaHRNZWRpdW0gPSA1MDAsXG4gICAgICBmb250V2VpZ2h0Qm9sZCA9IDcwMCxcbiAgICAgIC8vIFRlbGwgTVVJIHdoYXQncyB0aGUgZm9udC1zaXplIG9uIHRoZSBodG1sIGVsZW1lbnQuXG4gICAgICAvLyAxNnB4IGlzIHRoZSBkZWZhdWx0IGZvbnQtc2l6ZSB1c2VkIGJ5IGJyb3dzZXJzLlxuICAgICAgaHRtbEZvbnRTaXplID0gMTYsXG4gICAgICAvLyBBcHBseSB0aGUgQ1NTIHByb3BlcnRpZXMgdG8gYWxsIHRoZSB2YXJpYW50cy5cbiAgICAgIGFsbFZhcmlhbnRzLFxuICAgICAgcHhUb1JlbTogcHhUb1JlbTJcbiAgICB9ID0gX3JlZixcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBmb250U2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01VSTogYGZvbnRTaXplYCBpcyByZXF1aXJlZCB0byBiZSBhIG51bWJlci4nKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBodG1sRm9udFNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdNVUk6IGBodG1sRm9udFNpemVgIGlzIHJlcXVpcmVkIHRvIGJlIGEgbnVtYmVyLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBjb2VmID0gZm9udFNpemUgLyAxNDtcbiAgY29uc3QgcHhUb1JlbSA9IHB4VG9SZW0yIHx8IChzaXplID0+IGAke3NpemUgLyBodG1sRm9udFNpemUgKiBjb2VmfXJlbWApO1xuICBjb25zdCBidWlsZFZhcmlhbnQgPSAoZm9udFdlaWdodCwgc2l6ZSwgbGluZUhlaWdodCwgbGV0dGVyU3BhY2luZywgY2FzaW5nKSA9PiBfZXh0ZW5kcyh7XG4gICAgZm9udEZhbWlseSxcbiAgICBmb250V2VpZ2h0LFxuICAgIGZvbnRTaXplOiBweFRvUmVtKHNpemUpLFxuICAgIC8vIFVuaXRsZXNzIGZvbGxvd2luZyBodHRwczovL21leWVyd2ViLmNvbS9lcmljL3Rob3VnaHRzLzIwMDYvMDIvMDgvdW5pdGxlc3MtbGluZS1oZWlnaHRzL1xuICAgIGxpbmVIZWlnaHRcbiAgfSwgZm9udEZhbWlseSA9PT0gZGVmYXVsdEZvbnRGYW1pbHkgPyB7XG4gICAgbGV0dGVyU3BhY2luZzogYCR7cm91bmQobGV0dGVyU3BhY2luZyAvIHNpemUpfWVtYFxuICB9IDoge30sIGNhc2luZywgYWxsVmFyaWFudHMpO1xuICBjb25zdCB2YXJpYW50cyA9IHtcbiAgICBoMTogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRMaWdodCwgOTYsIDEuMTY3LCAtMS41KSxcbiAgICBoMjogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRMaWdodCwgNjAsIDEuMiwgLTAuNSksXG4gICAgaDM6IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0UmVndWxhciwgNDgsIDEuMTY3LCAwKSxcbiAgICBoNDogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRSZWd1bGFyLCAzNCwgMS4yMzUsIDAuMjUpLFxuICAgIGg1OiBidWlsZFZhcmlhbnQoZm9udFdlaWdodFJlZ3VsYXIsIDI0LCAxLjMzNCwgMCksXG4gICAgaDY6IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0TWVkaXVtLCAyMCwgMS42LCAwLjE1KSxcbiAgICBzdWJ0aXRsZTE6IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0UmVndWxhciwgMTYsIDEuNzUsIDAuMTUpLFxuICAgIHN1YnRpdGxlMjogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRNZWRpdW0sIDE0LCAxLjU3LCAwLjEpLFxuICAgIGJvZHkxOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodFJlZ3VsYXIsIDE2LCAxLjUsIDAuMTUpLFxuICAgIGJvZHkyOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodFJlZ3VsYXIsIDE0LCAxLjQzLCAwLjE1KSxcbiAgICBidXR0b246IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0TWVkaXVtLCAxNCwgMS43NSwgMC40LCBjYXNlQWxsQ2FwcyksXG4gICAgY2FwdGlvbjogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRSZWd1bGFyLCAxMiwgMS42NiwgMC40KSxcbiAgICBvdmVybGluZTogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRSZWd1bGFyLCAxMiwgMi42NiwgMSwgY2FzZUFsbENhcHMpLFxuICAgIGluaGVyaXQ6IHtcbiAgICAgIGZvbnRGYW1pbHk6ICdpbmhlcml0JyxcbiAgICAgIGZvbnRXZWlnaHQ6ICdpbmhlcml0JyxcbiAgICAgIGZvbnRTaXplOiAnaW5oZXJpdCcsXG4gICAgICBsaW5lSGVpZ2h0OiAnaW5oZXJpdCcsXG4gICAgICBsZXR0ZXJTcGFjaW5nOiAnaW5oZXJpdCdcbiAgICB9XG4gIH07XG4gIHJldHVybiBkZWVwbWVyZ2UoX2V4dGVuZHMoe1xuICAgIGh0bWxGb250U2l6ZSxcbiAgICBweFRvUmVtLFxuICAgIGZvbnRGYW1pbHksXG4gICAgZm9udFNpemUsXG4gICAgZm9udFdlaWdodExpZ2h0LFxuICAgIGZvbnRXZWlnaHRSZWd1bGFyLFxuICAgIGZvbnRXZWlnaHRNZWRpdW0sXG4gICAgZm9udFdlaWdodEJvbGRcbiAgfSwgdmFyaWFudHMpLCBvdGhlciwge1xuICAgIGNsb25lOiBmYWxzZSAvLyBObyBuZWVkIHRvIGNsb25lIGRlZXBcbiAgfSk7XG59IiwiY29uc3Qgc2hhZG93S2V5VW1icmFPcGFjaXR5ID0gMC4yO1xuY29uc3Qgc2hhZG93S2V5UGVudW1icmFPcGFjaXR5ID0gMC4xNDtcbmNvbnN0IHNoYWRvd0FtYmllbnRTaGFkb3dPcGFjaXR5ID0gMC4xMjtcbmZ1bmN0aW9uIGNyZWF0ZVNoYWRvdyguLi5weCkge1xuICByZXR1cm4gW2Ake3B4WzBdfXB4ICR7cHhbMV19cHggJHtweFsyXX1weCAke3B4WzNdfXB4IHJnYmEoMCwwLDAsJHtzaGFkb3dLZXlVbWJyYU9wYWNpdHl9KWAsIGAke3B4WzRdfXB4ICR7cHhbNV19cHggJHtweFs2XX1weCAke3B4WzddfXB4IHJnYmEoMCwwLDAsJHtzaGFkb3dLZXlQZW51bWJyYU9wYWNpdHl9KWAsIGAke3B4WzhdfXB4ICR7cHhbOV19cHggJHtweFsxMF19cHggJHtweFsxMV19cHggcmdiYSgwLDAsMCwke3NoYWRvd0FtYmllbnRTaGFkb3dPcGFjaXR5fSlgXS5qb2luKCcsJyk7XG59XG5cbi8vIFZhbHVlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRlcmlhbC1jb21wb25lbnRzL21hdGVyaWFsLWNvbXBvbmVudHMtd2ViL2Jsb2IvYmU4NzQ3Zjk0NTc0NjY5Y2I1ZTdhZGQxYTdjNTRmYTQxYTg5Y2VjNy9wYWNrYWdlcy9tZGMtZWxldmF0aW9uL192YXJpYWJsZXMuc2Nzc1xuY29uc3Qgc2hhZG93cyA9IFsnbm9uZScsIGNyZWF0ZVNoYWRvdygwLCAyLCAxLCAtMSwgMCwgMSwgMSwgMCwgMCwgMSwgMywgMCksIGNyZWF0ZVNoYWRvdygwLCAzLCAxLCAtMiwgMCwgMiwgMiwgMCwgMCwgMSwgNSwgMCksIGNyZWF0ZVNoYWRvdygwLCAzLCAzLCAtMiwgMCwgMywgNCwgMCwgMCwgMSwgOCwgMCksIGNyZWF0ZVNoYWRvdygwLCAyLCA0LCAtMSwgMCwgNCwgNSwgMCwgMCwgMSwgMTAsIDApLCBjcmVhdGVTaGFkb3coMCwgMywgNSwgLTEsIDAsIDUsIDgsIDAsIDAsIDEsIDE0LCAwKSwgY3JlYXRlU2hhZG93KDAsIDMsIDUsIC0xLCAwLCA2LCAxMCwgMCwgMCwgMSwgMTgsIDApLCBjcmVhdGVTaGFkb3coMCwgNCwgNSwgLTIsIDAsIDcsIDEwLCAxLCAwLCAyLCAxNiwgMSksIGNyZWF0ZVNoYWRvdygwLCA1LCA1LCAtMywgMCwgOCwgMTAsIDEsIDAsIDMsIDE0LCAyKSwgY3JlYXRlU2hhZG93KDAsIDUsIDYsIC0zLCAwLCA5LCAxMiwgMSwgMCwgMywgMTYsIDIpLCBjcmVhdGVTaGFkb3coMCwgNiwgNiwgLTMsIDAsIDEwLCAxNCwgMSwgMCwgNCwgMTgsIDMpLCBjcmVhdGVTaGFkb3coMCwgNiwgNywgLTQsIDAsIDExLCAxNSwgMSwgMCwgNCwgMjAsIDMpLCBjcmVhdGVTaGFkb3coMCwgNywgOCwgLTQsIDAsIDEyLCAxNywgMiwgMCwgNSwgMjIsIDQpLCBjcmVhdGVTaGFkb3coMCwgNywgOCwgLTQsIDAsIDEzLCAxOSwgMiwgMCwgNSwgMjQsIDQpLCBjcmVhdGVTaGFkb3coMCwgNywgOSwgLTQsIDAsIDE0LCAyMSwgMiwgMCwgNSwgMjYsIDQpLCBjcmVhdGVTaGFkb3coMCwgOCwgOSwgLTUsIDAsIDE1LCAyMiwgMiwgMCwgNiwgMjgsIDUpLCBjcmVhdGVTaGFkb3coMCwgOCwgMTAsIC01LCAwLCAxNiwgMjQsIDIsIDAsIDYsIDMwLCA1KSwgY3JlYXRlU2hhZG93KDAsIDgsIDExLCAtNSwgMCwgMTcsIDI2LCAyLCAwLCA2LCAzMiwgNSksIGNyZWF0ZVNoYWRvdygwLCA5LCAxMSwgLTUsIDAsIDE4LCAyOCwgMiwgMCwgNywgMzQsIDYpLCBjcmVhdGVTaGFkb3coMCwgOSwgMTIsIC02LCAwLCAxOSwgMjksIDIsIDAsIDcsIDM2LCA2KSwgY3JlYXRlU2hhZG93KDAsIDEwLCAxMywgLTYsIDAsIDIwLCAzMSwgMywgMCwgOCwgMzgsIDcpLCBjcmVhdGVTaGFkb3coMCwgMTAsIDEzLCAtNiwgMCwgMjEsIDMzLCAzLCAwLCA4LCA0MCwgNyksIGNyZWF0ZVNoYWRvdygwLCAxMCwgMTQsIC02LCAwLCAyMiwgMzUsIDMsIDAsIDgsIDQyLCA3KSwgY3JlYXRlU2hhZG93KDAsIDExLCAxNCwgLTcsIDAsIDIzLCAzNiwgMywgMCwgOSwgNDQsIDgpLCBjcmVhdGVTaGFkb3coMCwgMTEsIDE1LCAtNywgMCwgMjQsIDM4LCAzLCAwLCA5LCA0NiwgOCldO1xuZXhwb3J0IGRlZmF1bHQgc2hhZG93czsiLCIvLyBXZSBuZWVkIHRvIGNlbnRyYWxpemUgdGhlIHpJbmRleCBkZWZpbml0aW9ucyBhcyB0aGV5IHdvcmtcbi8vIGxpa2UgZ2xvYmFsIHZhbHVlcyBpbiB0aGUgYnJvd3Nlci5cbmNvbnN0IHpJbmRleCA9IHtcbiAgbW9iaWxlU3RlcHBlcjogMTAwMCxcbiAgZmFiOiAxMDUwLFxuICBzcGVlZERpYWw6IDEwNTAsXG4gIGFwcEJhcjogMTEwMCxcbiAgZHJhd2VyOiAxMjAwLFxuICBtb2RhbDogMTMwMCxcbiAgc25hY2tiYXI6IDE0MDAsXG4gIHRvb2x0aXA6IDE1MDBcbn07XG5leHBvcnQgZGVmYXVsdCB6SW5kZXg7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCB7IGZvcm1hdE11aUVycm9yTWVzc2FnZSBhcyBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlIH0gZnJvbSBcIkBtdWkvdXRpbHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImJyZWFrcG9pbnRzXCIsIFwibWl4aW5zXCIsIFwic3BhY2luZ1wiLCBcInBhbGV0dGVcIiwgXCJ0cmFuc2l0aW9uc1wiLCBcInR5cG9ncmFwaHlcIiwgXCJzaGFwZVwiXTtcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgYXMgc3lzdGVtQ3JlYXRlVGhlbWUsIHVuc3RhYmxlX2RlZmF1bHRTeENvbmZpZyBhcyBkZWZhdWx0U3hDb25maWcsIHVuc3RhYmxlX3N0eWxlRnVuY3Rpb25TeCBhcyBzdHlsZUZ1bmN0aW9uU3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuaW1wb3J0IGNyZWF0ZU1peGlucyBmcm9tICcuL2NyZWF0ZU1peGlucyc7XG5pbXBvcnQgY3JlYXRlUGFsZXR0ZSBmcm9tICcuL2NyZWF0ZVBhbGV0dGUnO1xuaW1wb3J0IGNyZWF0ZVR5cG9ncmFwaHkgZnJvbSAnLi9jcmVhdGVUeXBvZ3JhcGh5JztcbmltcG9ydCBzaGFkb3dzIGZyb20gJy4vc2hhZG93cyc7XG5pbXBvcnQgY3JlYXRlVHJhbnNpdGlvbnMgZnJvbSAnLi9jcmVhdGVUcmFuc2l0aW9ucyc7XG5pbXBvcnQgekluZGV4IGZyb20gJy4vekluZGV4JztcbmZ1bmN0aW9uIGNyZWF0ZVRoZW1lKG9wdGlvbnMgPSB7fSwgLi4uYXJncykge1xuICBjb25zdCB7XG4gICAgICBtaXhpbnM6IG1peGluc0lucHV0ID0ge30sXG4gICAgICBwYWxldHRlOiBwYWxldHRlSW5wdXQgPSB7fSxcbiAgICAgIHRyYW5zaXRpb25zOiB0cmFuc2l0aW9uc0lucHV0ID0ge30sXG4gICAgICB0eXBvZ3JhcGh5OiB0eXBvZ3JhcGh5SW5wdXQgPSB7fVxuICAgIH0gPSBvcHRpb25zLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uob3B0aW9ucywgX2V4Y2x1ZGVkKTtcbiAgaWYgKG9wdGlvbnMudmFycykge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBgTVVJOiBcXGB2YXJzXFxgIGlzIGEgcHJpdmF0ZSBmaWVsZCB1c2VkIGZvciBDU1MgdmFyaWFibGVzIHN1cHBvcnQuXG5QbGVhc2UgdXNlIGFub3RoZXIgbmFtZS5gIDogX2Zvcm1hdE11aUVycm9yTWVzc2FnZSgxOCkpO1xuICB9XG4gIGNvbnN0IHBhbGV0dGUgPSBjcmVhdGVQYWxldHRlKHBhbGV0dGVJbnB1dCk7XG4gIGNvbnN0IHN5c3RlbVRoZW1lID0gc3lzdGVtQ3JlYXRlVGhlbWUob3B0aW9ucyk7XG4gIGxldCBtdWlUaGVtZSA9IGRlZXBtZXJnZShzeXN0ZW1UaGVtZSwge1xuICAgIG1peGluczogY3JlYXRlTWl4aW5zKHN5c3RlbVRoZW1lLmJyZWFrcG9pbnRzLCBtaXhpbnNJbnB1dCksXG4gICAgcGFsZXR0ZSxcbiAgICAvLyBEb24ndCB1c2UgWy4uLnNoYWRvd3NdIHVudGlsIHlvdSd2ZSB2ZXJpZmllZCBpdHMgdHJhbnNwaWxlZCBjb2RlIGlzIG5vdCBpbnZva2luZyB0aGUgaXRlcmF0b3IgcHJvdG9jb2wuXG4gICAgc2hhZG93czogc2hhZG93cy5zbGljZSgpLFxuICAgIHR5cG9ncmFwaHk6IGNyZWF0ZVR5cG9ncmFwaHkocGFsZXR0ZSwgdHlwb2dyYXBoeUlucHV0KSxcbiAgICB0cmFuc2l0aW9uczogY3JlYXRlVHJhbnNpdGlvbnModHJhbnNpdGlvbnNJbnB1dCksXG4gICAgekluZGV4OiBfZXh0ZW5kcyh7fSwgekluZGV4KVxuICB9KTtcbiAgbXVpVGhlbWUgPSBkZWVwbWVyZ2UobXVpVGhlbWUsIG90aGVyKTtcbiAgbXVpVGhlbWUgPSBhcmdzLnJlZHVjZSgoYWNjLCBhcmd1bWVudCkgPT4gZGVlcG1lcmdlKGFjYywgYXJndW1lbnQpLCBtdWlUaGVtZSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVE9ETyB2NjogUmVmYWN0b3IgdG8gdXNlIGdsb2JhbFN0YXRlQ2xhc3Nlc01hcHBpbmcgZnJvbSBAbXVpL3V0aWxzIG9uY2UgYHJlYWRPbmx5YCBzdGF0ZSBjbGFzcyBpcyB1c2VkIGluIFJhdGluZyBjb21wb25lbnQuXG4gICAgY29uc3Qgc3RhdGVDbGFzc2VzID0gWydhY3RpdmUnLCAnY2hlY2tlZCcsICdjb21wbGV0ZWQnLCAnZGlzYWJsZWQnLCAnZXJyb3InLCAnZXhwYW5kZWQnLCAnZm9jdXNlZCcsICdmb2N1c1Zpc2libGUnLCAncmVxdWlyZWQnLCAnc2VsZWN0ZWQnXTtcbiAgICBjb25zdCB0cmF2ZXJzZSA9IChub2RlLCBjb21wb25lbnQpID0+IHtcbiAgICAgIGxldCBrZXk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBndWFyZC1mb3ItaW4sIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICBmb3IgKGtleSBpbiBub2RlKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZVtrZXldO1xuICAgICAgICBpZiAoc3RhdGVDbGFzc2VzLmluZGV4T2Yoa2V5KSAhPT0gLTEgJiYgT2JqZWN0LmtleXMoY2hpbGQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGVDbGFzcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzKCcnLCBrZXkpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogVGhlIFxcYCR7Y29tcG9uZW50fVxcYCBjb21wb25lbnQgaW5jcmVhc2VzIGAgKyBgdGhlIENTUyBzcGVjaWZpY2l0eSBvZiB0aGUgXFxgJHtrZXl9XFxgIGludGVybmFsIHN0YXRlLmAsICdZb3UgY2FuIG5vdCBvdmVycmlkZSBpdCBsaWtlIHRoaXM6ICcsIEpTT04uc3RyaW5naWZ5KG5vZGUsIG51bGwsIDIpLCAnJywgYEluc3RlYWQsIHlvdSBuZWVkIHRvIHVzZSB0aGUgJyYuJHtzdGF0ZUNsYXNzfScgc3ludGF4OmAsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgcm9vdDoge1xuICAgICAgICAgICAgICAgIFtgJi4ke3N0YXRlQ2xhc3N9YF06IGNoaWxkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG51bGwsIDIpLCAnJywgJ2h0dHBzOi8vbXVpLmNvbS9yL3N0YXRlLWNsYXNzZXMtZ3VpZGUnXS5qb2luKCdcXG4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgc3R5bGUgdG8gcHJldmVudCBnbG9iYWwgY29uZmxpY3RzLlxuICAgICAgICAgIG5vZGVba2V5XSA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBPYmplY3Qua2V5cyhtdWlUaGVtZS5jb21wb25lbnRzKS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7XG4gICAgICBjb25zdCBzdHlsZU92ZXJyaWRlcyA9IG11aVRoZW1lLmNvbXBvbmVudHNbY29tcG9uZW50XS5zdHlsZU92ZXJyaWRlcztcbiAgICAgIGlmIChzdHlsZU92ZXJyaWRlcyAmJiBjb21wb25lbnQuaW5kZXhPZignTXVpJykgPT09IDApIHtcbiAgICAgICAgdHJhdmVyc2Uoc3R5bGVPdmVycmlkZXMsIGNvbXBvbmVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgbXVpVGhlbWUudW5zdGFibGVfc3hDb25maWcgPSBfZXh0ZW5kcyh7fSwgZGVmYXVsdFN4Q29uZmlnLCBvdGhlciA9PSBudWxsID8gdm9pZCAwIDogb3RoZXIudW5zdGFibGVfc3hDb25maWcpO1xuICBtdWlUaGVtZS51bnN0YWJsZV9zeCA9IGZ1bmN0aW9uIHN4KHByb3BzKSB7XG4gICAgcmV0dXJuIHN0eWxlRnVuY3Rpb25TeCh7XG4gICAgICBzeDogcHJvcHMsXG4gICAgICB0aGVtZTogdGhpc1xuICAgIH0pO1xuICB9O1xuICByZXR1cm4gbXVpVGhlbWU7XG59XG5sZXQgd2FybmVkT25jZSA9IGZhbHNlO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU11aVRoZW1lKC4uLmFyZ3MpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoIXdhcm5lZE9uY2UpIHtcbiAgICAgIHdhcm5lZE9uY2UgPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogdGhlIGNyZWF0ZU11aVRoZW1lIGZ1bmN0aW9uIHdhcyByZW5hbWVkIHRvIGNyZWF0ZVRoZW1lLicsICcnLCBcIllvdSBzaG91bGQgdXNlIGBpbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvc3R5bGVzJ2BcIl0uam9pbignXFxuJykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY3JlYXRlVGhlbWUoLi4uYXJncyk7XG59XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVUaGVtZTsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1peGlucyhicmVha3BvaW50cywgbWl4aW5zKSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7XG4gICAgdG9vbGJhcjoge1xuICAgICAgbWluSGVpZ2h0OiA1NixcbiAgICAgIFticmVha3BvaW50cy51cCgneHMnKV06IHtcbiAgICAgICAgJ0BtZWRpYSAob3JpZW50YXRpb246IGxhbmRzY2FwZSknOiB7XG4gICAgICAgICAgbWluSGVpZ2h0OiA0OFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW2JyZWFrcG9pbnRzLnVwKCdzbScpXToge1xuICAgICAgICBtaW5IZWlnaHQ6IDY0XG4gICAgICB9XG4gICAgfVxuICB9LCBtaXhpbnMpO1xufSIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJkdXJhdGlvblwiLCBcImVhc2luZ1wiLCBcImRlbGF5XCJdO1xuLy8gRm9sbG93IGh0dHBzOi8vbWF0ZXJpYWwuZ29vZ2xlLmNvbS9tb3Rpb24vZHVyYXRpb24tZWFzaW5nLmh0bWwjZHVyYXRpb24tZWFzaW5nLW5hdHVyYWwtZWFzaW5nLWN1cnZlc1xuLy8gdG8gbGVhcm4gdGhlIGNvbnRleHQgaW4gd2hpY2ggZWFjaCBlYXNpbmcgc2hvdWxkIGJlIHVzZWQuXG5leHBvcnQgY29uc3QgZWFzaW5nID0ge1xuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBlYXNpbmcgY3VydmUuXG4gIGVhc2VJbk91dDogJ2N1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknLFxuICAvLyBPYmplY3RzIGVudGVyIHRoZSBzY3JlZW4gYXQgZnVsbCB2ZWxvY2l0eSBmcm9tIG9mZi1zY3JlZW4gYW5kXG4gIC8vIHNsb3dseSBkZWNlbGVyYXRlIHRvIGEgcmVzdGluZyBwb2ludC5cbiAgZWFzZU91dDogJ2N1YmljLWJlemllcigwLjAsIDAsIDAuMiwgMSknLFxuICAvLyBPYmplY3RzIGxlYXZlIHRoZSBzY3JlZW4gYXQgZnVsbCB2ZWxvY2l0eS4gVGhleSBkbyBub3QgZGVjZWxlcmF0ZSB3aGVuIG9mZi1zY3JlZW4uXG4gIGVhc2VJbjogJ2N1YmljLWJlemllcigwLjQsIDAsIDEsIDEpJyxcbiAgLy8gVGhlIHNoYXJwIGN1cnZlIGlzIHVzZWQgYnkgb2JqZWN0cyB0aGF0IG1heSByZXR1cm4gdG8gdGhlIHNjcmVlbiBhdCBhbnkgdGltZS5cbiAgc2hhcnA6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpJ1xufTtcblxuLy8gRm9sbG93IGh0dHBzOi8vbTIubWF0ZXJpYWwuaW8vZ3VpZGVsaW5lcy9tb3Rpb24vZHVyYXRpb24tZWFzaW5nLmh0bWwjZHVyYXRpb24tZWFzaW5nLWNvbW1vbi1kdXJhdGlvbnNcbi8vIHRvIGxlYXJuIHdoZW4gdXNlIHdoYXQgdGltaW5nXG5leHBvcnQgY29uc3QgZHVyYXRpb24gPSB7XG4gIHNob3J0ZXN0OiAxNTAsXG4gIHNob3J0ZXI6IDIwMCxcbiAgc2hvcnQ6IDI1MCxcbiAgLy8gbW9zdCBiYXNpYyByZWNvbW1lbmRlZCB0aW1pbmdcbiAgc3RhbmRhcmQ6IDMwMCxcbiAgLy8gdGhpcyBpcyB0byBiZSB1c2VkIGluIGNvbXBsZXggYW5pbWF0aW9uc1xuICBjb21wbGV4OiAzNzUsXG4gIC8vIHJlY29tbWVuZGVkIHdoZW4gc29tZXRoaW5nIGlzIGVudGVyaW5nIHNjcmVlblxuICBlbnRlcmluZ1NjcmVlbjogMjI1LFxuICAvLyByZWNvbW1lbmRlZCB3aGVuIHNvbWV0aGluZyBpcyBsZWF2aW5nIHNjcmVlblxuICBsZWF2aW5nU2NyZWVuOiAxOTVcbn07XG5mdW5jdGlvbiBmb3JtYXRNcyhtaWxsaXNlY29uZHMpIHtcbiAgcmV0dXJuIGAke01hdGgucm91bmQobWlsbGlzZWNvbmRzKX1tc2A7XG59XG5mdW5jdGlvbiBnZXRBdXRvSGVpZ2h0RHVyYXRpb24oaGVpZ2h0KSB7XG4gIGlmICghaGVpZ2h0KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY29uc3QgY29uc3RhbnQgPSBoZWlnaHQgLyAzNjtcblxuICAvLyBodHRwczovL3d3dy53b2xmcmFtYWxwaGEuY29tL2lucHV0Lz9pPSg0KyUyQisxNSsqKyh4KyUyRiszNispKyoqKzAuMjUrJTJCKyh4KyUyRiszNikrJTJGKzUpKyorMTBcbiAgcmV0dXJuIE1hdGgucm91bmQoKDQgKyAxNSAqIGNvbnN0YW50ICoqIDAuMjUgKyBjb25zdGFudCAvIDUpICogMTApO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVHJhbnNpdGlvbnMoaW5wdXRUcmFuc2l0aW9ucykge1xuICBjb25zdCBtZXJnZWRFYXNpbmcgPSBfZXh0ZW5kcyh7fSwgZWFzaW5nLCBpbnB1dFRyYW5zaXRpb25zLmVhc2luZyk7XG4gIGNvbnN0IG1lcmdlZER1cmF0aW9uID0gX2V4dGVuZHMoe30sIGR1cmF0aW9uLCBpbnB1dFRyYW5zaXRpb25zLmR1cmF0aW9uKTtcbiAgY29uc3QgY3JlYXRlID0gKHByb3BzID0gWydhbGwnXSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25PcHRpb24gPSBtZXJnZWREdXJhdGlvbi5zdGFuZGFyZCxcbiAgICAgICAgZWFzaW5nOiBlYXNpbmdPcHRpb24gPSBtZXJnZWRFYXNpbmcuZWFzZUluT3V0LFxuICAgICAgICBkZWxheSA9IDBcbiAgICAgIH0gPSBvcHRpb25zLFxuICAgICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShvcHRpb25zLCBfZXhjbHVkZWQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zdCBpc1N0cmluZyA9IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgICAvLyBJRTExIHN1cHBvcnQsIHJlcGxhY2Ugd2l0aCBOdW1iZXIuaXNOYU5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgIGNvbnN0IGlzTnVtYmVyID0gdmFsdWUgPT4gIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICAgIGlmICghaXNTdHJpbmcocHJvcHMpICYmICFBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdNVUk6IEFyZ3VtZW50IFwicHJvcHNcIiBtdXN0IGJlIGEgc3RyaW5nIG9yIEFycmF5LicpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc051bWJlcihkdXJhdGlvbk9wdGlvbikgJiYgIWlzU3RyaW5nKGR1cmF0aW9uT3B0aW9uKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNVUk6IEFyZ3VtZW50IFwiZHVyYXRpb25cIiBtdXN0IGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nIGJ1dCBmb3VuZCAke2R1cmF0aW9uT3B0aW9ufS5gKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNTdHJpbmcoZWFzaW5nT3B0aW9uKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdNVUk6IEFyZ3VtZW50IFwiZWFzaW5nXCIgbXVzdCBiZSBhIHN0cmluZy4nKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNOdW1iZXIoZGVsYXkpICYmICFpc1N0cmluZyhkZWxheSkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTVVJOiBBcmd1bWVudCBcImRlbGF5XCIgbXVzdCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogU2Vjb25nIGFyZ3VtZW50IG9mIHRyYW5zaXRpb24uY3JlYXRlIG11c3QgYmUgYW4gb2JqZWN0LicsIFwiQXJndW1lbnRzIHNob3VsZCBiZSBlaXRoZXIgYGNyZWF0ZSgncHJvcDEnLCBvcHRpb25zKWAgb3IgYGNyZWF0ZShbJ3Byb3AxJywgJ3Byb3AyJ10sIG9wdGlvbnMpYFwiXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LmtleXMob3RoZXIpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNVUk6IFVucmVjb2duaXplZCBhcmd1bWVudChzKSBbJHtPYmplY3Qua2V5cyhvdGhlcikuam9pbignLCcpfV0uYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoQXJyYXkuaXNBcnJheShwcm9wcykgPyBwcm9wcyA6IFtwcm9wc10pLm1hcChhbmltYXRlZFByb3AgPT4gYCR7YW5pbWF0ZWRQcm9wfSAke3R5cGVvZiBkdXJhdGlvbk9wdGlvbiA9PT0gJ3N0cmluZycgPyBkdXJhdGlvbk9wdGlvbiA6IGZvcm1hdE1zKGR1cmF0aW9uT3B0aW9uKX0gJHtlYXNpbmdPcHRpb259ICR7dHlwZW9mIGRlbGF5ID09PSAnc3RyaW5nJyA/IGRlbGF5IDogZm9ybWF0TXMoZGVsYXkpfWApLmpvaW4oJywnKTtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICBnZXRBdXRvSGVpZ2h0RHVyYXRpb24sXG4gICAgY3JlYXRlXG4gIH0sIGlucHV0VHJhbnNpdGlvbnMsIHtcbiAgICBlYXNpbmc6IG1lcmdlZEVhc2luZyxcbiAgICBkdXJhdGlvbjogbWVyZ2VkRHVyYXRpb25cbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgJyQkbWF0ZXJpYWwnOyIsImltcG9ydCB7IGZvcm1hdE11aUVycm9yTWVzc2FnZSBhcyBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlIH0gZnJvbSBcIkBtdWkvdXRpbHNcIjtcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuLyoqXG4gKiBSZXR1cm5zIGEgbnVtYmVyIHdob3NlIHZhbHVlIGlzIGxpbWl0ZWQgdG8gdGhlIGdpdmVuIHJhbmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBjbGFtcGVkXG4gKiBAcGFyYW0ge251bWJlcn0gbWluIFRoZSBsb3dlciBib3VuZGFyeSBvZiB0aGUgb3V0cHV0IHJhbmdlXG4gKiBAcGFyYW0ge251bWJlcn0gbWF4IFRoZSB1cHBlciBib3VuZGFyeSBvZiB0aGUgb3V0cHV0IHJhbmdlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBBIG51bWJlciBpbiB0aGUgcmFuZ2UgW21pbiwgbWF4XVxuICovXG5mdW5jdGlvbiBjbGFtcCh2YWx1ZSwgbWluID0gMCwgbWF4ID0gMSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICh2YWx1ZSA8IG1pbiB8fCB2YWx1ZSA+IG1heCkge1xuICAgICAgY29uc29sZS5lcnJvcihgTVVJOiBUaGUgdmFsdWUgcHJvdmlkZWQgJHt2YWx1ZX0gaXMgb3V0IG9mIHJhbmdlIFske21pbn0sICR7bWF4fV0uYCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChtaW4sIHZhbHVlKSwgbWF4KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNvbG9yIGZyb20gQ1NTIGhleCBmb3JtYXQgdG8gQ1NTIHJnYiBmb3JtYXQuXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBIZXggY29sb3IsIGkuZS4gI25ubiBvciAjbm5ubm5uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIENTUyByZ2IgY29sb3Igc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb1JnYihjb2xvcikge1xuICBjb2xvciA9IGNvbG9yLnNsaWNlKDEpO1xuICBjb25zdCByZSA9IG5ldyBSZWdFeHAoYC57MSwke2NvbG9yLmxlbmd0aCA+PSA2ID8gMiA6IDF9fWAsICdnJyk7XG4gIGxldCBjb2xvcnMgPSBjb2xvci5tYXRjaChyZSk7XG4gIGlmIChjb2xvcnMgJiYgY29sb3JzWzBdLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbG9ycyA9IGNvbG9ycy5tYXAobiA9PiBuICsgbik7XG4gIH1cbiAgcmV0dXJuIGNvbG9ycyA/IGByZ2Ike2NvbG9ycy5sZW5ndGggPT09IDQgPyAnYScgOiAnJ30oJHtjb2xvcnMubWFwKChuLCBpbmRleCkgPT4ge1xuICAgIHJldHVybiBpbmRleCA8IDMgPyBwYXJzZUludChuLCAxNikgOiBNYXRoLnJvdW5kKHBhcnNlSW50KG4sIDE2KSAvIDI1NSAqIDEwMDApIC8gMTAwMDtcbiAgfSkuam9pbignLCAnKX0pYCA6ICcnO1xufVxuZnVuY3Rpb24gaW50VG9IZXgoaW50KSB7XG4gIGNvbnN0IGhleCA9IGludC50b1N0cmluZygxNik7XG4gIHJldHVybiBoZXgubGVuZ3RoID09PSAxID8gYDAke2hleH1gIDogaGV4O1xufVxuXG4vKipcbiAqIFJldHVybnMgYW4gb2JqZWN0IHdpdGggdGhlIHR5cGUgYW5kIHZhbHVlcyBvZiBhIGNvbG9yLlxuICpcbiAqIE5vdGU6IERvZXMgbm90IHN1cHBvcnQgcmdiICUgdmFsdWVzLlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gQ1NTIGNvbG9yLCBpLmUuIG9uZSBvZjogI25ubiwgI25ubm5ubiwgcmdiKCksIHJnYmEoKSwgaHNsKCksIGhzbGEoKSwgY29sb3IoKVxuICogQHJldHVybnMge29iamVjdH0gLSBBIE1VSSBjb2xvciBvYmplY3Q6IHt0eXBlOiBzdHJpbmcsIHZhbHVlczogbnVtYmVyW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvbXBvc2VDb2xvcihjb2xvcikge1xuICAvLyBJZGVtcG90ZW50XG4gIGlmIChjb2xvci50eXBlKSB7XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG4gIGlmIChjb2xvci5jaGFyQXQoMCkgPT09ICcjJykge1xuICAgIHJldHVybiBkZWNvbXBvc2VDb2xvcihoZXhUb1JnYihjb2xvcikpO1xuICB9XG4gIGNvbnN0IG1hcmtlciA9IGNvbG9yLmluZGV4T2YoJygnKTtcbiAgY29uc3QgdHlwZSA9IGNvbG9yLnN1YnN0cmluZygwLCBtYXJrZXIpO1xuICBpZiAoWydyZ2InLCAncmdiYScsICdoc2wnLCAnaHNsYScsICdjb2xvciddLmluZGV4T2YodHlwZSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGBNVUk6IFVuc3VwcG9ydGVkIFxcYCR7Y29sb3J9XFxgIGNvbG9yLlxuVGhlIGZvbGxvd2luZyBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQ6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKCkuYCA6IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UoOSwgY29sb3IpKTtcbiAgfVxuICBsZXQgdmFsdWVzID0gY29sb3Iuc3Vic3RyaW5nKG1hcmtlciArIDEsIGNvbG9yLmxlbmd0aCAtIDEpO1xuICBsZXQgY29sb3JTcGFjZTtcbiAgaWYgKHR5cGUgPT09ICdjb2xvcicpIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMuc3BsaXQoJyAnKTtcbiAgICBjb2xvclNwYWNlID0gdmFsdWVzLnNoaWZ0KCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDQgJiYgdmFsdWVzWzNdLmNoYXJBdCgwKSA9PT0gJy8nKSB7XG4gICAgICB2YWx1ZXNbM10gPSB2YWx1ZXNbM10uc2xpY2UoMSk7XG4gICAgfVxuICAgIGlmIChbJ3NyZ2InLCAnZGlzcGxheS1wMycsICdhOTgtcmdiJywgJ3Byb3Bob3RvLXJnYicsICdyZWMtMjAyMCddLmluZGV4T2YoY29sb3JTcGFjZSkgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gYE1VSTogdW5zdXBwb3J0ZWQgXFxgJHtjb2xvclNwYWNlfVxcYCBjb2xvciBzcGFjZS5cblRoZSBmb2xsb3dpbmcgY29sb3Igc3BhY2VzIGFyZSBzdXBwb3J0ZWQ6IHNyZ2IsIGRpc3BsYXktcDMsIGE5OC1yZ2IsIHByb3Bob3RvLXJnYiwgcmVjLTIwMjAuYCA6IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UoMTAsIGNvbG9yU3BhY2UpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLnNwbGl0KCcsJyk7XG4gIH1cbiAgdmFsdWVzID0gdmFsdWVzLm1hcCh2YWx1ZSA9PiBwYXJzZUZsb2F0KHZhbHVlKSk7XG4gIHJldHVybiB7XG4gICAgdHlwZSxcbiAgICB2YWx1ZXMsXG4gICAgY29sb3JTcGFjZVxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBjaGFubmVsIGNyZWF0ZWQgZnJvbSB0aGUgaW5wdXQgY29sb3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gQ1NTIGNvbG9yLCBpLmUuIG9uZSBvZjogI25ubiwgI25ubm5ubiwgcmdiKCksIHJnYmEoKSwgaHNsKCksIGhzbGEoKSwgY29sb3IoKVxuICogQHJldHVybnMge3N0cmluZ30gLSBUaGUgY2hhbm5lbCBmb3IgdGhlIGNvbG9yLCB0aGF0IGNhbiBiZSB1c2VkIGluIHJnYmEgb3IgaHNsYSBjb2xvcnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbG9yQ2hhbm5lbCA9IGNvbG9yID0+IHtcbiAgY29uc3QgZGVjb21wb3NlZENvbG9yID0gZGVjb21wb3NlQ29sb3IoY29sb3IpO1xuICByZXR1cm4gZGVjb21wb3NlZENvbG9yLnZhbHVlcy5zbGljZSgwLCAzKS5tYXAoKHZhbCwgaWR4KSA9PiBkZWNvbXBvc2VkQ29sb3IudHlwZS5pbmRleE9mKCdoc2wnKSAhPT0gLTEgJiYgaWR4ICE9PSAwID8gYCR7dmFsfSVgIDogdmFsKS5qb2luKCcgJyk7XG59O1xuZXhwb3J0IGNvbnN0IHByaXZhdGVfc2FmZUNvbG9yQ2hhbm5lbCA9IChjb2xvciwgd2FybmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBjb2xvckNoYW5uZWwoY29sb3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICh3YXJuaW5nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgY29sb3Igb2JqZWN0IHdpdGggdHlwZSBhbmQgdmFsdWVzIHRvIGEgc3RyaW5nLlxuICogQHBhcmFtIHtvYmplY3R9IGNvbG9yIC0gRGVjb21wb3NlZCBjb2xvclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yLnR5cGUgLSBPbmUgb2Y6ICdyZ2InLCAncmdiYScsICdoc2wnLCAnaHNsYScsICdjb2xvcidcbiAqIEBwYXJhbSB7YXJyYXl9IGNvbG9yLnZhbHVlcyAtIFtuLG4sbl0gb3IgW24sbixuLG5dXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIENTUyBjb2xvciBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlY29tcG9zZUNvbG9yKGNvbG9yKSB7XG4gIGNvbnN0IHtcbiAgICB0eXBlLFxuICAgIGNvbG9yU3BhY2VcbiAgfSA9IGNvbG9yO1xuICBsZXQge1xuICAgIHZhbHVlc1xuICB9ID0gY29sb3I7XG4gIGlmICh0eXBlLmluZGV4T2YoJ3JnYicpICE9PSAtMSkge1xuICAgIC8vIE9ubHkgY29udmVydCB0aGUgZmlyc3QgMyB2YWx1ZXMgdG8gaW50IChpLmUuIG5vdCBhbHBoYSlcbiAgICB2YWx1ZXMgPSB2YWx1ZXMubWFwKChuLCBpKSA9PiBpIDwgMyA/IHBhcnNlSW50KG4sIDEwKSA6IG4pO1xuICB9IGVsc2UgaWYgKHR5cGUuaW5kZXhPZignaHNsJykgIT09IC0xKSB7XG4gICAgdmFsdWVzWzFdID0gYCR7dmFsdWVzWzFdfSVgO1xuICAgIHZhbHVlc1syXSA9IGAke3ZhbHVlc1syXX0lYDtcbiAgfVxuICBpZiAodHlwZS5pbmRleE9mKCdjb2xvcicpICE9PSAtMSkge1xuICAgIHZhbHVlcyA9IGAke2NvbG9yU3BhY2V9ICR7dmFsdWVzLmpvaW4oJyAnKX1gO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlcyA9IGAke3ZhbHVlcy5qb2luKCcsICcpfWA7XG4gIH1cbiAgcmV0dXJuIGAke3R5cGV9KCR7dmFsdWVzfSlgO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgY29sb3IgZnJvbSBDU1MgcmdiIGZvcm1hdCB0byBDU1MgaGV4IGZvcm1hdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIFJHQiBjb2xvciwgaS5lLiByZ2IobiwgbiwgbilcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgQ1NTIHJnYiBjb2xvciBzdHJpbmcsIGkuZS4gI25ubm5ublxuICovXG5leHBvcnQgZnVuY3Rpb24gcmdiVG9IZXgoY29sb3IpIHtcbiAgLy8gSWRlbXBvdGVudFxuICBpZiAoY29sb3IuaW5kZXhPZignIycpID09PSAwKSB7XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG4gIGNvbnN0IHtcbiAgICB2YWx1ZXNcbiAgfSA9IGRlY29tcG9zZUNvbG9yKGNvbG9yKTtcbiAgcmV0dXJuIGAjJHt2YWx1ZXMubWFwKChuLCBpKSA9PiBpbnRUb0hleChpID09PSAzID8gTWF0aC5yb3VuZCgyNTUgKiBuKSA6IG4pKS5qb2luKCcnKX1gO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgY29sb3IgZnJvbSBoc2wgZm9ybWF0IHRvIHJnYiBmb3JtYXQuXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBIU0wgY29sb3IgdmFsdWVzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSByZ2IgY29sb3IgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoc2xUb1JnYihjb2xvcikge1xuICBjb2xvciA9IGRlY29tcG9zZUNvbG9yKGNvbG9yKTtcbiAgY29uc3Qge1xuICAgIHZhbHVlc1xuICB9ID0gY29sb3I7XG4gIGNvbnN0IGggPSB2YWx1ZXNbMF07XG4gIGNvbnN0IHMgPSB2YWx1ZXNbMV0gLyAxMDA7XG4gIGNvbnN0IGwgPSB2YWx1ZXNbMl0gLyAxMDA7XG4gIGNvbnN0IGEgPSBzICogTWF0aC5taW4obCwgMSAtIGwpO1xuICBjb25zdCBmID0gKG4sIGsgPSAobiArIGggLyAzMCkgJSAxMikgPT4gbCAtIGEgKiBNYXRoLm1heChNYXRoLm1pbihrIC0gMywgOSAtIGssIDEpLCAtMSk7XG4gIGxldCB0eXBlID0gJ3JnYic7XG4gIGNvbnN0IHJnYiA9IFtNYXRoLnJvdW5kKGYoMCkgKiAyNTUpLCBNYXRoLnJvdW5kKGYoOCkgKiAyNTUpLCBNYXRoLnJvdW5kKGYoNCkgKiAyNTUpXTtcbiAgaWYgKGNvbG9yLnR5cGUgPT09ICdoc2xhJykge1xuICAgIHR5cGUgKz0gJ2EnO1xuICAgIHJnYi5wdXNoKHZhbHVlc1szXSk7XG4gIH1cbiAgcmV0dXJuIHJlY29tcG9zZUNvbG9yKHtcbiAgICB0eXBlLFxuICAgIHZhbHVlczogcmdiXG4gIH0pO1xufVxuLyoqXG4gKiBUaGUgcmVsYXRpdmUgYnJpZ2h0bmVzcyBvZiBhbnkgcG9pbnQgaW4gYSBjb2xvciBzcGFjZSxcbiAqIG5vcm1hbGl6ZWQgdG8gMCBmb3IgZGFya2VzdCBibGFjayBhbmQgMSBmb3IgbGlnaHRlc3Qgd2hpdGUuXG4gKlxuICogRm9ybXVsYTogaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKClcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSByZWxhdGl2ZSBicmlnaHRuZXNzIG9mIHRoZSBjb2xvciBpbiB0aGUgcmFuZ2UgMCAtIDFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEx1bWluYW5jZShjb2xvcikge1xuICBjb2xvciA9IGRlY29tcG9zZUNvbG9yKGNvbG9yKTtcbiAgbGV0IHJnYiA9IGNvbG9yLnR5cGUgPT09ICdoc2wnIHx8IGNvbG9yLnR5cGUgPT09ICdoc2xhJyA/IGRlY29tcG9zZUNvbG9yKGhzbFRvUmdiKGNvbG9yKSkudmFsdWVzIDogY29sb3IudmFsdWVzO1xuICByZ2IgPSByZ2IubWFwKHZhbCA9PiB7XG4gICAgaWYgKGNvbG9yLnR5cGUgIT09ICdjb2xvcicpIHtcbiAgICAgIHZhbCAvPSAyNTU7IC8vIG5vcm1hbGl6ZWRcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsIDw9IDAuMDM5MjggPyB2YWwgLyAxMi45MiA6ICgodmFsICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNDtcbiAgfSk7XG5cbiAgLy8gVHJ1bmNhdGUgYXQgMyBkaWdpdHNcbiAgcmV0dXJuIE51bWJlcigoMC4yMTI2ICogcmdiWzBdICsgMC43MTUyICogcmdiWzFdICsgMC4wNzIyICogcmdiWzJdKS50b0ZpeGVkKDMpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSBjb250cmFzdCByYXRpbyBiZXR3ZWVuIHR3byBjb2xvcnMuXG4gKlxuICogRm9ybXVsYTogaHR0cHM6Ly93d3cudzMub3JnL1RSL1dDQUcyMC1URUNIUy9HMTcuaHRtbCNHMTctdGVzdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JlZ3JvdW5kIC0gQ1NTIGNvbG9yLCBpLmUuIG9uZSBvZjogI25ubiwgI25ubm5ubiwgcmdiKCksIHJnYmEoKSwgaHNsKCksIGhzbGEoKVxuICogQHBhcmFtIHtzdHJpbmd9IGJhY2tncm91bmQgLSBDU1MgY29sb3IsIGkuZS4gb25lIG9mOiAjbm5uLCAjbm5ubm5uLCByZ2IoKSwgcmdiYSgpLCBoc2woKSwgaHNsYSgpXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBBIGNvbnRyYXN0IHJhdGlvIHZhbHVlIGluIHRoZSByYW5nZSAwIC0gMjEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb250cmFzdFJhdGlvKGZvcmVncm91bmQsIGJhY2tncm91bmQpIHtcbiAgY29uc3QgbHVtQSA9IGdldEx1bWluYW5jZShmb3JlZ3JvdW5kKTtcbiAgY29uc3QgbHVtQiA9IGdldEx1bWluYW5jZShiYWNrZ3JvdW5kKTtcbiAgcmV0dXJuIChNYXRoLm1heChsdW1BLCBsdW1CKSArIDAuMDUpIC8gKE1hdGgubWluKGx1bUEsIGx1bUIpICsgMC4wNSk7XG59XG5cbi8qKlxuICogU2V0cyB0aGUgYWJzb2x1dGUgdHJhbnNwYXJlbmN5IG9mIGEgY29sb3IuXG4gKiBBbnkgZXhpc3RpbmcgYWxwaGEgdmFsdWVzIGFyZSBvdmVyd3JpdHRlbi5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKClcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSAtIHZhbHVlIHRvIHNldCB0aGUgYWxwaGEgY2hhbm5lbCB0byBpbiB0aGUgcmFuZ2UgMCAtIDFcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgQ1NTIGNvbG9yIHN0cmluZy4gSGV4IGlucHV0IHZhbHVlcyBhcmUgcmV0dXJuZWQgYXMgcmdiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbHBoYShjb2xvciwgdmFsdWUpIHtcbiAgY29sb3IgPSBkZWNvbXBvc2VDb2xvcihjb2xvcik7XG4gIHZhbHVlID0gY2xhbXAodmFsdWUpO1xuICBpZiAoY29sb3IudHlwZSA9PT0gJ3JnYicgfHwgY29sb3IudHlwZSA9PT0gJ2hzbCcpIHtcbiAgICBjb2xvci50eXBlICs9ICdhJztcbiAgfVxuICBpZiAoY29sb3IudHlwZSA9PT0gJ2NvbG9yJykge1xuICAgIGNvbG9yLnZhbHVlc1szXSA9IGAvJHt2YWx1ZX1gO1xuICB9IGVsc2Uge1xuICAgIGNvbG9yLnZhbHVlc1szXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiByZWNvbXBvc2VDb2xvcihjb2xvcik7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJpdmF0ZV9zYWZlQWxwaGEoY29sb3IsIHZhbHVlLCB3YXJuaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGFscGhhKGNvbG9yLCB2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKHdhcm5pbmcgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKHdhcm5pbmcpO1xuICAgIH1cbiAgICByZXR1cm4gY29sb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBEYXJrZW5zIGEgY29sb3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBDU1MgY29sb3IsIGkuZS4gb25lIG9mOiAjbm5uLCAjbm5ubm5uLCByZ2IoKSwgcmdiYSgpLCBoc2woKSwgaHNsYSgpLCBjb2xvcigpXG4gKiBAcGFyYW0ge251bWJlcn0gY29lZmZpY2llbnQgLSBtdWx0aXBsaWVyIGluIHRoZSByYW5nZSAwIC0gMVxuICogQHJldHVybnMge3N0cmluZ30gQSBDU1MgY29sb3Igc3RyaW5nLiBIZXggaW5wdXQgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyByZ2JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhcmtlbihjb2xvciwgY29lZmZpY2llbnQpIHtcbiAgY29sb3IgPSBkZWNvbXBvc2VDb2xvcihjb2xvcik7XG4gIGNvZWZmaWNpZW50ID0gY2xhbXAoY29lZmZpY2llbnQpO1xuICBpZiAoY29sb3IudHlwZS5pbmRleE9mKCdoc2wnKSAhPT0gLTEpIHtcbiAgICBjb2xvci52YWx1ZXNbMl0gKj0gMSAtIGNvZWZmaWNpZW50O1xuICB9IGVsc2UgaWYgKGNvbG9yLnR5cGUuaW5kZXhPZigncmdiJykgIT09IC0xIHx8IGNvbG9yLnR5cGUuaW5kZXhPZignY29sb3InKSAhPT0gLTEpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkgKz0gMSkge1xuICAgICAgY29sb3IudmFsdWVzW2ldICo9IDEgLSBjb2VmZmljaWVudDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlY29tcG9zZUNvbG9yKGNvbG9yKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwcml2YXRlX3NhZmVEYXJrZW4oY29sb3IsIGNvZWZmaWNpZW50LCB3YXJuaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRhcmtlbihjb2xvciwgY29lZmZpY2llbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICh3YXJuaW5nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG59XG5cbi8qKlxuICogTGlnaHRlbnMgYSBjb2xvci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKClcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb2VmZmljaWVudCAtIG11bHRpcGxpZXIgaW4gdGhlIHJhbmdlIDAgLSAxXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIENTUyBjb2xvciBzdHJpbmcuIEhleCBpbnB1dCB2YWx1ZXMgYXJlIHJldHVybmVkIGFzIHJnYlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlnaHRlbihjb2xvciwgY29lZmZpY2llbnQpIHtcbiAgY29sb3IgPSBkZWNvbXBvc2VDb2xvcihjb2xvcik7XG4gIGNvZWZmaWNpZW50ID0gY2xhbXAoY29lZmZpY2llbnQpO1xuICBpZiAoY29sb3IudHlwZS5pbmRleE9mKCdoc2wnKSAhPT0gLTEpIHtcbiAgICBjb2xvci52YWx1ZXNbMl0gKz0gKDEwMCAtIGNvbG9yLnZhbHVlc1syXSkgKiBjb2VmZmljaWVudDtcbiAgfSBlbHNlIGlmIChjb2xvci50eXBlLmluZGV4T2YoJ3JnYicpICE9PSAtMSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSArPSAxKSB7XG4gICAgICBjb2xvci52YWx1ZXNbaV0gKz0gKDI1NSAtIGNvbG9yLnZhbHVlc1tpXSkgKiBjb2VmZmljaWVudDtcbiAgICB9XG4gIH0gZWxzZSBpZiAoY29sb3IudHlwZS5pbmRleE9mKCdjb2xvcicpICE9PSAtMSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSArPSAxKSB7XG4gICAgICBjb2xvci52YWx1ZXNbaV0gKz0gKDEgLSBjb2xvci52YWx1ZXNbaV0pICogY29lZmZpY2llbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWNvbXBvc2VDb2xvcihjb2xvcik7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJpdmF0ZV9zYWZlTGlnaHRlbihjb2xvciwgY29lZmZpY2llbnQsIHdhcm5pbmcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gbGlnaHRlbihjb2xvciwgY29lZmZpY2llbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICh3YXJuaW5nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG59XG5cbi8qKlxuICogRGFya2VuIG9yIGxpZ2h0ZW4gYSBjb2xvciwgZGVwZW5kaW5nIG9uIGl0cyBsdW1pbmFuY2UuXG4gKiBMaWdodCBjb2xvcnMgYXJlIGRhcmtlbmVkLCBkYXJrIGNvbG9ycyBhcmUgbGlnaHRlbmVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gQ1NTIGNvbG9yLCBpLmUuIG9uZSBvZjogI25ubiwgI25ubm5ubiwgcmdiKCksIHJnYmEoKSwgaHNsKCksIGhzbGEoKSwgY29sb3IoKVxuICogQHBhcmFtIHtudW1iZXJ9IGNvZWZmaWNpZW50PTAuMTUgLSBtdWx0aXBsaWVyIGluIHRoZSByYW5nZSAwIC0gMVxuICogQHJldHVybnMge3N0cmluZ30gQSBDU1MgY29sb3Igc3RyaW5nLiBIZXggaW5wdXQgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyByZ2JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcGhhc2l6ZShjb2xvciwgY29lZmZpY2llbnQgPSAwLjE1KSB7XG4gIHJldHVybiBnZXRMdW1pbmFuY2UoY29sb3IpID4gMC41ID8gZGFya2VuKGNvbG9yLCBjb2VmZmljaWVudCkgOiBsaWdodGVuKGNvbG9yLCBjb2VmZmljaWVudCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJpdmF0ZV9zYWZlRW1waGFzaXplKGNvbG9yLCBjb2VmZmljaWVudCwgd2FybmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBwcml2YXRlX3NhZmVFbXBoYXNpemUoY29sb3IsIGNvZWZmaWNpZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAod2FybmluZyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufSJdLCJuYW1lcyI6WyJibGFjayIsIndoaXRlIiwiQTEwMCIsIkEyMDAiLCJBNDAwIiwiQTcwMCIsIl9leGNsdWRlZCIsImxpZ2h0IiwidGV4dCIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJkaXNhYmxlZCIsImRpdmlkZXIiLCJiYWNrZ3JvdW5kIiwicGFwZXIiLCJkZWZhdWx0IiwiYWN0aW9uIiwiYWN0aXZlIiwiaG92ZXIiLCJob3Zlck9wYWNpdHkiLCJzZWxlY3RlZCIsInNlbGVjdGVkT3BhY2l0eSIsImRpc2FibGVkQmFja2dyb3VuZCIsImRpc2FibGVkT3BhY2l0eSIsImZvY3VzIiwiZm9jdXNPcGFjaXR5IiwiYWN0aXZhdGVkT3BhY2l0eSIsImRhcmsiLCJpY29uIiwiYWRkTGlnaHRPckRhcmsiLCJpbnRlbnQiLCJkaXJlY3Rpb24iLCJzaGFkZSIsInRvbmFsT2Zmc2V0IiwidG9uYWxPZmZzZXRMaWdodCIsInRvbmFsT2Zmc2V0RGFyayIsImhhc093blByb3BlcnR5IiwibWFpbiIsImNhc2VBbGxDYXBzIiwidGV4dFRyYW5zZm9ybSIsImRlZmF1bHRGb250RmFtaWx5IiwiY3JlYXRlVHlwb2dyYXBoeSIsInBhbGV0dGUiLCJ0eXBvZ3JhcGh5IiwiX3JlZiIsImZvbnRGYW1pbHkiLCJmb250U2l6ZSIsImZvbnRXZWlnaHRMaWdodCIsImZvbnRXZWlnaHRSZWd1bGFyIiwiZm9udFdlaWdodE1lZGl1bSIsImZvbnRXZWlnaHRCb2xkIiwiaHRtbEZvbnRTaXplIiwiYWxsVmFyaWFudHMiLCJweFRvUmVtIiwicHhUb1JlbTIiLCJvdGhlciIsImNvZWYiLCJzaXplIiwiYnVpbGRWYXJpYW50IiwiZm9udFdlaWdodCIsImxpbmVIZWlnaHQiLCJsZXR0ZXJTcGFjaW5nIiwiY2FzaW5nIiwidmFsdWUiLCJNYXRoIiwicm91bmQiLCJ2YXJpYW50cyIsImgxIiwiaDIiLCJoMyIsImg0IiwiaDUiLCJoNiIsInN1YnRpdGxlMSIsInN1YnRpdGxlMiIsImJvZHkxIiwiYm9keTIiLCJidXR0b24iLCJjYXB0aW9uIiwib3ZlcmxpbmUiLCJpbmhlcml0IiwiZGVlcG1lcmdlIiwiY2xvbmUiLCJjcmVhdGVTaGFkb3ciLCJweCIsImpvaW4iLCJtb2JpbGVTdGVwcGVyIiwiZmFiIiwic3BlZWREaWFsIiwiYXBwQmFyIiwiZHJhd2VyIiwibW9kYWwiLCJzbmFja2JhciIsInRvb2x0aXAiLCJvcHRpb25zIiwiYXJncyIsIm1peGlucyIsIm1peGluc0lucHV0IiwicGFsZXR0ZUlucHV0IiwidHJhbnNpdGlvbnMiLCJ0cmFuc2l0aW9uc0lucHV0IiwidHlwb2dyYXBoeUlucHV0IiwidmFycyIsIkVycm9yIiwibW9kZSIsImNvbnRyYXN0VGhyZXNob2xkIiwiZ2V0RGVmYXVsdFByaW1hcnkiLCJnZXREZWZhdWx0U2Vjb25kYXJ5IiwiZXJyb3IiLCJnZXREZWZhdWx0RXJyb3IiLCJpbmZvIiwiZ2V0RGVmYXVsdEluZm8iLCJzdWNjZXNzIiwiZ2V0RGVmYXVsdFN1Y2Nlc3MiLCJ3YXJuaW5nIiwiZ2V0RGVmYXVsdFdhcm5pbmciLCJnZXRDb250cmFzdFRleHQiLCJhdWdtZW50Q29sb3IiLCJjb2xvciIsIm5hbWUiLCJtYWluU2hhZGUiLCJsaWdodFNoYWRlIiwiZGFya1NoYWRlIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbnRyYXN0VGV4dCIsIm1vZGVzIiwiY29tbW9uIiwiZ3JleSIsImNyZWF0ZVBhbGV0dGUiLCJzeXN0ZW1UaGVtZSIsIm11aVRoZW1lIiwiYnJlYWtwb2ludHMiLCJ0b29sYmFyIiwibWluSGVpZ2h0IiwidXAiLCJzaGFkb3dzIiwic2xpY2UiLCJjcmVhdGVUcmFuc2l0aW9ucyIsInpJbmRleCIsInJlZHVjZSIsImFjYyIsImFyZ3VtZW50IiwidW5zdGFibGVfc3hDb25maWciLCJkZWZhdWx0U3hDb25maWciLCJ1bnN0YWJsZV9zeCIsInByb3BzIiwic3R5bGVGdW5jdGlvblN4Iiwic3giLCJ0aGVtZSIsInRoaXMiLCJlYXNpbmciLCJlYXNlSW5PdXQiLCJlYXNlT3V0IiwiZWFzZUluIiwic2hhcnAiLCJkdXJhdGlvbiIsInNob3J0ZXN0Iiwic2hvcnRlciIsInNob3J0Iiwic3RhbmRhcmQiLCJjb21wbGV4IiwiZW50ZXJpbmdTY3JlZW4iLCJsZWF2aW5nU2NyZWVuIiwiZm9ybWF0TXMiLCJtaWxsaXNlY29uZHMiLCJnZXRBdXRvSGVpZ2h0RHVyYXRpb24iLCJoZWlnaHQiLCJjb25zdGFudCIsImlucHV0VHJhbnNpdGlvbnMiLCJtZXJnZWRFYXNpbmciLCJtZXJnZWREdXJhdGlvbiIsImNyZWF0ZSIsImR1cmF0aW9uT3B0aW9uIiwiZWFzaW5nT3B0aW9uIiwiZGVsYXkiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJhbmltYXRlZFByb3AiLCJjbGFtcCIsIm1pbiIsIm1heCIsImRlY29tcG9zZUNvbG9yIiwidHlwZSIsImNoYXJBdCIsInJlIiwiUmVnRXhwIiwibGVuZ3RoIiwiY29sb3JzIiwibWF0Y2giLCJuIiwiaW5kZXgiLCJwYXJzZUludCIsImhleFRvUmdiIiwibWFya2VyIiwiaW5kZXhPZiIsInN1YnN0cmluZyIsImNvbG9yU3BhY2UiLCJ2YWx1ZXMiLCJzcGxpdCIsInNoaWZ0IiwicGFyc2VGbG9hdCIsInJlY29tcG9zZUNvbG9yIiwiaSIsImdldEx1bWluYW5jZSIsInJnYiIsImgiLCJzIiwibCIsImEiLCJmIiwiayIsInB1c2giLCJoc2xUb1JnYiIsInZhbCIsIk51bWJlciIsInRvRml4ZWQiLCJnZXRDb250cmFzdFJhdGlvIiwiZm9yZWdyb3VuZCIsImx1bUEiLCJsdW1CIiwiYWxwaGEiLCJkYXJrZW4iLCJjb2VmZmljaWVudCIsImxpZ2h0ZW4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6925.bfa19e5a.js b/react_frontend/static/react_frontend/js/6925.bfa19e5a.js new file mode 100644 index 000000000..a48e2d68d --- /dev/null +++ b/react_frontend/static/react_frontend/js/6925.bfa19e5a.js @@ -0,0 +1,3 @@ +/*! For license information please see 6925.bfa19e5a.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6925],{9306:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNjkyNS40OTZhMDE3Ny5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUmlDLFNBQUNBLEdBQ2hDLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2RpZ2l0YWxfaW1hZ2VfcHJvY2Vzc2luZy9yZWFjdC1jb21wb25lbnRzL0RpZ2l0YWxJbWFnZVByb2Nlc3NpbmdSUi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvRGlnaXRhbEltYWdlUHJvY2Vzc2luZ1JSLmNzc1wiO1xyXG5cclxuY29uc3QgRGlnaXRhbEltYWdlUHJvY2Vzc2luZ1JSID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IERpZ2l0YWxJbWFnZVByb2Nlc3NpbmdSUjtcclxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiX2pzeCIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/6925.bfa19e5a.js.LICENSE.txt b/react_frontend/static/react_frontend/js/6925.bfa19e5a.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/6925.bfa19e5a.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/6962.c7e27a0a.js b/react_frontend/static/react_frontend/js/6962.c7e27a0a.js new file mode 100644 index 000000000..66b060b4d --- /dev/null +++ b/react_frontend/static/react_frontend/js/6962.c7e27a0a.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[6962,3093,1052],{7437:(e,t,r)=>{"use strict";r.d(t,{AH:()=>l,i7:()=>u,mL:()=>c});var n=r(5684),o=r(6540),i=r(41),a=r(1287),s=r(6899),c=(r(4300),r(4146),(0,n.w)((function(e,t){var r=e.styles,c=(0,s.J)([r],void 0,o.useContext(n.T));if(!n.i){for(var l,u=c.name,d=c.styles,p=c.next;void 0!==p;)u+=" "+p.name,d+=p.styles,p=p.next;var f=!0===t.compat,m=t.insert("",{name:u,styles:d},t.sheet,f);return f?null:o.createElement("style",((l={})["data-emotion"]=t.key+"-global "+u,l.dangerouslySetInnerHTML={__html:m},l.nonce=t.sheet.nonce,l))}var h=o.useRef();return(0,a.i)((function(){var e=t.key+"-global",r=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,o=document.querySelector('style[data-emotion="'+e+" "+c.name+'"]');return t.sheet.tags.length&&(r.before=t.sheet.tags[0]),null!==o&&(n=!0,o.setAttribute("data-emotion",e),r.hydrate([o])),h.current=[r,n],function(){r.flush()}}),[t]),(0,a.i)((function(){var e=h.current,r=e[0];if(e[1])e[1]=!1;else{if(void 0!==c.next&&(0,i.sk)(t,c.next,!0),r.tags.length){var n=r.tags[r.tags.length-1].nextElementSibling;r.before=n,r.flush()}t.insert("",c,r,!1)}}),[t,c.name]),null})));function l(){for(var e=arguments.length,t=new Array(e),r=0;r{"use strict";var n=r(4994);t.A=void 0;var o=n(r(2032)),i=r(4848),a=(0,o.default)([(0,i.jsx)("path",{d:"M15.22 4.75 7.87 7.79l4.96 11.96 7.35-3.05-4.96-11.95zM11 10c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z",opacity:".3"},"0"),(0,i.jsx)("path",{d:"m3.87 11.18-2.43 5.86c-.41 1.02.08 2.19 1.09 2.61l1.34.56v-9.03zm18.16 4.77L17.07 3.98c-.31-.75-1.04-1.21-1.81-1.23-.26 0-.53.04-.79.15L7.1 5.95c-.75.31-1.21 1.03-1.23 1.8-.01.27.04.54.15.8l4.96 11.97c.31.76 1.05 1.22 1.83 1.23.26 0 .52-.05.77-.15l7.36-3.05c1.02-.42 1.51-1.59 1.09-2.6zm-9.2 3.8L7.87 7.79l7.35-3.04h.01l4.95 11.95-7.35 3.05z"},"1"),(0,i.jsx)("circle",{cx:"11",cy:"9",r:"1"},"2"),(0,i.jsx)("path",{d:"m9.33 21.75-3.45-8.34v6.34c0 1.1.9 2 2 2h1.45z"},"3")],"StyleTwoTone");t.A=a},2032:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.createSvgIcon}});var n=r(8826)},4073:(e,t,r)=>{"use strict";r.d(t,{A:()=>x});var n=r(8587),o=r(8168),i=r(6540),a=r(53),s=r(9599),c=r(5659),l=r(7577),u=r(4409),d=r(8466),p=r(8413),f=r(1609);function m(e){return(0,f.A)("MuiTypography",e)}(0,p.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var h=r(4848);const v=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],g=(0,l.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,r.variant&&t[r.variant],"inherit"!==r.align&&t[`align${(0,d.A)(r.align)}`],r.noWrap&&t.noWrap,r.gutterBottom&&t.gutterBottom,r.paragraph&&t.paragraph]}})((({theme:e,ownerState:t})=>(0,o.A)({margin:0},t.variant&&e.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),y={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},A={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},x=i.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiTypography"}),i=(e=>A[e]||e)(r.color),l=(0,s.A)((0,o.A)({},r,{color:i})),{align:p="inherit",className:f,component:x,gutterBottom:b=!1,noWrap:S=!1,paragraph:w=!1,variant:C="body1",variantMapping:j=y}=l,I=(0,n.A)(l,v),M=(0,o.A)({},l,{align:p,color:i,className:f,component:x,gutterBottom:b,noWrap:S,paragraph:w,variant:C,variantMapping:j}),T=x||(w?"p":j[C]||y[C])||"span",_=(e=>{const{align:t,gutterBottom:r,noWrap:n,paragraph:o,variant:i,classes:a}=e,s={root:["root",i,"inherit"!==e.align&&`align${(0,d.A)(t)}`,r&&"gutterBottom",n&&"noWrap",o&&"paragraph"]};return(0,c.A)(s,m,a)})(M);return(0,h.jsx)(g,(0,o.A)({as:T,ref:t,ownerState:M,className:(0,a.A)(_.root,f)},I))}))},5003:(e,t,r)=>{"use strict";r.d(t,{A:()=>A});var n=r(8168),o=r(6540),i=r(8587),a=r(53),s=r(5659),c=r(8466),l=r(4409),u=r(7577),d=r(8413),p=r(1609);function f(e){return(0,p.A)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var m=r(4848);const h=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],v=(0,u.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.root,"inherit"!==r.color&&t[`color${(0,c.A)(r.color)}`],t[`fontSize${(0,c.A)(r.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var r,n,o,i,a,s,c,l,u,d,p,f,m;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(r=e.transitions)||null==(n=r.create)?void 0:n.call(r,"fill",{duration:null==(o=e.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(i=e.typography)||null==(a=i.pxToRem)?void 0:a.call(i,20))||"1.25rem",medium:(null==(s=e.typography)||null==(c=s.pxToRem)?void 0:c.call(s,24))||"1.5rem",large:(null==(l=e.typography)||null==(u=l.pxToRem)?void 0:u.call(l,35))||"2.1875rem"}[t.fontSize],color:null!=(d=null==(p=(e.vars||e).palette)||null==(p=p[t.color])?void 0:p.main)?d:{action:null==(f=(e.vars||e).palette)||null==(f=f.action)?void 0:f.active,disabled:null==(m=(e.vars||e).palette)||null==(m=m.action)?void 0:m.disabled,inherit:void 0}[t.color]}})),g=o.forwardRef((function(e,t){const r=(0,l.A)({props:e,name:"MuiSvgIcon"}),{children:u,className:d,color:p="inherit",component:g="svg",fontSize:y="medium",htmlColor:A,inheritViewBox:x=!1,titleAccess:b,viewBox:S="0 0 24 24"}=r,w=(0,i.A)(r,h),C=o.isValidElement(u)&&"svg"===u.type,j=(0,n.A)({},r,{color:p,component:g,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:x,viewBox:S,hasSvgAsChild:C}),I={};x||(I.viewBox=S);const M=(e=>{const{color:t,fontSize:r,classes:n}=e,o={root:["root","inherit"!==t&&`color${(0,c.A)(t)}`,`fontSize${(0,c.A)(r)}`]};return(0,s.A)(o,f,n)})(j);return(0,m.jsxs)(v,(0,n.A)({as:g,className:(0,a.A)(M.root,d),focusable:"false",color:A,"aria-hidden":!b||void 0,role:b?"img":void 0,ref:t},I,w,C&&u.props,{ownerState:j,children:[C?u.props.children:u,b?(0,m.jsx)("title",{children:b}):null]}))}));g.muiName="SvgIcon";const y=g;function A(e,t){function r(r,o){return(0,m.jsx)(y,(0,n.A)({"data-testid":`${t}Icon`,ref:o},r,{children:e}))}return r.muiName=y.muiName,o.memo(o.forwardRef(r))}},1935:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(4705).A},8826:(e,t,r)=>{"use strict";r.r(t),r.d(t,{capitalize:()=>o.A,createChainedFunction:()=>i,createSvgIcon:()=>a.A,debounce:()=>s.A,deprecatedPropType:()=>c,isMuiElement:()=>l.A,ownerDocument:()=>u.A,ownerWindow:()=>d.A,requirePropFactory:()=>p,setRef:()=>f,unstable_ClassNameGenerator:()=>b,unstable_useEnhancedEffect:()=>m.A,unstable_useId:()=>h.A,unsupportedProp:()=>v,useControlled:()=>g.A,useEventCallback:()=>y.A,useForkRef:()=>A.A,useIsFocusVisible:()=>x.A});var n=r(9071),o=r(8466);const i=r(1210).A;var a=r(5003),s=r(1935);const c=function(e,t){return()=>null};var l=r(5034),u=r(6248),d=r(3749);r(8168);const p=function(e,t){return()=>null},f=r(989).A;var m=r(2778),h=r(1668);const v=function(e,t,r,n,o){return null};var g=r(1159),y=r(3034),A=r(6852),x=r(1544);const b={configure:e=>{n.A.configure(e)}}},5034:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(6540);const o=function(e,t){return n.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},6248:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(2325).A},3749:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(4877).A},1159:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(2501).A},2778:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(1529).A},1668:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});const n=r(4661).A},9599:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(8168),o=r(8587),i=r(3272),a=r(4188);const s=["sx"],c=e=>{var t,r;const n={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:a.A;return Object.keys(e).forEach((t=>{o[t]?n.systemProps[t]=e[t]:n.otherProps[t]=e[t]})),n};function l(e){const{sx:t}=e,r=(0,o.A)(e,s),{systemProps:a,otherProps:l}=c(r);let u;return u=Array.isArray(t)?[a,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,i.Q)(r)?(0,n.A)({},a,r):a}:(0,n.A)({},a,t),(0,n.A)({},l,{sx:u})}},1210:(e,t,r)=>{"use strict";function n(...e){return e.reduce(((e,t)=>null==t?e:function(...r){e.apply(this,r),t.apply(this,r)}),(()=>{}))}r.d(t,{A:()=>n})},4705:(e,t,r)=>{"use strict";function n(e,t=166){let r;function n(...n){clearTimeout(r),r=setTimeout((()=>{e.apply(this,n)}),t)}return n.clear=()=>{clearTimeout(r)},n}r.d(t,{A:()=>n})},2325:(e,t,r)=>{"use strict";function n(e){return e&&e.ownerDocument||document}r.d(t,{A:()=>n})},4877:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(2325);function o(e){return(0,n.A)(e).defaultView||window}},2501:(e,t,r)=>{"use strict";r.d(t,{A:()=>o});var n=r(6540);function o({controlled:e,default:t,name:r,state:o="value"}){const{current:i}=n.useRef(void 0!==e),[a,s]=n.useState(t);return[i?e:a,n.useCallback((e=>{i||s(e)}),[])]}},4661:(e,t,r)=>{"use strict";var n;r.d(t,{A:()=>s});var o=r(6540);let i=0;const a=(n||(n=r.t(o,2)))["useId".toString()];function s(e){if(void 0!==a){const t=a();return null!=e?e:t}return function(e){const[t,r]=o.useState(e),n=e||t;return o.useEffect((()=>{null==t&&(i+=1,r(`mui-${i}`))}),[t]),n}(e)}},6965:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ExerciseCard:()=>C});var n=r(6540);const o=JSON.parse('{"H":{"K":{"n":{"type":"image","url":"/static/exercises/assets/img/${exerciseid}_teaser.png"},"r":"/exercises/exercises/${exerciseid}"}}}');var i=r(2022),a=r(8587),s=r(8168),c=r(53),l=r(5659),u=r(4409),d=r(7577),p=r(8413),f=r(1609);function m(e){return(0,f.A)("MuiCardMedia",e)}(0,p.A)("MuiCardMedia",["root","media","img"]);var h=r(4848);const v=["children","className","component","image","src","style"],g=(0,d.Ay)("div",{name:"MuiCardMedia",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{isMediaComponent:n,isImageComponent:o}=r;return[t.root,n&&t.media,o&&t.img]}})((({ownerState:e})=>(0,s.A)({display:"block",backgroundSize:"cover",backgroundRepeat:"no-repeat",backgroundPosition:"center"},e.isMediaComponent&&{width:"100%"},e.isImageComponent&&{objectFit:"cover"}))),y=["video","audio","picture","iframe","img"],A=["picture","img"],x=n.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiCardMedia"}),{children:n,className:o,component:i="div",image:d,src:p,style:f}=r,x=(0,a.A)(r,v),b=-1!==y.indexOf(i),S=!b&&d?(0,s.A)({backgroundImage:`url("${d}")`},f):f,w=(0,s.A)({},r,{component:i,isMediaComponent:b,isImageComponent:-1!==A.indexOf(i)}),C=(e=>{const{classes:t,isMediaComponent:r,isImageComponent:n}=e,o={root:["root",r&&"media",n&&"img"]};return(0,l.A)(o,m,t)})(w);return(0,h.jsx)(g,(0,s.A)({className:(0,c.A)(C.root,o),as:i,role:!b&&d?"img":void 0,ref:t,style:S,ownerState:w,src:b?d||p:void 0},x,{children:n}))}));var b=r(4073),S=r(9132);const w=r.p+"4c3c9ff3e5e41de1a959.svg";var C=function(e){var t=e.id,r=e.name,n=e.description,i=e.tags,a=e.status,s="".concat(o.H.K.r),c=o.H.K.n,l=JSON.parse(i).tags;return(0,h.jsx)("div",{className:"exercise-card",style:{borderColor:"ACTIVE"===a?"green":"INACTIVE"===a?"red":"orange"},children:(0,h.jsxs)("div",{style:{flexGrow:1,display:"flex",flexDirection:"column",alignItems:"flex-start"},onClick:function(){window.location.href=s.interpolate({exerciseid:t})},children:[(0,h.jsx)(x,{component:"img",height:"auto",style:{flexGrow:1},image:c.url.interpolate({exerciseid:t}),onError:function(e){return e.target.src=w}}),(0,h.jsxs)("div",{className:"exercise-info-container",children:[(0,h.jsx)(b.A,{gutterBottom:!0,variant:"h6",component:"div",color:"white",sx:{wordBreak:"break-word"},style:{alignSelf:"center",pointerEvents:"none"},children:r}),(0,h.jsx)(b.A,{id:"exercise-info",gutterBottom:!0,variant:"h7",component:"div",color:"white",style:{pointerEvents:"none"},children:n}),(0,h.jsx)(j,{tagList:l})]})]})})},j=function(e){var t=e.tagList;Array.isArray(t)||(t=t.split(","));var r=t.map((function(e){return(0,h.jsx)(i.A,{sx:{m:.5},icon:(0,h.jsx)(S.A,{}),color:"success",label:e},e)}));return(0,h.jsx)("div",{className:"exercise-tag-list",children:r})}},4464:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>u});var n=r(6540),o=r(6965),i=r(8359),a=r(4848);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";r.r(t),r.d(t,{HomepageProvider:()=>d,default:()=>p});var n=r(6540),o=r(5556),i=r.n(o),a=r(4848);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return l(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";var n=r(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,r,o,i,a){if(a!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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YWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvU3R5bGVUd29Ub25lLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1R5cG9ncmFwaHkvdHlwb2dyYXBoeUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L1R5cG9ncmFwaHkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL3N2Z0ljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlcHJlY2F0ZWRQcm9wVHlwZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9yZXF1aXJlUHJvcEZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9zZXRSZWYuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdW5zdXBwb3J0ZWRQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pc011aUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyV2luZG93LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlQ29udHJvbGxlZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUVuaGFuY2VkRWZmZWN0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3N0eWxlRnVuY3Rpb25TeC9leHRlbmRTeFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyRG9jdW1lbnQvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lcldpbmRvdy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VDb250cm9sbGVkL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlSWQvdXNlSWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DYXJkTWVkaWEvY2FyZE1lZGlhQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NhcmRNZWRpYS9DYXJkTWVkaWEuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9FeGVyY2lzZUNhcmQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9FeGVyY2lzZUxpc3QuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29udGV4dHMvSG9tZXBhZ2VDb250ZXh0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaCBhcyBoYXNPd25Qcm9wZXJ0eSwgRSBhcyBFbW90aW9uLCBjIGFzIGNyZWF0ZUVtb3Rpb25Qcm9wcywgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBUIGFzIFRoZW1lQ29udGV4dCwgaSBhcyBpc0Jyb3dzZXIkMSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmV4cG9ydCB7IEMgYXMgQ2FjaGVQcm92aWRlciwgVCBhcyBUaGVtZUNvbnRleHQsIGEgYXMgVGhlbWVQcm92aWRlciwgXyBhcyBfX3Vuc2FmZV91c2VFbW90aW9uQ2FjaGUsIHUgYXMgdXNlVGhlbWUsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgYiBhcyB3aXRoVGhlbWUgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpbnNlcnRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBnZXRSZWdpc3RlcmVkU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrLCB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrIH0gZnJvbSAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vY2FjaGUnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICcuLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdob2lzdC1ub24tcmVhY3Qtc3RhdGljcyc7XG5cbnZhciBwa2cgPSB7XG5cdG5hbWU6IFwiQGVtb3Rpb24vcmVhY3RcIixcblx0dmVyc2lvbjogXCIxMS4xMS4xXCIsXG5cdG1haW46IFwiZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiLFxuXHRtb2R1bGU6IFwiZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiLFxuXHRicm93c2VyOiB7XG5cdFx0XCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiXG5cdH0sXG5cdGV4cG9ydHM6IHtcblx0XHRcIi5cIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vX2lzb2xhdGVkLWhucnNcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vanN4LWRldi1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS53b3JrZXIuZXNtLmpzXCIsXG5cdFx0XHRcdGJyb3dzZXI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5tanNcIixcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9wYWNrYWdlLmpzb25cIjogXCIuL3BhY2thZ2UuanNvblwiLFxuXHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdH0sXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHR9XG5cdH0sXG5cdHR5cGVzOiBcInR5cGVzL2luZGV4LmQudHNcIixcblx0ZmlsZXM6IFtcblx0XHRcInNyY1wiLFxuXHRcdFwiZGlzdFwiLFxuXHRcdFwianN4LXJ1bnRpbWVcIixcblx0XHRcImpzeC1kZXYtcnVudGltZVwiLFxuXHRcdFwiX2lzb2xhdGVkLWhucnNcIixcblx0XHRcInR5cGVzLyouZC50c1wiLFxuXHRcdFwibWFjcm8uKlwiXG5cdF0sXG5cdHNpZGVFZmZlY3RzOiBmYWxzZSxcblx0YXV0aG9yOiBcIkVtb3Rpb24gQ29udHJpYnV0b3JzXCIsXG5cdGxpY2Vuc2U6IFwiTUlUXCIsXG5cdHNjcmlwdHM6IHtcblx0XHRcInRlc3Q6dHlwZXNjcmlwdFwiOiBcImR0c2xpbnQgdHlwZXNcIlxuXHR9LFxuXHRkZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBiYWJlbC9ydW50aW1lXCI6IFwiXjcuMTguM1wiLFxuXHRcdFwiQGVtb3Rpb24vYmFiZWwtcGx1Z2luXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2NhY2hlXCI6IFwiXjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3NlcmlhbGl6ZVwiOiBcIl4xLjEuMlwiLFxuXHRcdFwiQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3NcIjogXCJeMS4wLjFcIixcblx0XHRcIkBlbW90aW9uL3V0aWxzXCI6IFwiXjEuMi4xXCIsXG5cdFx0XCJAZW1vdGlvbi93ZWFrLW1lbW9pemVcIjogXCJeMC4zLjFcIixcblx0XHRcImhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzXCI6IFwiXjMuMy4xXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llczoge1xuXHRcdHJlYWN0OiBcIj49MTYuOC4wXCJcblx0fSxcblx0cGVlckRlcGVuZGVuY2llc01ldGE6IHtcblx0XHRcIkB0eXBlcy9yZWFjdFwiOiB7XG5cdFx0XHRvcHRpb25hbDogdHJ1ZVxuXHRcdH1cblx0fSxcblx0ZGV2RGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAZGVmaW5pdGVseXR5cGVkL2R0c2xpbnRcIjogXCIwLjAuMTEyXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3NcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jc3MtcHJldHRpZmllclwiOiBcIjEuMS4zXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJ2ZXJcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zdHlsZWRcIjogXCIxMS4xMS4wXCIsXG5cdFx0XCJodG1sLXRhZy1uYW1lc1wiOiBcIl4xLjEuMlwiLFxuXHRcdHJlYWN0OiBcIjE2LjE0LjBcIixcblx0XHRcInN2Zy10YWctbmFtZXNcIjogXCJeMS4xLjFcIixcblx0XHR0eXBlc2NyaXB0OiBcIl40LjUuNVwiXG5cdH0sXG5cdHJlcG9zaXRvcnk6IFwiaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi90cmVlL21haW4vcGFja2FnZXMvcmVhY3RcIixcblx0cHVibGlzaENvbmZpZzoge1xuXHRcdGFjY2VzczogXCJwdWJsaWNcIlxuXHR9LFxuXHRcInVtZDptYWluXCI6IFwiZGlzdC9lbW90aW9uLXJlYWN0LnVtZC5taW4uanNcIixcblx0cHJlY29uc3RydWN0OiB7XG5cdFx0ZW50cnlwb2ludHM6IFtcblx0XHRcdFwiLi9pbmRleC5qc1wiLFxuXHRcdFx0XCIuL2pzeC1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vanN4LWRldi1ydW50aW1lLmpzXCIsXG5cdFx0XHRcIi4vX2lzb2xhdGVkLWhucnMuanNcIlxuXHRcdF0sXG5cdFx0dW1kTmFtZTogXCJlbW90aW9uUmVhY3RcIixcblx0XHRleHBvcnRzOiB7XG5cdFx0XHRlbnZDb25kaXRpb25zOiBbXG5cdFx0XHRcdFwiYnJvd3NlclwiLFxuXHRcdFx0XHRcIndvcmtlclwiXG5cdFx0XHRdLFxuXHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XHRcdFwiLi9tYWNyb1wiOiB7XG5cdFx0XHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5kLnRzXCJcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG52YXIganN4ID0gZnVuY3Rpb24ganN4KHR5cGUsIHByb3BzKSB7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuXG4gIGlmIChwcm9wcyA9PSBudWxsIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCAnY3NzJykpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgfVxuXG4gIHZhciBhcmdzTGVuZ3RoID0gYXJncy5sZW5ndGg7XG4gIHZhciBjcmVhdGVFbGVtZW50QXJnQXJyYXkgPSBuZXcgQXJyYXkoYXJnc0xlbmd0aCk7XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVswXSA9IEVtb3Rpb247XG4gIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVsxXSA9IGNyZWF0ZUVtb3Rpb25Qcm9wcyh0eXBlLCBwcm9wcyk7XG5cbiAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmdzTGVuZ3RoOyBpKyspIHtcbiAgICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbaV0gPSBhcmdzW2ldO1xuICB9IC8vICRGbG93Rml4TWVcblxuXG4gIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KG51bGwsIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSk7XG59O1xuXG52YXIgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gZmFsc2U7IC8vIG1haW50YWluIHBsYWNlIG92ZXIgcmVyZW5kZXJzLlxuLy8gaW5pdGlhbCByZW5kZXIgZnJvbSBicm93c2VyLCBpbnNlcnRCZWZvcmUgY29udGV4dC5zaGVldC50YWdzWzBdIG9yIGlmIGEgc3R5bGUgaGFzbid0IGJlZW4gaW5zZXJ0ZWQgdGhlcmUgeWV0LCBhcHBlbmRDaGlsZFxuLy8gaW5pdGlhbCBjbGllbnQtc2lkZSByZW5kZXIgZnJvbSBTU1IsIHVzZSBwbGFjZSBvZiBoeWRyYXRpbmcgdGFnXG5cbnZhciBHbG9iYWwgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCAmJiAoIC8vIGNoZWNrIGZvciBjbGFzc05hbWUgYXMgd2VsbCBzaW5jZSB0aGUgdXNlciBpc1xuICAvLyBwcm9iYWJseSB1c2luZyB0aGUgY3VzdG9tIGNyZWF0ZUVsZW1lbnQgd2hpY2hcbiAgLy8gbWVhbnMgaXQgd2lsbCBiZSB0dXJuZWQgaW50byBhIGNsYXNzTmFtZSBwcm9wXG4gIC8vICRGbG93Rml4TWUgSSBkb24ndCByZWFsbHkgd2FudCB0byBhZGQgaXQgdG8gdGhlIHR5cGUgc2luY2UgaXQgc2hvdWxkbid0IGJlIHVzZWRcbiAgcHJvcHMuY2xhc3NOYW1lIHx8IHByb3BzLmNzcykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgdGhlIGNzcyBwcm9wIG9uIEdsb2JhbCwgZGlkIHlvdSBtZWFuIHRvIHVzZSB0aGUgc3R5bGVzIHByb3AgaW5zdGVhZD9cIik7XG4gICAgd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzdHlsZXMgPSBwcm9wcy5zdHlsZXM7XG4gIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKFtzdHlsZXNdLCB1bmRlZmluZWQsIFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KSk7XG5cbiAgaWYgKCFpc0Jyb3dzZXIkMSkge1xuICAgIHZhciBfcmVmO1xuXG4gICAgdmFyIHNlcmlhbGl6ZWROYW1lcyA9IHNlcmlhbGl6ZWQubmFtZTtcbiAgICB2YXIgc2VyaWFsaXplZFN0eWxlcyA9IHNlcmlhbGl6ZWQuc3R5bGVzO1xuICAgIHZhciBuZXh0ID0gc2VyaWFsaXplZC5uZXh0O1xuXG4gICAgd2hpbGUgKG5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgc2VyaWFsaXplZE5hbWVzICs9ICcgJyArIG5leHQubmFtZTtcbiAgICAgIHNlcmlhbGl6ZWRTdHlsZXMgKz0gbmV4dC5zdHlsZXM7XG4gICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgIH1cblxuICAgIHZhciBzaG91bGRDYWNoZSA9IGNhY2hlLmNvbXBhdCA9PT0gdHJ1ZTtcbiAgICB2YXIgcnVsZXMgPSBjYWNoZS5pbnNlcnQoXCJcIiwge1xuICAgICAgbmFtZTogc2VyaWFsaXplZE5hbWVzLFxuICAgICAgc3R5bGVzOiBzZXJpYWxpemVkU3R5bGVzXG4gICAgfSwgY2FjaGUuc2hlZXQsIHNob3VsZENhY2hlKTtcblxuICAgIGlmIChzaG91bGRDYWNoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiwgKF9yZWYgPSB7fSwgX3JlZltcImRhdGEtZW1vdGlvblwiXSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbCBcIiArIHNlcmlhbGl6ZWROYW1lcywgX3JlZi5kYW5nZXJvdXNseVNldElubmVySFRNTCA9IHtcbiAgICAgIF9faHRtbDogcnVsZXNcbiAgICB9LCBfcmVmLm5vbmNlID0gY2FjaGUuc2hlZXQubm9uY2UsIF9yZWYpKTtcbiAgfSAvLyB5ZXMsIGkga25vdyB0aGVzZSBob29rcyBhcmUgdXNlZCBjb25kaXRpb25hbGx5XG4gIC8vIGJ1dCBpdCBpcyBiYXNlZCBvbiBhIGNvbnN0YW50IHRoYXQgd2lsbCBuZXZlciBjaGFuZ2UgYXQgcnVudGltZVxuICAvLyBpdCdzIGVmZmVjdGl2ZWx5IGxpa2UgaGF2aW5nIHR3byBpbXBsZW1lbnRhdGlvbnMgYW5kIHN3aXRjaGluZyB0aGVtIG91dFxuICAvLyBzbyBpdCdzIG5vdCBhY3R1YWxseSBicmVha2luZyBhbnl0aGluZ1xuXG5cbiAgdmFyIHNoZWV0UmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGtleSA9IGNhY2hlLmtleSArIFwiLWdsb2JhbFwiOyAvLyB1c2UgY2FzZSBvZiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2lzc3Vlcy8yNjc1XG5cbiAgICB2YXIgc2hlZXQgPSBuZXcgY2FjaGUuc2hlZXQuY29uc3RydWN0b3Ioe1xuICAgICAga2V5OiBrZXksXG4gICAgICBub25jZTogY2FjaGUuc2hlZXQubm9uY2UsXG4gICAgICBjb250YWluZXI6IGNhY2hlLnNoZWV0LmNvbnRhaW5lcixcbiAgICAgIHNwZWVkeTogY2FjaGUuc2hlZXQuaXNTcGVlZHlcbiAgICB9KTtcbiAgICB2YXIgcmVoeWRyYXRpbmcgPSBmYWxzZTsgLy8gJEZsb3dGaXhNZVxuXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwic3R5bGVbZGF0YS1lbW90aW9uPVxcXCJcIiArIGtleSArIFwiIFwiICsgc2VyaWFsaXplZC5uYW1lICsgXCJcXFwiXVwiKTtcblxuICAgIGlmIChjYWNoZS5zaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgc2hlZXQuYmVmb3JlID0gY2FjaGUuc2hlZXQudGFnc1swXTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSAhPT0gbnVsbCkge1xuICAgICAgcmVoeWRyYXRpbmcgPSB0cnVlOyAvLyBjbGVhciB0aGUgaGFzaCBzbyB0aGlzIG5vZGUgd29uJ3QgYmUgcmVjb2duaXphYmxlIGFzIHJlaHlkcmF0YWJsZSBieSBvdGhlciA8R2xvYmFsLz5zXG5cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBrZXkpO1xuICAgICAgc2hlZXQuaHlkcmF0ZShbbm9kZV0pO1xuICAgIH1cblxuICAgIHNoZWV0UmVmLmN1cnJlbnQgPSBbc2hlZXQsIHJlaHlkcmF0aW5nXTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9O1xuICB9LCBbY2FjaGVdKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2hlZXRSZWZDdXJyZW50ID0gc2hlZXRSZWYuY3VycmVudDtcbiAgICB2YXIgc2hlZXQgPSBzaGVldFJlZkN1cnJlbnRbMF0sXG4gICAgICAgIHJlaHlkcmF0aW5nID0gc2hlZXRSZWZDdXJyZW50WzFdO1xuXG4gICAgaWYgKHJlaHlkcmF0aW5nKSB7XG4gICAgICBzaGVldFJlZkN1cnJlbnRbMV0gPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2VyaWFsaXplZC5uZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIGluc2VydCBrZXlmcmFtZXNcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZC5uZXh0LCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIC8vIGlmIHRoaXMgZG9lc24ndCBleGlzdCB0aGVuIGl0IHdpbGwgYmUgbnVsbCBzbyB0aGUgc3R5bGUgZWxlbWVudCB3aWxsIGJlIGFwcGVuZGVkXG4gICAgICB2YXIgZWxlbWVudCA9IHNoZWV0LnRhZ3Nbc2hlZXQudGFncy5sZW5ndGggLSAxXS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICBzaGVldC5iZWZvcmUgPSBlbGVtZW50O1xuICAgICAgc2hlZXQuZmx1c2goKTtcbiAgICB9XG5cbiAgICBjYWNoZS5pbnNlcnQoXCJcIiwgc2VyaWFsaXplZCwgc2hlZXQsIGZhbHNlKTtcbiAgfSwgW2NhY2hlLCBzZXJpYWxpemVkLm5hbWVdKTtcbiAgcmV0dXJuIG51bGw7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgR2xvYmFsLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25HbG9iYWwnO1xufVxuXG5mdW5jdGlvbiBjc3MoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gc2VyaWFsaXplU3R5bGVzKGFyZ3MpO1xufVxuXG52YXIga2V5ZnJhbWVzID0gZnVuY3Rpb24ga2V5ZnJhbWVzKCkge1xuICB2YXIgaW5zZXJ0YWJsZSA9IGNzcy5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIHZhciBuYW1lID0gXCJhbmltYXRpb24tXCIgKyBpbnNlcnRhYmxlLm5hbWU7IC8vICRGbG93Rml4TWVcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBcIkBrZXlmcmFtZXMgXCIgKyBuYW1lICsgXCJ7XCIgKyBpbnNlcnRhYmxlLnN0eWxlcyArIFwifVwiLFxuICAgIGFuaW06IDEsXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiX0VNT19cIiArIHRoaXMubmFtZSArIFwiX1wiICsgdGhpcy5zdHlsZXMgKyBcIl9FTU9fXCI7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGNsYXNzbmFtZXMgPSBmdW5jdGlvbiBjbGFzc25hbWVzKGFyZ3MpIHtcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBjbHMgPSAnJztcblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PSBudWxsKSBjb250aW51ZTtcbiAgICB2YXIgdG9BZGQgPSB2b2lkIDA7XG5cbiAgICBzd2l0Y2ggKHR5cGVvZiBhcmcpIHtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgICAgICAgIHRvQWRkID0gY2xhc3NuYW1lcyhhcmcpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmcuc3R5bGVzICE9PSB1bmRlZmluZWQgJiYgYXJnLm5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgaGF2ZSBwYXNzZWQgc3R5bGVzIGNyZWF0ZWQgd2l0aCBgY3NzYCBmcm9tIGBAZW1vdGlvbi9yZWFjdGAgcGFja2FnZSB0byB0aGUgYGN4YC5cXG4nICsgJ2BjeGAgaXMgbWVhbnQgdG8gY29tcG9zZSBjbGFzcyBuYW1lcyAoc3RyaW5ncykgc28geW91IHNob3VsZCBjb252ZXJ0IHRob3NlIHN0eWxlcyB0byBhIGNsYXNzIG5hbWUgYnkgcGFzc2luZyB0aGVtIHRvIHRoZSBgY3NzYCByZWNlaXZlZCBmcm9tIDxDbGFzc05hbWVzLz4gY29tcG9uZW50LicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b0FkZCA9ICcnO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBrIGluIGFyZykge1xuICAgICAgICAgICAgICBpZiAoYXJnW2tdICYmIGspIHtcbiAgICAgICAgICAgICAgICB0b0FkZCAmJiAodG9BZGQgKz0gJyAnKTtcbiAgICAgICAgICAgICAgICB0b0FkZCArPSBrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAge1xuICAgICAgICAgIHRvQWRkID0gYXJnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvQWRkKSB7XG4gICAgICBjbHMgJiYgKGNscyArPSAnICcpO1xuICAgICAgY2xzICs9IHRvQWRkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbHM7XG59O1xuXG5mdW5jdGlvbiBtZXJnZShyZWdpc3RlcmVkLCBjc3MsIGNsYXNzTmFtZSkge1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtdO1xuICB2YXIgcmF3Q2xhc3NOYW1lID0gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWUpO1xuXG4gIGlmIChyZWdpc3RlcmVkU3R5bGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gY2xhc3NOYW1lO1xuICB9XG5cbiAgcmV0dXJuIHJhd0NsYXNzTmFtZSArIGNzcyhyZWdpc3RlcmVkU3R5bGVzKTtcbn1cblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkQXJyID0gX3JlZi5zZXJpYWxpemVkQXJyO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VyaWFsaXplZEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkQXJyW2ldLCBmYWxzZSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBDbGFzc05hbWVzID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIHZhciBoYXNSZW5kZXJlZCA9IGZhbHNlO1xuICB2YXIgc2VyaWFsaXplZEFyciA9IFtdO1xuXG4gIHZhciBjc3MgPSBmdW5jdGlvbiBjc3MoKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3NzIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCBjYWNoZS5yZWdpc3RlcmVkKTtcbiAgICBzZXJpYWxpemVkQXJyLnB1c2goc2VyaWFsaXplZCk7IC8vIHJlZ2lzdHJhdGlvbiBoYXMgdG8gaGFwcGVuIGhlcmUgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1pZ2h0IGdldCBjb25zdW1lZCBieSBgY3hgXG5cbiAgICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgZmFsc2UpO1xuICAgIHJldHVybiBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcbiAgfTtcblxuICB2YXIgY3ggPSBmdW5jdGlvbiBjeCgpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjeCBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2UoY2FjaGUucmVnaXN0ZXJlZCwgY3NzLCBjbGFzc25hbWVzKGFyZ3MpKTtcbiAgfTtcblxuICB2YXIgY29udGVudCA9IHtcbiAgICBjc3M6IGNzcyxcbiAgICBjeDogY3gsXG4gICAgdGhlbWU6IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KVxuICB9O1xuICB2YXIgZWxlID0gcHJvcHMuY2hpbGRyZW4oY29udGVudCk7XG4gIGhhc1JlbmRlcmVkID0gdHJ1ZTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplZEFycjogc2VyaWFsaXplZEFyclxuICB9KSwgZWxlKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBDbGFzc05hbWVzLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25DbGFzc05hbWVzJztcbn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnOyAvLyAjMTcyNywgIzI5MDUgZm9yIHNvbWUgcmVhc29uIEplc3QgYW5kIFZpdGVzdCBldmFsdWF0ZSBtb2R1bGVzIHR3aWNlIGlmIHNvbWUgY29uc3VtaW5nIG1vZHVsZSBnZXRzIG1vY2tlZFxuXG4gIHZhciBpc1Rlc3RFbnYgPSB0eXBlb2YgamVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHZpICE9PSAndW5kZWZpbmVkJztcblxuICBpZiAoaXNCcm93c2VyICYmICFpc1Rlc3RFbnYpIHtcbiAgICAvLyBnbG9iYWxUaGlzIGhhcyB3aWRlIGJyb3dzZXIgc3VwcG9ydCAtIGh0dHBzOi8vY2FuaXVzZS5jb20vP3NlYXJjaD1nbG9iYWxUaGlzLCBOb2RlLmpzIDEyIGFuZCBsYXRlclxuICAgIHZhciBnbG9iYWxDb250ZXh0ID0gLy8gJEZsb3dJZ25vcmVcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICA6IGlzQnJvd3NlciA/IHdpbmRvdyA6IGdsb2JhbDtcbiAgICB2YXIgZ2xvYmFsS2V5ID0gXCJfX0VNT1RJT05fUkVBQ1RfXCIgKyBwa2cudmVyc2lvbi5zcGxpdCgnLicpWzBdICsgXCJfX1wiO1xuXG4gICAgaWYgKGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSkge1xuICAgICAgY29uc29sZS53YXJuKCdZb3UgYXJlIGxvYWRpbmcgQGVtb3Rpb24vcmVhY3Qgd2hlbiBpdCBpcyBhbHJlYWR5IGxvYWRlZC4gUnVubmluZyAnICsgJ211bHRpcGxlIGluc3RhbmNlcyBtYXkgY2F1c2UgcHJvYmxlbXMuIFRoaXMgY2FuIGhhcHBlbiBpZiBtdWx0aXBsZSAnICsgJ3ZlcnNpb25zIGFyZSB1c2VkLCBvciBpZiBtdWx0aXBsZSBidWlsZHMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhcmUgJyArICd1c2VkLicpO1xuICAgIH1cblxuICAgIGdsb2JhbENvbnRleHRbZ2xvYmFsS2V5XSA9IHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IHsgQ2xhc3NOYW1lcywgR2xvYmFsLCBqc3ggYXMgY3JlYXRlRWxlbWVudCwgY3NzLCBqc3gsIGtleWZyYW1lcyB9O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KShbLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE1LjIyIDQuNzUgNy44NyA3Ljc5bDQuOTYgMTEuOTYgNy4zNS0zLjA1LTQuOTYtMTEuOTV6TTExIDEwYy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6XCIsXG4gIG9wYWNpdHk6IFwiLjNcIlxufSwgXCIwXCIpLCAvKiNfX1BVUkVfXyovKDAsIF9qc3hSdW50aW1lLmpzeCkoXCJwYXRoXCIsIHtcbiAgZDogXCJtMy44NyAxMS4xOC0yLjQzIDUuODZjLS40MSAxLjAyLjA4IDIuMTkgMS4wOSAyLjYxbDEuMzQuNTZ2LTkuMDN6bTE4LjE2IDQuNzdMMTcuMDcgMy45OGMtLjMxLS43NS0xLjA0LTEuMjEtMS44MS0xLjIzLS4yNiAwLS41My4wNC0uNzkuMTVMNy4xIDUuOTVjLS43NS4zMS0xLjIxIDEuMDMtMS4yMyAxLjgtLjAxLjI3LjA0LjU0LjE1LjhsNC45NiAxMS45N2MuMzEuNzYgMS4wNSAxLjIyIDEuODMgMS4yMy4yNiAwIC41Mi0uMDUuNzctLjE1bDcuMzYtMy4wNWMxLjAyLS40MiAxLjUxLTEuNTkgMS4wOS0yLjZ6bS05LjIgMy44TDcuODcgNy43OWw3LjM1LTMuMDRoLjAxbDQuOTUgMTEuOTUtNy4zNSAzLjA1elwiXG59LCBcIjFcIiksIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcImNpcmNsZVwiLCB7XG4gIGN4OiBcIjExXCIsXG4gIGN5OiBcIjlcIixcbiAgcjogXCIxXCJcbn0sIFwiMlwiKSwgLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwibTkuMzMgMjEuNzUtMy40NS04LjM0djYuMzRjMCAxLjEuOSAyIDIgMmgxLjQ1elwiXG59LCBcIjNcIildLCAnU3R5bGVUd29Ub25lJyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcbid1c2UgY2xpZW50JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3V0aWxzLmNyZWF0ZVN2Z0ljb247XG4gIH1cbn0pO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3V0aWxzXCIpOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUeXBvZ3JhcGh5VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUeXBvZ3JhcGh5Jywgc2xvdCk7XG59XG5jb25zdCB0eXBvZ3JhcGh5Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVR5cG9ncmFwaHknLCBbJ3Jvb3QnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMicsICdib2R5MScsICdib2R5MicsICdpbmhlcml0JywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ292ZXJsaW5lJywgJ2FsaWduTGVmdCcsICdhbGlnblJpZ2h0JywgJ2FsaWduQ2VudGVyJywgJ2FsaWduSnVzdGlmeScsICdub1dyYXAnLCAnZ3V0dGVyQm90dG9tJywgJ3BhcmFncmFwaCddKTtcbmV4cG9ydCBkZWZhdWx0IHR5cG9ncmFwaHlDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFsaWduXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZ3V0dGVyQm90dG9tXCIsIFwibm9XcmFwXCIsIFwicGFyYWdyYXBoXCIsIFwidmFyaWFudFwiLCBcInZhcmlhbnRNYXBwaW5nXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfZXh0ZW5kU3hQcm9wIGFzIGV4dGVuZFN4UHJvcCB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB7IGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3R5cG9ncmFwaHlDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgYWxpZ24sXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgYGFsaWduJHtjYXBpdGFsaXplKGFsaWduKX1gLCBndXR0ZXJCb3R0b20gJiYgJ2d1dHRlckJvdHRvbScsIG5vV3JhcCAmJiAnbm9XcmFwJywgcGFyYWdyYXBoICYmICdwYXJhZ3JhcGgnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmV4cG9ydCBjb25zdCBUeXBvZ3JhcGh5Um9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVR5cG9ncmFwaHknLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2BhbGlnbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmFsaWduKX1gXSwgb3duZXJTdGF0ZS5ub1dyYXAgJiYgc3R5bGVzLm5vV3JhcCwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYgc3R5bGVzLmd1dHRlckJvdHRvbSwgb3duZXJTdGF0ZS5wYXJhZ3JhcGggJiYgc3R5bGVzLnBhcmFncmFwaF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIG1hcmdpbjogMFxufSwgb3duZXJTdGF0ZS52YXJpYW50ICYmIHRoZW1lLnR5cG9ncmFwaHlbb3duZXJTdGF0ZS52YXJpYW50XSwgb3duZXJTdGF0ZS5hbGlnbiAhPT0gJ2luaGVyaXQnICYmIHtcbiAgdGV4dEFsaWduOiBvd25lclN0YXRlLmFsaWduXG59LCBvd25lclN0YXRlLm5vV3JhcCAmJiB7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xufSwgb3duZXJTdGF0ZS5ndXR0ZXJCb3R0b20gJiYge1xuICBtYXJnaW5Cb3R0b206ICcwLjM1ZW0nXG59LCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiB7XG4gIG1hcmdpbkJvdHRvbTogMTZcbn0pKTtcbmNvbnN0IGRlZmF1bHRWYXJpYW50TWFwcGluZyA9IHtcbiAgaDE6ICdoMScsXG4gIGgyOiAnaDInLFxuICBoMzogJ2gzJyxcbiAgaDQ6ICdoNCcsXG4gIGg1OiAnaDUnLFxuICBoNjogJ2g2JyxcbiAgc3VidGl0bGUxOiAnaDYnLFxuICBzdWJ0aXRsZTI6ICdoNicsXG4gIGJvZHkxOiAncCcsXG4gIGJvZHkyOiAncCcsXG4gIGluaGVyaXQ6ICdwJ1xufTtcblxuLy8gVE9ETyB2NjogZGVwcmVjYXRlIHRoZXNlIGNvbG9yIHZhbHVlcyBpbiB2NS54IGFuZCByZW1vdmUgdGhlIHRyYW5zZm9ybWF0aW9uIGluIHY2XG5jb25zdCBjb2xvclRyYW5zZm9ybWF0aW9ucyA9IHtcbiAgcHJpbWFyeTogJ3ByaW1hcnkubWFpbicsXG4gIHRleHRQcmltYXJ5OiAndGV4dC5wcmltYXJ5JyxcbiAgc2Vjb25kYXJ5OiAnc2Vjb25kYXJ5Lm1haW4nLFxuICB0ZXh0U2Vjb25kYXJ5OiAndGV4dC5zZWNvbmRhcnknLFxuICBlcnJvcjogJ2Vycm9yLm1haW4nXG59O1xuY29uc3QgdHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyA9IGNvbG9yID0+IHtcbiAgcmV0dXJuIGNvbG9yVHJhbnNmb3JtYXRpb25zW2NvbG9yXSB8fCBjb2xvcjtcbn07XG5jb25zdCBUeXBvZ3JhcGh5ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVHlwb2dyYXBoeShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWVQcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUeXBvZ3JhcGh5J1xuICB9KTtcbiAgY29uc3QgY29sb3IgPSB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzKHRoZW1lUHJvcHMuY29sb3IpO1xuICBjb25zdCBwcm9wcyA9IGV4dGVuZFN4UHJvcChfZXh0ZW5kcyh7fSwgdGhlbWVQcm9wcywge1xuICAgIGNvbG9yXG4gIH0pKTtcbiAgY29uc3Qge1xuICAgICAgYWxpZ24gPSAnaW5oZXJpdCcsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQsXG4gICAgICBndXR0ZXJCb3R0b20gPSBmYWxzZSxcbiAgICAgIG5vV3JhcCA9IGZhbHNlLFxuICAgICAgcGFyYWdyYXBoID0gZmFsc2UsXG4gICAgICB2YXJpYW50ID0gJ2JvZHkxJyxcbiAgICAgIHZhcmlhbnRNYXBwaW5nID0gZGVmYXVsdFZhcmlhbnRNYXBwaW5nXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBhbGlnbixcbiAgICBjb2xvcixcbiAgICBjbGFzc05hbWUsXG4gICAgY29tcG9uZW50LFxuICAgIGd1dHRlckJvdHRvbSxcbiAgICBub1dyYXAsXG4gICAgcGFyYWdyYXBoLFxuICAgIHZhcmlhbnQsXG4gICAgdmFyaWFudE1hcHBpbmdcbiAgfSk7XG4gIGNvbnN0IENvbXBvbmVudCA9IGNvbXBvbmVudCB8fCAocGFyYWdyYXBoID8gJ3AnIDogdmFyaWFudE1hcHBpbmdbdmFyaWFudF0gfHwgZGVmYXVsdFZhcmlhbnRNYXBwaW5nW3ZhcmlhbnRdKSB8fCAnc3Bhbic7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFR5cG9ncmFwaHlSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IENvbXBvbmVudCxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSlcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVHlwb2dyYXBoeS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRleHQtYWxpZ24gb24gdGhlIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBhbGlnbjogUHJvcFR5cGVzLm9uZU9mKFsnY2VudGVyJywgJ2luaGVyaXQnLCAnanVzdGlmeScsICdsZWZ0JywgJ3JpZ2h0J10pLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBoYXZlIGEgYm90dG9tIG1hcmdpbi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGd1dHRlckJvdHRvbTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0ZXh0IHdpbGwgbm90IHdyYXAsIGJ1dCBpbnN0ZWFkIHdpbGwgdHJ1bmNhdGUgd2l0aCBhIHRleHQgb3ZlcmZsb3cgZWxsaXBzaXMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0ZXh0IG92ZXJmbG93IGNhbiBvbmx5IGhhcHBlbiB3aXRoIGJsb2NrIG9yIGlubGluZS1ibG9jayBsZXZlbCBlbGVtZW50c1xuICAgKiAodGhlIGVsZW1lbnQgbmVlZHMgdG8gaGF2ZSBhIHdpZHRoIGluIG9yZGVyIHRvIG92ZXJmbG93KS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG5vV3JhcDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBlbGVtZW50IHdpbGwgYmUgYSBwYXJhZ3JhcGggZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHBhcmFncmFwaDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSB0aGVtZSB0eXBvZ3JhcGh5IHN0eWxlcy5cbiAgICogQGRlZmF1bHQgJ2JvZHkxJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydib2R5MScsICdib2R5MicsICdidXR0b24nLCAnY2FwdGlvbicsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdpbmhlcml0JywgJ292ZXJsaW5lJywgJ3N1YnRpdGxlMScsICdzdWJ0aXRsZTInXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgbWFwcyB0aGUgdmFyaWFudCBwcm9wIHRvIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IEhUTUwgZWxlbWVudCB0eXBlcy5cbiAgICogRm9yIGluc3RhbmNlLCBzdWJ0aXRsZTEgdG8gYDxoNj5gLlxuICAgKiBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhhdCBtYXBwaW5nLCB5b3UgY2FuIHByb3ZpZGUgeW91ciBvd24uXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgY29tcG9uZW50YCBwcm9wLlxuICAgKiBAZGVmYXVsdCB7XG4gICAqICAgaDE6ICdoMScsXG4gICAqICAgaDI6ICdoMicsXG4gICAqICAgaDM6ICdoMycsXG4gICAqICAgaDQ6ICdoNCcsXG4gICAqICAgaDU6ICdoNScsXG4gICAqICAgaDY6ICdoNicsXG4gICAqICAgc3VidGl0bGUxOiAnaDYnLFxuICAgKiAgIHN1YnRpdGxlMjogJ2g2JyxcbiAgICogICBib2R5MTogJ3AnLFxuICAgKiAgIGJvZHkyOiAncCcsXG4gICAqICAgaW5oZXJpdDogJ3AnLFxuICAgKiB9XG4gICAqL1xuICB2YXJpYW50TWFwcGluZzogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub2JqZWN0XG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVHlwb2dyYXBoeTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpU3ZnSWNvbicsIHNsb3QpO1xufVxuY29uc3Qgc3ZnSWNvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlTdmdJY29uJywgWydyb290JywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvckFjdGlvbicsICdjb2xvckVycm9yJywgJ2NvbG9yRGlzYWJsZWQnLCAnZm9udFNpemVJbmhlcml0JywgJ2ZvbnRTaXplU21hbGwnLCAnZm9udFNpemVNZWRpdW0nLCAnZm9udFNpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IHN2Z0ljb25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJmb250U2l6ZVwiLCBcImh0bWxDb2xvclwiLCBcImluaGVyaXRWaWV3Qm94XCIsIFwidGl0bGVBY2Nlc3NcIiwgXCJ2aWV3Qm94XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vc3ZnSWNvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBmb250U2l6ZSxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBjb2xvciAhPT0gJ2luaGVyaXQnICYmIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYGZvbnRTaXplJHtjYXBpdGFsaXplKGZvbnRTaXplKX1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IFN2Z0ljb25Sb290ID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlTdmdJY29uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYGZvbnRTaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuZm9udFNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSR0cmFuc2l0aW9ucywgX3RoZW1lJHRyYW5zaXRpb25zJGNyLCBfdGhlbWUkdHJhbnNpdGlvbnMyLCBfdGhlbWUkdHlwb2dyYXBoeSwgX3RoZW1lJHR5cG9ncmFwaHkkcHhULCBfdGhlbWUkdHlwb2dyYXBoeTIsIF90aGVtZSR0eXBvZ3JhcGh5MiRweCwgX3RoZW1lJHR5cG9ncmFwaHkzLCBfdGhlbWUkdHlwb2dyYXBoeTMkcHgsIF9wYWxldHRlJG93bmVyU3RhdGUkYywgX3BhbGV0dGUsIF9wYWxldHRlMiwgX3BhbGV0dGUzO1xuICByZXR1cm4ge1xuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICB3aWR0aDogJzFlbScsXG4gICAgaGVpZ2h0OiAnMWVtJyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAvLyB0aGUgPHN2Zz4gd2lsbCBkZWZpbmUgdGhlIHByb3BlcnR5IHRoYXQgaGFzIGBjdXJyZW50Q29sb3JgXG4gICAgLy8gZS5nLiBoZXJvaWNvbnMgdXNlcyBmaWxsPVwibm9uZVwiIGFuZCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgIGZpbGw6IG93bmVyU3RhdGUuaGFzU3ZnQXNDaGlsZCA/IHVuZGVmaW5lZCA6ICdjdXJyZW50Q29sb3InLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgdHJhbnNpdGlvbjogKF90aGVtZSR0cmFuc2l0aW9ucyA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMkY3IgPSBfdGhlbWUkdHJhbnNpdGlvbnMuY3JlYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHRyYW5zaXRpb25zJGNyLmNhbGwoX3RoZW1lJHRyYW5zaXRpb25zLCAnZmlsbCcsIHtcbiAgICAgIGR1cmF0aW9uOiAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMyID0gX3RoZW1lJHRyYW5zaXRpb25zMi5kdXJhdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9uczIuc2hvcnRlclxuICAgIH0pLFxuICAgIGZvbnRTaXplOiB7XG4gICAgICBpbmhlcml0OiAnaW5oZXJpdCcsXG4gICAgICBzbWFsbDogKChfdGhlbWUkdHlwb2dyYXBoeSA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5JHB4VCA9IF90aGVtZSR0eXBvZ3JhcGh5LnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeSRweFQuY2FsbChfdGhlbWUkdHlwb2dyYXBoeSwgMjApKSB8fCAnMS4yNXJlbScsXG4gICAgICBtZWRpdW06ICgoX3RoZW1lJHR5cG9ncmFwaHkyID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkyJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkyLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTIkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTIsIDI0KSkgfHwgJzEuNXJlbScsXG4gICAgICBsYXJnZTogKChfdGhlbWUkdHlwb2dyYXBoeTMgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeTMkcHggPSBfdGhlbWUkdHlwb2dyYXBoeTMucHhUb1JlbSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0eXBvZ3JhcGh5MyRweC5jYWxsKF90aGVtZSR0eXBvZ3JhcGh5MywgMzUpKSB8fCAnMi4xODc1cmVtJ1xuICAgIH1bb3duZXJTdGF0ZS5mb250U2l6ZV0sXG4gICAgLy8gVE9ETyB2NSBkZXByZWNhdGUsIHY2IHJlbW92ZSBmb3Igc3hcbiAgICBjb2xvcjogKF9wYWxldHRlJG93bmVyU3RhdGUkYyA9IChfcGFsZXR0ZSA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZSA9IF9wYWxldHRlW293bmVyU3RhdGUuY29sb3JdKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUubWFpbikgIT0gbnVsbCA/IF9wYWxldHRlJG93bmVyU3RhdGUkYyA6IHtcbiAgICAgIGFjdGlvbjogKF9wYWxldHRlMiA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTIgPSBfcGFsZXR0ZTIuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUyLmFjdGl2ZSxcbiAgICAgIGRpc2FibGVkOiAoX3BhbGV0dGUzID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgfHwgKF9wYWxldHRlMyA9IF9wYWxldHRlMy5hY3Rpb24pID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZTMuZGlzYWJsZWQsXG4gICAgICBpbmhlcml0OiB1bmRlZmluZWRcbiAgICB9W293bmVyU3RhdGUuY29sb3JdXG4gIH07XG59KTtcbmNvbnN0IFN2Z0ljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBTdmdJY29uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlTdmdJY29uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdpbmhlcml0JyxcbiAgICAgIGNvbXBvbmVudCA9ICdzdmcnLFxuICAgICAgZm9udFNpemUgPSAnbWVkaXVtJyxcbiAgICAgIGh0bWxDb2xvcixcbiAgICAgIGluaGVyaXRWaWV3Qm94ID0gZmFsc2UsXG4gICAgICB0aXRsZUFjY2VzcyxcbiAgICAgIHZpZXdCb3ggPSAnMCAwIDI0IDI0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBoYXNTdmdBc0NoaWxkID0gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi50eXBlID09PSAnc3ZnJztcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBmb250U2l6ZSxcbiAgICBpbnN0YW5jZUZvbnRTaXplOiBpblByb3BzLmZvbnRTaXplLFxuICAgIGluaGVyaXRWaWV3Qm94LFxuICAgIHZpZXdCb3gsXG4gICAgaGFzU3ZnQXNDaGlsZFxuICB9KTtcbiAgY29uc3QgbW9yZSA9IHt9O1xuICBpZiAoIWluaGVyaXRWaWV3Qm94KSB7XG4gICAgbW9yZS52aWV3Qm94ID0gdmlld0JveDtcbiAgfVxuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoU3ZnSWNvblJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY29sb3I6IGh0bWxDb2xvcixcbiAgICBcImFyaWEtaGlkZGVuXCI6IHRpdGxlQWNjZXNzID8gdW5kZWZpbmVkIDogdHJ1ZSxcbiAgICByb2xlOiB0aXRsZUFjY2VzcyA/ICdpbWcnIDogdW5kZWZpbmVkLFxuICAgIHJlZjogcmVmXG4gIH0sIG1vcmUsIG90aGVyLCBoYXNTdmdBc0NoaWxkICYmIGNoaWxkcmVuLnByb3BzLCB7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogW2hhc1N2Z0FzQ2hpbGQgPyBjaGlsZHJlbi5wcm9wcy5jaGlsZHJlbiA6IGNoaWxkcmVuLCB0aXRsZUFjY2VzcyA/IC8qI19fUFVSRV9fKi9fanN4KFwidGl0bGVcIiwge1xuICAgICAgY2hpbGRyZW46IHRpdGxlQWNjZXNzXG4gICAgfSkgOiBudWxsXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFN2Z0ljb24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogTm9kZSBwYXNzZWQgaW50byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIFlvdSBjYW4gdXNlIHRoZSBgaHRtbENvbG9yYCBwcm9wIHRvIGFwcGx5IGEgY29sb3IgYXR0cmlidXRlIHRvIHRoZSBTVkcgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2FjdGlvbicsICdkaXNhYmxlZCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgZm9udFNpemUgYXBwbGllZCB0byB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gMjRweCwgYnV0IGNhbiBiZSBjb25maWd1cmUgdG8gaW5oZXJpdCBmb250IHNpemUuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBmb250U2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2xhcmdlJywgJ21lZGl1bScsICdzbWFsbCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQXBwbGllcyBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBodG1sQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByb290IG5vZGUgd2lsbCBpbmhlcml0IHRoZSBjdXN0b20gYGNvbXBvbmVudGAncyB2aWV3Qm94IGFuZCB0aGUgYHZpZXdCb3hgXG4gICAqIHByb3Agd2lsbCBiZSBpZ25vcmVkLlxuICAgKiBVc2VmdWwgd2hlbiB5b3Ugd2FudCB0byByZWZlcmVuY2UgYSBjdXN0b20gYGNvbXBvbmVudGAgYW5kIGhhdmUgYFN2Z0ljb25gIHBhc3MgdGhhdFxuICAgKiBgY29tcG9uZW50YCdzIHZpZXdCb3ggdG8gdGhlIHJvb3Qgbm9kZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGluaGVyaXRWaWV3Qm94OiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaGFwZS1yZW5kZXJpbmcgYXR0cmlidXRlLiBUaGUgYmVoYXZpb3Igb2YgdGhlIGRpZmZlcmVudCBvcHRpb25zIGlzIGRlc2NyaWJlZCBvbiB0aGVcbiAgICogW01ETiBXZWIgRG9jc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zaGFwZS1yZW5kZXJpbmcpLlxuICAgKiBJZiB5b3UgYXJlIGhhdmluZyBpc3N1ZXMgd2l0aCBibHVycnkgaWNvbnMgeW91IHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGlzIHByb3AuXG4gICAqL1xuICBzaGFwZVJlbmRlcmluZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgaHVtYW4tcmVhZGFibGUgdGl0bGUgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgaXQuXG4gICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkctYWNjZXNzLyNFcXVpdmFsZW50XG4gICAqL1xuICB0aXRsZUFjY2VzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gcmVkZWZpbmUgd2hhdCB0aGUgY29vcmRpbmF0ZXMgd2l0aG91dCB1bml0cyBtZWFuIGluc2lkZSBhbiBTVkcgZWxlbWVudC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBTVkcgZWxlbWVudCBpcyA1MDAgKHdpZHRoKSBieSAyMDAgKGhlaWdodCksXG4gICAqIGFuZCB5b3UgcGFzcyB2aWV3Qm94PVwiMCAwIDUwIDIwXCIsXG4gICAqIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29vcmRpbmF0ZXMgaW5zaWRlIHRoZSBTVkcgd2lsbCBnbyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIgKDAsMClcbiAgICogdG8gYm90dG9tIHJpZ2h0ICg1MCwyMCkgYW5kIGVhY2ggdW5pdCB3aWxsIGJlIHdvcnRoIDEwcHguXG4gICAqIEBkZWZhdWx0ICcwIDAgMjQgMjQnXG4gICAqL1xuICB2aWV3Qm94OiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuU3ZnSWNvbi5tdWlOYW1lID0gJ1N2Z0ljb24nO1xuZXhwb3J0IGRlZmF1bHQgU3ZnSWNvbjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFN2Z0ljb24gZnJvbSAnLi4vU3ZnSWNvbic7XG5cbi8qKlxuICogUHJpdmF0ZSBtb2R1bGUgcmVzZXJ2ZWQgZm9yIEBtdWkgcGFja2FnZXMuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdmdJY29uKHBhdGgsIGRpc3BsYXlOYW1lKSB7XG4gIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFN2Z0ljb24sIF9leHRlbmRzKHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogYCR7ZGlzcGxheU5hbWV9SWNvbmAsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogcGF0aFxuICAgIH0pKTtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIE5lZWQgdG8gc2V0IGBkaXNwbGF5TmFtZWAgb24gdGhlIGlubmVyIGNvbXBvbmVudCBmb3IgUmVhY3QubWVtby5cbiAgICAvLyBSZWFjdCBwcmlvciB0byAxNi4xNCBpZ25vcmVzIGBkaXNwbGF5TmFtZWAgb24gdGhlIHdyYXBwZXIuXG4gICAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7ZGlzcGxheU5hbWV9SWNvbmA7XG4gIH1cbiAgQ29tcG9uZW50Lm11aU5hbWUgPSBTdmdJY29uLm11aU5hbWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyggLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoQ29tcG9uZW50KSk7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVib3VuY2UgYXMgZGVib3VuY2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGRlYm91bmNlOyIsImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZUNoYWluZWRGdW5jdGlvbiBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9kZXByZWNhdGVkUHJvcFR5cGUgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZXByZWNhdGVkUHJvcFR5cGU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVwcmVjYXRlZFByb3BUeXBlKHZhbGlkYXRvciwgcmVhc29uKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cbiAgcmV0dXJuIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgJHtsb2NhdGlvbn0gXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZVNhZmV9XFxgIGlzIGRlcHJlY2F0ZWQuICR7cmVhc29ufWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9yZXF1aXJlUHJvcEZhY3RvcnkgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCByZXF1aXJlUHJvcEZhY3Rvcnk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlUHJvcEZhY3RvcnkoY29tcG9uZW50TmFtZUluRXJyb3IsIENvbXBvbmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2ZvcmJpZC1mb3JlaWduLXByb3AtdHlwZXNcbiAgY29uc3QgcHJldlByb3BUeXBlcyA9IENvbXBvbmVudCA/IF9leHRlbmRzKHt9LCBDb21wb25lbnQucHJvcFR5cGVzKSA6IG51bGw7XG4gIGNvbnN0IHJlcXVpcmVQcm9wID0gcmVxdWlyZWRQcm9wID0+IChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQ2hlY2tlciA9IHByZXZQcm9wVHlwZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZQcm9wVHlwZXNbcHJvcEZ1bGxOYW1lU2FmZV07XG4gICAgaWYgKGRlZmF1bHRUeXBlQ2hlY2tlcikge1xuICAgICAgY29uc3QgdHlwZUNoZWNrZXJSZXN1bHQgPSBkZWZhdWx0VHlwZUNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICh0eXBlQ2hlY2tlclJlc3VsdCkge1xuICAgICAgICByZXR1cm4gdHlwZUNoZWNrZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJyAmJiAhcHJvcHNbcmVxdWlyZWRQcm9wXSkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZUluRXJyb3J9XFxgIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgXFxgJHtyZXF1aXJlZFByb3B9XFxgIHByb3AuYCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICByZXR1cm4gcmVxdWlyZVByb3A7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgc2V0UmVmOyIsImltcG9ydCB7IHVuc3RhYmxlX3Vuc3VwcG9ydGVkUHJvcCBhcyB1bnN1cHBvcnRlZFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVuc3VwcG9ydGVkUHJvcDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnN1cHBvcnRlZFByb3AocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVtb3ZlIGl0LmApO1xuICB9XG4gIHJldHVybiBudWxsO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvYmFzZS9jbGFzc05hbWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYXBpdGFsaXplIH0gZnJvbSAnLi9jYXBpdGFsaXplJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVTdmdJY29uIH0gZnJvbSAnLi9jcmVhdGVTdmdJY29uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnLi9kZXByZWNhdGVkUHJvcFR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICcuL2lzTXVpRWxlbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lcldpbmRvdyB9IGZyb20gJy4vb3duZXJXaW5kb3cnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXF1aXJlUHJvcEZhY3RvcnkgfSBmcm9tICcuL3JlcXVpcmVQcm9wRmFjdG9yeSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFJlZiB9IGZyb20gJy4vc2V0UmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICcuL3VzZUVuaGFuY2VkRWZmZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlSWQgfSBmcm9tICcuL3VzZUlkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnLi91bnN1cHBvcnRlZFByb3AnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VDb250cm9sbGVkIH0gZnJvbSAnLi91c2VDb250cm9sbGVkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZvcmtSZWYgfSBmcm9tICcuL3VzZUZvcmtSZWYnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJy4vdXNlSXNGb2N1c1Zpc2libGUnO1xuLy8gVE9ETzogcmVtb3ZlIHRoaXMgZXhwb3J0IG9uY2UgQ2xhc3NOYW1lR2VuZXJhdG9yIGlzIHN0YWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciA9IHtcbiAgY29uZmlndXJlOiBnZW5lcmF0b3IgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydNVUk6IGBDbGFzc05hbWVHZW5lcmF0b3JgIGltcG9ydCBmcm9tIGBAbXVpL21hdGVyaWFsL3V0aWxzYCBpcyBvdXRkYXRlZCBhbmQgbWlnaHQgY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMuJywgJycsIFwiWW91IHNob3VsZCB1c2UgYGltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvY2xhc3NOYW1lJ2AgaW5zdGVhZFwiLCAnJywgJ1RoZSBkZXRhaWwgb2YgdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8zMDAxMSNpc3N1ZWNvbW1lbnQtMTAyNDk5MzQwMScsICcnLCAnVGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9tdWkuY29tL2d1aWRlcy9jbGFzc25hbWUtZ2VuZXJhdG9yLyddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgQ2xhc3NOYW1lR2VuZXJhdG9yLmNvbmZpZ3VyZShnZW5lcmF0b3IpO1xuICB9XG59OyIsImltcG9ydCB7IHVuc3RhYmxlX2lzTXVpRWxlbWVudCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGlzTXVpRWxlbWVudDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc011aUVsZW1lbnQoZWxlbWVudCwgbXVpTmFtZXMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJiBtdWlOYW1lcy5pbmRleE9mKGVsZW1lbnQudHlwZS5tdWlOYW1lKSAhPT0gLTE7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lckRvY3VtZW50OyIsImltcG9ydCB7IHVuc3RhYmxlX293bmVyV2luZG93IGFzIG93bmVyV2luZG93IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lcldpbmRvdzsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUNvbnRyb2xsZWQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlQ29udHJvbGxlZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IGFzIHVzZUVuaGFuY2VkRWZmZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlkIGFzIHVzZUlkIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJZDsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wic3hcIl07XG5pbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZGVmYXVsdFN4Q29uZmlnIGZyb20gJy4vZGVmYXVsdFN4Q29uZmlnJztcbmNvbnN0IHNwbGl0UHJvcHMgPSBwcm9wcyA9PiB7XG4gIHZhciBfcHJvcHMkdGhlbWUkdW5zdGFibGUsIF9wcm9wcyR0aGVtZTtcbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIHN5c3RlbVByb3BzOiB7fSxcbiAgICBvdGhlclByb3BzOiB7fVxuICB9O1xuICBjb25zdCBjb25maWcgPSAoX3Byb3BzJHRoZW1lJHVuc3RhYmxlID0gcHJvcHMgPT0gbnVsbCB8fCAoX3Byb3BzJHRoZW1lID0gcHJvcHMudGhlbWUpID09IG51bGwgPyB2b2lkIDAgOiBfcHJvcHMkdGhlbWUudW5zdGFibGVfc3hDb25maWcpICE9IG51bGwgPyBfcHJvcHMkdGhlbWUkdW5zdGFibGUgOiBkZWZhdWx0U3hDb25maWc7XG4gIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIGlmIChjb25maWdbcHJvcF0pIHtcbiAgICAgIHJlc3VsdC5zeXN0ZW1Qcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQub3RoZXJQcm9wc1twcm9wXSA9IHByb3BzW3Byb3BdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0ZW5kU3hQcm9wKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICAgIHN4OiBpblN4XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHtcbiAgICBzeXN0ZW1Qcm9wcyxcbiAgICBvdGhlclByb3BzXG4gIH0gPSBzcGxpdFByb3BzKG90aGVyKTtcbiAgbGV0IGZpbmFsU3g7XG4gIGlmIChBcnJheS5pc0FycmF5KGluU3gpKSB7XG4gICAgZmluYWxTeCA9IFtzeXN0ZW1Qcm9wcywgLi4uaW5TeF07XG4gIH0gZWxzZSBpZiAodHlwZW9mIGluU3ggPT09ICdmdW5jdGlvbicpIHtcbiAgICBmaW5hbFN4ID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluU3goLi4uYXJncyk7XG4gICAgICBpZiAoIWlzUGxhaW5PYmplY3QocmVzdWx0KSkge1xuICAgICAgICByZXR1cm4gc3lzdGVtUHJvcHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCByZXN1bHQpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgZmluYWxTeCA9IF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgaW5TeCk7XG4gIH1cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdGhlclByb3BzLCB7XG4gICAgc3g6IGZpbmFsU3hcbiAgfSk7XG59IiwiLyoqXG4gKiBTYWZlIGNoYWluZWQgZnVuY3Rpb24uXG4gKlxuICogV2lsbCBvbmx5IGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBpZiBuZWVkZWQsXG4gKiBvdGhlcndpc2Ugd2lsbCBwYXNzIGJhY2sgZXhpc3RpbmcgZnVuY3Rpb25zIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiguLi5mdW5jcykge1xuICByZXR1cm4gZnVuY3MucmVkdWNlKChhY2MsIGZ1bmMpID0+IHtcbiAgICBpZiAoZnVuYyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgICAgIGFjYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgfSwgKCkgPT4ge30pO1xufSIsIi8vIENvcnJlc3BvbmRzIHRvIDEwIGZyYW1lcyBhdCA2MCBIei5cbi8vIEEgZmV3IGJ5dGVzIHBheWxvYWQgb3ZlcmhlYWQgd2hlbiBsb2Rhc2gvZGVib3VuY2UgaXMgfjMga0IgYW5kIGRlYm91bmNlIH4zMDAgQi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQgPSAxNjYpIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIGZ1bmN0aW9uIGRlYm91bmNlZCguLi5hcmdzKSB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgfVxuICBkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9O1xuICByZXR1cm4gZGVib3VuY2VkO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSIsIid1c2UgY2xpZW50JztcblxuLyogZXNsaW50LWRpc2FibGUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MsIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwcyAqL1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ29udHJvbGxlZCh7XG4gIGNvbnRyb2xsZWQsXG4gIGRlZmF1bHQ6IGRlZmF1bHRQcm9wLFxuICBuYW1lLFxuICBzdGF0ZSA9ICd2YWx1ZSdcbn0pIHtcbiAgLy8gaXNDb250cm9sbGVkIGlzIGlnbm9yZWQgaW4gdGhlIGhvb2sgZGVwZW5kZW5jeSBsaXN0cyBhcyBpdCBzaG91bGQgbmV2ZXIgY2hhbmdlLlxuICBjb25zdCB7XG4gICAgY3VycmVudDogaXNDb250cm9sbGVkXG4gIH0gPSBSZWFjdC51c2VSZWYoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKTtcbiAgY29uc3QgW3ZhbHVlU3RhdGUsIHNldFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRQcm9wKTtcbiAgY29uc3QgdmFsdWUgPSBpc0NvbnRyb2xsZWQgPyBjb250cm9sbGVkIDogdmFsdWVTdGF0ZTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzQ29udHJvbGxlZCAhPT0gKGNvbnRyb2xsZWQgIT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogQSBjb21wb25lbnQgaXMgY2hhbmdpbmcgdGhlICR7aXNDb250cm9sbGVkID8gJycgOiAndW4nfWNvbnRyb2xsZWQgJHtzdGF0ZX0gc3RhdGUgb2YgJHtuYW1lfSB0byBiZSAke2lzQ29udHJvbGxlZCA/ICd1bicgOiAnJ31jb250cm9sbGVkLmAsICdFbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIHVuY29udHJvbGxlZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4nLCBgRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAke25hbWV9IGAgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuJywgXCJUaGUgbmF0dXJlIG9mIHRoZSBzdGF0ZSBpcyBkZXRlcm1pbmVkIGR1cmluZyB0aGUgZmlyc3QgcmVuZGVyLiBJdCdzIGNvbnNpZGVyZWQgY29udHJvbGxlZCBpZiB0aGUgdmFsdWUgaXMgbm90IGB1bmRlZmluZWRgLlwiLCAnTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cyddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbc3RhdGUsIG5hbWUsIGNvbnRyb2xsZWRdKTtcbiAgICBjb25zdCB7XG4gICAgICBjdXJyZW50OiBkZWZhdWx0VmFsdWVcbiAgICB9ID0gUmVhY3QudXNlUmVmKGRlZmF1bHRQcm9wKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKCFpc0NvbnRyb2xsZWQgJiYgZGVmYXVsdFZhbHVlICE9PSBkZWZhdWx0UHJvcCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgZGVmYXVsdCAke3N0YXRlfSBzdGF0ZSBvZiBhbiB1bmNvbnRyb2xsZWQgJHtuYW1lfSBhZnRlciBiZWluZyBpbml0aWFsaXplZC4gYCArIGBUbyBzdXBwcmVzcyB0aGlzIHdhcm5pbmcgb3B0IHRvIHVzZSBhIGNvbnRyb2xsZWQgJHtuYW1lfS5gXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfSwgW0pTT04uc3RyaW5naWZ5KGRlZmF1bHRQcm9wKV0pO1xuICB9XG4gIGNvbnN0IHNldFZhbHVlSWZVbmNvbnRyb2xsZWQgPSBSZWFjdC51c2VDYWxsYmFjayhuZXdWYWx1ZSA9PiB7XG4gICAgaWYgKCFpc0NvbnRyb2xsZWQpIHtcbiAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVJZlVuY29udHJvbGxlZF07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5sZXQgZ2xvYmFsSWQgPSAwO1xuZnVuY3Rpb24gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSkge1xuICBjb25zdCBbZGVmYXVsdElkLCBzZXREZWZhdWx0SWRdID0gUmVhY3QudXNlU3RhdGUoaWRPdmVycmlkZSk7XG4gIGNvbnN0IGlkID0gaWRPdmVycmlkZSB8fCBkZWZhdWx0SWQ7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRJZCA9PSBudWxsKSB7XG4gICAgICAvLyBGYWxsYmFjayB0byB0aGlzIGRlZmF1bHQgaWQgd2hlbiBwb3NzaWJsZS5cbiAgICAgIC8vIFVzZSB0aGUgaW5jcmVtZW50aW5nIHZhbHVlIGZvciBjbGllbnQtc2lkZSByZW5kZXJpbmcgb25seS5cbiAgICAgIC8vIFdlIGNhbid0IHVzZSBpdCBzZXJ2ZXItc2lkZS5cbiAgICAgIC8vIElmIHlvdSB3YW50IHRvIHVzZSByYW5kb20gdmFsdWVzIHBsZWFzZSBjb25zaWRlciB0aGUgQmlydGhkYXkgUHJvYmxlbTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmlydGhkYXlfcHJvYmxlbVxuICAgICAgZ2xvYmFsSWQgKz0gMTtcbiAgICAgIHNldERlZmF1bHRJZChgbXVpLSR7Z2xvYmFsSWR9YCk7XG4gICAgfVxuICB9LCBbZGVmYXVsdElkXSk7XG4gIHJldHVybiBpZDtcbn1cblxuLy8gZG93bnN0cmVhbSBidW5kbGVycyBtYXkgcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbmNhdGVuYXRpb24sIGJ1dCB3b24ndCByZW1vdmUgdG9TdHJpbmcgY2FsbCAtLSBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2lzc3Vlcy8xNDgxNFxuY29uc3QgbWF5YmVSZWFjdFVzZUlkID0gUmVhY3RbJ3VzZUlkJy50b1N0cmluZygpXTtcbi8qKlxuICpcbiAqIEBleGFtcGxlIDxkaXYgaWQ9e3VzZUlkKCl9IC8+XG4gKiBAcGFyYW0gaWRPdmVycmlkZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSWQoaWRPdmVycmlkZSkge1xuICBpZiAobWF5YmVSZWFjdFVzZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCByZWFjdElkID0gbWF5YmVSZWFjdFVzZUlkKCk7XG4gICAgcmV0dXJuIGlkT3ZlcnJpZGUgIT0gbnVsbCA/IGlkT3ZlcnJpZGUgOiByZWFjdElkO1xuICB9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcyAtLSBgUmVhY3QudXNlSWRgIGlzIGludmFyaWFudCBhdCBydW50aW1lLlxuICByZXR1cm4gdXNlR2xvYmFsSWQoaWRPdmVycmlkZSk7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhcmRNZWRpYVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQ2FyZE1lZGlhJywgc2xvdCk7XG59XG5jb25zdCBjYXJkTWVkaWFDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2FyZE1lZGlhJywgWydyb290JywgJ21lZGlhJywgJ2ltZyddKTtcbmV4cG9ydCBkZWZhdWx0IGNhcmRNZWRpYUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJpbWFnZVwiLCBcInNyY1wiLCBcInN0eWxlXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRDYXJkTWVkaWFVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2NhcmRNZWRpYUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGlzTWVkaWFDb21wb25lbnQsXG4gICAgaXNJbWFnZUNvbXBvbmVudFxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgaXNNZWRpYUNvbXBvbmVudCAmJiAnbWVkaWEnLCBpc0ltYWdlQ29tcG9uZW50ICYmICdpbWcnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldENhcmRNZWRpYVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgQ2FyZE1lZGlhUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQ2FyZE1lZGlhJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHtcbiAgICAgIGlzTWVkaWFDb21wb25lbnQsXG4gICAgICBpc0ltYWdlQ29tcG9uZW50XG4gICAgfSA9IG93bmVyU3RhdGU7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgaXNNZWRpYUNvbXBvbmVudCAmJiBzdHlsZXMubWVkaWEsIGlzSW1hZ2VDb21wb25lbnQgJiYgc3R5bGVzLmltZ107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgYmFja2dyb3VuZFNpemU6ICdjb3ZlcicsXG4gIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnLFxuICBiYWNrZ3JvdW5kUG9zaXRpb246ICdjZW50ZXInXG59LCBvd25lclN0YXRlLmlzTWVkaWFDb21wb25lbnQgJiYge1xuICB3aWR0aDogJzEwMCUnXG59LCBvd25lclN0YXRlLmlzSW1hZ2VDb21wb25lbnQgJiYge1xuICAvLyDimqDvuI8gb2JqZWN0LWZpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFMTEuXG4gIG9iamVjdEZpdDogJ2NvdmVyJ1xufSkpO1xuY29uc3QgTUVESUFfQ09NUE9ORU5UUyA9IFsndmlkZW8nLCAnYXVkaW8nLCAncGljdHVyZScsICdpZnJhbWUnLCAnaW1nJ107XG5jb25zdCBJTUFHRV9DT01QT05FTlRTID0gWydwaWN0dXJlJywgJ2ltZyddO1xuY29uc3QgQ2FyZE1lZGlhID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQ2FyZE1lZGlhKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDYXJkTWVkaWEnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgaW1hZ2UsXG4gICAgICBzcmMsXG4gICAgICBzdHlsZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBpc01lZGlhQ29tcG9uZW50ID0gTUVESUFfQ09NUE9ORU5UUy5pbmRleE9mKGNvbXBvbmVudCkgIT09IC0xO1xuICBjb25zdCBjb21wb3NlZFN0eWxlID0gIWlzTWVkaWFDb21wb25lbnQgJiYgaW1hZ2UgPyBfZXh0ZW5kcyh7XG4gICAgYmFja2dyb3VuZEltYWdlOiBgdXJsKFwiJHtpbWFnZX1cIilgXG4gIH0sIHN0eWxlKSA6IHN0eWxlO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGlzTWVkaWFDb21wb25lbnQsXG4gICAgaXNJbWFnZUNvbXBvbmVudDogSU1BR0VfQ09NUE9ORU5UUy5pbmRleE9mKGNvbXBvbmVudCkgIT09IC0xXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDYXJkTWVkaWFSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBhczogY29tcG9uZW50LFxuICAgIHJvbGU6ICFpc01lZGlhQ29tcG9uZW50ICYmIGltYWdlID8gJ2ltZycgOiB1bmRlZmluZWQsXG4gICAgcmVmOiByZWYsXG4gICAgc3R5bGU6IGNvbXBvc2VkU3R5bGUsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBzcmM6IGlzTWVkaWFDb21wb25lbnQgPyBpbWFnZSB8fCBzcmMgOiB1bmRlZmluZWRcbiAgfSwgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDYXJkTWVkaWEucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMubm9kZSwgcHJvcHMgPT4ge1xuICAgIGlmICghcHJvcHMuY2hpbGRyZW4gJiYgIXByb3BzLmltYWdlICYmICFwcm9wcy5zcmMgJiYgIXByb3BzLmNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignTVVJOiBFaXRoZXIgYGNoaWxkcmVuYCwgYGltYWdlYCwgYHNyY2Agb3IgYGNvbXBvbmVudGAgcHJvcCBtdXN0IGJlIHNwZWNpZmllZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0pLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSW1hZ2UgdG8gYmUgZGlzcGxheWVkIGFzIGEgYmFja2dyb3VuZCBpbWFnZS5cbiAgICogRWl0aGVyIGBpbWFnZWAgb3IgYHNyY2AgcHJvcCBtdXN0IGJlIHNwZWNpZmllZC5cbiAgICogTm90ZSB0aGF0IGNhbGxlciBtdXN0IHNwZWNpZnkgaGVpZ2h0IG90aGVyd2lzZSB0aGUgaW1hZ2Ugd2lsbCBub3QgYmUgdmlzaWJsZS5cbiAgICovXG4gIGltYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQW4gYWxpYXMgZm9yIGBpbWFnZWAgcHJvcGVydHkuXG4gICAqIEF2YWlsYWJsZSBvbmx5IHdpdGggbWVkaWEgY29tcG9uZW50cy5cbiAgICogTWVkaWEgY29tcG9uZW50czogYHZpZGVvYCwgYGF1ZGlvYCwgYHBpY3R1cmVgLCBgaWZyYW1lYCwgYGltZ2AuXG4gICAqL1xuICBzcmM6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENhcmRNZWRpYTsiLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBjb25maWd1cmF0aW9uIGZyb20gXCIuLi9jb25maWcuanNvblwiO1xyXG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IENhcmRNZWRpYSBmcm9tIFwiQG11aS9tYXRlcmlhbC9DYXJkTWVkaWFcIjtcclxuaW1wb3J0IFwiLi4vc3R5bGVzL0V4ZXJjaXNlTGlzdC5jc3NcIjtcclxuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeVwiO1xyXG5pbXBvcnQgU3R5bGVUd29Ub25lSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TdHlsZVR3b1RvbmVcIjtcclxuaW1wb3J0IEZBTExCQUNLX0lNQUdFIGZyb20gXCIuLi9pbWFnZXMvZGVmYXVsdF9jYXJkLnN2Z1wiO1xyXG5cclxuY29uc3QgRXhlcmNpc2VDYXJkID0gKHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uLCB0YWdzLCBzdGF0dXMgfSkgPT4ge1xyXG4gIGNvbnN0IGV4ZXJjaXNlVVJMID0gYCR7Y29uZmlndXJhdGlvbi5hY2FkZW15LmV4ZXJjaXNlcy5leGVyY2lzZV91cmx9YDtcclxuICBjb25zdCB0ZWFzZXIgPSBjb25maWd1cmF0aW9uLmFjYWRlbXkuZXhlcmNpc2VzLnRlYXNlcjtcclxuICBjb25zdCBvbk1lZGlhRmFsbGJhY2sgPSAoZXZlbnQpID0+IChldmVudC50YXJnZXQuc3JjID0gRkFMTEJBQ0tfSU1BR0UpO1xyXG5cclxuICBjb25zdCBuYXZpZ2F0ZVRvRXhlcmNpc2UgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGV4ZXJjaXNlVVJMLmludGVycG9sYXRlKHsgZXhlcmNpc2VpZDogaWQgfSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgdGFnc0xpc3QgPSBKU09OLnBhcnNlKHRhZ3MpLnRhZ3M7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT1cImV4ZXJjaXNlLWNhcmRcIlxyXG4gICAgICBzdHlsZT17e1xyXG4gICAgICAgIGJvcmRlckNvbG9yOlxyXG4gICAgICAgICAgc3RhdHVzID09PSBcIkFDVElWRVwiXHJcbiAgICAgICAgICAgID8gXCJncmVlblwiXHJcbiAgICAgICAgICAgIDogc3RhdHVzID09PSBcIklOQUNUSVZFXCJcclxuICAgICAgICAgICAgPyBcInJlZFwiXHJcbiAgICAgICAgICAgIDogXCJvcmFuZ2VcIixcclxuICAgICAgfX1cclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICBmbGV4R3JvdzogMSxcclxuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcclxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiZmxleC1zdGFydFwiLFxyXG4gICAgICAgIH19XHJcbiAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdGVUb0V4ZXJjaXNlKCl9XHJcbiAgICAgID5cclxuICAgICAgICA8Q2FyZE1lZGlhXHJcbiAgICAgICAgICBjb21wb25lbnQ9XCJpbWdcIlxyXG4gICAgICAgICAgaGVpZ2h0PVwiYXV0b1wiXHJcbiAgICAgICAgICBzdHlsZT17eyBmbGV4R3JvdzogMSB9fVxyXG4gICAgICAgICAgaW1hZ2U9e3RlYXNlci51cmwuaW50ZXJwb2xhdGUoeyBleGVyY2lzZWlkOiBpZCB9KX1cclxuICAgICAgICAgIG9uRXJyb3I9e29uTWVkaWFGYWxsYmFja31cclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZXhlcmNpc2UtaW5mby1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5XHJcbiAgICAgICAgICAgIGd1dHRlckJvdHRvbVxyXG4gICAgICAgICAgICB2YXJpYW50PVwiaDZcIlxyXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJkaXZcIlxyXG4gICAgICAgICAgICBjb2xvcj17XCJ3aGl0ZVwifVxyXG4gICAgICAgICAgICBzeD17eyB3b3JkQnJlYWs6IFwiYnJlYWstd29yZFwiIH19XHJcbiAgICAgICAgICAgIHN0eWxlPXt7IGFsaWduU2VsZjogXCJjZW50ZXJcIiwgcG9pbnRlckV2ZW50czogXCJub25lXCIgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge25hbWV9XHJcbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeVxyXG4gICAgICAgICAgICBpZD1cImV4ZXJjaXNlLWluZm9cIlxyXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cclxuICAgICAgICAgICAgdmFyaWFudD1cImg3XCJcclxuICAgICAgICAgICAgY29tcG9uZW50PVwiZGl2XCJcclxuICAgICAgICAgICAgY29sb3I9e1wid2hpdGVcIn1cclxuICAgICAgICAgICAgc3R5bGU9e3sgcG9pbnRlckV2ZW50czogXCJub25lXCIgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge2Rlc2NyaXB0aW9ufVxyXG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPENoaXBzQXJyYXkgdGFnTGlzdD17dGFnc0xpc3R9IC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IENoaXBzQXJyYXkgPSAoeyB0YWdMaXN0IH0pID0+IHtcclxuICBsZXQgY2hpcERhdGEgPSB0YWdMaXN0O1xyXG4gIGlmICghQXJyYXkuaXNBcnJheShjaGlwRGF0YSkpIHtcclxuICAgIGNoaXBEYXRhID0gY2hpcERhdGEuc3BsaXQoXCIsXCIpO1xyXG4gIH1cclxuICBjb25zdCBjaGlwc0xpc3QgPSBjaGlwRGF0YS5tYXAoKGRhdGEpID0+IChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gta2V5XHJcbiAgICA8Q2hpcFxyXG4gICAgICBrZXk9e2RhdGF9XHJcbiAgICAgIHN4PXt7IG06IDAuNSB9fVxyXG4gICAgICBpY29uPXs8U3R5bGVUd29Ub25lSWNvbiAvPn1cclxuICAgICAgY29sb3I9e1wic3VjY2Vzc1wifVxyXG4gICAgICBsYWJlbD17ZGF0YX1cclxuICAgIC8+XHJcbiAgKSk7XHJcblxyXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImV4ZXJjaXNlLXRhZy1saXN0XCI+e2NoaXBzTGlzdH08L2Rpdj47XHJcbn07XHJcblxyXG5leHBvcnQgeyBFeGVyY2lzZUNhcmQgfTtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlLCB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4uL3N0eWxlcy9FeGVyY2lzZUxpc3QuY3NzXCI7XHJcbmltcG9ydCB7IEV4ZXJjaXNlQ2FyZCB9IGZyb20gXCIuL0V4ZXJjaXNlQ2FyZFwiO1xyXG5pbXBvcnQgSG9tZXBhZ2VDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0cy9Ib21lcGFnZUNvbnRleHRcIjtcclxuXHJcbmNvbnN0IHNlcnZlckJhc2UgPSBgJHtkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbH0vLyR7ZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWV9OjcxNjRgO1xyXG5cclxuLy8gbGV0IHJvc192ZXJzaW9uXHJcblxyXG5jb25zdCBFeGVyY2lzZUxpc3QgPSAoKSA9PiB7XHJcbiAgY29uc3QgeyBnZXRTZWFyY2hCYXJUZXh0LCBnZXRGaWx0ZXJJdGVtc0xpc3QgfSA9IHVzZUNvbnRleHQoSG9tZXBhZ2VDb250ZXh0KTtcclxuICAvLyBjb25zdCBbbGlzdFN0YXRlLCBzZXRMaXN0U3RhdGVdID0gdXNlU3RhdGUoe1xyXG4gIC8vICAgbG9hZGluZzogdHJ1ZSxcclxuICAvLyAgIGV4ZXJjaXNlczogbnVsbCxcclxuICAvLyB9KTtcclxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICBjb25zdCBbZXhlcmNpc2VMaXN0LCBzZXRFeGVyY2lzZUxpc3RdID0gdXNlU3RhdGUoKTtcclxuICBjb25zdCBmaWx0ZXJUZXh0ID0gZ2V0U2VhcmNoQmFyVGV4dCgpO1xyXG5cclxuICAvLyBjb25zdCBmaWx0ZXJCeVZlcnNpb24gPSAoZGF0YSkgPT4ge1xyXG4gIC8vICAgLy8gUmVxdWVzdHMgUk9TIHZlcnNpb24gYW5kIGZpbHRlcnMgZXhlcmNpc2VzIGJ5IFJPUyB0YWdcclxuICAvLyAgIGNvbnN0IHJvc1ZlcnNpb25VUkwgPSBgJHtzZXJ2ZXJCYXNlfS9leGVyY2lzZXMvcm9zX3ZlcnNpb24vYDtcclxuICAvLyAgIGZldGNoKHJvc1ZlcnNpb25VUkwpXHJcbiAgLy8gICAgIC50aGVuKChyZXMpID0+IHJlcy5qc29uKCkpXHJcbiAgLy8gICAgIC50aGVuKChtc2cpID0+IHtcclxuICAvLyAgICAgICByb3NfdmVyc2lvbiA9IG1zZy52ZXJzaW9uO1xyXG4gIC8vICAgICAgIC8vIElmIFJPUyBpcyBpbnN0YWxsZWRcclxuICAvLyAgICAgICBpZiAoIWlzTmFOKHBhcnNlSW50KHJvc192ZXJzaW9uKSkpIHtcclxuICAvLyAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcigoZXhlcmNpc2UpID0+XHJcbiAgLy8gICAgICAgICAgIGV4ZXJjaXNlLnRhZ3MuaW5jbHVkZXMoYFJPUyR7cm9zX3ZlcnNpb259YClcclxuICAvLyAgICAgICAgICk7XHJcbiAgLy8gICAgICAgICBzZXRFeGVyY2lzZUxpc3QoZGF0YSk7XHJcbiAgLy8gICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgLy8gSWYgUk9TIGlzIG5vdCBpbnN0YWxsZWQgKGxvY2FsICsgUkFESSBkZXZlbG9wZXIpXHJcbiAgLy8gICAgICAgZWxzZSB7XHJcbiAgLy8gICAgICAgICBzZXRFeGVyY2lzZUxpc3QoZGF0YSk7XHJcbiAgLy8gICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pXHJcbiAgLy8gICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAvLyAgICAgICBzZXRFeGVyY2lzZUxpc3QoZGF0YSk7XHJcbiAgLy8gICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vIH07XHJcblxyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAvLyBzZXRMaXN0U3RhdGUoeyBsb2FkaW5nOiB0cnVlLCBleGVyY2lzZXM6IG51bGwgfSk7XHJcbiAgICBjb25zdCBhcGlVUkwgPSBgJHtzZXJ2ZXJCYXNlfS9hcGkvdjEvZXhlcmNpc2VzL2A7XHJcbiAgICBmZXRjaChhcGlVUkwpXHJcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5qc29uKCkpXHJcbiAgICAgIC50aGVuKChleGVyY2lzZXMpID0+IHtcclxuICAgICAgICAvLyBmaWx0ZXJCeVZlcnNpb24oZXhlcmNpc2VzKTtcclxuICAgICAgICBzZXRFeGVyY2lzZUxpc3QoZXhlcmNpc2VzKTtcclxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAvLyBzZXRMaXN0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZXhlcmNpc2VzOiBleGVyY2lzZXMgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH0sIFtzZXRFeGVyY2lzZUxpc3RdKTtcclxuXHJcbiAgaWYgKGxvYWRpbmcpIHtcclxuICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cImxvYWRpbmctbGlzdC1tZXNzYWdlXCI+TG9hZGluZyBleGVyY2lzZXM8L2Rpdj47XHJcbiAgfVxyXG5cclxuICBjb25zdCBmaWx0ZXJlZERhdGEgPSBleGVyY2lzZUxpc3QuZmlsdGVyKChlbCkgPT4ge1xyXG4gICAgaWYgKGZpbHRlclRleHQgPT09IFwiXCIpIHtcclxuICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZmlsdGVySXRlbXNMaXN0ID0gZ2V0RmlsdGVySXRlbXNMaXN0KCk7XHJcbiAgICAgIGZvciAodmFyIGkgaW4gZmlsdGVySXRlbXNMaXN0KSB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVySXRlbSA9IGZpbHRlckl0ZW1zTGlzdFtpXTtcclxuICAgICAgICBpZiAoZWxbZmlsdGVySXRlbV0udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJUZXh0KSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17XCJleGVyY2lzZS1saXN0XCJ9PlxyXG4gICAgICB7ZmlsdGVyZWREYXRhLm1hcCgoZXhlcmNpc2UpID0+IHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEV4ZXJjaXNlQ2FyZFxyXG4gICAgICAgICAgICBrZXk9e2V4ZXJjaXNlLmV4ZXJjaXNlX2lkfVxyXG4gICAgICAgICAgICBpZD17ZXhlcmNpc2UuZXhlcmNpc2VfaWR9XHJcbiAgICAgICAgICAgIG5hbWU9e2V4ZXJjaXNlLm5hbWV9XHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtleGVyY2lzZS5kZXNjcmlwdGlvbn1cclxuICAgICAgICAgICAgdGFncz17ZXhlcmNpc2UudGFnc31cclxuICAgICAgICAgICAgc3RhdHVzPXtleGVyY2lzZS5zdGF0dXN9XHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEV4ZXJjaXNlTGlzdDtcclxuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmNvbnN0IEhvbWVwYWdlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBIb21lcGFnZVByb3ZpZGVyKHsgY2hpbGRyZW4gfSkge1xyXG4gIGNvbnN0IFtpbnB1dFRleHQsIHNldElucHV0VGV4dF0gPSB1c2VTdGF0ZShcIlwiKTtcclxuICBjb25zdCBbZmlsdGVySXRlbXNMaXN0LCBzZXRGaWx0ZXJJdGVtc0xpc3RdID0gdXNlU3RhdGUoW1wibmFtZVwiLCBcInRhZ3NcIl0pO1xyXG5cclxuICBjb25zdCBnZXRTZWFyY2hCYXJUZXh0ID0gKCkgPT4gaW5wdXRUZXh0O1xyXG5cclxuICBjb25zdCBzZXRTZWFyY2hCYXJUZXh0ID0gKHRleHQpID0+IHtcclxuICAgIHNldElucHV0VGV4dCh0ZXh0KTtcclxuICB9O1xyXG4gIGNvbnN0IGdldEZpbHRlckl0ZW1zTGlzdCA9ICgpID0+IGZpbHRlckl0ZW1zTGlzdDtcclxuICBjb25zdCBhcHBlbmRGaWx0ZXJJdGVtID0gKGl0ZW0pID0+IHtcclxuICAgIHNldEZpbHRlckl0ZW1zTGlzdChcclxuICAgICAgZmlsdGVySXRlbXNMaXN0LmluY2x1ZGVzKGl0ZW0pXHJcbiAgICAgICAgPyBmaWx0ZXJJdGVtc0xpc3QuZmlsdGVyKChpKSA9PiBpICE9PSBpdGVtKVxyXG4gICAgICAgIDogWy4uLmZpbHRlckl0ZW1zTGlzdCwgaXRlbV1cclxuICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxIb21lcGFnZUNvbnRleHQuUHJvdmlkZXJcclxuICAgICAgdmFsdWU9e3tcclxuICAgICAgICBnZXRTZWFyY2hCYXJUZXh0LFxyXG4gICAgICAgIHNldFNlYXJjaEJhclRleHQsXHJcbiAgICAgICAgYXBwZW5kRmlsdGVySXRlbSxcclxuICAgICAgICBnZXRGaWx0ZXJJdGVtc0xpc3QsXHJcbiAgICAgIH19XHJcbiAgICA+XHJcbiAgICAgIHtjaGlsZHJlbn1cclxuICAgIDwvSG9tZXBhZ2VDb250ZXh0LlByb3ZpZGVyPlxyXG4gICk7XHJcbn1cclxuXHJcbkhvbWVwYWdlUHJvdmlkZXIucHJvcFR5cGVzID0ge1xyXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuZWxlbWVudCxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEhvbWVwYWdlQ29udGV4dDtcclxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbldpdGhSZXNldCgpIHt9XG5lbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LnJlc2V0V2FybmluZ0NhY2hlID0gZW1wdHlGdW5jdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlmIChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXG4gICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAnVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gJyArXG4gICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcbiAgICApO1xuICAgIGVyci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuICAgIHRocm93IGVycjtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rpb24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuICAgIGFycmF5OiBzaGltLFxuICAgIGJpZ2ludDogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJcyA9IHJlcXVpcmUoJ3JlYWN0LWlzJyk7XG5cbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgdmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSB0cnVlO1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShSZWFjdElzLmlzRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59IGVsc2Uge1xuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBwcm9kdWN0aW9uIGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMnKSgpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG4iLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHtcbiAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHtcbiAgICBcImRlZmF1bHRcIjogZVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm5hbWVzIjpbIkdsb2JhbCIsInciLCJwcm9wcyIsImNhY2hlIiwic3R5bGVzIiwic2VyaWFsaXplZCIsInVuZGVmaW5lZCIsIlQiLCJpIiwiX3JlZiIsInNlcmlhbGl6ZWROYW1lcyIsIm5hbWUiLCJzZXJpYWxpemVkU3R5bGVzIiwibmV4dCIsInNob3VsZENhY2hlIiwiY29tcGF0IiwicnVsZXMiLCJpbnNlcnQiLCJzaGVldCIsImtleSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibm9uY2UiLCJzaGVldFJlZiIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwic3BlZWR5IiwiaXNTcGVlZHkiLCJyZWh5ZHJhdGluZyIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0YWdzIiwibGVuZ3RoIiwiYmVmb3JlIiwic2V0QXR0cmlidXRlIiwiaHlkcmF0ZSIsImN1cnJlbnQiLCJmbHVzaCIsInNoZWV0UmVmQ3VycmVudCIsImVsZW1lbnQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJjc3MiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImtleWZyYW1lcyIsImluc2VydGFibGUiLCJhcHBseSIsImFuaW0iLCJ0b1N0cmluZyIsInRoaXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwib3BhY2l0eSIsImN4IiwiY3kiLCJyIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfdXRpbHMiLCJjcmVhdGVTdmdJY29uIiwiZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJUeXBvZ3JhcGh5Um9vdCIsInN0eWxlZCIsIm92ZXJyaWRlc1Jlc29sdmVyIiwib3duZXJTdGF0ZSIsInJvb3QiLCJ2YXJpYW50IiwiYWxpZ24iLCJjYXBpdGFsaXplIiwibm9XcmFwIiwiZ3V0dGVyQm90dG9tIiwicGFyYWdyYXBoIiwidGhlbWUiLCJtYXJnaW4iLCJ0eXBvZ3JhcGh5IiwidGV4dEFsaWduIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJ3aGl0ZVNwYWNlIiwibWFyZ2luQm90dG9tIiwiZGVmYXVsdFZhcmlhbnRNYXBwaW5nIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Iiwic3VidGl0bGUxIiwic3VidGl0bGUyIiwiYm9keTEiLCJib2R5MiIsImluaGVyaXQiLCJjb2xvclRyYW5zZm9ybWF0aW9ucyIsInByaW1hcnkiLCJ0ZXh0UHJpbWFyeSIsInNlY29uZGFyeSIsInRleHRTZWNvbmRhcnkiLCJlcnJvciIsImluUHJvcHMiLCJyZWYiLCJ0aGVtZVByb3BzIiwidXNlVGhlbWVQcm9wcyIsImNvbG9yIiwidHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyIsImV4dGVuZFN4UHJvcCIsImNsYXNzTmFtZSIsImNvbXBvbmVudCIsInZhcmlhbnRNYXBwaW5nIiwib3RoZXIiLCJDb21wb25lbnQiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJnZXRTdmdJY29uVXRpbGl0eUNsYXNzIiwiU3ZnSWNvblJvb3QiLCJmb250U2l6ZSIsIl90aGVtZSR0cmFuc2l0aW9ucyIsIl90aGVtZSR0cmFuc2l0aW9ucyRjciIsIl90aGVtZSR0cmFuc2l0aW9uczIiLCJfdGhlbWUkdHlwb2dyYXBoeSIsIl90aGVtZSR0eXBvZ3JhcGh5JHB4VCIsIl90aGVtZSR0eXBvZ3JhcGh5MiIsIl90aGVtZSR0eXBvZ3JhcGh5MiRweCIsIl90aGVtZSR0eXBvZ3JhcGh5MyIsIl90aGVtZSR0eXBvZ3JhcGh5MyRweCIsIl9wYWxldHRlJG93bmVyU3RhdGUkYyIsIl9wYWxldHRlIiwiX3BhbGV0dGUyIiwiX3BhbGV0dGUzIiwidXNlclNlbGVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiZGlzcGxheSIsImZpbGwiLCJoYXNTdmdBc0NoaWxkIiwiZmxleFNocmluayIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImNhbGwiLCJkdXJhdGlvbiIsInNob3J0ZXIiLCJzbWFsbCIsInB4VG9SZW0iLCJtZWRpdW0iLCJsYXJnZSIsInZhcnMiLCJwYWxldHRlIiwibWFpbiIsImFjdGlvbiIsImFjdGl2ZSIsImRpc2FibGVkIiwiU3ZnSWNvbiIsImNoaWxkcmVuIiwiaHRtbENvbG9yIiwiaW5oZXJpdFZpZXdCb3giLCJ0aXRsZUFjY2VzcyIsInZpZXdCb3giLCJ0eXBlIiwiaW5zdGFuY2VGb250U2l6ZSIsIm1vcmUiLCJmb2N1c2FibGUiLCJyb2xlIiwibXVpTmFtZSIsInBhdGgiLCJkaXNwbGF5TmFtZSIsInZhbGlkYXRvciIsInJlYXNvbiIsImNvbXBvbmVudE5hbWVJbkVycm9yIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJ1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IiLCJjb25maWd1cmUiLCJnZW5lcmF0b3IiLCJDbGFzc05hbWVHZW5lcmF0b3IiLCJtdWlOYW1lcyIsImluZGV4T2YiLCJzcGxpdFByb3BzIiwiX3Byb3BzJHRoZW1lJHVuc3RhYmxlIiwiX3Byb3BzJHRoZW1lIiwicmVzdWx0Iiwic3lzdGVtUHJvcHMiLCJvdGhlclByb3BzIiwiY29uZmlnIiwidW5zdGFibGVfc3hDb25maWciLCJrZXlzIiwiZm9yRWFjaCIsInByb3AiLCJzeCIsImluU3giLCJmaW5hbFN4IiwiaXNBcnJheSIsImNyZWF0ZUNoYWluZWRGdW5jdGlvbiIsImZ1bmNzIiwicmVkdWNlIiwiYWNjIiwiZnVuYyIsImRlYm91bmNlIiwid2FpdCIsInRpbWVvdXQiLCJkZWJvdW5jZWQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiY2xlYXIiLCJvd25lckRvY3VtZW50Iiwib3duZXJXaW5kb3ciLCJkZWZhdWx0VmlldyIsIndpbmRvdyIsInVzZUNvbnRyb2xsZWQiLCJjb250cm9sbGVkIiwiZGVmYXVsdFByb3AiLCJzdGF0ZSIsImlzQ29udHJvbGxlZCIsInZhbHVlU3RhdGUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwiZ2xvYmFsSWQiLCJtYXliZVJlYWN0VXNlSWQiLCJ1c2VJZCIsImlkT3ZlcnJpZGUiLCJyZWFjdElkIiwiZGVmYXVsdElkIiwic2V0RGVmYXVsdElkIiwiaWQiLCJ1c2VHbG9iYWxJZCIsImdldENhcmRNZWRpYVV0aWxpdHlDbGFzcyIsIkNhcmRNZWRpYVJvb3QiLCJpc01lZGlhQ29tcG9uZW50IiwiaXNJbWFnZUNvbXBvbmVudCIsIm1lZGlhIiwiaW1nIiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZFBvc2l0aW9uIiwib2JqZWN0Rml0IiwiTUVESUFfQ09NUE9ORU5UUyIsIklNQUdFX0NPTVBPTkVOVFMiLCJpbWFnZSIsInNyYyIsInN0eWxlIiwiY29tcG9zZWRTdHlsZSIsImJhY2tncm91bmRJbWFnZSIsIkV4ZXJjaXNlQ2FyZCIsImRlc2NyaXB0aW9uIiwic3RhdHVzIiwiZXhlcmNpc2VVUkwiLCJjb25jYXQiLCJjb25maWd1cmF0aW9uIiwidGVhc2VyIiwidGFnc0xpc3QiLCJKU09OIiwicGFyc2UiLCJfanN4IiwiYm9yZGVyQ29sb3IiLCJfanN4cyIsImZsZXhHcm93IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJvbkNsaWNrIiwiaHJlZiIsImludGVycG9sYXRlIiwiZXhlcmNpc2VpZCIsIkNhcmRNZWRpYSIsInVybCIsIm9uRXJyb3IiLCJldmVudCIsInRhcmdldCIsIkZBTExCQUNLX0lNQUdFIiwiVHlwb2dyYXBoeSIsIndvcmRCcmVhayIsImFsaWduU2VsZiIsInBvaW50ZXJFdmVudHMiLCJDaGlwc0FycmF5IiwidGFnTGlzdCIsIl9yZWYyIiwiY2hpcERhdGEiLCJzcGxpdCIsImNoaXBzTGlzdCIsIm1hcCIsImRhdGEiLCJDaGlwIiwibSIsImljb24iLCJTdHlsZVR3b1RvbmVJY29uIiwibGFiZWwiLCJzZXJ2ZXJCYXNlIiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIl91c2VDb250ZXh0IiwidXNlQ29udGV4dCIsIkhvbWVwYWdlQ29udGV4dCIsImdldFNlYXJjaEJhclRleHQiLCJnZXRGaWx0ZXJJdGVtc0xpc3QiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJ1c2VTdGF0ZSIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNCIsImV4ZXJjaXNlTGlzdCIsInNldEV4ZXJjaXNlTGlzdCIsImZpbHRlclRleHQiLCJ1c2VFZmZlY3QiLCJhcGlVUkwiLCJmZXRjaCIsInRoZW4iLCJyZXMiLCJqc29uIiwiZXhlcmNpc2VzIiwiZmlsdGVyZWREYXRhIiwiZmlsdGVyIiwiZWwiLCJmaWx0ZXJJdGVtc0xpc3QiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZXhlcmNpc2UiLCJleGVyY2lzZV9pZCIsImNyZWF0ZUNvbnRleHQiLCJIb21lcGFnZVByb3ZpZGVyIiwiaW5wdXRUZXh0Iiwic2V0SW5wdXRUZXh0Iiwic2V0RmlsdGVySXRlbXNMaXN0IiwiUHJvdmlkZXIiLCJzZXRTZWFyY2hCYXJUZXh0IiwidGV4dCIsImFwcGVuZEZpbHRlckl0ZW0iLCJpdGVtIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwic2hpbSIsInNlY3JldCIsImVyciIsIkVycm9yIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZSIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7113.bf301aeb.js b/react_frontend/static/react_frontend/js/7113.bf301aeb.js new file mode 100644 index 000000000..4185c4638 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7113.bf301aeb.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7113],{7113:(e,a,t)=>{function n(e){var a,t=document.getElementById("gui_canvas_right"),n=JSON.parse(e.image_right),g=(a=n.image_right,decodeURIComponent(escape(a))),r=n.shape_right;""!=g&&r instanceof Array&&(t.src="data:image/jpeg;base64,"+g,t.width=r[1],t.height=r[0])}function g(e){var a,t=document.getElementById("gui_canvas_left"),n=JSON.parse(e.image_left),g=(a=n.image_left,decodeURIComponent(escape(a))),r=n.shape_left;""!=g&&r instanceof Array&&(t.src="data:image/jpeg;base64,"+g,t.width=r[1],t.height=r[0])}t.r(a),t.d(a,{drawImage:()=>n,drawLeftImage:()=>g}),new Image,new Image}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzExMy5lNzQyNDU1OS5qcyIsIm1hcHBpbmdzIjoiZ0hBUU8sU0FBU0EsRUFBVUMsR0FDeEIsSUFHcUJDLEVBSGpCQyxFQUFTQyxTQUFTQyxlQUFlLG9CQVFqQ0MsRUFBYUMsS0FBS0MsTUFBTVAsRUFBS1EsYUFDL0JDLEdBTm1CUixFQU1FSSxFQUFXRyxZQUx2QkUsbUJBQW1CQyxPQUFPVixLQU1uQ1csRUFBUVAsRUFBV1EsWUFFUCxJQUFWSixHQUFnQkcsYUFBaUJFLFFBQ25DWixFQUFPYSxJQUFNLDBCQUE0Qk4sRUFDekNQLEVBQU9jLE1BQVFKLEVBQU0sR0FDckJWLEVBQU9lLE9BQVNMLEVBQU0sR0FFMUIsQ0FFTyxTQUFTTSxFQUFjbEIsR0FDNUIsSUFHcUJDLEVBSGpCQyxFQUFTQyxTQUFTQyxlQUFlLG1CQVFqQ0MsRUFBYUMsS0FBS0MsTUFBTVAsRUFBS21CLFlBQy9CVixHQU5tQlIsRUFNRUksRUFBV2MsV0FMdkJULG1CQUFtQkMsT0FBT1YsS0FNbkNXLEVBQVFQLEVBQVdlLFdBRVAsSUFBVlgsR0FBZ0JHLGFBQWlCRSxRQUNuQ1osRUFBT2EsSUFBTSwwQkFBNEJOLEVBQ3pDUCxFQUFPYyxNQUFRSixFQUFNLEdBQ3JCVixFQUFPZSxPQUFTTCxFQUFNLEdBRTFCLEMsb0RBekNrQixJQUFJUyxNQUNMLElBQUlBLEsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9mb2xsb3dfcm9hZC9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc0ZvbGxvd1JvYWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7XHJcbn1cclxuXHJcbmxldCBpbWFnZV9yaWdodCA9IG5ldyBJbWFnZSgpO1xyXG5sZXQgaW1hZ2VfbGVmdCA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZShkYXRhKSB7XHJcbiAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX3JpZ2h0KSxcclxuICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfcmlnaHQpLFxyXG4gICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlX3JpZ2h0O1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMZWZ0SW1hZ2UoZGF0YSkge1xyXG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKTtcclxuXHJcbiAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gIGZ1bmN0aW9uIGRlY29kZV91dGY4KHMpIHtcclxuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbiAgfVxyXG5cclxuICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZV9sZWZ0O1xyXG5cclxuICBpZiAoc291cmNlICE9IFwiXCIgJiYgc2hhcGUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgY2FudmFzLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOlsiZHJhd0ltYWdlIiwiZGF0YSIsInMiLCJjYW52YXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsImltYWdlX3JpZ2h0Iiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJzaGFwZV9yaWdodCIsIkFycmF5Iiwic3JjIiwid2lkdGgiLCJoZWlnaHQiLCJkcmF3TGVmdEltYWdlIiwiaW1hZ2VfbGVmdCIsInNoYXBlX2xlZnQiLCJJbWFnZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7115.e34bdb96.js b/react_frontend/static/react_frontend/js/7115.e34bdb96.js new file mode 100644 index 000000000..8d64cfb30 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7115.e34bdb96.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7115],{7115:(e,a,n)=>{n.r(a),n.d(a,{drawImage:()=>r});var t=new Image;function r(e){var a=document.getElementById("gui_canvas_right"),n=a.getContext("2d");function r(){window.requestAnimationFrame(r),n.drawImage(t,0,0)}t.onload=function(){r()};var d,i=JSON.parse(e.image),o=(d=i.image,decodeURIComponent(escape(d))),c=i.shape;""!=o&&(t.src="data:image/jpeg;base64,"+o,a.width=c[1],a.height=c[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzExNS4yNGY2ZjZmOS5qcyIsIm1hcHBpbmdzIjoiZ0pBS0EsSUFBSUEsRUFBUSxJQUFJQyxNQUdULFNBQVNDLEVBQVdDLEdBQ3ZCLElBQUlDLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0xDLE9BQU9DLHNCQUFzQkYsR0FDN0JGLEVBQVFMLFVBQVVGLEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNWSxPQUFTLFdBQ1hILEdBQ0osRUFTQSxJQXZCaUJJLEVBdUJiQyxFQUFhQyxLQUFLQyxNQUFNYixFQUFLSCxPQUM3QmlCLEdBeEJhSixFQXdCUUMsRUFBV2QsTUF2QjdCa0IsbUJBQW1CQyxPQUFPTixLQXdCN0JPLEVBQVFOLEVBQVdNLE1BRVYsSUFBVkgsSUFDQ2pCLEVBQU1xQixJQUFNLDBCQUE0QkosRUFDeENiLEVBQU9rQixNQUFRRixFQUFNLEdBQ3JCaEIsRUFBT21CLE9BQVNILEVBQU0sR0FFOUIsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21vbnRlY2FybG9fdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlTW9udGVjYXJsby5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzX3JpZ2h0XCIpLFxyXG4gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcblxyXG4gICAgLy8gRm9yIGltYWdlIG9iamVjdFxyXG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICB1cGRhdGVfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfaW1hZ2UoKXtcclxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZV9pbWFnZSk7XHJcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xyXG4gICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2Uuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG5cclxuICAgIFxyXG4iXSwibmFtZXMiOlsiaW1hZ2UiLCJJbWFnZSIsImRyYXdJbWFnZSIsImRhdGEiLCJjYW52YXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY29udGV4dCIsImdldENvbnRleHQiLCJ1cGRhdGVfaW1hZ2UiLCJ3aW5kb3ciLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJvbmxvYWQiLCJzIiwiaW1hZ2VfZGF0YSIsIkpTT04iLCJwYXJzZSIsInNvdXJjZSIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsInNoYXBlIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7144.8a23c76e.js b/react_frontend/static/react_frontend/js/7144.8a23c76e.js new file mode 100644 index 000000000..94083c69e --- /dev/null +++ b/react_frontend/static/react_frontend/js/7144.8a23c76e.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7144],{7144:(e,t,o)=>{o.r(t),o.d(t,{decode_utf8:()=>i,get_inner_size:()=>d,get_novnc_size:()=>r,get_novnc_size_react:()=>n,saveCode:()=>a});var d=function(e){var t=getComputedStyle(e),o=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),d=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),n=parseFloat(t.borderLeftWidth)+parseFloat(t.borderRightWidth),r=parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),a=e.offsetWidth-o-n,i=e.offsetHeight-d-r;return{width:Math.floor(a),height:Math.floor(i)}},n=function(){var e=getComputedStyle(document.getElementById("iframe")).width,t=getComputedStyle(document.getElementById("iframe")).height;return{width:parseInt(e,10),height:parseInt(t,10)}},r=function(){var e=d(document.getElementById("iframe"));return{width:e.width||document.body.clientWidth,height:Math.floor(.5*e.height)||document.body.clientHeight}},a=function(e,t){var o=new Blob([t],{type:"text/plain; charset=utf-8"}),d=document.createElement("a"),n=URL.createObjectURL(o);d.href=n,d.download=e+".py",document.body.appendChild(d),d.click(),setTimeout((function(){document.body.removeChild(d),window.URL.revokeObjectURL(n)}),0)},i=function(e){return decodeURIComponent(escape(e))}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzE0NC40ZThlYzM3Zi5qcyIsIm1hcHBpbmdzIjoic09BQU8sSUFBTUEsRUFBaUIsU0FBQ0MsR0FDN0IsSUFBTUMsRUFBS0MsaUJBQWlCRixHQUN0QkcsRUFBWUMsV0FBV0gsRUFBR0ksYUFBZUQsV0FBV0gsRUFBR0ssY0FDdkRDLEVBQVlILFdBQVdILEVBQUdPLFlBQWNKLFdBQVdILEVBQUdRLGVBRXREQyxFQUNKTixXQUFXSCxFQUFHVSxpQkFBbUJQLFdBQVdILEVBQUdXLGtCQUMzQ0MsRUFDSlQsV0FBV0gsRUFBR2EsZ0JBQWtCVixXQUFXSCxFQUFHYyxtQkFHMUNDLEVBQVFoQixFQUFRaUIsWUFBY2QsRUFBWU8sRUFDMUNRLEVBQVNsQixFQUFRbUIsYUFBZVosRUFBWU0sRUFFbEQsTUFBTyxDQUFFRyxNQUFPSSxLQUFLQyxNQUFNTCxHQUFRRSxPQUFRRSxLQUFLQyxNQUFNSCxHQUN4RCxFQUVhSSxFQUF1QixXQUNsQyxJQUFNTixFQUFRZCxpQkFBaUJxQixTQUFTQyxlQUFlLFdBQVdSLE1BQzVERSxFQUFTaEIsaUJBQWlCcUIsU0FBU0MsZUFBZSxXQUFXTixPQUNuRSxNQUFPLENBQUVGLE1BQU9TLFNBQVNULEVBQU8sSUFBS0UsT0FBUU8sU0FBU1AsRUFBUSxJQUNoRSxFQUNhUSxFQUFpQixXQUM1QixJQUFNQyxFQUFhNUIsRUFBZXdCLFNBQVNDLGVBQWUsV0FLMUQsTUFBTyxDQUFFUixNQUpLVyxFQUFXWCxPQUFTTyxTQUFTSyxLQUFLQyxZQUl6QlgsT0FEckJFLEtBQUtDLE1BQU0sR0FBTU0sRUFBV1QsU0FBV0ssU0FBU0ssS0FBS0UsYUFFekQsRUFFYUMsRUFBVyxTQUFDQyxFQUFVQyxHQUNqQyxJQUFNQyxFQUFPLElBQUlDLEtBQUssQ0FBQ0YsR0FBYyxDQUFFRyxLQUFNLDhCQUN2Q0MsRUFBSWQsU0FBU2UsY0FBYyxLQUMvQkMsRUFBTUMsSUFBSUMsZ0JBQWdCUCxHQUM1QkcsRUFBRUssS0FBT0gsRUFDVEYsRUFBRU0sU0FBV1gsRUFBVyxNQUN4QlQsU0FBU0ssS0FBS2dCLFlBQVlQLEdBQzFCQSxFQUFFUSxRQUNGQyxZQUFXLFdBQ1R2QixTQUFTSyxLQUFLbUIsWUFBWVYsR0FDMUJXLE9BQU9SLElBQUlTLGdCQUFnQlYsRUFDN0IsR0FBRyxFQUNMLEVBRWFXLEVBQWMsU0FBQ0MsR0FDMUIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNuQyxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvaGVscGVycy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZ2V0X2lubmVyX3NpemUgPSAoZWxlbWVudCkgPT4ge1xyXG4gIGNvbnN0IGNzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcclxuICBjb25zdCBwYWRkaW5nX3ggPSBwYXJzZUZsb2F0KGNzLnBhZGRpbmdMZWZ0KSArIHBhcnNlRmxvYXQoY3MucGFkZGluZ1JpZ2h0KTtcclxuICBjb25zdCBwYWRkaW5nX3kgPSBwYXJzZUZsb2F0KGNzLnBhZGRpbmdUb3ApICsgcGFyc2VGbG9hdChjcy5wYWRkaW5nQm90dG9tKTtcclxuXHJcbiAgY29uc3QgYm9yZGVyX3ggPVxyXG4gICAgcGFyc2VGbG9hdChjcy5ib3JkZXJMZWZ0V2lkdGgpICsgcGFyc2VGbG9hdChjcy5ib3JkZXJSaWdodFdpZHRoKTtcclxuICBjb25zdCBib3JkZXJfeSA9XHJcbiAgICBwYXJzZUZsb2F0KGNzLmJvcmRlclRvcFdpZHRoKSArIHBhcnNlRmxvYXQoY3MuYm9yZGVyQm90dG9tV2lkdGgpO1xyXG5cclxuICAvLyBFbGVtZW50IHdpZHRoIGFuZCBoZWlnaHQgbWludXMgcGFkZGluZyBhbmQgYm9yZGVyXHJcbiAgY29uc3Qgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoIC0gcGFkZGluZ194IC0gYm9yZGVyX3g7XHJcbiAgY29uc3QgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgLSBwYWRkaW5nX3kgLSBib3JkZXJfeTtcclxuXHJcbiAgcmV0dXJuIHsgd2lkdGg6IE1hdGguZmxvb3Iod2lkdGgpLCBoZWlnaHQ6IE1hdGguZmxvb3IoaGVpZ2h0KSB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldF9ub3ZuY19zaXplX3JlYWN0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHdpZHRoID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlmcmFtZVwiKSkud2lkdGg7XHJcbiAgY29uc3QgaGVpZ2h0ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlmcmFtZVwiKSkuaGVpZ2h0O1xyXG4gIHJldHVybiB7IHdpZHRoOiBwYXJzZUludCh3aWR0aCwgMTApLCBoZWlnaHQ6IHBhcnNlSW50KGhlaWdodCwgMTApIH07XHJcbn07XHJcbmV4cG9ydCBjb25zdCBnZXRfbm92bmNfc2l6ZSA9ICgpID0+IHtcclxuICBjb25zdCBpbm5lcl9zaXplID0gZ2V0X2lubmVyX3NpemUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJpZnJhbWVcIikpO1xyXG4gIGNvbnN0IHdpZHRoID0gaW5uZXJfc2l6ZS53aWR0aCB8fCBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xyXG4gIC8vIFNpbmNlIG9ubHkgNTAlIG9mIGhlaWdodCBpcyB1c2VkIGZvciBnYXplYm8gaWZyYW1lXHJcbiAgY29uc3QgaGVpZ2h0ID1cclxuICAgIE1hdGguZmxvb3IoMC41ICogaW5uZXJfc2l6ZS5oZWlnaHQpIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xyXG4gIHJldHVybiB7IHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHQgfTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzYXZlQ29kZSA9IChmaWxlTmFtZSwgcHl0aG9uX2NvZGUpID0+IHtcclxuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3B5dGhvbl9jb2RlXSwgeyB0eXBlOiBcInRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLThcIiB9KTtcclxuICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIiksXHJcbiAgICB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gIGEuaHJlZiA9IHVybDtcclxuICBhLmRvd25sb2FkID0gZmlsZU5hbWUgKyBcIi5weVwiO1xyXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgYS5jbGljaygpO1xyXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcclxuICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgfSwgMCk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZGVjb2RlX3V0ZjggPSAocykgPT4ge1xyXG4gIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKTtcclxufTtcclxuIl0sIm5hbWVzIjpbImdldF9pbm5lcl9zaXplIiwiZWxlbWVudCIsImNzIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInBhZGRpbmdfeCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdfeSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyX3giLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyX3kiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwid2lkdGgiLCJvZmZzZXRXaWR0aCIsImhlaWdodCIsIm9mZnNldEhlaWdodCIsIk1hdGgiLCJmbG9vciIsImdldF9ub3ZuY19zaXplX3JlYWN0IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInBhcnNlSW50IiwiZ2V0X25vdm5jX3NpemUiLCJpbm5lcl9zaXplIiwiYm9keSIsImNsaWVudFdpZHRoIiwiY2xpZW50SGVpZ2h0Iiwic2F2ZUNvZGUiLCJmaWxlTmFtZSIsInB5dGhvbl9jb2RlIiwiYmxvYiIsIkJsb2IiLCJ0eXBlIiwiYSIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJhcHBlbmRDaGlsZCIsImNsaWNrIiwic2V0VGltZW91dCIsInJlbW92ZUNoaWxkIiwid2luZG93IiwicmV2b2tlT2JqZWN0VVJMIiwiZGVjb2RlX3V0ZjgiLCJzIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/718.0bc4fcbb.js b/react_frontend/static/react_frontend/js/718.0bc4fcbb.js new file mode 100644 index 000000000..4abb87437 --- /dev/null +++ b/react_frontend/static/react_frontend/js/718.0bc4fcbb.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[718],{718:(n,r,e)=>{e.r(r),e.d(r,{StopCar:()=>s});var t=e(1224),o=e(6540),a=e(4848);function i(n,r){(null==r||r>n.length)&&(r=n.length);for(var e=0,t=Array(r);e{s.r(t),s.d(t,{default:()=>i}),s(6540);var r=s(4481),n=s(1919),l=s(2078),o=s(4848);const i=function(e){var t=e.editorSettings,s=e.dispatch,i=e.editorRef,a=t.isModalOpen,c=(t.isCodeFormatEnable,t.isZoomingEnable,t.modalScreenState,new KeyboardEvent("keydown",{key:"s",ctrlKey:!0,bubbles:!0}));return(0,o.jsxs)(o.Fragment,{children:[a&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"w-full h-full absolute left-0 right-0 z-[99] ",style:{background:"rgba(0, 0, 0, 0.02)",filter:"blur(2px)",backdropFilter:"blur(2px)"}}),(0,o.jsxs)("div",{className:"flex absolute w-[400px] h-[250px] left-[50%] top-[50%] bg-[#2D2D2D] rounded-xl -translate-x-[50%] -translate-y-[50%] z-[100]",style:{border:"1px solid #464646"},children:[(0,o.jsx)(n.default,{dispatch:s,editorSettings:t}),(0,o.jsx)(l.default,{editorSettings:t,dispatch:s})]})]}),(0,o.jsx)(r.default,{editorSettings:t,dispatch:s,handleFontZoom:function(e){var t=i.current.getOption(monaco.editor.EditorOption.fontSize);"up"===e?i.current.updateOptions({fontSize:Math.min(100,t+1)}):i.current.updateOptions({fontSize:Math.max(10,t-1)})},handleFormatCode:function(){i.current.getDomNode().dispatchEvent(c)}})]})}},4481:(e,t,s)=>{s.r(t),s.d(t,{default:()=>l}),s(6540);var r=s(4075),n=s(4848);const l=function(e){var t=e.editorSettings,s=e.dispatch,l=e.handleFontZoom,o=e.handleFormatCode,i=t.isModalOpen,a=t.isCodeFormatEnable,c=t.isZoomingEnable;return(0,n.jsxs)("div",{className:"absolute bottom-3 right-3 flex justify-between items-center gap-1 h-9 bg-[#2D2D2D] rounded-full border-[#464646] border-[1px] ".concat(a||c?"px-[4px]":"px-[2px] w-[36px]"," duration-300 select-none"),style:{zIndex:"10"},children:[c&&(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsxs)("div",{className:"flex justify-center items-center h-7 rounded-full cursor-pointer gap-0.5",children:[(0,n.jsx)("div",{className:"flex justify-center items-center w-[30px] h-7 bg-[#474747] rounded-tl-full rounded-bl-full duration-100 ",onClick:function(){return l("up")},title:"Zoom In",children:(0,n.jsx)(r.ZoomInIcon,{cssClass:""})}),(0,n.jsx)("div",{className:"flex justify-center items-center w-[30px] h-7 bg-[#474747] rounded-tr-full rounded-br-full duration-100 ",onClick:function(){return l("down")},title:"Zoom Out",children:(0,n.jsx)(r.ZoomOutIcon,{cssClass:""})})]}),(0,n.jsx)("div",{className:"h-6 w-[2px] bg-[#464646]"})]}),a&&(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("div",{className:"flex justify-center items-center w-7 h-7 rounded-full hover:bg-[#474747] duration-100 cursor-pointer",onClick:function(){return o()},title:"Format Code",children:(0,n.jsx)(r.AlignIcon,{cssClass:""})}),(0,n.jsx)("div",{className:"h-6 w-[2px] bg-[#464646]"})]}),(0,n.jsx)("div",{className:"flex justify-center items-center w-7 h-7 rounded-full hover:bg-[#474747] duration-100 cursor-pointer",onClick:function(){return s({type:"changeSettingsModalState",payload:{isModalOpen:!i}})},title:"More Info",children:(0,n.jsx)(r.InfoIcon,{cssClass:""})})]})}},2078:(e,t,s)=>{s.r(t),s.d(t,{default:()=>i}),s(6540);var r=s(4075),n=s(4848),l=[{title:"Code Format",keys:["ctrl","s"]},{title:"Font Size",keys:["ctrl","wheel"]}],o=[{title:"Font Size",id:"isZoomingEnable"},{title:"Code Format",id:"isCodeFormatEnable"}];const i=function(e){var t=e.editorSettings,s=e.dispatch,i=t.isModalOpen,a=t.modalScreenState,c=t.isCodeFormatEnable,d=t.isZoomingEnable;return(0,n.jsxs)("div",{className:"flex flex-col w-[calc(400px-120px)] h-full select-none",children:[(0,n.jsx)("div",{className:"absolute top-1 right-1 flex justify-center items-center w-7 h-7 hover:bg-[#393939] rounded-full duration-100 cursor-pointer",onClick:function(){return s({type:"changeSettingsModalState",payload:{isModalOpen:!i}})},children:(0,n.jsx)(r.CloseIcon,{cssClass:""})}),(0,n.jsxs)("div",{className:"w-full h-full pt-10 items-center px-6",children:["shortcuts"===a&&(0,n.jsx)("div",{className:"w-full flex flex-col items-start gap-5",children:l.map((function(e,t){return(0,n.jsxs)("div",{className:"w-full flex items-start justify-between text-sm text-[#fcfcfc]",children:[(0,n.jsx)("div",{className:"",children:e.title}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"bg-[#383838] px-2 xpy-[1px] rounded-md border-[1px] border-[#636363]",children:e.keys[0]}),"+",(0,n.jsx)("span",{className:"bg-[#383838] px-2 xpy-[1px] rounded-md border-[1px] border-[#636363]",children:e.keys[1]})]})]},t)}))}),"widgets"===a&&(0,n.jsx)("div",{className:"w-full flex flex-col justify-between gap-5",children:o.map((function(e,t){return(0,n.jsxs)("div",{className:"w-full flex items-start justify-between text-sm text-[#fcfcfc]",children:[(0,n.jsx)("div",{className:"",children:e.title}),(0,n.jsxs)("label",{className:"inline-flex items-center cursor-pointer",children:[(0,n.jsx)("input",{type:"checkbox",value:"isCodeFormatEnable"===e.id?"isCodeFormatEnable":"isZoomingEnable",className:"sr-only peer",checked:"isCodeFormatEnable"===e.id?c:d,onChange:function(e){return function(e){var t=e.target.value;s({type:t})}(e)}}),(0,n.jsx)("div",{className:"relative w-9 h-5 bg-[#383838] rounded-full peer peer-focus:ring-1 peer-focus:ring-[#636363] peer-checked:after:translate-x-full rtl:peer-checked:after:-translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-0.5 after:start-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-4 after:w-4 after:transition-all dark:border-gray-600 peer-checked:bg-[#FFA726]"})]})]},t)}))})]})]})}},1919:(e,t,s)=>{s.r(t),s.d(t,{default:()=>l}),s(6540);var r=s(4075),n=s(4848);const l=function(e){var t=e.editorSettings,s=e.dispatch,l=t.modalScreenState;return(0,n.jsxs)("div",{className:"flex flex-col items-center justify-start pt-10 gap-2 w-[120px] h-full bg-[#383838] rounded-xl select-none",children:[(0,n.jsxs)("div",{className:"flex items-center justify-center gap-1 w-[100px] h-7 rounded-full cursor-pointer ".concat("shortcuts"===l?"bg-[#FFA726]":""),onClick:function(){return s({type:"changeModalScreenState",payload:{screen:"shortcuts"}})},children:[(0,n.jsx)(r.KeyboardIcon,{cssClass:""}),(0,n.jsx)("span",{className:"text-[#fcfcfc] text-sm",children:"shortcuts"})]}),(0,n.jsxs)("div",{className:"flex items-center justify-center gap-1 w-[100px] h-7 rounded-full cursor-pointer ".concat("widgets"===l?"bg-[#FFA726]":""),onClick:function(){return s({type:"changeModalScreenState",payload:{screen:"widgets"}})},children:[(0,n.jsx)(r.WidgetsIcon,{cssClass:""}),(0,n.jsx)("span",{className:"text-[#fcfcfc] text-sm",children:"widgets"})]})]})}},4075:(e,t,s)=>{s.r(t),s.d(t,{AlignIcon:()=>o,CloseIcon:()=>a,InfoIcon:()=>i,KeyboardIcon:()=>c,WidgetsIcon:()=>d,ZoomInIcon:()=>l,ZoomOutIcon:()=>n});var r=s(4848),n=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M268.02-444q-15.02 0-25.52-10.29t-10.5-25.5q0-15.21 10.35-25.71T268-516h423.98q15.02 0 25.52 10.29t10.5 25.5q0 15.21-10.35 25.71T692-444H268.02Z"})})},l=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M444-444H240v-72h204v-204h72v204h204v72H516v204h-72v-204Z"})})},o=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M144-144v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Zm0-150v-72h480v72H144Zm0-150v-72h672v72H144Z"})})},i=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#DAA520",children:(0,r.jsx)("path",{d:"M444-288h72v-240h-72v240Zm35.79-312q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm.49 504Q401-96 331-126t-122.5-82.5Q156-261 126-330.96t-30-149.5Q96-560 126-629.5q30-69.5 82.5-122T330.96-834q69.96-30 149.5-30t149.04 30q69.5 30 122 82.5T834-629.28q30 69.73 30 149Q864-401 834-331t-82.5 122.5Q699-156 629.28-126q-69.73 30-149 30Zm-.28-72q130 0 221-91t91-221q0-130-91-221t-221-91q-130 0-221 91t-91 221q0 130 91 221t221 91Zm0-312Z"})})},a=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#898989",children:(0,r.jsx)("path",{d:"m291-240-51-51 189-189-189-189 51-51 189 189 189-189 51 51-189 189 189 189-51 51-189-189-189 189Z"})})},c=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,r.jsx)("path",{d:"M168-240q-29.7 0-50.85-21.15Q96-282.3 96-312v-336q0-29.7 21.15-50.85Q138.3-720 168-720h624q29.7 0 50.85 21.15Q864-677.7 864-648v336q0 29.7-21.15 50.85Q821.7-240 792-240H168Zm0-72h624v-336H168v336Zm203.96-24h215.76q15.28 0 25.78-10.29 10.5-10.29 10.5-25.5t-10.34-25.71Q603.32-408 588.04-408H372.28q-15.28 0-25.78 10.29-10.5 10.29-10.5 25.5t10.34 25.71q10.34 10.5 25.62 10.5ZM168-312v-336 336Zm107.79-240q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm-408 96q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Zm102 0q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z"})})},d=function(e){return e.cssClass,(0,r.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"20px",viewBox:"0 -960 960 960",width:"20px",fill:"#fcfcfc",children:(0,r.jsx)("path",{d:"M610-458 457.39-611q-5.39-5.4-7.89-11.7-2.5-6.3-2.5-13.5t2.5-13.5Q452-656 457-661l153-153q5-5 12-8t14.2-3q7.2 0 13.5 3t11.3 8l152.61 153q5.39 5.4 7.89 11.7 2.5 6.3 2.5 13.5t-2.5 13.5Q819-616 814-611L661-458q-5 5-11.3 8-6.3 3-13.5 3t-14.2-3q-7-3-12-8ZM144-563.96v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm384 384v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H564.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62Zm-384 0v-215.76q0-15.28 10.34-25.78 10.34-10.5 25.62-10.5h215.76q15.28 0 25.78 10.34 10.5 10.34 10.5 25.62v215.76q0 15.28-10.34 25.78-10.34 10.5-25.62 10.5H180.28q-15.28 0-25.78-10.34-10.5-10.34-10.5-25.62ZM216-600h144v-144H216v144Zm420 66 101-102-101-102-102 102 102 102Zm-36 318h144v-144H600v144Zm-384 0h144v-144H216v144Zm144-384Zm174-36ZM360-360Zm240 0Z"})})}},1020:(e,t,s)=>{var r=s(6540),n=Symbol.for("react.element"),l=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,i=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};function c(e,t,s){var r,l={},c=null,d=null;for(r in void 0!==s&&(c=""+s),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(d=t.ref),t)o.call(t,r)&&!a.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:n,type:e,key:c,ref:d,props:l,_owner:i.current}}t.Fragment=l,t.jsx=c,t.jsxs=c},4848:(e,t,s)=>{e.exports=s(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzIyMi5hYjEzOWQ5Ny5qcyIsIm1hcHBpbmdzIjoiO3NOQStFQSxRQXpFeUIsU0FBSEEsR0FBZ0QsSUFBMUNDLEVBQWNELEVBQWRDLGVBQWdCQyxFQUFRRixFQUFSRSxTQUFVQyxFQUFTSCxFQUFURyxVQUM1Q0MsRUFDTkgsRUFETUcsWUFHRkMsR0FGSkosRUFEbUJLLG1CQUNuQkwsRUFEdUNNLGdCQUN2Q04sRUFEd0RPLGlCQUd2QyxJQUFJQyxjQUFjLFVBQVcsQ0FDOUNDLElBQUssSUFDTEMsU0FBUyxFQUNUQyxTQUFTLEtBd0JYLE9BQ0VDLEVBQUFBLEVBQUFBLE1BQUFDLEVBQUFBLFNBQUEsQ0FBQUMsU0FBQSxDQUNHWCxJQUNDUyxFQUFBQSxFQUFBQSxNQUFBQyxFQUFBQSxTQUFBLENBQUFDLFNBQUEsRUFFRUMsRUFBQUEsRUFBQUEsS0FBQSxPQUNFQyxVQUFVLGdEQUNWQyxNQUFPLENBQ0xDLFdBQVksc0JBQ1pDLE9BQVEsWUFDUkMsZUFBZ0IsZ0JBSXBCUixFQUFBQSxFQUFBQSxNQUFBLE9BQ0VJLFVBQVUsZ0lBQ1ZDLE1BQU8sQ0FBRUksT0FBUSxxQkFBc0JQLFNBQUEsRUFHdkNDLEVBQUFBLEVBQUFBLEtBQUNPLEVBQUFBLFFBQXVCLENBQ3RCckIsU0FBVUEsRUFDVkQsZUFBZ0JBLEtBR2xCZSxFQUFBQSxFQUFBQSxLQUFDUSxFQUFBQSxRQUF1QixDQUN0QnZCLGVBQWdCQSxFQUNoQkMsU0FBVUEsV0FNbEJjLEVBQUFBLEVBQUFBLEtBQUNTLEVBQUFBLFFBQXVCLENBQ3RCeEIsZUFBZ0JBLEVBQ2hCQyxTQUFVQSxFQUNWd0IsZUFwRGlCLFNBQUNDLEdBQ3RCLElBQU1DLEVBQWtCekIsRUFBVTBCLFFBQVFDLFVBQ3hDQyxPQUFPQyxPQUFPQyxhQUFhQyxVQUloQixPQUFUUCxFQUNGeEIsRUFBVTBCLFFBQVFNLGNBQWMsQ0FDOUJELFNBQVVFLEtBQUtDLElBQUksSUFBS1QsRUFBa0IsS0FHNUN6QixFQUFVMEIsUUFBUU0sY0FBYyxDQUM5QkQsU0FBVUUsS0FBS0UsSUFBSSxHQUFJVixFQUFrQixJQUcvQyxFQXNDTVcsaUJBekRtQixXQUN2QnBDLEVBQVUwQixRQUFRVyxhQUFhQyxjQUFjcEMsRUFDL0MsTUEyREYsZ0ZDTEEsUUFyRWdDLFNBQUhMLEdBS3ZCLElBSkpDLEVBQWNELEVBQWRDLGVBQ0FDLEVBQVFGLEVBQVJFLFNBQ0F3QixFQUFjMUIsRUFBZDBCLGVBQ0FhLEVBQWdCdkMsRUFBaEJ1QyxpQkFFUW5DLEVBQXFESCxFQUFyREcsWUFBYUUsRUFBd0NMLEVBQXhDSyxtQkFBb0JDLEVBQW9CTixFQUFwQk0sZ0JBQ3pDLE9BQ0VNLEVBQUFBLEVBQUFBLE1BQUEsT0FDRUksVUFBUyxpSUFBQXlCLE9BQ1BwQyxHQUFzQkMsRUFBa0IsV0FBSCxvQkFBbUMsOEJBRTFFVyxNQUFPLENBQUN5QixPQUFRLE1BQU01QixTQUFBLENBR3JCUixJQUNDTSxFQUFBQSxFQUFBQSxNQUFBLE9BQUtJLFVBQVUsMEJBQXlCRixTQUFBLEVBQ3RDRixFQUFBQSxFQUFBQSxNQUFBLE9BQUtJLFVBQVUsNEVBQTJFRixTQUFBLEVBRXhGQyxFQUFBQSxFQUFBQSxLQUFBLE9BQ0VDLFVBQVUsNEdBQ1YyQixRQUFTLGtCQUFNbEIsRUFBZSxLQUFLLEVBQ25DbUIsTUFBTSxVQUFTOUIsVUFFZkMsRUFBQUEsRUFBQUEsS0FBQzhCLEVBQUFBLFdBQVUsQ0FBQ0MsU0FBUyxRQUd2Qi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBVSw0R0FDVjJCLFFBQVMsa0JBQU1sQixFQUFlLE9BQU8sRUFDckNtQixNQUFNLFdBQVU5QixVQUVoQkMsRUFBQUEsRUFBQUEsS0FBQ2dDLEVBQUFBLFlBQVcsQ0FBQ0QsU0FBUyxXQUcxQi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsVUFBVSxnQ0FJbEJYLElBQ0NPLEVBQUFBLEVBQUFBLE1BQUEsT0FBS0ksVUFBVSwwQkFBeUJGLFNBQUEsRUFDdENDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBVSx1R0FDVjJCLFFBQVMsa0JBQU1MLEdBQWtCLEVBQ2pDTSxNQUFNLGNBQWE5QixVQUVuQkMsRUFBQUEsRUFBQUEsS0FBQ2lDLEVBQUFBLFVBQVMsQ0FBQ0YsU0FBUyxRQUd0Qi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FBS0MsVUFBVSxpQ0FJbkJELEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBVSx1R0FDVjJCLFFBQVMsa0JBQ1AxQyxFQUFTLENBQ1BnRCxLQUFNLDJCQUNOQyxRQUFTLENBQUUvQyxhQUFjQSxJQUN6QixFQUVKeUMsTUFBTSxZQUFXOUIsVUFFakJDLEVBQUFBLEVBQUFBLEtBQUNvQyxFQUFBQSxTQUFRLENBQUNMLFNBQVMsU0FJM0IsZ0ZDbkVNTSxFQUFtQixDQUN2QixDQUFFUixNQUFPLGNBQWVTLEtBQU0sQ0FBQyxPQUFRLE1BQ3ZDLENBQUVULE1BQU8sWUFBYVMsS0FBTSxDQUFDLE9BQVEsV0FHakNDLEVBQWlCLENBQ3JCLENBQUVWLE1BQU8sWUFBYVcsR0FBSSxtQkFDMUIsQ0FBRVgsTUFBTyxjQUFlVyxHQUFJLHVCQXNGOUIsUUFuRmdDLFNBQUh4RCxHQUFxQyxJQUEvQkMsRUFBY0QsRUFBZEMsZUFBZ0JDLEVBQVFGLEVBQVJFLFNBQ3pDRSxFQUNOSCxFQURNRyxZQUFhSSxFQUNuQlAsRUFEbUJPLGlCQUFrQkYsRUFDckNMLEVBRHFDSyxtQkFBb0JDLEVBQ3pETixFQUR5RE0sZ0JBTzNELE9BQ0VNLEVBQUFBLEVBQUFBLE1BQUEsT0FBS0ksVUFBVSwwREFBeURGLFNBQUEsRUFFdEVDLEVBQUFBLEVBQUFBLEtBQUEsT0FDRUMsVUFBVSw4SEFDVjJCLFFBQVMsa0JBQ1AxQyxFQUFTLENBQ1BnRCxLQUFNLDJCQUNOQyxRQUFTLENBQUUvQyxhQUFjQSxJQUN6QixFQUNIVyxVQUVEQyxFQUFBQSxFQUFBQSxLQUFDeUMsRUFBQUEsVUFBUyxDQUFDVixTQUFTLFFBR3RCbEMsRUFBQUEsRUFBQUEsTUFBQSxPQUFLSSxVQUFTLHdDQUEwQ0YsU0FBQSxDQUVoQyxjQUFyQlAsSUFDQ1EsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLHlDQUF3Q0YsU0FFcERzQyxFQUFpQkssS0FBSSxTQUFDQyxFQUFVQyxHQUFDLE9BQ2hDL0MsRUFBQUEsRUFBQUEsTUFBQSxPQUNFSSxVQUFVLGlFQUFnRUYsU0FBQSxFQUcxRUMsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLEdBQUVGLFNBQUU0QyxFQUFTZCxTQUM1QmhDLEVBQUFBLEVBQUFBLE1BQUEsT0FBS0ksVUFBVSwwQkFBeUJGLFNBQUEsRUFDdENDLEVBQUFBLEVBQUFBLEtBQUEsUUFBTUMsVUFBVSx1RUFBc0VGLFNBQ25GNEMsRUFBU0wsS0FBSyxLQUNWLEtBRVB0QyxFQUFBQSxFQUFBQSxLQUFBLFFBQU1DLFVBQVUsdUVBQXNFRixTQUNuRjRDLEVBQVNMLEtBQUssVUFUZE0sRUFZRCxNQUtVLFlBQXJCcEQsSUFDQ1EsRUFBQUEsRUFBQUEsS0FBQSxPQUFLQyxVQUFVLDhDQUE2Q0YsU0FDekR3QyxFQUFlRyxLQUFJLFNBQUNHLEVBQVFELEdBQUMsT0FDNUIvQyxFQUFBQSxFQUFBQSxNQUFBLE9BQ0VJLFVBQVUsaUVBQWdFRixTQUFBLEVBRzFFQyxFQUFBQSxFQUFBQSxLQUFBLE9BQUtDLFVBQVUsR0FBRUYsU0FBRThDLEVBQU9oQixTQUMxQmhDLEVBQUFBLEVBQUFBLE1BQUEsU0FBT0ksVUFBVSwwQ0FBeUNGLFNBQUEsRUFDeERDLEVBQUFBLEVBQUFBLEtBQUEsU0FDRWtDLEtBQUssV0FDTFksTUFDZ0IsdUJBQWRELEVBQU9MLEdBQTJCLHVDQUlwQ3ZDLFVBQVUsZUFDVjhDLFFBQ2dCLHVCQUFkRixFQUFPTCxHQUNIbEQsRUFDQUMsRUFFTnlELFNBQVUsU0FBQ0MsR0FBQyxPQWxFRixTQUFDQSxHQUMzQixJQUFNSCxFQUFRRyxFQUFFQyxPQUFPSixNQUN2QjVELEVBQVMsQ0FBRWdELEtBQU1ZLEdBQ25CLENBK0RtQ0ssQ0FBb0JGLEVBQUUsS0FFekNqRCxFQUFBQSxFQUFBQSxLQUFBLE9BQUtDLFVBQVUsaWJBbkJaMkMsRUFxQkQsV0FPcEIsZ0ZDckRBLFFBdENnQyxTQUFINUQsR0FBcUMsSUFBL0JDLEVBQWNELEVBQWRDLGVBQWdCQyxFQUFRRixFQUFSRSxTQUN6Q00sRUFBcUJQLEVBQXJCTyxpQkFDUixPQUNFSyxFQUFBQSxFQUFBQSxNQUFBLE9BQUtJLFVBQVUsNkdBQTRHRixTQUFBLEVBRXpIRixFQUFBQSxFQUFBQSxNQUFBLE9BQ0VJLFVBQVMscUZBQUF5QixPQUNjLGNBQXJCbEMsRUFBbUMsZUFBSCxJQUVsQ29DLFFBQVMsa0JBQ1AxQyxFQUFTLENBQ1BnRCxLQUFNLHlCQUNOQyxRQUFTLENBQUVpQixPQUFRLGNBQ25CLEVBQ0hyRCxTQUFBLEVBRURDLEVBQUFBLEVBQUFBLEtBQUNxRCxFQUFBQSxhQUFZLENBQUN0QixTQUFTLE1BQ3ZCL0IsRUFBQUEsRUFBQUEsS0FBQSxRQUFNQyxVQUFVLHlCQUF3QkYsU0FBQyxrQkFHM0NGLEVBQUFBLEVBQUFBLE1BQUEsT0FDRUksVUFBUyxxRkFBQXlCLE9BQ2MsWUFBckJsQyxFQUFpQyxlQUFILElBRWhDb0MsUUFBUyxrQkFDUDFDLEVBQVMsQ0FDUGdELEtBQU0seUJBQ05DLFFBQVMsQ0FBRWlCLE9BQVEsWUFDbkIsRUFDSHJELFNBQUEsRUFFREMsRUFBQUEsRUFBQUEsS0FBQ3NELEVBQUFBLFlBQVcsQ0FBQ3ZCLFNBQVMsTUFDdEIvQixFQUFBQSxFQUFBQSxLQUFBLFFBQU1DLFVBQVUseUJBQXdCRixTQUFDLGlCQUlqRCx1S0N2Q2FpQyxFQUFjLFNBQUhoRCxHQUFjLE9BQUFBLEVBQVIrQyxVQUM1Qi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXVELE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVM1RCxVQUVkQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU00RCxFQUFFLHNKQUNKLEVBRUs5QixFQUFhLFNBQUgrQixHQUFjLE9BQUFBLEVBQVI5QixVQUMzQi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXVELE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVM1RCxVQUVkQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU00RCxFQUFFLCtEQUNKLEVBRUszQixFQUFZLFNBQUg2QixHQUFjLE9BQUFBLEVBQVIvQixVQUMxQi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXVELE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVM1RCxVQUVkQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU00RCxFQUFFLHNIQUNKLEVBR0t4QixFQUFXLFNBQUgyQixHQUFjLE9BQUFBLEVBQVJoQyxVQUN6Qi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXVELE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVM1RCxVQUVkQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU00RCxFQUFFLDhmQUNKLEVBR0tuQixFQUFZLFNBQUh1QixHQUFjLE9BQUFBLEVBQVJqQyxVQUMxQi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXVELE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVM1RCxVQUVkQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU00RCxFQUFFLHVHQUNKLEVBR0tQLEVBQWUsU0FBSFksR0FBYyxPQUFBQSxFQUFSbEMsVUFDN0IvQixFQUFBQSxFQUFBQSxLQUFBLE9BQ0V1RCxNQUFNLDZCQUNOQyxPQUFPLE9BQ1BDLFFBQVEsaUJBQ1JDLE1BQU0sT0FDTkMsS0FBSyxVQUFTNUQsVUFFZEMsRUFBQUEsRUFBQUEsS0FBQSxRQUFNNEQsRUFBRSx3cURBQ0osRUFHS04sRUFBYyxTQUFIWSxHQUFjLE9BQUFBLEVBQVJuQyxVQUM1Qi9CLEVBQUFBLEVBQUFBLEtBQUEsT0FDRXVELE1BQU0sNkJBQ05DLE9BQU8sT0FDUEMsUUFBUSxpQkFDUkMsTUFBTSxPQUNOQyxLQUFLLFVBQVM1RCxVQUVkQyxFQUFBQSxFQUFBQSxLQUFBLFFBQU00RCxFQUFFLHFnQ0FDSixrQkN0RUssSUFBSU8sRUFBRSxFQUFRLE1BQVNDLEVBQUVDLE9BQU9DLElBQUksaUJBQWlCQyxFQUFFRixPQUFPQyxJQUFJLGtCQUFrQkUsRUFBRUMsT0FBT0MsVUFBVUMsZUFBZUMsRUFBRVQsRUFBRVUsbURBQW1EQyxrQkFBa0JDLEVBQUUsQ0FBQ3JGLEtBQUksRUFBR3NGLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRTNCLEVBQUUsQ0FBQyxFQUFFWCxFQUFFLEtBQUt1QyxFQUFFLEtBQWlGLElBQUlELFVBQWhGLElBQVNELElBQUlyQyxFQUFFLEdBQUdxQyxRQUFHLElBQVNELEVBQUUzRixNQUFNdUQsRUFBRSxHQUFHb0MsRUFBRTNGLFVBQUssSUFBUzJGLEVBQUVMLE1BQU1RLEVBQUVILEVBQUVMLEtBQWNLLEVBQUViLEVBQUVpQixLQUFLSixFQUFFRSxLQUFLUixFQUFFSixlQUFlWSxLQUFLM0IsRUFBRTJCLEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRU0sYUFBYSxJQUFJSCxLQUFLRixFQUFFRCxFQUFFTSxrQkFBZSxJQUFTOUIsRUFBRTJCLEtBQUszQixFQUFFMkIsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNJLFNBQVN2QixFQUFFbEMsS0FBS2tELEVBQUUxRixJQUFJdUQsRUFBRStCLElBQUlRLEVBQUVJLE1BQU1oQyxFQUFFaUMsT0FBT2pCLEVBQUUvRCxRQUFRLENBQUNpRixFQUFRQyxTQUFTeEIsRUFBRXVCLEVBQVFFLElBQUliLEVBQUVXLEVBQVFHLEtBQUtkLGtCQ1B4V2UsRUFBT0osUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2VkaXRvci1pbmZvL01vbmFjb0VkaXRvckluZm8uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvZWRpdG9yLWluZm8vTW9uYWNvRWRpdG9ySW5mb0J1dHRvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvZWRpdG9yLWluZm8vTW9uYWNvRWRpdG9ySW5mb0RldGFpbHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvZWRpdG9yLWluZm8vTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvaWNvbnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBNb25hY29FZGl0b3JJbmZvQnV0dG9ucyBmcm9tIFwiLi9Nb25hY29FZGl0b3JJbmZvQnV0dG9uc1wiO1xyXG5pbXBvcnQgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIgZnJvbSBcIi4vTW9uYWNvRWRpdG9ySW5mb1NpZGViYXJcIjtcclxuaW1wb3J0IE1vbmFjb0VkaXRvckluZm9EZXRhaWxzIGZyb20gXCIuL01vbmFjb0VkaXRvckluZm9EZXRhaWxzXCI7XHJcblxyXG5jb25zdCBNb25hY29FZGl0b3JJbmZvID0gKHsgZWRpdG9yU2V0dGluZ3MsIGRpc3BhdGNoLCBlZGl0b3JSZWYgfSkgPT4ge1xyXG4gIGNvbnN0IHsgaXNNb2RhbE9wZW4sIGlzQ29kZUZvcm1hdEVuYWJsZSwgaXNab29taW5nRW5hYmxlLCBtb2RhbFNjcmVlblN0YXRlIH0gPVxyXG4gICAgZWRpdG9yU2V0dGluZ3M7XHJcblxyXG4gIGNvbnN0IGN0cmxTRXZlbnQgPSBuZXcgS2V5Ym9hcmRFdmVudChcImtleWRvd25cIiwge1xyXG4gICAga2V5OiBcInNcIixcclxuICAgIGN0cmxLZXk6IHRydWUsXHJcbiAgICBidWJibGVzOiB0cnVlLFxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBoYW5kbGVGb3JtYXRDb2RlID0gKCkgPT4ge1xyXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQuZ2V0RG9tTm9kZSgpLmRpc3BhdGNoRXZlbnQoY3RybFNFdmVudCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlRm9udFpvb20gPSAoem9vbSkgPT4ge1xyXG4gICAgY29uc3QgY3VycmVudEZvbnRTaXplID0gZWRpdG9yUmVmLmN1cnJlbnQuZ2V0T3B0aW9uKFxyXG4gICAgICBtb25hY28uZWRpdG9yLkVkaXRvck9wdGlvbi5mb250U2l6ZVxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBmb250IHNpemUgYmV0d2VlbiAxMCBhbmQgMTAwXHJcbiAgICBpZiAoem9vbSA9PT0gXCJ1cFwiKSB7XHJcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50LnVwZGF0ZU9wdGlvbnMoe1xyXG4gICAgICAgIGZvbnRTaXplOiBNYXRoLm1pbigxMDAsIGN1cnJlbnRGb250U2l6ZSArIDEpLFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50LnVwZGF0ZU9wdGlvbnMoe1xyXG4gICAgICAgIGZvbnRTaXplOiBNYXRoLm1heCgxMCwgY3VycmVudEZvbnRTaXplIC0gMSksXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8PlxyXG4gICAgICB7aXNNb2RhbE9wZW4gJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICB7LyogYmx1ciBsYXllciAqL31cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBhYnNvbHV0ZSBsZWZ0LTAgcmlnaHQtMCB6LVs5OV0gXCJcclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJnYmEoMCwgMCwgMCwgMC4wMilcIixcclxuICAgICAgICAgICAgICBmaWx0ZXI6IFwiYmx1cigycHgpXCIsXHJcbiAgICAgICAgICAgICAgYmFja2Ryb3BGaWx0ZXI6IFwiYmx1cigycHgpXCIsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICB7LyogbW9kYWwgKi99XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggYWJzb2x1dGUgdy1bNDAwcHhdIGgtWzI1MHB4XSBsZWZ0LVs1MCVdIHRvcC1bNTAlXSBiZy1bIzJEMkQyRF0gIHJvdW5kZWQteGwgLXRyYW5zbGF0ZS14LVs1MCVdIC10cmFuc2xhdGUteS1bNTAlXSB6LVsxMDBdXCJcclxuICAgICAgICAgICAgc3R5bGU9e3sgYm9yZGVyOiBcIjFweCBzb2xpZCAjNDY0NjQ2XCIgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgey8qIHNpemViYXIgKi99XHJcbiAgICAgICAgICAgIDxNb25hY29FZGl0b3JJbmZvU2lkZWJhclxyXG4gICAgICAgICAgICAgIGRpc3BhdGNoPXtkaXNwYXRjaH1cclxuICAgICAgICAgICAgICBlZGl0b3JTZXR0aW5ncz17ZWRpdG9yU2V0dGluZ3N9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIHsvKiBtYWluICovfVxyXG4gICAgICAgICAgICA8TW9uYWNvRWRpdG9ySW5mb0RldGFpbHNcclxuICAgICAgICAgICAgICBlZGl0b3JTZXR0aW5ncz17ZWRpdG9yU2V0dGluZ3N9XHJcbiAgICAgICAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC8+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBidXR0b25zICovfVxyXG4gICAgICA8TW9uYWNvRWRpdG9ySW5mb0J1dHRvbnNcclxuICAgICAgICBlZGl0b3JTZXR0aW5ncz17ZWRpdG9yU2V0dGluZ3N9XHJcbiAgICAgICAgZGlzcGF0Y2g9e2Rpc3BhdGNofVxyXG4gICAgICAgIGhhbmRsZUZvbnRab29tPXtoYW5kbGVGb250Wm9vbX1cclxuICAgICAgICBoYW5kbGVGb3JtYXRDb2RlPXtoYW5kbGVGb3JtYXRDb2RlfVxyXG4gICAgICAvPlxyXG4gICAgPC8+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1vbmFjb0VkaXRvckluZm87XHJcblxyXG4vKlxyXG5cclxuXHJcblxyXG5iYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMDAyKTtcclxuZmlsdGVyOiBibHVyKDNweCk7XHJcbmJhY2tkcm9wLWZpbHRlcjogYmx1cigzcHgpO1xyXG5cclxuXHJcbiovXHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQWxpZ25JY29uLCBJbmZvSWNvbiwgWm9vbUluSWNvbiwgWm9vbU91dEljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcclxuXHJcbmNvbnN0IE1vbmFjb0VkaXRvckluZm9CdXR0b25zID0gKHtcclxuICBlZGl0b3JTZXR0aW5ncyxcclxuICBkaXNwYXRjaCxcclxuICBoYW5kbGVGb250Wm9vbSxcclxuICBoYW5kbGVGb3JtYXRDb2RlLFxyXG59KSA9PiB7XHJcbiAgY29uc3QgeyBpc01vZGFsT3BlbiwgaXNDb2RlRm9ybWF0RW5hYmxlLCBpc1pvb21pbmdFbmFibGUgfSA9IGVkaXRvclNldHRpbmdzO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT17YGFic29sdXRlIGJvdHRvbS0zIHJpZ2h0LTMgZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC0xIGgtOSBiZy1bIzJEMkQyRF0gcm91bmRlZC1mdWxsIGJvcmRlci1bIzQ2NDY0Nl0gYm9yZGVyLVsxcHhdICR7XHJcbiAgICAgICAgaXNDb2RlRm9ybWF0RW5hYmxlIHx8IGlzWm9vbWluZ0VuYWJsZSA/IGBweC1bNHB4XWAgOiBgcHgtWzJweF0gdy1bMzZweF1gXHJcbiAgICAgIH0gZHVyYXRpb24tMzAwICBzZWxlY3Qtbm9uZWB9XHJcbiAgICAgIHN0eWxlPXt7ekluZGV4OiBcIjEwXCJ9fVxyXG4gICAgPlxyXG4gICAgICB7LyogZm9udCBzaXplICovfVxyXG4gICAgICB7aXNab29taW5nRW5hYmxlICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyICBoLTcgcm91bmRlZC1mdWxsIGN1cnNvci1wb2ludGVyIGdhcC0wLjVcIj5cclxuICAgICAgICAgICAgey8qIHpvb20gaW4gKi99XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyIGl0ZW1zLWNlbnRlciAgdy1bMzBweF0gaC03IGJnLVsjNDc0NzQ3XSByb3VuZGVkLXRsLWZ1bGwgcm91bmRlZC1ibC1mdWxsIGR1cmF0aW9uLTEwMCBcIlxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZUZvbnRab29tKFwidXBcIil9XHJcbiAgICAgICAgICAgICAgdGl0bGU9XCJab29tIEluXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxab29tSW5JY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIHsvKiB6b29tIG91dCAqL31cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyICB3LVszMHB4XSBoLTcgYmctWyM0NzQ3NDddIHJvdW5kZWQtdHItZnVsbCByb3VuZGVkLWJyLWZ1bGwgZHVyYXRpb24tMTAwIFwiXHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRm9udFpvb20oXCJkb3duXCIpfVxyXG4gICAgICAgICAgICAgIHRpdGxlPVwiWm9vbSBPdXRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPFpvb21PdXRJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IHctWzJweF0gYmctWyM0NjQ2NDZdXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBjb2RlIGZvcm1hdCBpY29uICovfVxyXG4gICAgICB7aXNDb2RlRm9ybWF0RW5hYmxlICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHctNyBoLTcgcm91bmRlZC1mdWxsIGhvdmVyOmJnLVsjNDc0NzQ3XSBkdXJhdGlvbi0xMDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGb3JtYXRDb2RlKCl9XHJcbiAgICAgICAgICAgIHRpdGxlPVwiRm9ybWF0IENvZGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QWxpZ25JY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC02IHctWzJweF0gYmctWyM0NjQ2NDZdXCI+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICl9XHJcbiAgICAgIHsvKiBxdWVzdGlvbiBtYXJrICovfVxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy03IGgtNyByb3VuZGVkLWZ1bGwgaG92ZXI6YmctWyM0NzQ3NDddIGR1cmF0aW9uLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjaGFuZ2VTZXR0aW5nc01vZGFsU3RhdGVcIixcclxuICAgICAgICAgICAgcGF5bG9hZDogeyBpc01vZGFsT3BlbjogIWlzTW9kYWxPcGVuIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aXRsZT1cIk1vcmUgSW5mb1wiXHJcbiAgICAgID5cclxuICAgICAgICA8SW5mb0ljb24gY3NzQ2xhc3M9XCJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNb25hY29FZGl0b3JJbmZvQnV0dG9ucztcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBDbG9zZUljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcclxuXHJcbmNvbnN0IHNob3J0Y3V0c0RldGFpbHMgPSBbXHJcbiAgeyB0aXRsZTogXCJDb2RlIEZvcm1hdFwiLCBrZXlzOiBbXCJjdHJsXCIsIFwic1wiXSB9LFxyXG4gIHsgdGl0bGU6IFwiRm9udCBTaXplXCIsIGtleXM6IFtcImN0cmxcIiwgXCJ3aGVlbFwiXSB9LFxyXG5dO1xyXG5cclxuY29uc3Qgd2lkZ2V0c0RldGFpbHMgPSBbXHJcbiAgeyB0aXRsZTogXCJGb250IFNpemVcIiwgaWQ6IFwiaXNab29taW5nRW5hYmxlXCIgfSxcclxuICB7IHRpdGxlOiBcIkNvZGUgRm9ybWF0XCIsIGlkOiBcImlzQ29kZUZvcm1hdEVuYWJsZVwiIH0sXHJcbl07XHJcblxyXG5jb25zdCBNb25hY29FZGl0b3JJbmZvRGV0YWlscyA9ICh7IGVkaXRvclNldHRpbmdzLCBkaXNwYXRjaCB9KSA9PiB7XHJcbiAgY29uc3QgeyBpc01vZGFsT3BlbiwgbW9kYWxTY3JlZW5TdGF0ZSwgaXNDb2RlRm9ybWF0RW5hYmxlLCBpc1pvb21pbmdFbmFibGUgfSA9XHJcbiAgICBlZGl0b3JTZXR0aW5ncztcclxuXHJcbiAgY29uc3QgaGFuZ2xlQ2hhbmdlV2lkZ2V0cyA9IChlKSA9PiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xyXG4gICAgZGlzcGF0Y2goeyB0eXBlOiB2YWx1ZSB9KTtcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggIGZsZXgtY29sIHctW2NhbGMoNDAwcHgtMTIwcHgpXSBoLWZ1bGwgc2VsZWN0LW5vbmVcIj5cclxuICAgICAgey8qIGNsb3NlIGJ1dHRvbiAqL31cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xIHJpZ2h0LTEgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgdy03IGgtNyBob3ZlcjpiZy1bIzM5MzkzOV0gcm91bmRlZC1mdWxsIGR1cmF0aW9uLTEwMCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgb25DbGljaz17KCkgPT5cclxuICAgICAgICAgIGRpc3BhdGNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjaGFuZ2VTZXR0aW5nc01vZGFsU3RhdGVcIixcclxuICAgICAgICAgICAgcGF5bG9hZDogeyBpc01vZGFsT3BlbjogIWlzTW9kYWxPcGVuIH0sXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgPlxyXG4gICAgICAgIDxDbG9zZUljb24gY3NzQ2xhc3M9XCJcIiAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIEJPRFkgKi99XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdy1mdWxsIGgtZnVsbCBwdC0xMCBpdGVtcy1jZW50ZXIgcHgtNmB9PlxyXG4gICAgICAgIHsvKiBzaG9ydGN1dHMgKi99XHJcbiAgICAgICAge21vZGFsU2NyZWVuU3RhdGUgPT09IFwic2hvcnRjdXRzXCIgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1zdGFydCBnYXAtNVwiPlxyXG4gICAgICAgICAgICB7LyogICovfVxyXG4gICAgICAgICAgICB7c2hvcnRjdXRzRGV0YWlscy5tYXAoKHNob3J0Y3V0LCBpKSA9PiAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1iZXR3ZWVuIHRleHQtc20gdGV4dC1bI2ZjZmNmY11cIlxyXG4gICAgICAgICAgICAgICAga2V5PXtpfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiXCI+e3Nob3J0Y3V0LnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZy1bIzM4MzgzOF0gcHgtMiB4cHktWzFweF0gcm91bmRlZC1tZCBib3JkZXItWzFweF0gYm9yZGVyLVsjNjM2MzYzXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG9ydGN1dC5rZXlzWzBdfVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICtcclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYmctWyMzODM4MzhdIHB4LTIgeHB5LVsxcHhdIHJvdW5kZWQtbWQgYm9yZGVyLVsxcHhdIGJvcmRlci1bIzYzNjM2M11cIj5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvcnRjdXQua2V5c1sxXX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7Lyogd2lkZ2V0cyAqL31cclxuICAgICAgICB7bW9kYWxTY3JlZW5TdGF0ZSA9PT0gXCJ3aWRnZXRzXCIgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gIGdhcC01XCI+XHJcbiAgICAgICAgICAgIHt3aWRnZXRzRGV0YWlscy5tYXAoKHdpZGdldCwgaSkgPT4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXNtIHRleHQtWyNmY2ZjZmNdXCJcclxuICAgICAgICAgICAgICAgIGtleT17aX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIlwiPnt3aWRnZXQudGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmlkID09PSBcImlzQ29kZUZvcm1hdEVuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gYGlzQ29kZUZvcm1hdEVuYWJsZWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBgaXNab29taW5nRW5hYmxlYFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzci1vbmx5IHBlZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0LmlkID09PSBcImlzQ29kZUZvcm1hdEVuYWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaXNDb2RlRm9ybWF0RW5hYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaXNab29taW5nRW5hYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gaGFuZ2xlQ2hhbmdlV2lkZ2V0cyhlKX1cclxuICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSB3LTkgaC01IGJnLVsjMzgzODM4XSByb3VuZGVkLWZ1bGwgcGVlciBwZWVyLWZvY3VzOnJpbmctMSBwZWVyLWZvY3VzOnJpbmctWyM2MzYzNjNdIHBlZXItY2hlY2tlZDphZnRlcjp0cmFuc2xhdGUteC1mdWxsIHJ0bDpwZWVyLWNoZWNrZWQ6YWZ0ZXI6LXRyYW5zbGF0ZS14LWZ1bGwgcGVlci1jaGVja2VkOmFmdGVyOmJvcmRlci13aGl0ZSBhZnRlcjpjb250ZW50LVsnJ10gYWZ0ZXI6YWJzb2x1dGUgYWZ0ZXI6dG9wLTAuNSBhZnRlcjpzdGFydC1bMnB4XSBhZnRlcjpiZy13aGl0ZSBhZnRlcjpib3JkZXItZ3JheS0zMDAgYWZ0ZXI6Ym9yZGVyIGFmdGVyOnJvdW5kZWQtZnVsbCBhZnRlcjpoLTQgYWZ0ZXI6dy00IGFmdGVyOnRyYW5zaXRpb24tYWxsIGRhcms6Ym9yZGVyLWdyYXktNjAwIHBlZXItY2hlY2tlZDpiZy1bI0ZGQTcyNl1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9ySW5mb0RldGFpbHM7XHJcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgS2V5Ym9hcmRJY29uLCBXaWRnZXRzSWNvbiB9IGZyb20gXCIuLi9pY29uc1wiO1xyXG5cclxuY29uc3QgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXIgPSAoeyBlZGl0b3JTZXR0aW5ncywgZGlzcGF0Y2ggfSkgPT4ge1xyXG4gIGNvbnN0IHsgbW9kYWxTY3JlZW5TdGF0ZSB9ID0gZWRpdG9yU2V0dGluZ3M7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1zdGFydCBwdC0xMCBnYXAtMiB3LVsxMjBweF0gaC1mdWxsIGJnLVsjMzgzODM4XSByb3VuZGVkLXhsICBzZWxlY3Qtbm9uZVwiPlxyXG4gICAgICB7Lyogc2hvcnRjdXRzICovfVxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgIGdhcC0xIHctWzEwMHB4XSBoLTcgcm91bmRlZC1mdWxsIGN1cnNvci1wb2ludGVyICR7XHJcbiAgICAgICAgICBtb2RhbFNjcmVlblN0YXRlID09PSBcInNob3J0Y3V0c1wiID8gYGJnLVsjRkZBNzI2XWAgOiBgYFxyXG4gICAgICAgIH1gfVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiY2hhbmdlTW9kYWxTY3JlZW5TdGF0ZVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7IHNjcmVlbjogXCJzaG9ydGN1dHNcIiB9LFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgID5cclxuICAgICAgICA8S2V5Ym9hcmRJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsjZmNmY2ZjXSB0ZXh0LXNtXCI+c2hvcnRjdXRzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgey8qIHdpZGdldHMgKi99XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2BmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciAgZ2FwLTEgdy1bMTAwcHhdIGgtNyByb3VuZGVkLWZ1bGwgY3Vyc29yLXBvaW50ZXIgJHtcclxuICAgICAgICAgIG1vZGFsU2NyZWVuU3RhdGUgPT09IFwid2lkZ2V0c1wiID8gYGJnLVsjRkZBNzI2XWAgOiBgYFxyXG4gICAgICAgIH1gfVxyXG4gICAgICAgIG9uQ2xpY2s9eygpID0+XHJcbiAgICAgICAgICBkaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiY2hhbmdlTW9kYWxTY3JlZW5TdGF0ZVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7IHNjcmVlbjogXCJ3aWRnZXRzXCIgfSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICA+XHJcbiAgICAgICAgPFdpZGdldHNJY29uIGNzc0NsYXNzPVwiXCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsjZmNmY2ZjXSB0ZXh0LXNtXCI+d2lkZ2V0czwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9ySW5mb1NpZGViYXI7XHJcbiIsImV4cG9ydCBjb25zdCBab29tT3V0SWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0yNjguMDItNDQ0cS0xNS4wMiAwLTI1LjUyLTEwLjI5dC0xMC41LTI1LjVxMC0xNS4yMSAxMC4zNS0yNS43MVQyNjgtNTE2aDQyMy45OHExNS4wMiAwIDI1LjUyIDEwLjI5dDEwLjUgMjUuNXEwIDE1LjIxLTEwLjM1IDI1LjcxVDY5Mi00NDRIMjY4LjAyWlwiIC8+XHJcbiAgPC9zdmc+XHJcbik7XHJcbmV4cG9ydCBjb25zdCBab29tSW5JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC00NDRIMjQwdi03MmgyMDR2LTIwNGg3MnYyMDRoMjA0djcySDUxNnYyMDRoLTcydi0yMDRaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuZXhwb3J0IGNvbnN0IEFsaWduSWNvbiA9ICh7IGNzc0NsYXNzIH0pID0+IChcclxuICA8c3ZnXHJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgIGhlaWdodD1cIjIwcHhcIlxyXG4gICAgdmlld0JveD1cIjAgLTk2MCA5NjAgOTYwXCJcclxuICAgIHdpZHRoPVwiMjBweFwiXHJcbiAgICBmaWxsPVwiI0RBQTUyMFwiXHJcbiAgPlxyXG4gICAgPHBhdGggZD1cIk0xNDQtMTQ0di03Mmg2NzJ2NzJIMTQ0Wm0wLTE1MHYtNzJoNDgwdjcySDE0NFptMC0xNTB2LTcyaDY3MnY3MkgxNDRabTAtMTUwdi03Mmg0ODB2NzJIMTQ0Wm0wLTE1MHYtNzJoNjcydjcySDE0NFpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEluZm9JY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjREFBNTIwXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTQ0NC0yODhoNzJ2LTI0MGgtNzJ2MjQwWm0zNS43OS0zMTJxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabS40OSA1MDRRNDAxLTk2IDMzMS0xMjZ0LTEyMi41LTgyLjVRMTU2LTI2MSAxMjYtMzMwLjk2dC0zMC0xNDkuNVE5Ni01NjAgMTI2LTYyOS41cTMwLTY5LjUgODIuNS0xMjJUMzMwLjk2LTgzNHE2OS45Ni0zMCAxNDkuNS0zMHQxNDkuMDQgMzBxNjkuNSAzMCAxMjIgODIuNVQ4MzQtNjI5LjI4cTMwIDY5LjczIDMwIDE0OVE4NjQtNDAxIDgzNC0zMzF0LTgyLjUgMTIyLjVRNjk5LTE1NiA2MjkuMjgtMTI2cS02OS43MyAzMC0xNDkgMzBabS0uMjgtNzJxMTMwIDAgMjIxLTkxdDkxLTIyMXEwLTEzMC05MS0yMjF0LTIyMS05MXEtMTMwIDAtMjIxIDkxdC05MSAyMjFxMCAxMzAgOTEgMjIxdDIyMSA5MVptMC0zMTJaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBDbG9zZUljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiM4OTg5ODlcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJtMjkxLTI0MC01MS01MSAxODktMTg5LTE4OS0xODkgNTEtNTEgMTg5IDE4OSAxODktMTg5IDUxIDUxLTE4OSAxODkgMTg5IDE4OS01MSA1MS0xODktMTg5LTE4OSAxODlaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBLZXlib2FyZEljb24gPSAoeyBjc3NDbGFzcyB9KSA9PiAoXHJcbiAgPHN2Z1xyXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICBoZWlnaHQ9XCIyMHB4XCJcclxuICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiXHJcbiAgICB3aWR0aD1cIjIwcHhcIlxyXG4gICAgZmlsbD1cIiNmY2ZjZmNcIlxyXG4gID5cclxuICAgIDxwYXRoIGQ9XCJNMTY4LTI0MHEtMjkuNyAwLTUwLjg1LTIxLjE1UTk2LTI4Mi4zIDk2LTMxMnYtMzM2cTAtMjkuNyAyMS4xNS01MC44NVExMzguMy03MjAgMTY4LTcyMGg2MjRxMjkuNyAwIDUwLjg1IDIxLjE1UTg2NC02NzcuNyA4NjQtNjQ4djMzNnEwIDI5LjctMjEuMTUgNTAuODVRODIxLjctMjQwIDc5Mi0yNDBIMTY4Wm0wLTcyaDYyNHYtMzM2SDE2OHYzMzZabTIwMy45Ni0yNGgyMTUuNzZxMTUuMjggMCAyNS43OC0xMC4yOSAxMC41LTEwLjI5IDEwLjUtMjUuNXQtMTAuMzQtMjUuNzFRNjAzLjMyLTQwOCA1ODguMDQtNDA4SDM3Mi4yOHEtMTUuMjggMC0yNS43OCAxMC4yOS0xMC41IDEwLjI5LTEwLjUgMjUuNXQxMC4zNCAyNS43MXExMC4zNCAxMC41IDI1LjYyIDEwLjVaTTE2OC0zMTJ2LTMzNiAzMzZabTEwNy43OS0yNDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0tNDA4IDk2cTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVptMTAyIDBxMTUuMjEgMCAyNS43MS0xMC4yOXQxMC41LTI1LjVxMC0xNS4yMS0xMC4yOS0yNS43MXQtMjUuNS0xMC41cS0xNS4yMSAwLTI1LjcxIDEwLjI5dC0xMC41IDI1LjVxMCAxNS4yMSAxMC4yOSAyNS43MXQyNS41IDEwLjVabTEwMiAwcTE1LjIxIDAgMjUuNzEtMTAuMjl0MTAuNS0yNS41cTAtMTUuMjEtMTAuMjktMjUuNzF0LTI1LjUtMTAuNXEtMTUuMjEgMC0yNS43MSAxMC4yOXQtMTAuNSAyNS41cTAgMTUuMjEgMTAuMjkgMjUuNzF0MjUuNSAxMC41Wm0xMDIgMHExNS4yMSAwIDI1LjcxLTEwLjI5dDEwLjUtMjUuNXEwLTE1LjIxLTEwLjI5LTI1LjcxdC0yNS41LTEwLjVxLTE1LjIxIDAtMjUuNzEgMTAuMjl0LTEwLjUgMjUuNXEwIDE1LjIxIDEwLjI5IDI1LjcxdDI1LjUgMTAuNVpcIiAvPlxyXG4gIDwvc3ZnPlxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IFdpZGdldHNJY29uID0gKHsgY3NzQ2xhc3MgfSkgPT4gKFxyXG4gIDxzdmdcclxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgaGVpZ2h0PVwiMjBweFwiXHJcbiAgICB2aWV3Qm94PVwiMCAtOTYwIDk2MCA5NjBcIlxyXG4gICAgd2lkdGg9XCIyMHB4XCJcclxuICAgIGZpbGw9XCIjZmNmY2ZjXCJcclxuICA+XHJcbiAgICA8cGF0aCBkPVwiTTYxMC00NTggNDU3LjM5LTYxMXEtNS4zOS01LjQtNy44OS0xMS43LTIuNS02LjMtMi41LTEzLjV0Mi41LTEzLjVRNDUyLTY1NiA0NTctNjYxbDE1My0xNTNxNS01IDEyLTh0MTQuMi0zcTcuMiAwIDEzLjUgM3QxMS4zIDhsMTUyLjYxIDE1M3E1LjM5IDUuNCA3Ljg5IDExLjcgMi41IDYuMyAyLjUgMTMuNXQtMi41IDEzLjVRODE5LTYxNiA4MTQtNjExTDY2MS00NThxLTUgNS0xMS4zIDgtNi4zIDMtMTMuNSAzdC0xNC4yLTNxLTctMy0xMi04Wk0xNDQtNTYzLjk2di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUgxODAuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0zODQgMzg0di0yMTUuNzZxMC0xNS4yOCAxMC4zNC0yNS43OCAxMC4zNC0xMC41IDI1LjYyLTEwLjVoMjE1Ljc2cTE1LjI4IDAgMjUuNzggMTAuMzQgMTAuNSAxMC4zNCAxMC41IDI1LjYydjIxNS43NnEwIDE1LjI4LTEwLjM0IDI1Ljc4LTEwLjM0IDEwLjUtMjUuNjIgMTAuNUg1NjQuMjhxLTE1LjI4IDAtMjUuNzgtMTAuMzQtMTAuNS0xMC4zNC0xMC41LTI1LjYyWm0tMzg0IDB2LTIxNS43NnEwLTE1LjI4IDEwLjM0LTI1Ljc4IDEwLjM0LTEwLjUgMjUuNjItMTAuNWgyMTUuNzZxMTUuMjggMCAyNS43OCAxMC4zNCAxMC41IDEwLjM0IDEwLjUgMjUuNjJ2MjE1Ljc2cTAgMTUuMjgtMTAuMzQgMjUuNzgtMTAuMzQgMTAuNS0yNS42MiAxMC41SDE4MC4yOHEtMTUuMjggMC0yNS43OC0xMC4zNC0xMC41LTEwLjM0LTEwLjUtMjUuNjJaTTIxNi02MDBoMTQ0di0xNDRIMjE2djE0NFptNDIwIDY2IDEwMS0xMDItMTAxLTEwMi0xMDIgMTAyIDEwMiAxMDJabS0zNiAzMThoMTQ0di0xNDRINjAwdjE0NFptLTM4NCAwaDE0NHYtMTQ0SDIxNnYxNDRabTE0NC0zODRabTE3NC0zNlpNMzYwLTM2MFptMjQwIDBaXCIgLz5cclxuICA8L3N2Zz5cclxuKTtcclxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIl9yZWYiLCJlZGl0b3JTZXR0aW5ncyIsImRpc3BhdGNoIiwiZWRpdG9yUmVmIiwiaXNNb2RhbE9wZW4iLCJjdHJsU0V2ZW50IiwiaXNDb2RlRm9ybWF0RW5hYmxlIiwiaXNab29taW5nRW5hYmxlIiwibW9kYWxTY3JlZW5TdGF0ZSIsIktleWJvYXJkRXZlbnQiLCJrZXkiLCJjdHJsS2V5IiwiYnViYmxlcyIsIl9qc3hzIiwiX0ZyYWdtZW50IiwiY2hpbGRyZW4iLCJfanN4IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJiYWNrZ3JvdW5kIiwiZmlsdGVyIiwiYmFja2Ryb3BGaWx0ZXIiLCJib3JkZXIiLCJNb25hY29FZGl0b3JJbmZvU2lkZWJhciIsIk1vbmFjb0VkaXRvckluZm9EZXRhaWxzIiwiTW9uYWNvRWRpdG9ySW5mb0J1dHRvbnMiLCJoYW5kbGVGb250Wm9vbSIsInpvb20iLCJjdXJyZW50Rm9udFNpemUiLCJjdXJyZW50IiwiZ2V0T3B0aW9uIiwibW9uYWNvIiwiZWRpdG9yIiwiRWRpdG9yT3B0aW9uIiwiZm9udFNpemUiLCJ1cGRhdGVPcHRpb25zIiwiTWF0aCIsIm1pbiIsIm1heCIsImhhbmRsZUZvcm1hdENvZGUiLCJnZXREb21Ob2RlIiwiZGlzcGF0Y2hFdmVudCIsImNvbmNhdCIsInpJbmRleCIsIm9uQ2xpY2siLCJ0aXRsZSIsIlpvb21Jbkljb24iLCJjc3NDbGFzcyIsIlpvb21PdXRJY29uIiwiQWxpZ25JY29uIiwidHlwZSIsInBheWxvYWQiLCJJbmZvSWNvbiIsInNob3J0Y3V0c0RldGFpbHMiLCJrZXlzIiwid2lkZ2V0c0RldGFpbHMiLCJpZCIsIkNsb3NlSWNvbiIsIm1hcCIsInNob3J0Y3V0IiwiaSIsIndpZGdldCIsInZhbHVlIiwiY2hlY2tlZCIsIm9uQ2hhbmdlIiwiZSIsInRhcmdldCIsImhhbmdsZUNoYW5nZVdpZGdldHMiLCJzY3JlZW4iLCJLZXlib2FyZEljb24iLCJXaWRnZXRzSWNvbiIsInhtbG5zIiwiaGVpZ2h0Iiwidmlld0JveCIsIndpZHRoIiwiZmlsbCIsImQiLCJfcmVmMiIsIl9yZWYzIiwiX3JlZjQiLCJfcmVmNSIsIl9yZWY2IiwiX3JlZjciLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInByb3BzIiwiX293bmVyIiwiZXhwb3J0cyIsIkZyYWdtZW50IiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7222.b6759e0a.js.LICENSE.txt b/react_frontend/static/react_frontend/js/7222.b6759e0a.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7222.b6759e0a.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/7234.d1fa472a.js b/react_frontend/static/react_frontend/js/7234.d1fa472a.js new file mode 100644 index 000000000..164ed6777 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7234.d1fa472a.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7234,1052],{7437:(e,t,n)=>{"use strict";n.d(t,{AH:()=>c,i7:()=>u,mL:()=>l});var r=n(5684),o=n(6540),i=n(41),s=n(1287),a=n(6899),l=(n(4300),n(4146),(0,r.w)((function(e,t){var n=e.styles,l=(0,a.J)([n],void 0,o.useContext(r.T));if(!r.i){for(var c,u=l.name,d=l.styles,f=l.next;void 0!==f;)u+=" "+f.name,d+=f.styles,f=f.next;var m=!0===t.compat,p=t.insert("",{name:u,styles:d},t.sheet,m);return m?null:o.createElement("style",((c={})["data-emotion"]=t.key+"-global "+u,c.dangerouslySetInnerHTML={__html:p},c.nonce=t.sheet.nonce,c))}var v=o.useRef();return(0,s.i)((function(){var e=t.key+"-global",n=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),r=!1,o=document.querySelector('style[data-emotion="'+e+" "+l.name+'"]');return t.sheet.tags.length&&(n.before=t.sheet.tags[0]),null!==o&&(r=!0,o.setAttribute("data-emotion",e),n.hydrate([o])),v.current=[n,r],function(){n.flush()}}),[t]),(0,s.i)((function(){var e=v.current,n=e[0];if(e[1])e[1]=!1;else{if(void 0!==l.next&&(0,i.sk)(t,l.next,!0),n.tags.length){var r=n.tags[n.tags.length-1].nextElementSibling;n.before=r,n.flush()}t.insert("",l,n,!1)}}),[t,l.name]),null})));function c(){for(var e=arguments.length,t=new Array(e),n=0;n{"use strict";var r=n(4994);t.A=void 0;var o=r(n(2032)),i=n(4848),s=(0,o.default)((0,i.jsx)("path",{d:"M12 5V1L7 6l5 5V7c3.31 0 6 2.69 6 6s-2.69 6-6 6-6-2.69-6-6H4c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8z"}),"Replay");t.A=s},5003:(e,t,n)=>{"use strict";n.d(t,{A:()=>g});var r=n(8168),o=n(6540),i=n(8587),s=n(53),a=n(5659),l=n(8466),c=n(4409),u=n(7577),d=n(8413),f=n(1609);function m(e){return(0,f.A)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var p=n(4848);const v=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],h=(0,u.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t[`color${(0,l.A)(n.color)}`],t[`fontSize${(0,l.A)(n.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var n,r,o,i,s,a,l,c,u,d,f,m,p;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(n=e.transitions)||null==(r=n.create)?void 0:r.call(n,"fill",{duration:null==(o=e.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(i=e.typography)||null==(s=i.pxToRem)?void 0:s.call(i,20))||"1.25rem",medium:(null==(a=e.typography)||null==(l=a.pxToRem)?void 0:l.call(a,24))||"1.5rem",large:(null==(c=e.typography)||null==(u=c.pxToRem)?void 0:u.call(c,35))||"2.1875rem"}[t.fontSize],color:null!=(d=null==(f=(e.vars||e).palette)||null==(f=f[t.color])?void 0:f.main)?d:{action:null==(m=(e.vars||e).palette)||null==(m=m.action)?void 0:m.active,disabled:null==(p=(e.vars||e).palette)||null==(p=p.action)?void 0:p.disabled,inherit:void 0}[t.color]}})),y=o.forwardRef((function(e,t){const n=(0,c.A)({props:e,name:"MuiSvgIcon"}),{children:u,className:d,color:f="inherit",component:y="svg",fontSize:A="medium",htmlColor:g,inheritViewBox:S=!1,titleAccess:b,viewBox:w="0 0 24 24"}=n,x=(0,i.A)(n,v),E=o.isValidElement(u)&&"svg"===u.type,T=(0,r.A)({},n,{color:f,component:y,fontSize:A,instanceFontSize:e.fontSize,inheritViewBox:S,viewBox:w,hasSvgAsChild:E}),C={};S||(C.viewBox=w);const _=(e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root","inherit"!==t&&`color${(0,l.A)(t)}`,`fontSize${(0,l.A)(n)}`]};return(0,a.A)(o,m,r)})(T);return(0,p.jsxs)(h,(0,r.A)({as:y,className:(0,s.A)(_.root,d),focusable:"false",color:g,"aria-hidden":!b||void 0,role:b?"img":void 0,ref:t},C,x,E&&u.props,{ownerState:T,children:[E?u.props.children:u,b?(0,p.jsx)("title",{children:b}):null]}))}));y.muiName="SvgIcon";const A=y;function g(e,t){function n(n,o){return(0,p.jsx)(A,(0,r.A)({"data-testid":`${t}Icon`,ref:o},n,{children:e}))}return n.muiName=A.muiName,o.memo(o.forwardRef(n))}},1935:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(4705).A},5034:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const o=function(e,t){return r.isValidElement(e)&&-1!==t.indexOf(e.type.muiName)}},6248:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(2325).A},3749:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(4877).A},1159:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(2501).A},2778:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(1529).A},1668:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(4661).A},1210:(e,t,n)=>{"use strict";function r(...e){return e.reduce(((e,t)=>null==t?e:function(...n){e.apply(this,n),t.apply(this,n)}),(()=>{}))}n.d(t,{A:()=>r})},4705:(e,t,n)=>{"use strict";function r(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout((()=>{e.apply(this,r)}),t)}return r.clear=()=>{clearTimeout(n)},r}n.d(t,{A:()=>r})},2325:(e,t,n)=>{"use strict";function r(e){return e&&e.ownerDocument||document}n.d(t,{A:()=>r})},4877:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(2325);function o(e){return(0,r.A)(e).defaultView||window}},2501:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);function o({controlled:e,default:t,name:n,state:o="value"}){const{current:i}=r.useRef(void 0!==e),[s,a]=r.useState(t);return[i?e:s,r.useCallback((e=>{i||a(e)}),[])]}},4661:(e,t,n)=>{"use strict";var r;n.d(t,{A:()=>a});var o=n(6540);let i=0;const s=(r||(r=n.t(o,2)))["useId".toString()];function a(e){if(void 0!==s){const t=s();return null!=e?e:t}return function(e){const[t,n]=o.useState(e),r=e||t;return o.useEffect((()=>{null==t&&(i+=1,n(`mui-${i}`))}),[t]),r}(e)}},7229:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var r=n(6540),o=n(5556),i=n.n(o),s=n(3718),a=n(4634),l=n(4848);function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,s,a=[],l=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(a.push(r.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";var r=n(6925);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,s){if(s!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixFQUNMbUIsUUFBU1gsRUFDVHRMLFFBQVM4SyxFQUNUb0IsWUFBYXBCLEVBQ2JxQixXQUFZYixFQUNaak0sS0FBTXlMLEVBQ05zQixTQUFVZCxFQUNWZSxNQUFPZixFQUNQZ0IsVUFBV2hCLEVBQ1hpQixNQUFPakIsRUFDUGtCLE1BQU9sQixFQUVQbUIsZUFBZ0I5QixFQUNoQkMsa0JBQW1CRixHQUtyQixPQUZBYyxFQUFlaEIsVUFBWWdCLEVBRXBCQSxDQUNULEMsaUJDL0NFWCxFQUFPOUosUUFBVSxFQUFRLEtBQVIsRSx3QkNObkI4SixFQUFPOUosUUFGb0IsOEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9pY29ucy1tYXRlcmlhbC9SZXBsYXkuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL3N2Z0ljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvaXNNdWlFbGVtZW50LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2lzTXVpRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VFbmhhbmNlZEVmZmVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2NyZWF0ZUNoYWluZWRGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9kZWJvdW5jZS9kZWJvdW5jZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lckRvY3VtZW50L293bmVyRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vb3duZXJXaW5kb3cvb3duZXJXaW5kb3cuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlQ29udHJvbGxlZC91c2VDb250cm9sbGVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlkL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9SZXNldEJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGggYXMgaGFzT3duUHJvcGVydHksIEUgYXMgRW1vdGlvbiwgYyBhcyBjcmVhdGVFbW90aW9uUHJvcHMsIHcgYXMgd2l0aEVtb3Rpb25DYWNoZSwgVCBhcyBUaGVtZUNvbnRleHQsIGkgYXMgaXNCcm93c2VyJDEgfSBmcm9tICcuL2Vtb3Rpb24tZWxlbWVudC1jMzk2MTdkOC5icm93c2VyLmVzbS5qcyc7XG5leHBvcnQgeyBDIGFzIENhY2hlUHJvdmlkZXIsIFQgYXMgVGhlbWVDb250ZXh0LCBhIGFzIFRoZW1lUHJvdmlkZXIsIF8gYXMgX191bnNhZmVfdXNlRW1vdGlvbkNhY2hlLCB1IGFzIHVzZVRoZW1lLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIGIgYXMgd2l0aFRoZW1lIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaW5zZXJ0U3R5bGVzLCByZWdpc3RlclN0eWxlcywgZ2V0UmVnaXN0ZXJlZFN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcbmltcG9ydCB7IHNlcmlhbGl6ZVN0eWxlcyB9IGZyb20gJ0BlbW90aW9uL3NlcmlhbGl6ZSc7XG5pbXBvcnQgJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9leHRlbmRzJztcbmltcG9ydCAnQGVtb3Rpb24vd2Vhay1tZW1vaXplJztcbmltcG9ydCAnLi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAnaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MnO1xuXG52YXIgcGtnID0ge1xuXHRuYW1lOiBcIkBlbW90aW9uL3JlYWN0XCIsXG5cdHZlcnNpb246IFwiMTEuMTEuMVwiLFxuXHRtYWluOiBcImRpc3QvZW1vdGlvbi1yZWFjdC5janMuanNcIixcblx0bW9kdWxlOiBcImRpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIixcblx0YnJvd3Nlcjoge1xuXHRcdFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanNcIlxuXHR9LFxuXHRleHBvcnRzOiB7XG5cdFx0XCIuXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3Qud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL2pzeC1ydW50aW1lXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL19pc29sYXRlZC1obnJzXCI6IHtcblx0XHRcdG1vZHVsZToge1xuXHRcdFx0XHR3b3JrZXI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLmVzbS5qc1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJpbXBvcnRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL2pzeC1kZXYtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUud29ya2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRicm93c2VyOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuYnJvd3Nlci5lc20uanNcIixcblx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMubWpzXCIsXG5cdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmNqcy5qc1wiXG5cdFx0fSxcblx0XHRcIi4vcGFja2FnZS5qc29uXCI6IFwiLi9wYWNrYWdlLmpzb25cIixcblx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcIi4vbWFjcm9cIjoge1xuXHRcdFx0dHlwZXM6IHtcblx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uZC50c1wiXG5cdFx0XHR9LFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0fVxuXHR9LFxuXHR0eXBlczogXCJ0eXBlcy9pbmRleC5kLnRzXCIsXG5cdGZpbGVzOiBbXG5cdFx0XCJzcmNcIixcblx0XHRcImRpc3RcIixcblx0XHRcImpzeC1ydW50aW1lXCIsXG5cdFx0XCJqc3gtZGV2LXJ1bnRpbWVcIixcblx0XHRcIl9pc29sYXRlZC1obnJzXCIsXG5cdFx0XCJ0eXBlcy8qLmQudHNcIixcblx0XHRcIm1hY3JvLipcIlxuXHRdLFxuXHRzaWRlRWZmZWN0czogZmFsc2UsXG5cdGF1dGhvcjogXCJFbW90aW9uIENvbnRyaWJ1dG9yc1wiLFxuXHRsaWNlbnNlOiBcIk1JVFwiLFxuXHRzY3JpcHRzOiB7XG5cdFx0XCJ0ZXN0OnR5cGVzY3JpcHRcIjogXCJkdHNsaW50IHR5cGVzXCJcblx0fSxcblx0ZGVwZW5kZW5jaWVzOiB7XG5cdFx0XCJAYmFiZWwvcnVudGltZVwiOiBcIl43LjE4LjNcIixcblx0XHRcIkBlbW90aW9uL2JhYmVsLXBsdWdpblwiOiBcIl4xMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9jYWNoZVwiOiBcIl4xMS4xMS4wXCIsXG5cdFx0XCJAZW1vdGlvbi9zZXJpYWxpemVcIjogXCJeMS4xLjJcIixcblx0XHRcIkBlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzXCI6IFwiXjEuMC4xXCIsXG5cdFx0XCJAZW1vdGlvbi91dGlsc1wiOiBcIl4xLjIuMVwiLFxuXHRcdFwiQGVtb3Rpb24vd2Vhay1tZW1vaXplXCI6IFwiXjAuMy4xXCIsXG5cdFx0XCJob2lzdC1ub24tcmVhY3Qtc3RhdGljc1wiOiBcIl4zLjMuMVwiXG5cdH0sXG5cdHBlZXJEZXBlbmRlbmNpZXM6IHtcblx0XHRyZWFjdDogXCI+PTE2LjguMFwiXG5cdH0sXG5cdHBlZXJEZXBlbmRlbmNpZXNNZXRhOiB7XG5cdFx0XCJAdHlwZXMvcmVhY3RcIjoge1xuXHRcdFx0b3B0aW9uYWw6IHRydWVcblx0XHR9XG5cdH0sXG5cdGRldkRlcGVuZGVuY2llczoge1xuXHRcdFwiQGRlZmluaXRlbHl0eXBlZC9kdHNsaW50XCI6IFwiMC4wLjExMlwiLFxuXHRcdFwiQGVtb3Rpb24vY3NzXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY3NzLXByZXR0aWZpZXJcIjogXCIxLjEuM1wiLFxuXHRcdFwiQGVtb3Rpb24vc2VydmVyXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc3R5bGVkXCI6IFwiMTEuMTEuMFwiLFxuXHRcdFwiaHRtbC10YWctbmFtZXNcIjogXCJeMS4xLjJcIixcblx0XHRyZWFjdDogXCIxNi4xNC4wXCIsXG5cdFx0XCJzdmctdGFnLW5hbWVzXCI6IFwiXjEuMS4xXCIsXG5cdFx0dHlwZXNjcmlwdDogXCJeNC41LjVcIlxuXHR9LFxuXHRyZXBvc2l0b3J5OiBcImh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vdHJlZS9tYWluL3BhY2thZ2VzL3JlYWN0XCIsXG5cdHB1Ymxpc2hDb25maWc6IHtcblx0XHRhY2Nlc3M6IFwicHVibGljXCJcblx0fSxcblx0XCJ1bWQ6bWFpblwiOiBcImRpc3QvZW1vdGlvbi1yZWFjdC51bWQubWluLmpzXCIsXG5cdHByZWNvbnN0cnVjdDoge1xuXHRcdGVudHJ5cG9pbnRzOiBbXG5cdFx0XHRcIi4vaW5kZXguanNcIixcblx0XHRcdFwiLi9qc3gtcnVudGltZS5qc1wiLFxuXHRcdFx0XCIuL2pzeC1kZXYtcnVudGltZS5qc1wiLFxuXHRcdFx0XCIuL19pc29sYXRlZC1obnJzLmpzXCJcblx0XHRdLFxuXHRcdHVtZE5hbWU6IFwiZW1vdGlvblJlYWN0XCIsXG5cdFx0ZXhwb3J0czoge1xuXHRcdFx0ZW52Q29uZGl0aW9uczogW1xuXHRcdFx0XHRcImJyb3dzZXJcIixcblx0XHRcdFx0XCJ3b3JrZXJcIlxuXHRcdFx0XSxcblx0XHRcdGV4dHJhOiB7XG5cdFx0XHRcdFwiLi90eXBlcy9jc3MtcHJvcFwiOiBcIi4vdHlwZXMvY3NzLXByb3AuZC50c1wiLFxuXHRcdFx0XHRcIi4vbWFjcm9cIjoge1xuXHRcdFx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFx0XHRcImltcG9ydFwiOiBcIi4vbWFjcm8uZC5tdHNcIixcblx0XHRcdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uZC50c1wiXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmpzXCJcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxudmFyIGpzeCA9IGZ1bmN0aW9uIGpzeCh0eXBlLCBwcm9wcykge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcblxuICBpZiAocHJvcHMgPT0gbnVsbCB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgJ2NzcycpKSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50LmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gIH1cblxuICB2YXIgYXJnc0xlbmd0aCA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgY3JlYXRlRWxlbWVudEFyZ0FycmF5ID0gbmV3IEFycmF5KGFyZ3NMZW5ndGgpO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMF0gPSBFbW90aW9uO1xuICBjcmVhdGVFbGVtZW50QXJnQXJyYXlbMV0gPSBjcmVhdGVFbW90aW9uUHJvcHModHlwZSwgcHJvcHMpO1xuXG4gIGZvciAodmFyIGkgPSAyOyBpIDwgYXJnc0xlbmd0aDsgaSsrKSB7XG4gICAgY3JlYXRlRWxlbWVudEFyZ0FycmF5W2ldID0gYXJnc1tpXTtcbiAgfSAvLyAkRmxvd0ZpeE1lXG5cblxuICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShudWxsLCBjcmVhdGVFbGVtZW50QXJnQXJyYXkpO1xufTtcblxudmFyIHdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCA9IGZhbHNlOyAvLyBtYWludGFpbiBwbGFjZSBvdmVyIHJlcmVuZGVycy5cbi8vIGluaXRpYWwgcmVuZGVyIGZyb20gYnJvd3NlciwgaW5zZXJ0QmVmb3JlIGNvbnRleHQuc2hlZXQudGFnc1swXSBvciBpZiBhIHN0eWxlIGhhc24ndCBiZWVuIGluc2VydGVkIHRoZXJlIHlldCwgYXBwZW5kQ2hpbGRcbi8vIGluaXRpYWwgY2xpZW50LXNpZGUgcmVuZGVyIGZyb20gU1NSLCB1c2UgcGxhY2Ugb2YgaHlkcmF0aW5nIHRhZ1xuXG52YXIgR2xvYmFsID0gLyogI19fUFVSRV9fICovd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgJiYgKCAvLyBjaGVjayBmb3IgY2xhc3NOYW1lIGFzIHdlbGwgc2luY2UgdGhlIHVzZXIgaXNcbiAgLy8gcHJvYmFibHkgdXNpbmcgdGhlIGN1c3RvbSBjcmVhdGVFbGVtZW50IHdoaWNoXG4gIC8vIG1lYW5zIGl0IHdpbGwgYmUgdHVybmVkIGludG8gYSBjbGFzc05hbWUgcHJvcFxuICAvLyAkRmxvd0ZpeE1lIEkgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gYWRkIGl0IHRvIHRoZSB0eXBlIHNpbmNlIGl0IHNob3VsZG4ndCBiZSB1c2VkXG4gIHByb3BzLmNsYXNzTmFtZSB8fCBwcm9wcy5jc3MpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIHRoZSBjc3MgcHJvcCBvbiBHbG9iYWwsIGRpZCB5b3UgbWVhbiB0byB1c2UgdGhlIHN0eWxlcyBwcm9wIGluc3RlYWQ/XCIpO1xuICAgIHdhcm5lZEFib3V0Q3NzUHJvcEZvckdsb2JhbCA9IHRydWU7XG4gIH1cblxuICB2YXIgc3R5bGVzID0gcHJvcHMuc3R5bGVzO1xuICB2YXIgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZVN0eWxlcyhbc3R5bGVzXSwgdW5kZWZpbmVkLCBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCkpO1xuXG4gIGlmICghaXNCcm93c2VyJDEpIHtcbiAgICB2YXIgX3JlZjtcblxuICAgIHZhciBzZXJpYWxpemVkTmFtZXMgPSBzZXJpYWxpemVkLm5hbWU7XG4gICAgdmFyIHNlcmlhbGl6ZWRTdHlsZXMgPSBzZXJpYWxpemVkLnN0eWxlcztcbiAgICB2YXIgbmV4dCA9IHNlcmlhbGl6ZWQubmV4dDtcblxuICAgIHdoaWxlIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNlcmlhbGl6ZWROYW1lcyArPSAnICcgKyBuZXh0Lm5hbWU7XG4gICAgICBzZXJpYWxpemVkU3R5bGVzICs9IG5leHQuc3R5bGVzO1xuICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkQ2FjaGUgPSBjYWNoZS5jb21wYXQgPT09IHRydWU7XG4gICAgdmFyIHJ1bGVzID0gY2FjaGUuaW5zZXJ0KFwiXCIsIHtcbiAgICAgIG5hbWU6IHNlcmlhbGl6ZWROYW1lcyxcbiAgICAgIHN0eWxlczogc2VyaWFsaXplZFN0eWxlc1xuICAgIH0sIGNhY2hlLnNoZWV0LCBzaG91bGRDYWNoZSk7XG5cbiAgICBpZiAoc2hvdWxkQ2FjaGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIChfcmVmID0ge30sIF9yZWZbXCJkYXRhLWVtb3Rpb25cIl0gPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWwgXCIgKyBzZXJpYWxpemVkTmFtZXMsIF9yZWYuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPSB7XG4gICAgICBfX2h0bWw6IHJ1bGVzXG4gICAgfSwgX3JlZi5ub25jZSA9IGNhY2hlLnNoZWV0Lm5vbmNlLCBfcmVmKSk7XG4gIH0gLy8geWVzLCBpIGtub3cgdGhlc2UgaG9va3MgYXJlIHVzZWQgY29uZGl0aW9uYWxseVxuICAvLyBidXQgaXQgaXMgYmFzZWQgb24gYSBjb25zdGFudCB0aGF0IHdpbGwgbmV2ZXIgY2hhbmdlIGF0IHJ1bnRpbWVcbiAgLy8gaXQncyBlZmZlY3RpdmVseSBsaWtlIGhhdmluZyB0d28gaW1wbGVtZW50YXRpb25zIGFuZCBzd2l0Y2hpbmcgdGhlbSBvdXRcbiAgLy8gc28gaXQncyBub3QgYWN0dWFsbHkgYnJlYWtpbmcgYW55dGhpbmdcblxuXG4gIHZhciBzaGVldFJlZiA9IFJlYWN0LnVzZVJlZigpO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBrZXkgPSBjYWNoZS5rZXkgKyBcIi1nbG9iYWxcIjsgLy8gdXNlIGNhc2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi9pc3N1ZXMvMjY3NVxuXG4gICAgdmFyIHNoZWV0ID0gbmV3IGNhY2hlLnNoZWV0LmNvbnN0cnVjdG9yKHtcbiAgICAgIGtleToga2V5LFxuICAgICAgbm9uY2U6IGNhY2hlLnNoZWV0Lm5vbmNlLFxuICAgICAgY29udGFpbmVyOiBjYWNoZS5zaGVldC5jb250YWluZXIsXG4gICAgICBzcGVlZHk6IGNhY2hlLnNoZWV0LmlzU3BlZWR5XG4gICAgfSk7XG4gICAgdmFyIHJlaHlkcmF0aW5nID0gZmFsc2U7IC8vICRGbG93Rml4TWVcblxuICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcInN0eWxlW2RhdGEtZW1vdGlvbj1cXFwiXCIgKyBrZXkgKyBcIiBcIiArIHNlcmlhbGl6ZWQubmFtZSArIFwiXFxcIl1cIik7XG5cbiAgICBpZiAoY2FjaGUuc2hlZXQudGFncy5sZW5ndGgpIHtcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGNhY2hlLnNoZWV0LnRhZ3NbMF07XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgIT09IG51bGwpIHtcbiAgICAgIHJlaHlkcmF0aW5nID0gdHJ1ZTsgLy8gY2xlYXIgdGhlIGhhc2ggc28gdGhpcyBub2RlIHdvbid0IGJlIHJlY29nbml6YWJsZSBhcyByZWh5ZHJhdGFibGUgYnkgb3RoZXIgPEdsb2JhbC8+c1xuXG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJywga2V5KTtcbiAgICAgIHNoZWV0Lmh5ZHJhdGUoW25vZGVdKTtcbiAgICB9XG5cbiAgICBzaGVldFJlZi5jdXJyZW50ID0gW3NoZWV0LCByZWh5ZHJhdGluZ107XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfTtcbiAgfSwgW2NhY2hlXSk7XG4gIHVzZUluc2VydGlvbkVmZmVjdFdpdGhMYXlvdXRGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0UmVmQ3VycmVudCA9IHNoZWV0UmVmLmN1cnJlbnQ7XG4gICAgdmFyIHNoZWV0ID0gc2hlZXRSZWZDdXJyZW50WzBdLFxuICAgICAgICByZWh5ZHJhdGluZyA9IHNoZWV0UmVmQ3VycmVudFsxXTtcblxuICAgIGlmIChyZWh5ZHJhdGluZykge1xuICAgICAgc2hlZXRSZWZDdXJyZW50WzFdID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHNlcmlhbGl6ZWQubmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBpbnNlcnQga2V5ZnJhbWVzXG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQubmV4dCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgdGhlbiBpdCB3aWxsIGJlIG51bGwgc28gdGhlIHN0eWxlIGVsZW1lbnQgd2lsbCBiZSBhcHBlbmRlZFxuICAgICAgdmFyIGVsZW1lbnQgPSBzaGVldC50YWdzW3NoZWV0LnRhZ3MubGVuZ3RoIC0gMV0ubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgc2hlZXQuYmVmb3JlID0gZWxlbWVudDtcbiAgICAgIHNoZWV0LmZsdXNoKCk7XG4gICAgfVxuXG4gICAgY2FjaGUuaW5zZXJ0KFwiXCIsIHNlcmlhbGl6ZWQsIHNoZWV0LCBmYWxzZSk7XG4gIH0sIFtjYWNoZSwgc2VyaWFsaXplZC5uYW1lXSk7XG4gIHJldHVybiBudWxsO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEdsb2JhbC5kaXNwbGF5TmFtZSA9ICdFbW90aW9uR2xvYmFsJztcbn1cblxuZnVuY3Rpb24gY3NzKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIHNlcmlhbGl6ZVN0eWxlcyhhcmdzKTtcbn1cblxudmFyIGtleWZyYW1lcyA9IGZ1bmN0aW9uIGtleWZyYW1lcygpIHtcbiAgdmFyIGluc2VydGFibGUgPSBjc3MuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB2YXIgbmFtZSA9IFwiYW5pbWF0aW9uLVwiICsgaW5zZXJ0YWJsZS5uYW1lOyAvLyAkRmxvd0ZpeE1lXG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogXCJAa2V5ZnJhbWVzIFwiICsgbmFtZSArIFwie1wiICsgaW5zZXJ0YWJsZS5zdHlsZXMgKyBcIn1cIixcbiAgICBhbmltOiAxLFxuICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBcIl9FTU9fXCIgKyB0aGlzLm5hbWUgKyBcIl9cIiArIHRoaXMuc3R5bGVzICsgXCJfRU1PX1wiO1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBjbGFzc25hbWVzID0gZnVuY3Rpb24gY2xhc3NuYW1lcyhhcmdzKSB7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgY2xzID0gJyc7XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT0gbnVsbCkgY29udGludWU7XG4gICAgdmFyIHRvQWRkID0gdm9pZCAwO1xuXG4gICAgc3dpdGNoICh0eXBlb2YgYXJnKSB7XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgICAgICB0b0FkZCA9IGNsYXNzbmFtZXMoYXJnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgYXJnLnN0eWxlcyAhPT0gdW5kZWZpbmVkICYmIGFyZy5uYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignWW91IGhhdmUgcGFzc2VkIHN0eWxlcyBjcmVhdGVkIHdpdGggYGNzc2AgZnJvbSBgQGVtb3Rpb24vcmVhY3RgIHBhY2thZ2UgdG8gdGhlIGBjeGAuXFxuJyArICdgY3hgIGlzIG1lYW50IHRvIGNvbXBvc2UgY2xhc3MgbmFtZXMgKHN0cmluZ3MpIHNvIHlvdSBzaG91bGQgY29udmVydCB0aG9zZSBzdHlsZXMgdG8gYSBjbGFzcyBuYW1lIGJ5IHBhc3NpbmcgdGhlbSB0byB0aGUgYGNzc2AgcmVjZWl2ZWQgZnJvbSA8Q2xhc3NOYW1lcy8+IGNvbXBvbmVudC4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG9BZGQgPSAnJztcblxuICAgICAgICAgICAgZm9yICh2YXIgayBpbiBhcmcpIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ1trXSAmJiBrKSB7XG4gICAgICAgICAgICAgICAgdG9BZGQgJiYgKHRvQWRkICs9ICcgJyk7XG4gICAgICAgICAgICAgICAgdG9BZGQgKz0gaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHtcbiAgICAgICAgICB0b0FkZCA9IGFyZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b0FkZCkge1xuICAgICAgY2xzICYmIChjbHMgKz0gJyAnKTtcbiAgICAgIGNscyArPSB0b0FkZDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xzO1xufTtcblxuZnVuY3Rpb24gbWVyZ2UocmVnaXN0ZXJlZCwgY3NzLCBjbGFzc05hbWUpIHtcbiAgdmFyIHJlZ2lzdGVyZWRTdHlsZXMgPSBbXTtcbiAgdmFyIHJhd0NsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMocmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgY2xhc3NOYW1lKTtcblxuICBpZiAocmVnaXN0ZXJlZFN0eWxlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgfVxuXG4gIHJldHVybiByYXdDbGFzc05hbWUgKyBjc3MocmVnaXN0ZXJlZFN0eWxlcyk7XG59XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZEFyciA9IF9yZWYuc2VyaWFsaXplZEFycjtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmlhbGl6ZWRBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZEFycltpXSwgZmFsc2UpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG52YXIgQ2xhc3NOYW1lcyA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICB2YXIgaGFzUmVuZGVyZWQgPSBmYWxzZTtcbiAgdmFyIHNlcmlhbGl6ZWRBcnIgPSBbXTtcblxuICB2YXIgY3NzID0gZnVuY3Rpb24gY3NzKCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NzcyBjYW4gb25seSBiZSB1c2VkIGR1cmluZyByZW5kZXInKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoYXJncywgY2FjaGUucmVnaXN0ZXJlZCk7XG4gICAgc2VyaWFsaXplZEFyci5wdXNoKHNlcmlhbGl6ZWQpOyAvLyByZWdpc3RyYXRpb24gaGFzIHRvIGhhcHBlbiBoZXJlIGFzIHRoZSByZXN1bHQgb2YgdGhpcyBtaWdodCBnZXQgY29uc3VtZWQgYnkgYGN4YFxuXG4gICAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGZhbHNlKTtcbiAgICByZXR1cm4gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIH07XG5cbiAgdmFyIGN4ID0gZnVuY3Rpb24gY3goKSB7XG4gICAgaWYgKGhhc1JlbmRlcmVkICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3ggY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKGNhY2hlLnJlZ2lzdGVyZWQsIGNzcywgY2xhc3NuYW1lcyhhcmdzKSk7XG4gIH07XG5cbiAgdmFyIGNvbnRlbnQgPSB7XG4gICAgY3NzOiBjc3MsXG4gICAgY3g6IGN4LFxuICAgIHRoZW1lOiBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dClcbiAgfTtcbiAgdmFyIGVsZSA9IHByb3BzLmNoaWxkcmVuKGNvbnRlbnQpO1xuICBoYXNSZW5kZXJlZCA9IHRydWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWRBcnI6IHNlcmlhbGl6ZWRBcnJcbiAgfSksIGVsZSk7XG59KTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgQ2xhc3NOYW1lcy5kaXNwbGF5TmFtZSA9ICdFbW90aW9uQ2xhc3NOYW1lcyc7XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBpc0Jyb3dzZXIgPSBcIm9iamVjdFwiICE9PSAndW5kZWZpbmVkJzsgLy8gIzE3MjcsICMyOTA1IGZvciBzb21lIHJlYXNvbiBKZXN0IGFuZCBWaXRlc3QgZXZhbHVhdGUgbW9kdWxlcyB0d2ljZSBpZiBzb21lIGNvbnN1bWluZyBtb2R1bGUgZ2V0cyBtb2NrZWRcblxuICB2YXIgaXNUZXN0RW52ID0gdHlwZW9mIGplc3QgIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiB2aSAhPT0gJ3VuZGVmaW5lZCc7XG5cbiAgaWYgKGlzQnJvd3NlciAmJiAhaXNUZXN0RW52KSB7XG4gICAgLy8gZ2xvYmFsVGhpcyBoYXMgd2lkZSBicm93c2VyIHN1cHBvcnQgLSBodHRwczovL2Nhbml1c2UuY29tLz9zZWFyY2g9Z2xvYmFsVGhpcywgTm9kZS5qcyAxMiBhbmQgbGF0ZXJcbiAgICB2YXIgZ2xvYmFsQ29udGV4dCA9IC8vICRGbG93SWdub3JlXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsVGhpcyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgOiBpc0Jyb3dzZXIgPyB3aW5kb3cgOiBnbG9iYWw7XG4gICAgdmFyIGdsb2JhbEtleSA9IFwiX19FTU9USU9OX1JFQUNUX1wiICsgcGtnLnZlcnNpb24uc3BsaXQoJy4nKVswXSArIFwiX19cIjtcblxuICAgIGlmIChnbG9iYWxDb250ZXh0W2dsb2JhbEtleV0pIHtcbiAgICAgIGNvbnNvbGUud2FybignWW91IGFyZSBsb2FkaW5nIEBlbW90aW9uL3JlYWN0IHdoZW4gaXQgaXMgYWxyZWFkeSBsb2FkZWQuIFJ1bm5pbmcgJyArICdtdWx0aXBsZSBpbnN0YW5jZXMgbWF5IGNhdXNlIHByb2JsZW1zLiBUaGlzIGNhbiBoYXBwZW4gaWYgbXVsdGlwbGUgJyArICd2ZXJzaW9ucyBhcmUgdXNlZCwgb3IgaWYgbXVsdGlwbGUgYnVpbGRzIG9mIHRoZSBzYW1lIHZlcnNpb24gYXJlICcgKyAndXNlZC4nKTtcbiAgICB9XG5cbiAgICBnbG9iYWxDb250ZXh0W2dsb2JhbEtleV0gPSB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCB7IENsYXNzTmFtZXMsIEdsb2JhbCwganN4IGFzIGNyZWF0ZUVsZW1lbnQsIGNzcywganN4LCBrZXlmcmFtZXMgfTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXCJ1c2UgY2xpZW50XCI7XG5cbnZhciBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0ID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBfY3JlYXRlU3ZnSWNvbiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vdXRpbHMvY3JlYXRlU3ZnSWNvblwiKSk7XG52YXIgX2pzeFJ1bnRpbWUgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7XG52YXIgX2RlZmF1bHQgPSAoMCwgX2NyZWF0ZVN2Z0ljb24uZGVmYXVsdCkoIC8qI19fUFVSRV9fKi8oMCwgX2pzeFJ1bnRpbWUuanN4KShcInBhdGhcIiwge1xuICBkOiBcIk0xMiA1VjFMNyA2bDUgNVY3YzMuMzEgMCA2IDIuNjkgNiA2cy0yLjY5IDYtNiA2LTYtMi42OS02LTZINGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04LTMuNTgtOC04LTh6XCJcbn0pLCAnUmVwbGF5Jyk7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpU3ZnSWNvbicsIHNsb3QpO1xufVxuY29uc3Qgc3ZnSWNvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlTdmdJY29uJywgWydyb290JywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvckFjdGlvbicsICdjb2xvckVycm9yJywgJ2NvbG9yRGlzYWJsZWQnLCAnZm9udFNpemVJbmhlcml0JywgJ2ZvbnRTaXplU21hbGwnLCAnZm9udFNpemVNZWRpdW0nLCAnZm9udFNpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IHN2Z0ljb25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJmb250U2l6ZVwiLCBcImh0bWxDb2xvclwiLCBcImluaGVyaXRWaWV3Qm94XCIsIFwidGl0bGVBY2Nlc3NcIiwgXCJ2aWV3Qm94XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vc3ZnSWNvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBmb250U2l6ZSxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBjb2xvciAhPT0gJ2luaGVyaXQnICYmIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYGZvbnRTaXplJHtjYXBpdGFsaXplKGZvbnRTaXplKX1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IFN2Z0ljb25Sb290ID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlTdmdJY29uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYGZvbnRTaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuZm9udFNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSR0cmFuc2l0aW9ucywgX3RoZW1lJHRyYW5zaXRpb25zJGNyLCBfdGhlbWUkdHJhbnNpdGlvbnMyLCBfdGhlbWUkdHlwb2dyYXBoeSwgX3RoZW1lJHR5cG9ncmFwaHkkcHhULCBfdGhlbWUkdHlwb2dyYXBoeTIsIF90aGVtZSR0eXBvZ3JhcGh5MiRweCwgX3RoZW1lJHR5cG9ncmFwaHkzLCBfdGhlbWUkdHlwb2dyYXBoeTMkcHgsIF9wYWxldHRlJG93bmVyU3RhdGUkYywgX3BhbGV0dGUsIF9wYWxldHRlMiwgX3BhbGV0dGUzO1xuICByZXR1cm4ge1xuICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICB3aWR0aDogJzFlbScsXG4gICAgaGVpZ2h0OiAnMWVtJyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAvLyB0aGUgPHN2Zz4gd2lsbCBkZWZpbmUgdGhlIHByb3BlcnR5IHRoYXQgaGFzIGBjdXJyZW50Q29sb3JgXG4gICAgLy8gZS5nLiBoZXJvaWNvbnMgdXNlcyBmaWxsPVwibm9uZVwiIGFuZCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgIGZpbGw6IG93bmVyU3RhdGUuaGFzU3ZnQXNDaGlsZCA/IHVuZGVmaW5lZCA6ICdjdXJyZW50Q29sb3InLFxuICAgIGZsZXhTaHJpbms6IDAsXG4gICAgdHJhbnNpdGlvbjogKF90aGVtZSR0cmFuc2l0aW9ucyA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMkY3IgPSBfdGhlbWUkdHJhbnNpdGlvbnMuY3JlYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHRyYW5zaXRpb25zJGNyLmNhbGwoX3RoZW1lJHRyYW5zaXRpb25zLCAnZmlsbCcsIHtcbiAgICAgIGR1cmF0aW9uOiAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IHRoZW1lLnRyYW5zaXRpb25zKSA9PSBudWxsIHx8IChfdGhlbWUkdHJhbnNpdGlvbnMyID0gX3RoZW1lJHRyYW5zaXRpb25zMi5kdXJhdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9uczIuc2hvcnRlclxuICAgIH0pLFxuICAgIGZvbnRTaXplOiB7XG4gICAgICBpbmhlcml0OiAnaW5oZXJpdCcsXG4gICAgICBzbWFsbDogKChfdGhlbWUkdHlwb2dyYXBoeSA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5JHB4VCA9IF90aGVtZSR0eXBvZ3JhcGh5LnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeSRweFQuY2FsbChfdGhlbWUkdHlwb2dyYXBoeSwgMjApKSB8fCAnMS4yNXJlbScsXG4gICAgICBtZWRpdW06ICgoX3RoZW1lJHR5cG9ncmFwaHkyID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkyJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkyLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTIkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTIsIDI0KSkgfHwgJzEuNXJlbScsXG4gICAgICBsYXJnZTogKChfdGhlbWUkdHlwb2dyYXBoeTMgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeTMkcHggPSBfdGhlbWUkdHlwb2dyYXBoeTMucHhUb1JlbSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0eXBvZ3JhcGh5MyRweC5jYWxsKF90aGVtZSR0eXBvZ3JhcGh5MywgMzUpKSB8fCAnMi4xODc1cmVtJ1xuICAgIH1bb3duZXJTdGF0ZS5mb250U2l6ZV0sXG4gICAgLy8gVE9ETyB2NSBkZXByZWNhdGUsIHY2IHJlbW92ZSBmb3Igc3hcbiAgICBjb2xvcjogKF9wYWxldHRlJG93bmVyU3RhdGUkYyA9IChfcGFsZXR0ZSA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZSA9IF9wYWxldHRlW293bmVyU3RhdGUuY29sb3JdKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUubWFpbikgIT0gbnVsbCA/IF9wYWxldHRlJG93bmVyU3RhdGUkYyA6IHtcbiAgICAgIGFjdGlvbjogKF9wYWxldHRlMiA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTIgPSBfcGFsZXR0ZTIuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUyLmFjdGl2ZSxcbiAgICAgIGRpc2FibGVkOiAoX3BhbGV0dGUzID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgfHwgKF9wYWxldHRlMyA9IF9wYWxldHRlMy5hY3Rpb24pID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZTMuZGlzYWJsZWQsXG4gICAgICBpbmhlcml0OiB1bmRlZmluZWRcbiAgICB9W293bmVyU3RhdGUuY29sb3JdXG4gIH07XG59KTtcbmNvbnN0IFN2Z0ljb24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBTdmdJY29uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlTdmdJY29uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdpbmhlcml0JyxcbiAgICAgIGNvbXBvbmVudCA9ICdzdmcnLFxuICAgICAgZm9udFNpemUgPSAnbWVkaXVtJyxcbiAgICAgIGh0bWxDb2xvcixcbiAgICAgIGluaGVyaXRWaWV3Qm94ID0gZmFsc2UsXG4gICAgICB0aXRsZUFjY2VzcyxcbiAgICAgIHZpZXdCb3ggPSAnMCAwIDI0IDI0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBoYXNTdmdBc0NoaWxkID0gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSAmJiBjaGlsZHJlbi50eXBlID09PSAnc3ZnJztcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBmb250U2l6ZSxcbiAgICBpbnN0YW5jZUZvbnRTaXplOiBpblByb3BzLmZvbnRTaXplLFxuICAgIGluaGVyaXRWaWV3Qm94LFxuICAgIHZpZXdCb3gsXG4gICAgaGFzU3ZnQXNDaGlsZFxuICB9KTtcbiAgY29uc3QgbW9yZSA9IHt9O1xuICBpZiAoIWluaGVyaXRWaWV3Qm94KSB7XG4gICAgbW9yZS52aWV3Qm94ID0gdmlld0JveDtcbiAgfVxuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoU3ZnSWNvblJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgZm9jdXNhYmxlOiBcImZhbHNlXCIsXG4gICAgY29sb3I6IGh0bWxDb2xvcixcbiAgICBcImFyaWEtaGlkZGVuXCI6IHRpdGxlQWNjZXNzID8gdW5kZWZpbmVkIDogdHJ1ZSxcbiAgICByb2xlOiB0aXRsZUFjY2VzcyA/ICdpbWcnIDogdW5kZWZpbmVkLFxuICAgIHJlZjogcmVmXG4gIH0sIG1vcmUsIG90aGVyLCBoYXNTdmdBc0NoaWxkICYmIGNoaWxkcmVuLnByb3BzLCB7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogW2hhc1N2Z0FzQ2hpbGQgPyBjaGlsZHJlbi5wcm9wcy5jaGlsZHJlbiA6IGNoaWxkcmVuLCB0aXRsZUFjY2VzcyA/IC8qI19fUFVSRV9fKi9fanN4KFwidGl0bGVcIiwge1xuICAgICAgY2hpbGRyZW46IHRpdGxlQWNjZXNzXG4gICAgfSkgOiBudWxsXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFN2Z0ljb24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogTm9kZSBwYXNzZWQgaW50byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIFlvdSBjYW4gdXNlIHRoZSBgaHRtbENvbG9yYCBwcm9wIHRvIGFwcGx5IGEgY29sb3IgYXR0cmlidXRlIHRvIHRoZSBTVkcgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgJ2luaGVyaXQnXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2FjdGlvbicsICdkaXNhYmxlZCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgZm9udFNpemUgYXBwbGllZCB0byB0aGUgaWNvbi4gRGVmYXVsdHMgdG8gMjRweCwgYnV0IGNhbiBiZSBjb25maWd1cmUgdG8gaW5oZXJpdCBmb250IHNpemUuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBmb250U2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2xhcmdlJywgJ21lZGl1bScsICdzbWFsbCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQXBwbGllcyBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqL1xuICBodG1sQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByb290IG5vZGUgd2lsbCBpbmhlcml0IHRoZSBjdXN0b20gYGNvbXBvbmVudGAncyB2aWV3Qm94IGFuZCB0aGUgYHZpZXdCb3hgXG4gICAqIHByb3Agd2lsbCBiZSBpZ25vcmVkLlxuICAgKiBVc2VmdWwgd2hlbiB5b3Ugd2FudCB0byByZWZlcmVuY2UgYSBjdXN0b20gYGNvbXBvbmVudGAgYW5kIGhhdmUgYFN2Z0ljb25gIHBhc3MgdGhhdFxuICAgKiBgY29tcG9uZW50YCdzIHZpZXdCb3ggdG8gdGhlIHJvb3Qgbm9kZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGluaGVyaXRWaWV3Qm94OiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaGFwZS1yZW5kZXJpbmcgYXR0cmlidXRlLiBUaGUgYmVoYXZpb3Igb2YgdGhlIGRpZmZlcmVudCBvcHRpb25zIGlzIGRlc2NyaWJlZCBvbiB0aGVcbiAgICogW01ETiBXZWIgRG9jc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvU1ZHL0F0dHJpYnV0ZS9zaGFwZS1yZW5kZXJpbmcpLlxuICAgKiBJZiB5b3UgYXJlIGhhdmluZyBpc3N1ZXMgd2l0aCBibHVycnkgaWNvbnMgeW91IHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGlzIHByb3AuXG4gICAqL1xuICBzaGFwZVJlbmRlcmluZzogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGEgaHVtYW4tcmVhZGFibGUgdGl0bGUgZm9yIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgaXQuXG4gICAqIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9TVkctYWNjZXNzLyNFcXVpdmFsZW50XG4gICAqL1xuICB0aXRsZUFjY2VzczogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEFsbG93cyB5b3UgdG8gcmVkZWZpbmUgd2hhdCB0aGUgY29vcmRpbmF0ZXMgd2l0aG91dCB1bml0cyBtZWFuIGluc2lkZSBhbiBTVkcgZWxlbWVudC5cbiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBTVkcgZWxlbWVudCBpcyA1MDAgKHdpZHRoKSBieSAyMDAgKGhlaWdodCksXG4gICAqIGFuZCB5b3UgcGFzcyB2aWV3Qm94PVwiMCAwIDUwIDIwXCIsXG4gICAqIHRoaXMgbWVhbnMgdGhhdCB0aGUgY29vcmRpbmF0ZXMgaW5zaWRlIHRoZSBTVkcgd2lsbCBnbyBmcm9tIHRoZSB0b3AgbGVmdCBjb3JuZXIgKDAsMClcbiAgICogdG8gYm90dG9tIHJpZ2h0ICg1MCwyMCkgYW5kIGVhY2ggdW5pdCB3aWxsIGJlIHdvcnRoIDEwcHguXG4gICAqIEBkZWZhdWx0ICcwIDAgMjQgMjQnXG4gICAqL1xuICB2aWV3Qm94OiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuU3ZnSWNvbi5tdWlOYW1lID0gJ1N2Z0ljb24nO1xuZXhwb3J0IGRlZmF1bHQgU3ZnSWNvbjsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFN2Z0ljb24gZnJvbSAnLi4vU3ZnSWNvbic7XG5cbi8qKlxuICogUHJpdmF0ZSBtb2R1bGUgcmVzZXJ2ZWQgZm9yIEBtdWkgcGFja2FnZXMuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVTdmdJY29uKHBhdGgsIGRpc3BsYXlOYW1lKSB7XG4gIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFN2Z0ljb24sIF9leHRlbmRzKHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogYCR7ZGlzcGxheU5hbWV9SWNvbmAsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogcGF0aFxuICAgIH0pKTtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIE5lZWQgdG8gc2V0IGBkaXNwbGF5TmFtZWAgb24gdGhlIGlubmVyIGNvbXBvbmVudCBmb3IgUmVhY3QubWVtby5cbiAgICAvLyBSZWFjdCBwcmlvciB0byAxNi4xNCBpZ25vcmVzIGBkaXNwbGF5TmFtZWAgb24gdGhlIHdyYXBwZXIuXG4gICAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7ZGlzcGxheU5hbWV9SWNvbmA7XG4gIH1cbiAgQ29tcG9uZW50Lm11aU5hbWUgPSBTdmdJY29uLm11aU5hbWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QubWVtbyggLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoQ29tcG9uZW50KSk7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVib3VuY2UgYXMgZGVib3VuY2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGRlYm91bmNlOyIsImltcG9ydCB7IHVuc3RhYmxlX2lzTXVpRWxlbWVudCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGlzTXVpRWxlbWVudDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc011aUVsZW1lbnQoZWxlbWVudCwgbXVpTmFtZXMpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSAmJiBtdWlOYW1lcy5pbmRleE9mKGVsZW1lbnQudHlwZS5tdWlOYW1lKSAhPT0gLTE7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lckRvY3VtZW50OyIsImltcG9ydCB7IHVuc3RhYmxlX293bmVyV2luZG93IGFzIG93bmVyV2luZG93IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lcldpbmRvdzsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUNvbnRyb2xsZWQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlQ29udHJvbGxlZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUVuaGFuY2VkRWZmZWN0IGFzIHVzZUVuaGFuY2VkRWZmZWN0IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlkIGFzIHVzZUlkIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJZDsiLCIvKipcbiAqIFNhZmUgY2hhaW5lZCBmdW5jdGlvbi5cbiAqXG4gKiBXaWxsIG9ubHkgY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGlmIG5lZWRlZCxcbiAqIG90aGVyd2lzZSB3aWxsIHBhc3MgYmFjayBleGlzdGluZyBmdW5jdGlvbnMgb3IgbnVsbC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uKC4uLmZ1bmNzKSB7XG4gIHJldHVybiBmdW5jcy5yZWR1Y2UoKGFjYywgZnVuYykgPT4ge1xuICAgIGlmIChmdW5jID09IG51bGwpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oLi4uYXJncykge1xuICAgICAgYWNjLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuICB9LCAoKSA9PiB7fSk7XG59IiwiLy8gQ29ycmVzcG9uZHMgdG8gMTAgZnJhbWVzIGF0IDYwIEh6LlxuLy8gQSBmZXcgYnl0ZXMgcGF5bG9hZCBvdmVyaGVhZCB3aGVuIGxvZGFzaC9kZWJvdW5jZSBpcyB+MyBrQiBhbmQgZGVib3VuY2UgfjMwMCBCLlxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCA9IDE2Nikge1xuICBsZXQgdGltZW91dDtcbiAgZnVuY3Rpb24gZGVib3VuY2VkKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBsYXRlciA9ICgpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfTtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuICB9XG4gIGRlYm91bmNlZC5jbGVhciA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gIH07XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3duZXJEb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbn0iLCJpbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuLi9vd25lckRvY3VtZW50JztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyV2luZG93KG5vZGUpIHtcbiAgY29uc3QgZG9jID0gb3duZXJEb2N1bWVudChub2RlKTtcbiAgcmV0dXJuIGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcywgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb250cm9sbGVkKHtcbiAgY29udHJvbGxlZCxcbiAgZGVmYXVsdDogZGVmYXVsdFByb3AsXG4gIG5hbWUsXG4gIHN0YXRlID0gJ3ZhbHVlJ1xufSkge1xuICAvLyBpc0NvbnRyb2xsZWQgaXMgaWdub3JlZCBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RzIGFzIGl0IHNob3VsZCBuZXZlciBjaGFuZ2UuXG4gIGNvbnN0IHtcbiAgICBjdXJyZW50OiBpc0NvbnRyb2xsZWRcbiAgfSA9IFJlYWN0LnVzZVJlZihjb250cm9sbGVkICE9PSB1bmRlZmluZWQpO1xuICBjb25zdCBbdmFsdWVTdGF0ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICBjb25zdCB2YWx1ZSA9IGlzQ29udHJvbGxlZCA/IGNvbnRyb2xsZWQgOiB2YWx1ZVN0YXRlO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDb250cm9sbGVkICE9PSAoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgJHtpc0NvbnRyb2xsZWQgPyAnJyA6ICd1bid9Y29udHJvbGxlZCAke3N0YXRlfSBzdGF0ZSBvZiAke25hbWV9IHRvIGJlICR7aXNDb250cm9sbGVkID8gJ3VuJyA6ICcnfWNvbnRyb2xsZWQuYCwgJ0VsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLicsIGBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICR7bmFtZX0gYCArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4nLCBcIlRoZSBuYXR1cmUgb2YgdGhlIHN0YXRlIGlzIGRldGVybWluZWQgZHVyaW5nIHRoZSBmaXJzdCByZW5kZXIuIEl0J3MgY29uc2lkZXJlZCBjb250cm9sbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgYHVuZGVmaW5lZGAuXCIsICdNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH0sIFtzdGF0ZSwgbmFtZSwgY29udHJvbGxlZF0pO1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGRlZmF1bHRWYWx1ZVxuICAgIH0gPSBSZWFjdC51c2VSZWYoZGVmYXVsdFByb3ApO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQ29udHJvbGxlZCAmJiBkZWZhdWx0VmFsdWUgIT09IGRlZmF1bHRQcm9wKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IEEgY29tcG9uZW50IGlzIGNoYW5naW5nIHRoZSBkZWZhdWx0ICR7c3RhdGV9IHN0YXRlIG9mIGFuIHVuY29udHJvbGxlZCAke25hbWV9IGFmdGVyIGJlaW5nIGluaXRpYWxpemVkLiBgICsgYFRvIHN1cHByZXNzIHRoaXMgd2FybmluZyBvcHQgdG8gdXNlIGEgY29udHJvbGxlZCAke25hbWV9LmBdLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFByb3ApXSk7XG4gIH1cbiAgY29uc3Qgc2V0VmFsdWVJZlVuY29udHJvbGxlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKG5ld1ZhbHVlID0+IHtcbiAgICBpZiAoIWlzQ29udHJvbGxlZCkge1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH1cbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZUlmVW5jb250cm9sbGVkXTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBnbG9iYWxJZCA9IDA7XG5mdW5jdGlvbiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKSB7XG4gIGNvbnN0IFtkZWZhdWx0SWQsIHNldERlZmF1bHRJZF0gPSBSZWFjdC51c2VTdGF0ZShpZE92ZXJyaWRlKTtcbiAgY29uc3QgaWQgPSBpZE92ZXJyaWRlIHx8IGRlZmF1bHRJZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdElkID09IG51bGwpIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHRoaXMgZGVmYXVsdCBpZCB3aGVuIHBvc3NpYmxlLlxuICAgICAgLy8gVXNlIHRoZSBpbmNyZW1lbnRpbmcgdmFsdWUgZm9yIGNsaWVudC1zaWRlIHJlbmRlcmluZyBvbmx5LlxuICAgICAgLy8gV2UgY2FuJ3QgdXNlIGl0IHNlcnZlci1zaWRlLlxuICAgICAgLy8gSWYgeW91IHdhbnQgdG8gdXNlIHJhbmRvbSB2YWx1ZXMgcGxlYXNlIGNvbnNpZGVyIHRoZSBCaXJ0aGRheSBQcm9ibGVtOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CaXJ0aGRheV9wcm9ibGVtXG4gICAgICBnbG9iYWxJZCArPSAxO1xuICAgICAgc2V0RGVmYXVsdElkKGBtdWktJHtnbG9iYWxJZH1gKTtcbiAgICB9XG4gIH0sIFtkZWZhdWx0SWRdKTtcbiAgcmV0dXJuIGlkO1xufVxuXG4vLyBkb3duc3RyZWFtIGJ1bmRsZXJzIG1heSByZW1vdmUgdW5uZWNlc3NhcnkgY29uY2F0ZW5hdGlvbiwgYnV0IHdvbid0IHJlbW92ZSB0b1N0cmluZyBjYWxsIC0tIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrL3dlYnBhY2svaXNzdWVzLzE0ODE0XG5jb25zdCBtYXliZVJlYWN0VXNlSWQgPSBSZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldO1xuLyoqXG4gKlxuICogQGV4YW1wbGUgPGRpdiBpZD17dXNlSWQoKX0gLz5cbiAqIEBwYXJhbSBpZE92ZXJyaWRlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VJZChpZE92ZXJyaWRlKSB7XG4gIGlmIChtYXliZVJlYWN0VXNlSWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHJlYWN0SWQgPSBtYXliZVJlYWN0VXNlSWQoKTtcbiAgICByZXR1cm4gaWRPdmVycmlkZSAhPSBudWxsID8gaWRPdmVycmlkZSA6IHJlYWN0SWQ7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzIC0tIGBSZWFjdC51c2VJZGAgaXMgaW52YXJpYW50IGF0IHJ1bnRpbWUuXG4gIHJldHVybiB1c2VHbG9iYWxJZChpZE92ZXJyaWRlKTtcbn0iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCBMb2FkaW5nQnV0dG9uIGZyb20gXCJAbXVpL2xhYi9Mb2FkaW5nQnV0dG9uXCI7XHJcbmltcG9ydCBSZXBsYXlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1JlcGxheVwiO1xyXG5cclxuY29uc3QgUmVzZXRCdXR0b24gPSAoKSA9PiB7XHJcbiAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSlcclxuICAgICAgaWYgKFxyXG4gICAgICAgIChtZXNzYWdlLmRhdGEuc3RhdGUgPT09IFwiYXBwbGljYXRpb25fcnVubmluZ1wiKSB8XHJcbiAgICAgICAgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJwYXVzZWRcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2V0RGlzYWJsZWQoZmFsc2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNldERpc2FibGVkKHRydWUpO1xyXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcbiAgcmV0dXJuIChcclxuICAgIDxMb2FkaW5nQnV0dG9uXHJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cclxuICAgICAgaWQ9e1wicGxheVwifVxyXG4gICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICBjb2xvcj17XCJzZWNvbmRhcnlcIn1cclxuICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlclxyXG4gICAgICAgICAgLnRlcm1pbmF0ZV9hcHBsaWNhdGlvbigpXHJcbiAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzZXRlZFwiKVxyXG4gICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKHJlc3BvbnNlKSA9PiBjb25zb2xlLmxvZyhyZXNwb25zZSkpO1xyXG4gICAgICB9fVxyXG4gICAgICBzeD17eyBtOiAwLjUgfX1cclxuICAgICAgdmFyaWFudD17XCJvdXRsaW5lZFwifVxyXG4gICAgPlxyXG4gICAgICA8UmVwbGF5SWNvbiAvPlxyXG4gICAgPC9Mb2FkaW5nQnV0dG9uPlxyXG4gICk7XHJcbn07XHJcblJlc2V0QnV0dG9uLnByb3BUeXBlcyA9IHtcclxuICBjb250ZXh0OiBQcm9wVHlwZXMuYW55LFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgUmVzZXRCdXR0b247XHJcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIl0sIm5hbWVzIjpbIkdsb2JhbCIsInciLCJwcm9wcyIsImNhY2hlIiwic3R5bGVzIiwic2VyaWFsaXplZCIsInVuZGVmaW5lZCIsIlQiLCJpIiwiX3JlZiIsInNlcmlhbGl6ZWROYW1lcyIsIm5hbWUiLCJzZXJpYWxpemVkU3R5bGVzIiwibmV4dCIsInNob3VsZENhY2hlIiwiY29tcGF0IiwicnVsZXMiLCJpbnNlcnQiLCJzaGVldCIsImtleSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwibm9uY2UiLCJzaGVldFJlZiIsImNvbnN0cnVjdG9yIiwiY29udGFpbmVyIiwic3BlZWR5IiwiaXNTcGVlZHkiLCJyZWh5ZHJhdGluZyIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJ0YWdzIiwibGVuZ3RoIiwiYmVmb3JlIiwic2V0QXR0cmlidXRlIiwiaHlkcmF0ZSIsImN1cnJlbnQiLCJmbHVzaCIsInNoZWV0UmVmQ3VycmVudCIsImVsZW1lbnQiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJjc3MiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImtleWZyYW1lcyIsImluc2VydGFibGUiLCJhcHBseSIsImFuaW0iLCJ0b1N0cmluZyIsInRoaXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwiZ2V0U3ZnSWNvblV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJTdmdJY29uUm9vdCIsInN0eWxlZCIsIm92ZXJyaWRlc1Jlc29sdmVyIiwib3duZXJTdGF0ZSIsInJvb3QiLCJjb2xvciIsImNhcGl0YWxpemUiLCJmb250U2l6ZSIsInRoZW1lIiwiX3RoZW1lJHRyYW5zaXRpb25zIiwiX3RoZW1lJHRyYW5zaXRpb25zJGNyIiwiX3RoZW1lJHRyYW5zaXRpb25zMiIsIl90aGVtZSR0eXBvZ3JhcGh5IiwiX3RoZW1lJHR5cG9ncmFwaHkkcHhUIiwiX3RoZW1lJHR5cG9ncmFwaHkyIiwiX3RoZW1lJHR5cG9ncmFwaHkyJHB4IiwiX3RoZW1lJHR5cG9ncmFwaHkzIiwiX3RoZW1lJHR5cG9ncmFwaHkzJHB4IiwiX3BhbGV0dGUkb3duZXJTdGF0ZSRjIiwiX3BhbGV0dGUiLCJfcGFsZXR0ZTIiLCJfcGFsZXR0ZTMiLCJ1c2VyU2VsZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJkaXNwbGF5IiwiZmlsbCIsImhhc1N2Z0FzQ2hpbGQiLCJmbGV4U2hyaW5rIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiY2FsbCIsImR1cmF0aW9uIiwic2hvcnRlciIsImluaGVyaXQiLCJzbWFsbCIsInR5cG9ncmFwaHkiLCJweFRvUmVtIiwibWVkaXVtIiwibGFyZ2UiLCJ2YXJzIiwicGFsZXR0ZSIsIm1haW4iLCJhY3Rpb24iLCJhY3RpdmUiLCJkaXNhYmxlZCIsIlN2Z0ljb24iLCJpblByb3BzIiwicmVmIiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiY29tcG9uZW50IiwiaHRtbENvbG9yIiwiaW5oZXJpdFZpZXdCb3giLCJ0aXRsZUFjY2VzcyIsInZpZXdCb3giLCJvdGhlciIsInR5cGUiLCJpbnN0YW5jZUZvbnRTaXplIiwibW9yZSIsImNsYXNzZXMiLCJzbG90cyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJhcyIsImZvY3VzYWJsZSIsInJvbGUiLCJtdWlOYW1lIiwiY3JlYXRlU3ZnSWNvbiIsInBhdGgiLCJkaXNwbGF5TmFtZSIsIkNvbXBvbmVudCIsIm11aU5hbWVzIiwiaW5kZXhPZiIsImNyZWF0ZUNoYWluZWRGdW5jdGlvbiIsImZ1bmNzIiwicmVkdWNlIiwiYWNjIiwiZnVuYyIsImRlYm91bmNlIiwid2FpdCIsInRpbWVvdXQiLCJkZWJvdW5jZWQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiY2xlYXIiLCJvd25lckRvY3VtZW50Iiwib3duZXJXaW5kb3ciLCJkZWZhdWx0VmlldyIsIndpbmRvdyIsInVzZUNvbnRyb2xsZWQiLCJjb250cm9sbGVkIiwiZGVmYXVsdFByb3AiLCJzdGF0ZSIsImlzQ29udHJvbGxlZCIsInZhbHVlU3RhdGUiLCJzZXRWYWx1ZSIsIm5ld1ZhbHVlIiwiZ2xvYmFsSWQiLCJtYXliZVJlYWN0VXNlSWQiLCJ1c2VJZCIsImlkT3ZlcnJpZGUiLCJyZWFjdElkIiwiZGVmYXVsdElkIiwic2V0RGVmYXVsdElkIiwiaWQiLCJ1c2VHbG9iYWxJZCIsIlJlc2V0QnV0dG9uIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlU3RhdGUiLCJzZXREaXNhYmxlZCIsIl91c2VTdGF0ZTQiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInVzZUVmZmVjdCIsImNhbGxiYWNrIiwibWVzc2FnZSIsImNvbnNvbGUiLCJsb2ciLCJkYXRhIiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJTVEFURV9DSEFOR0VEIiwidW5zdWJzY3JpYmUiLCJfanN4IiwiTG9hZGluZ0J1dHRvbiIsIm9uQ2xpY2siLCJ0ZXJtaW5hdGVfYXBwbGljYXRpb24iLCJ0aGVuIiwicmVzcG9uc2UiLCJzeCIsIm0iLCJ2YXJpYW50IiwiUmVwbGF5SWNvbiIsInByb3BUeXBlcyIsImNvbnRleHQiLCJQcm9wVHlwZXMiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/732.e0fd0af8.js b/react_frontend/static/react_frontend/js/732.e0fd0af8.js new file mode 100644 index 000000000..d616b6d94 --- /dev/null +++ b/react_frontend/static/react_frontend/js/732.e0fd0af8.js @@ -0,0 +1,3 @@ +/*! For license information please see 732.e0fd0af8.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[732],{732:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzMyLjNhM2VjMTIzLmpzIiwibWFwcGluZ3MiOiI7b0tBYUEsUUFScUIsU0FBQ0EsR0FDcEIsT0FDRUMsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsU0FBUSxDQUFBQyxTQUNSSCxFQUFNRyxVQUdYLGtCQ0ZhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFNUIsTUFBTTBCLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDQyxFQUFRakMsU0FBU00sRUFBRTJCLEVBQVFDLElBQUlmLEVBQUVjLEVBQVFFLEtBQUtoQixrQkNQeFdpQixFQUFPSCxRQUFVLEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvZm9sbG93X2xpbmUvcmVhY3QtY29tcG9uZW50cy9Gb2xsb3dMaW5lUlIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL0ZvbGxvd0xpbmVSUi5jc3NcIjtcclxuXHJcbmNvbnN0IEZvbGxvd0xpbmVSUiA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb2xsb3dMaW5lUlI7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiX2pzeCIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/732.e0fd0af8.js.LICENSE.txt b/react_frontend/static/react_frontend/js/732.e0fd0af8.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/732.e0fd0af8.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/7336.122ec891.js b/react_frontend/static/react_frontend/js/7336.122ec891.js new file mode 100644 index 000000000..49f20ef36 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7336.122ec891.js @@ -0,0 +1,3 @@ +/*! For license information please see 7336.122ec891.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7336,4363],{7336:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(6540),a=r(5556),o=r.n(a),i=r(6744),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";function n(e){return decodeURIComponent(escape(e))}r.r(t),r.d(t,{drawImage:()=>i,drawLeftImage:()=>s});var a=new Image,o=new Image;function i(e){var t=document.getElementById("gui_canvas_right"),r=t.getContext("2d");function o(){window.requestAnimationFrame(o),r.drawImage(a,0,0)}a.onload=function(){o()};var i=JSON.parse(e.image),s=n(i.image),c=i.shape;""!=s&&(a.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}function s(e){var t=document.getElementById("gui_canvas_left"),r=t.getContext("2d");function a(){window.requestAnimationFrame(a),r.drawImage(o,0,0)}o.onload=function(){a()};var i=JSON.parse(e.image_left),s=n(i.image_left),c=i.shape;""!=s&&(o.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,o,i){if(i!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,o={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,n)&&!c.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:u,ref:l,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFbEgsTUFBTWdILEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9sYWJ5cmludGhfZXNjYXBlX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY0xhYnlyaW50aEVzY2FwZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9sYWJ5cmludGhfZXNjYXBlX25ld21hbmFnZXIvcmVhY3QtY29tcG9uZW50cy9oZWxwZXJzL3Nob3dJbWFnZXNMYWJ5cmludGhFc2NhcGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcclxuaW1wb3J0IHsgZHJhd0ltYWdlLCBkcmF3TGVmdEltYWdlfSBmcm9tIFwiLi9oZWxwZXJzL3Nob3dJbWFnZXNMYWJ5cmludGhFc2NhcGVcIjtcclxuXHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY0xhYnlyaW50aEVzY2FwZShwcm9wcykge1xyXG4gIGNvbnN0IFtpbWFnZSwgc2V0SW1hZ2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiBzdWJzY3JpYmluZyB0byBbJ3VwZGF0ZSddIGV2ZW50c1wiKTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZSl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2ltYWdlJylcclxuICAgICAgICBjb25zdCBpbWFnZSA9IEpTT04ucGFyc2UobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZSlcclxuICAgICAgICBpZihpbWFnZS5pbWFnZSl7XHJcbiAgICAgICAgICBkcmF3SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSlcclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcbiAgICAgIGlmKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfbGVmdCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2ltYWdlX2xlZnQnKVxyXG4gICAgICAgIGNvbnN0IGltYWdlID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlX2xlZnQpXHJcbiAgICAgICAgaWYoaW1hZ2UuaW1hZ2VfbGVmdCl7XHJcbiAgICAgICAgICBkcmF3TGVmdEltYWdlKG1lc3NhZ2UuZGF0YS51cGRhdGUpXHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG5cclxuICAgICAgXHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgIGNhbGxiYWNrXHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gIH0sIFtdKTtcclxuXHJcblxyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgIGhlaWdodDogXCIxMDAlXCJ9fT5cclxuICAgICAgPGNhbnZhcyBpZD1cImd1aV9jYW52YXNfbGVmdFwiPjwvY2FudmFzPlxyXG4gICAgICA8Y2FudmFzIGlkPVwiZ3VpX2NhbnZhc19yaWdodFwiPjwvY2FudmFzPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuU3BlY2lmaWNMYWJ5cmludGhFc2NhcGUucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBTcGVjaWZpY0xhYnlyaW50aEVzY2FwZVxyXG4iLCIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY0xhYnlyaW50aEVzY2FwZSIsInByb3BzIiwiX1JlYWN0JHVzZVN0YXRlMiIsIlJlYWN0IiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJpbWFnZSIsIkpTT04iLCJwYXJzZSIsImRyYXdJbWFnZSIsImltYWdlX2xlZnQiLCJkcmF3TGVmdEltYWdlIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJjaGlsZHJlbiIsIl9qc3giLCJpZCIsInByb3BUeXBlcyIsImNpcmN1aXQiLCJQcm9wVHlwZXMiLCJkZWNvZGVfdXRmOCIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJJbWFnZSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsImltYWdlX2RhdGEiLCJzb3VyY2UiLCJzaGFwZSIsInNyYyIsImNhbnZhc19sZWZ0IiwiY29udGV4dF9sZWZ0IiwidXBkYXRlX2xlZnRfaW1hZ2UiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7336.122ec891.js.LICENSE.txt b/react_frontend/static/react_frontend/js/7336.122ec891.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7336.122ec891.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/7385.39f52dcd.js b/react_frontend/static/react_frontend/js/7385.39f52dcd.js new file mode 100644 index 000000000..23d3081fe --- /dev/null +++ b/react_frontend/static/react_frontend/js/7385.39f52dcd.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7385],{7385:(e,r,t)=>{t.r(r),t.d(r,{displayLapTime:()=>a});var a=function(e){var r=e.split(":"),t=r[2].split("."),a=3600*Number(r[0])+60*Number(r[1])+Number(t[0]),n=Number(t[1].slice(0,2));return"".concat(a,".").concat(n.toString().padStart(2,0))}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzM4NS44OTE0MTE2ZS5qcyIsIm1hcHBpbmdzIjoicUpBQU8sSUFBTUEsRUFBaUIsU0FBQ0MsR0FDN0IsSUFBSUMsRUFBV0QsRUFBSUUsTUFBTSxLQUNyQkMsRUFBZUYsRUFBUyxHQUFHQyxNQUFNLEtBRWpDRSxFQUF3QixLQUFwQkMsT0FBT0osRUFBUyxJQUErQixHQUFwQkksT0FBT0osRUFBUyxJQUFTSSxPQUFPRixFQUFhLElBQzVFRyxFQUFLRCxPQUFPRixFQUFhLEdBQUdJLE1BQU0sRUFBRSxJQUV4QyxNQUFPLEdBQVBDLE9BQVVKLEVBQUMsS0FBQUksT0FBSUYsRUFBR0csV0FBV0MsU0FBUyxFQUFFLEdBQzFDLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9mb2xsb3dfbGluZS9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0xhcFRpbWVGb2xsb3dMaW5lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBkaXNwbGF5TGFwVGltZSA9IChsYXApID0+IHtcclxuICBsZXQgbGFwQXJyYXkgPSBsYXAuc3BsaXQoXCI6XCIpXHJcbiAgbGV0IHNlY29uZHNBcnJheSA9IGxhcEFycmF5WzJdLnNwbGl0KFwiLlwiKVxyXG5cclxuICBsZXQgcyA9IE51bWJlcihsYXBBcnJheVswXSkqMzYwMCArIE51bWJlcihsYXBBcnJheVsxXSkqNjAgKyBOdW1iZXIoc2Vjb25kc0FycmF5WzBdKTtcclxuICBsZXQgbXMgPSBOdW1iZXIoc2Vjb25kc0FycmF5WzFdLnNsaWNlKDAsMikpXHJcblxyXG4gIHJldHVybiBgJHtzfS4ke21zLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwwKX1gXHJcbn0iXSwibmFtZXMiOlsiZGlzcGxheUxhcFRpbWUiLCJsYXAiLCJsYXBBcnJheSIsInNwbGl0Iiwic2Vjb25kc0FycmF5IiwicyIsIk51bWJlciIsIm1zIiwic2xpY2UiLCJjb25jYXQiLCJ0b1N0cmluZyIsInBhZFN0YXJ0Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7398.b01ad35c.js b/react_frontend/static/react_frontend/js/7398.b01ad35c.js new file mode 100644 index 000000000..ac6e10ce4 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7398.b01ad35c.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7398,4668],{7437:(e,t,o)=>{o.d(t,{AH:()=>d,i7:()=>c,mL:()=>s});var n=o(5684),r=o(6540),a=o(41),i=o(1287),l=o(6899),s=(o(4300),o(4146),(0,n.w)((function(e,t){var o=e.styles,s=(0,l.J)([o],void 0,r.useContext(n.T));if(!n.i){for(var d,c=s.name,u=s.styles,p=s.next;void 0!==p;)c+=" "+p.name,u+=p.styles,p=p.next;var v=!0===t.compat,h=t.insert("",{name:c,styles:u},t.sheet,v);return v?null:r.createElement("style",((d={})["data-emotion"]=t.key+"-global "+c,d.dangerouslySetInnerHTML={__html:h},d.nonce=t.sheet.nonce,d))}var m=r.useRef();return(0,i.i)((function(){var e=t.key+"-global",o=new t.sheet.constructor({key:e,nonce:t.sheet.nonce,container:t.sheet.container,speedy:t.sheet.isSpeedy}),n=!1,r=document.querySelector('style[data-emotion="'+e+" "+s.name+'"]');return t.sheet.tags.length&&(o.before=t.sheet.tags[0]),null!==r&&(n=!0,r.setAttribute("data-emotion",e),o.hydrate([r])),m.current=[o,n],function(){o.flush()}}),[t]),(0,i.i)((function(){var e=m.current,o=e[0];if(e[1])e[1]=!1;else{if(void 0!==s.next&&(0,a.sk)(t,s.next,!0),o.tags.length){var n=o.tags[o.tags.length-1].nextElementSibling;o.before=n,o.flush()}t.insert("",s,o,!1)}}),[t,s.name]),null})));function d(){for(var e=arguments.length,t=new Array(e),o=0;o{o.d(t,{A:()=>k});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(5659),s=o(4279),d=o(7577),c=o(4409),u=o(8466),p=o(538),v=o(8413),h=o(1609);function m(e){return(0,h.A)("MuiAlert",e)}const g=(0,v.A)("MuiAlert",["root","action","icon","message","filled","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]);var A=o(1641),f=o(5003),x=o(4848);const y=(0,f.A)((0,x.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),S=(0,f.A)((0,x.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),b=(0,f.A)((0,x.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),z=(0,f.A)((0,x.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined");var w=o(9350);const C=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],$=(0,d.Ay)(p.A,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,u.A)(o.color||o.severity)}`]]}})((({theme:e,ownerState:t})=>{const o="light"===e.palette.mode?s.e$:s.a,n="light"===e.palette.mode?s.a:s.e$,a=t.color||t.severity;return(0,r.A)({},e.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px"},a&&"standard"===t.variant&&{color:e.vars?e.vars.palette.Alert[`${a}Color`]:o(e.palette[a].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${a}StandardBg`]:n(e.palette[a].light,.9),[`& .${g.icon}`]:e.vars?{color:e.vars.palette.Alert[`${a}IconColor`]}:{color:e.palette[a].main}},a&&"outlined"===t.variant&&{color:e.vars?e.vars.palette.Alert[`${a}Color`]:o(e.palette[a].light,.6),border:`1px solid ${(e.vars||e).palette[a].light}`,[`& .${g.icon}`]:e.vars?{color:e.vars.palette.Alert[`${a}IconColor`]}:{color:e.palette[a].main}},a&&"filled"===t.variant&&(0,r.A)({fontWeight:e.typography.fontWeightMedium},e.vars?{color:e.vars.palette.Alert[`${a}FilledColor`],backgroundColor:e.vars.palette.Alert[`${a}FilledBg`]}:{backgroundColor:"dark"===e.palette.mode?e.palette[a].dark:e.palette[a].main,color:e.palette.getContrastText(e.palette[a].main)}))})),R=(0,d.Ay)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),E=(0,d.Ay)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),I=(0,d.Ay)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),M={success:(0,x.jsx)(y,{fontSize:"inherit"}),warning:(0,x.jsx)(S,{fontSize:"inherit"}),error:(0,x.jsx)(b,{fontSize:"inherit"}),info:(0,x.jsx)(z,{fontSize:"inherit"})},k=a.forwardRef((function(e,t){var o,a,s,d,p,v;const h=(0,c.A)({props:e,name:"MuiAlert"}),{action:g,children:f,className:y,closeText:S="Close",color:b,components:z={},componentsProps:k={},icon:N,iconMapping:L=M,onClose:j,role:B="alert",severity:T="success",slotProps:W={},slots:O={},variant:P="standard"}=h,V=(0,n.A)(h,C),F=(0,r.A)({},h,{color:b,severity:T,variant:P}),H=(e=>{const{variant:t,color:o,severity:n,classes:r}=e,a={root:["root",`${t}${(0,u.A)(o||n)}`,`${t}`],icon:["icon"],message:["message"],action:["action"]};return(0,l.A)(a,m,r)})(F),_=null!=(o=null!=(a=O.closeButton)?a:z.CloseButton)?o:A.A,q=null!=(s=null!=(d=O.closeIcon)?d:z.CloseIcon)?s:w.A,D=null!=(p=W.closeButton)?p:k.closeButton,X=null!=(v=W.closeIcon)?v:k.closeIcon;return(0,x.jsxs)($,(0,r.A)({role:B,elevation:0,ownerState:F,className:(0,i.A)(H.root,y),ref:t},V,{children:[!1!==N?(0,x.jsx)(R,{ownerState:F,className:H.icon,children:N||L[T]||M[T]}):null,(0,x.jsx)(E,{ownerState:F,className:H.message,children:f}),null!=g?(0,x.jsx)(I,{ownerState:F,className:H.action,children:g}):null,null==g&&j?(0,x.jsx)(I,{ownerState:F,className:H.action,children:(0,x.jsx)(_,(0,r.A)({size:"small","aria-label":S,title:S,color:"inherit",onClick:j},D,{children:(0,x.jsx)(q,(0,r.A)({fontSize:"small"},X))}))}):null]}))}))},1224:(e,t,o)=>{o.d(t,{A:()=>C});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(3726),s=o(5659),d=o(4279),c=o(7577),u=o(4409),p=o(6606),v=o(8466),h=o(8413),m=o(1609);function g(e){return(0,m.A)("MuiButton",e)}const A=(0,h.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var f=o(1848),x=o(4848);const y=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],S=e=>(0,r.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),b=(0,c.Ay)(p.A,{shouldForwardProp:e=>(0,c.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,v.A)(o.color)}`],t[`size${(0,v.A)(o.size)}`],t[`${o.variant}Size${(0,v.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const a="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,r.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,r.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,r.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${A.focusVisible}`]:(0,r.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${A.disabled}`]:(0,r.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,d.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:a,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${A.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${A.disabled}`]:{boxShadow:"none"}})),z=(0,c.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,r.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},S(e)))),w=(0,c.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,r.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},S(e)))),C=a.forwardRef((function(e,t){const o=a.useContext(f.A),d=(0,l.A)(o,e),c=(0,u.A)({props:d,name:"MuiButton"}),{children:p,color:h="primary",component:m="button",className:A,disabled:S=!1,disableElevation:C=!1,disableFocusRipple:$=!1,endIcon:R,focusVisibleClassName:E,fullWidth:I=!1,size:M="medium",startIcon:k,type:N,variant:L="text"}=c,j=(0,n.A)(c,y),B=(0,r.A)({},c,{color:h,component:m,disabled:S,disableElevation:C,disableFocusRipple:$,fullWidth:I,size:M,type:N,variant:L}),T=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:a,variant:i,classes:l}=e,d={root:["root",i,`${i}${(0,v.A)(t)}`,`size${(0,v.A)(a)}`,`${i}Size${(0,v.A)(a)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,v.A)(a)}`],endIcon:["endIcon",`iconSize${(0,v.A)(a)}`]},c=(0,s.A)(d,g,l);return(0,r.A)({},l,c)})(B),W=k&&(0,x.jsx)(z,{className:T.startIcon,ownerState:B,children:k}),O=R&&(0,x.jsx)(w,{className:T.endIcon,ownerState:B,children:R});return(0,x.jsxs)(b,(0,r.A)({ownerState:B,className:(0,i.A)(o.className,T.root,A),component:m,disabled:S,focusRipple:!$,focusVisibleClassName:(0,i.A)(T.focusVisible,E),ref:t,type:N},j,{classes:T,children:[W,p,O]}))}))},1848:(e,t,o)=>{o.d(t,{A:()=>n});const n=o(6540).createContext({})},2848:(e,t,o)=>{o.d(t,{A:()=>w});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(7353),s=o(5659),d=o(7577),c=o(4409),u=o(7091),p=o(5186),v=o(4675),h=o(6852),m=o(8413),g=o(1609);function A(e){return(0,g.A)("MuiCollapse",e)}(0,m.A)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);var f=o(4848);const x=["addEndListener","children","className","collapsedSize","component","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","orientation","style","timeout","TransitionComponent"],y=(0,d.Ay)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.orientation],"entered"===o.state&&t.entered,"exited"===o.state&&!o.in&&"0px"===o.collapsedSize&&t.hidden]}})((({theme:e,ownerState:t})=>(0,r.A)({height:0,overflow:"hidden",transition:e.transitions.create("height")},"horizontal"===t.orientation&&{height:"auto",width:0,transition:e.transitions.create("width")},"entered"===t.state&&(0,r.A)({height:"auto",overflow:"visible"},"horizontal"===t.orientation&&{width:"auto"}),"exited"===t.state&&!t.in&&"0px"===t.collapsedSize&&{visibility:"hidden"}))),S=(0,d.Ay)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})((({ownerState:e})=>(0,r.A)({display:"flex",width:"100%"},"horizontal"===e.orientation&&{width:"auto",height:"100%"}))),b=(0,d.Ay)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})((({ownerState:e})=>(0,r.A)({width:"100%"},"horizontal"===e.orientation&&{width:"auto",height:"100%"}))),z=a.forwardRef((function(e,t){const o=(0,c.A)({props:e,name:"MuiCollapse"}),{addEndListener:d,children:m,className:g,collapsedSize:z="0px",component:w,easing:C,in:$,onEnter:R,onEntered:E,onEntering:I,onExit:M,onExited:k,onExiting:N,orientation:L="vertical",style:j,timeout:B=u.p0.standard,TransitionComponent:T=l.Ay}=o,W=(0,n.A)(o,x),O=(0,r.A)({},o,{orientation:L,collapsedSize:z}),P=(e=>{const{orientation:t,classes:o}=e,n={root:["root",`${t}`],entered:["entered"],hidden:["hidden"],wrapper:["wrapper",`${t}`],wrapperInner:["wrapperInner",`${t}`]};return(0,s.A)(n,A,o)})(O),V=(0,v.A)(),F=a.useRef(),H=a.useRef(null),_=a.useRef(),q="number"==typeof z?`${z}px`:z,D="horizontal"===L,X=D?"width":"height";a.useEffect((()=>()=>{clearTimeout(F.current)}),[]);const J=a.useRef(null),Z=(0,h.A)(t,J),G=e=>t=>{if(e){const o=J.current;void 0===t?e(o):e(o,t)}},K=()=>H.current?H.current[D?"clientWidth":"clientHeight"]:0,Q=G(((e,t)=>{H.current&&D&&(H.current.style.position="absolute"),e.style[X]=q,R&&R(e,t)})),U=G(((e,t)=>{const o=K();H.current&&D&&(H.current.style.position="");const{duration:n,easing:r}=(0,p.c)({style:j,timeout:B,easing:C},{mode:"enter"});if("auto"===B){const t=V.transitions.getAutoHeightDuration(o);e.style.transitionDuration=`${t}ms`,_.current=t}else e.style.transitionDuration="string"==typeof n?n:`${n}ms`;e.style[X]=`${o}px`,e.style.transitionTimingFunction=r,I&&I(e,t)})),Y=G(((e,t)=>{e.style[X]="auto",E&&E(e,t)})),ee=G((e=>{e.style[X]=`${K()}px`,M&&M(e)})),te=G(k),oe=G((e=>{const t=K(),{duration:o,easing:n}=(0,p.c)({style:j,timeout:B,easing:C},{mode:"exit"});if("auto"===B){const o=V.transitions.getAutoHeightDuration(t);e.style.transitionDuration=`${o}ms`,_.current=o}else e.style.transitionDuration="string"==typeof o?o:`${o}ms`;e.style[X]=q,e.style.transitionTimingFunction=n,N&&N(e)}));return(0,f.jsx)(T,(0,r.A)({in:$,onEnter:Q,onEntered:Y,onEntering:U,onExit:ee,onExited:te,onExiting:oe,addEndListener:e=>{"auto"===B&&(F.current=setTimeout(e,_.current||0)),d&&d(J.current,e)},nodeRef:J,timeout:"auto"===B?null:B},W,{children:(e,t)=>(0,f.jsx)(y,(0,r.A)({as:w,className:(0,i.A)(P.root,g,{entered:P.entered,exited:!$&&"0px"===q&&P.hidden}[e]),style:(0,r.A)({[D?"minWidth":"minHeight"]:q},j),ownerState:(0,r.A)({},O,{state:e}),ref:Z},t,{children:(0,f.jsx)(S,{ownerState:(0,r.A)({},O,{state:e}),className:P.wrapper,ref:H,children:(0,f.jsx)(b,{ownerState:(0,r.A)({},O,{state:e}),className:P.wrapperInner,children:m})})}))}))}));z.muiSupportAuto=!0;const w=z},973:(e,t,o)=>{o.d(t,{A:()=>v});var n=o(8168),r=o(8587),a=o(6540),i=o(7353),l=o(4675),s=o(5186),d=o(6852),c=o(4848);const u=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],p={entering:{opacity:1},entered:{opacity:1}},v=a.forwardRef((function(e,t){const o=(0,l.A)(),v={enter:o.transitions.duration.enteringScreen,exit:o.transitions.duration.leavingScreen},{addEndListener:h,appear:m=!0,children:g,easing:A,in:f,onEnter:x,onEntered:y,onEntering:S,onExit:b,onExited:z,onExiting:w,style:C,timeout:$=v,TransitionComponent:R=i.Ay}=e,E=(0,r.A)(e,u),I=a.useRef(null),M=(0,d.A)(I,g.ref,t),k=e=>t=>{if(e){const o=I.current;void 0===t?e(o):e(o,t)}},N=k(S),L=k(((e,t)=>{(0,s.q)(e);const n=(0,s.c)({style:C,timeout:$,easing:A},{mode:"enter"});e.style.webkitTransition=o.transitions.create("opacity",n),e.style.transition=o.transitions.create("opacity",n),x&&x(e,t)})),j=k(y),B=k(w),T=k((e=>{const t=(0,s.c)({style:C,timeout:$,easing:A},{mode:"exit"});e.style.webkitTransition=o.transitions.create("opacity",t),e.style.transition=o.transitions.create("opacity",t),b&&b(e)})),W=k(z);return(0,c.jsx)(R,(0,n.A)({appear:m,in:f,nodeRef:I,onEnter:L,onEntered:j,onEntering:N,onExit:T,onExited:W,onExiting:B,addEndListener:e=>{h&&h(I.current,e)},timeout:$},E,{children:(e,t)=>a.cloneElement(g,(0,n.A)({style:(0,n.A)({opacity:0,visibility:"exited"!==e||f?void 0:"hidden"},p[e],C,g.props.style),ref:M},t))}))}))},1641:(e,t,o)=>{o.d(t,{A:()=>y});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(5659),s=o(4279),d=o(7577),c=o(4409),u=o(6606),p=o(8466),v=o(8413),h=o(1609);function m(e){return(0,h.A)("MuiIconButton",e)}const g=(0,v.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]);var A=o(4848);const f=["edge","children","className","color","disabled","disableFocusRipple","size"],x=(0,d.Ay)(u.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"default"!==o.color&&t[`color${(0,p.A)(o.color)}`],o.edge&&t[`edge${(0,p.A)(o.edge)}`],t[`size${(0,p.A)(o.size)}`]]}})((({theme:e,ownerState:t})=>(0,r.A)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})),(({theme:e,ownerState:t})=>{var o;const n=null==(o=(e.vars||e).palette)?void 0:o[t.color];return(0,r.A)({},"inherit"===t.color&&{color:"inherit"},"inherit"!==t.color&&"default"!==t.color&&(0,r.A)({color:null==n?void 0:n.main},!t.disableRipple&&{"&:hover":(0,r.A)({},n&&{backgroundColor:e.vars?`rgba(${n.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,s.X4)(n.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===t.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===t.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${g.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})})),y=a.forwardRef((function(e,t){const o=(0,c.A)({props:e,name:"MuiIconButton"}),{edge:a=!1,children:s,className:d,color:u="default",disabled:v=!1,disableFocusRipple:h=!1,size:g="medium"}=o,y=(0,n.A)(o,f),S=(0,r.A)({},o,{edge:a,color:u,disabled:v,disableFocusRipple:h,size:g}),b=(e=>{const{classes:t,disabled:o,color:n,edge:r,size:a}=e,i={root:["root",o&&"disabled","default"!==n&&`color${(0,p.A)(n)}`,r&&`edge${(0,p.A)(r)}`,`size${(0,p.A)(a)}`]};return(0,l.A)(i,m,t)})(S);return(0,A.jsx)(x,(0,r.A)({className:(0,i.A)(b.root,d),centerRipple:!0,focusRipple:!h,disabled:v,ref:t,ownerState:S},y,{children:s}))}))},538:(e,t,o)=>{o.d(t,{A:()=>f});var n=o(8587),r=o(8168),a=o(6540),i=o(53),l=o(5659),s=o(4279),d=o(7577);const c=e=>{let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(t/100).toFixed(2)};var u=o(4409),p=o(8413),v=o(1609);function h(e){return(0,v.A)("MuiPaper",e)}(0,p.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);var m=o(4848);const g=["className","component","elevation","square","variant"],A=(0,d.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],!o.square&&t.rounded,"elevation"===o.variant&&t[`elevation${o.elevation}`]]}})((({theme:e,ownerState:t})=>{var o;return(0,r.A)({backgroundColor:(e.vars||e).palette.background.paper,color:(e.vars||e).palette.text.primary,transition:e.transitions.create("box-shadow")},!t.square&&{borderRadius:e.shape.borderRadius},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.divider}`},"elevation"===t.variant&&(0,r.A)({boxShadow:(e.vars||e).shadows[t.elevation]},!e.vars&&"dark"===e.palette.mode&&{backgroundImage:`linear-gradient(${(0,s.X4)("#fff",c(t.elevation))}, ${(0,s.X4)("#fff",c(t.elevation))})`},e.vars&&{backgroundImage:null==(o=e.vars.overlays)?void 0:o[t.elevation]}))})),f=a.forwardRef((function(e,t){const o=(0,u.A)({props:e,name:"MuiPaper"}),{className:a,component:s="div",elevation:d=1,square:c=!1,variant:p="elevation"}=o,v=(0,n.A)(o,g),f=(0,r.A)({},o,{component:s,elevation:d,square:c,variant:p}),x=(e=>{const{square:t,elevation:o,variant:n,classes:r}=e,a={root:["root",n,!t&&"rounded","elevation"===n&&`elevation${o}`]};return(0,l.A)(a,h,r)})(f);return(0,m.jsx)(A,(0,r.A)({as:s,ownerState:f,className:(0,i.A)(x.root,a),ref:t},v))}))},9350:(e,t,o)=>{o.d(t,{A:()=>a}),o(6540);var n=o(5003),r=o(4848);const a=(0,n.A)((0,r.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},5003:(e,t,o)=>{o.d(t,{A:()=>x});var n=o(8168),r=o(6540),a=o(8587),i=o(53),l=o(5659),s=o(8466),d=o(4409),c=o(7577),u=o(8413),p=o(1609);function v(e){return(0,p.A)("MuiSvgIcon",e)}(0,u.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var h=o(4848);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],g=(0,c.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,"inherit"!==o.color&&t[`color${(0,s.A)(o.color)}`],t[`fontSize${(0,s.A)(o.fontSize)}`]]}})((({theme:e,ownerState:t})=>{var o,n,r,a,i,l,s,d,c,u,p,v,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(o=e.transitions)||null==(n=o.create)?void 0:n.call(o,"fill",{duration:null==(r=e.transitions)||null==(r=r.duration)?void 0:r.shorter}),fontSize:{inherit:"inherit",small:(null==(a=e.typography)||null==(i=a.pxToRem)?void 0:i.call(a,20))||"1.25rem",medium:(null==(l=e.typography)||null==(s=l.pxToRem)?void 0:s.call(l,24))||"1.5rem",large:(null==(d=e.typography)||null==(c=d.pxToRem)?void 0:c.call(d,35))||"2.1875rem"}[t.fontSize],color:null!=(u=null==(p=(e.vars||e).palette)||null==(p=p[t.color])?void 0:p.main)?u:{action:null==(v=(e.vars||e).palette)||null==(v=v.action)?void 0:v.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[t.color]}})),A=r.forwardRef((function(e,t){const o=(0,d.A)({props:e,name:"MuiSvgIcon"}),{children:c,className:u,color:p="inherit",component:A="svg",fontSize:f="medium",htmlColor:x,inheritViewBox:y=!1,titleAccess:S,viewBox:b="0 0 24 24"}=o,z=(0,a.A)(o,m),w=r.isValidElement(c)&&"svg"===c.type,C=(0,n.A)({},o,{color:p,component:A,fontSize:f,instanceFontSize:e.fontSize,inheritViewBox:y,viewBox:b,hasSvgAsChild:w}),$={};y||($.viewBox=b);const R=(e=>{const{color:t,fontSize:o,classes:n}=e,r={root:["root","inherit"!==t&&`color${(0,s.A)(t)}`,`fontSize${(0,s.A)(o)}`]};return(0,l.A)(r,v,n)})(C);return(0,h.jsxs)(g,(0,n.A)({as:A,className:(0,i.A)(R.root,u),focusable:"false",color:x,"aria-hidden":!S||void 0,role:S?"img":void 0,ref:t},$,z,w&&c.props,{ownerState:C,children:[w?c.props.children:c,S?(0,h.jsx)("title",{children:S}):null]}))}));A.muiName="SvgIcon";const f=A;function x(e,t){function o(o,r){return(0,h.jsx)(f,(0,n.A)({"data-testid":`${t}Icon`,ref:r},o,{children:e}))}return o.muiName=f.muiName,r.memo(r.forwardRef(o))}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RSxFQUFVSCxRQUFVLEVBQVFBLFFBQ1IsT0FBeUIsYUFBaUJHLEdBQ2hFLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9kaXN0L2Vtb3Rpb24tcmVhY3QuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9BbGVydC9hbGVydENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9pbnRlcm5hbC9zdmctaWNvbnMvU3VjY2Vzc091dGxpbmVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3ZnLWljb25zL1JlcG9ydFByb2JsZW1PdXRsaW5lZC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2ludGVybmFsL3N2Zy1pY29ucy9FcnJvck91dGxpbmUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9pbnRlcm5hbC9zdmctaWNvbnMvSW5mb091dGxpbmVkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQWxlcnQvQWxlcnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b24vYnV0dG9uQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Db2xsYXBzZS9jb2xsYXBzZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Db2xsYXBzZS9Db2xsYXBzZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ZhZGUvRmFkZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ljb25CdXR0b24vaWNvbkJ1dHRvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9JY29uQnV0dG9uL0ljb25CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvZ2V0T3ZlcmxheUFscGhhLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvUGFwZXIvcGFwZXJDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvUGFwZXIvUGFwZXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9pbnRlcm5hbC9zdmctaWNvbnMvQ2xvc2UuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9TdmdJY29uL3N2Z0ljb25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoIGFzIGhhc093blByb3BlcnR5LCBFIGFzIEVtb3Rpb24sIGMgYXMgY3JlYXRlRW1vdGlvblByb3BzLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIFQgYXMgVGhlbWVDb250ZXh0LCBpIGFzIGlzQnJvd3NlciQxIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuZXhwb3J0IHsgQyBhcyBDYWNoZVByb3ZpZGVyLCBUIGFzIFRoZW1lQ29udGV4dCwgYSBhcyBUaGVtZVByb3ZpZGVyLCBfIGFzIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSwgdSBhcyB1c2VUaGVtZSwgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBiIGFzIHdpdGhUaGVtZSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxudmFyIHBrZyA9IHtcblx0bmFtZTogXCJAZW1vdGlvbi9yZWFjdFwiLFxuXHR2ZXJzaW9uOiBcIjExLjExLjFcIixcblx0bWFpbjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCIsXG5cdG1vZHVsZTogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCIsXG5cdGJyb3dzZXI6IHtcblx0XHRcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCJcblx0fSxcblx0ZXhwb3J0czoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0Lndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9faXNvbGF0ZWQtaG5yc1wiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL3BhY2thZ2UuanNvblwiOiBcIi4vcGFja2FnZS5qc29uXCIsXG5cdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdH1cblx0fSxcblx0dHlwZXM6IFwidHlwZXMvaW5kZXguZC50c1wiLFxuXHRmaWxlczogW1xuXHRcdFwic3JjXCIsXG5cdFx0XCJkaXN0XCIsXG5cdFx0XCJqc3gtcnVudGltZVwiLFxuXHRcdFwianN4LWRldi1ydW50aW1lXCIsXG5cdFx0XCJfaXNvbGF0ZWQtaG5yc1wiLFxuXHRcdFwidHlwZXMvKi5kLnRzXCIsXG5cdFx0XCJtYWNyby4qXCJcblx0XSxcblx0c2lkZUVmZmVjdHM6IGZhbHNlLFxuXHRhdXRob3I6IFwiRW1vdGlvbiBDb250cmlidXRvcnNcIixcblx0bGljZW5zZTogXCJNSVRcIixcblx0c2NyaXB0czoge1xuXHRcdFwidGVzdDp0eXBlc2NyaXB0XCI6IFwiZHRzbGludCB0eXBlc1wiXG5cdH0sXG5cdGRlcGVuZGVuY2llczoge1xuXHRcdFwiQGJhYmVsL3J1bnRpbWVcIjogXCJeNy4xOC4zXCIsXG5cdFx0XCJAZW1vdGlvbi9iYWJlbC1wbHVnaW5cIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY2FjaGVcIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc2VyaWFsaXplXCI6IFwiXjEuMS4yXCIsXG5cdFx0XCJAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrc1wiOiBcIl4xLjAuMVwiLFxuXHRcdFwiQGVtb3Rpb24vdXRpbHNcIjogXCJeMS4yLjFcIixcblx0XHRcIkBlbW90aW9uL3dlYWstbWVtb2l6ZVwiOiBcIl4wLjMuMVwiLFxuXHRcdFwiaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3NcIjogXCJeMy4zLjFcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzOiB7XG5cdFx0cmVhY3Q6IFwiPj0xNi44LjBcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzTWV0YToge1xuXHRcdFwiQHR5cGVzL3JlYWN0XCI6IHtcblx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0fVxuXHR9LFxuXHRkZXZEZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBkZWZpbml0ZWx5dHlwZWQvZHRzbGludFwiOiBcIjAuMC4xMTJcIixcblx0XHRcIkBlbW90aW9uL2Nzc1wiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2Nzcy1wcmV0dGlmaWVyXCI6IFwiMS4xLjNcIixcblx0XHRcIkBlbW90aW9uL3NlcnZlclwiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3N0eWxlZFwiOiBcIjExLjExLjBcIixcblx0XHRcImh0bWwtdGFnLW5hbWVzXCI6IFwiXjEuMS4yXCIsXG5cdFx0cmVhY3Q6IFwiMTYuMTQuMFwiLFxuXHRcdFwic3ZnLXRhZy1uYW1lc1wiOiBcIl4xLjEuMVwiLFxuXHRcdHR5cGVzY3JpcHQ6IFwiXjQuNS41XCJcblx0fSxcblx0cmVwb3NpdG9yeTogXCJodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdFwiLFxuXHRwdWJsaXNoQ29uZmlnOiB7XG5cdFx0YWNjZXNzOiBcInB1YmxpY1wiXG5cdH0sXG5cdFwidW1kOm1haW5cIjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QudW1kLm1pbi5qc1wiLFxuXHRwcmVjb25zdHJ1Y3Q6IHtcblx0XHRlbnRyeXBvaW50czogW1xuXHRcdFx0XCIuL2luZGV4LmpzXCIsXG5cdFx0XHRcIi4vanN4LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9faXNvbGF0ZWQtaG5ycy5qc1wiXG5cdFx0XSxcblx0XHR1bWROYW1lOiBcImVtb3Rpb25SZWFjdFwiLFxuXHRcdGV4cG9ydHM6IHtcblx0XHRcdGVudkNvbmRpdGlvbnM6IFtcblx0XHRcdFx0XCJicm93c2VyXCIsXG5cdFx0XHRcdFwid29ya2VyXCJcblx0XHRcdF0sXG5cdFx0XHRleHRyYToge1xuXHRcdFx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbnZhciBqc3ggPSBmdW5jdGlvbiBqc3godHlwZSwgcHJvcHMpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgaWYgKHByb3BzID09IG51bGwgfHwgIWhhc093blByb3BlcnR5LmNhbGwocHJvcHMsICdjc3MnKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICB9XG5cbiAgdmFyIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSA9IG5ldyBBcnJheShhcmdzTGVuZ3RoKTtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzBdID0gRW1vdGlvbjtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzFdID0gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3NMZW5ndGg7IGkrKykge1xuICAgIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVtpXSA9IGFyZ3NbaV07XG4gIH0gLy8gJEZsb3dGaXhNZVxuXG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbnZhciB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSBmYWxzZTsgLy8gbWFpbnRhaW4gcGxhY2Ugb3ZlciByZXJlbmRlcnMuXG4vLyBpbml0aWFsIHJlbmRlciBmcm9tIGJyb3dzZXIsIGluc2VydEJlZm9yZSBjb250ZXh0LnNoZWV0LnRhZ3NbMF0gb3IgaWYgYSBzdHlsZSBoYXNuJ3QgYmVlbiBpbnNlcnRlZCB0aGVyZSB5ZXQsIGFwcGVuZENoaWxkXG4vLyBpbml0aWFsIGNsaWVudC1zaWRlIHJlbmRlciBmcm9tIFNTUiwgdXNlIHBsYWNlIG9mIGh5ZHJhdGluZyB0YWdcblxudmFyIEdsb2JhbCA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsICYmICggLy8gY2hlY2sgZm9yIGNsYXNzTmFtZSBhcyB3ZWxsIHNpbmNlIHRoZSB1c2VyIGlzXG4gIC8vIHByb2JhYmx5IHVzaW5nIHRoZSBjdXN0b20gY3JlYXRlRWxlbWVudCB3aGljaFxuICAvLyBtZWFucyBpdCB3aWxsIGJlIHR1cm5lZCBpbnRvIGEgY2xhc3NOYW1lIHByb3BcbiAgLy8gJEZsb3dGaXhNZSBJIGRvbid0IHJlYWxseSB3YW50IHRvIGFkZCBpdCB0byB0aGUgdHlwZSBzaW5jZSBpdCBzaG91bGRuJ3QgYmUgdXNlZFxuICBwcm9wcy5jbGFzc05hbWUgfHwgcHJvcHMuY3NzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgY3NzIHByb3Agb24gR2xvYmFsLCBkaWQgeW91IG1lYW4gdG8gdXNlIHRoZSBzdHlsZXMgcHJvcCBpbnN0ZWFkP1wiKTtcbiAgICB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBpZiAoIWlzQnJvd3NlciQxKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgc2VyaWFsaXplZE5hbWVzID0gc2VyaWFsaXplZC5uYW1lO1xuICAgIHZhciBzZXJpYWxpemVkU3R5bGVzID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gICAgdmFyIG5leHQgPSBzZXJpYWxpemVkLm5leHQ7XG5cbiAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXJpYWxpemVkTmFtZXMgKz0gJyAnICsgbmV4dC5uYW1lO1xuICAgICAgc2VyaWFsaXplZFN0eWxlcyArPSBuZXh0LnN0eWxlcztcbiAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZENhY2hlID0gY2FjaGUuY29tcGF0ID09PSB0cnVlO1xuICAgIHZhciBydWxlcyA9IGNhY2hlLmluc2VydChcIlwiLCB7XG4gICAgICBuYW1lOiBzZXJpYWxpemVkTmFtZXMsXG4gICAgICBzdHlsZXM6IHNlcmlhbGl6ZWRTdHlsZXNcbiAgICB9LCBjYWNoZS5zaGVldCwgc2hvdWxkQ2FjaGUpO1xuXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCAoX3JlZiA9IHt9LCBfcmVmW1wiZGF0YS1lbW90aW9uXCJdID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsIFwiICsgc2VyaWFsaXplZE5hbWVzLCBfcmVmLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgX19odG1sOiBydWxlc1xuICAgIH0sIF9yZWYubm9uY2UgPSBjYWNoZS5zaGVldC5ub25jZSwgX3JlZikpO1xuICB9IC8vIHllcywgaSBrbm93IHRoZXNlIGhvb2tzIGFyZSB1c2VkIGNvbmRpdGlvbmFsbHlcbiAgLy8gYnV0IGl0IGlzIGJhc2VkIG9uIGEgY29uc3RhbnQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZSBhdCBydW50aW1lXG4gIC8vIGl0J3MgZWZmZWN0aXZlbHkgbGlrZSBoYXZpbmcgdHdvIGltcGxlbWVudGF0aW9ucyBhbmQgc3dpdGNoaW5nIHRoZW0gb3V0XG4gIC8vIHNvIGl0J3Mgbm90IGFjdHVhbGx5IGJyZWFraW5nIGFueXRoaW5nXG5cblxuICB2YXIgc2hlZXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5ID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsXCI7IC8vIHVzZSBjYXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vaXNzdWVzLzI2NzVcblxuICAgIHZhciBzaGVldCA9IG5ldyBjYWNoZS5zaGVldC5jb25zdHJ1Y3Rvcih7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIG5vbmNlOiBjYWNoZS5zaGVldC5ub25jZSxcbiAgICAgIGNvbnRhaW5lcjogY2FjaGUuc2hlZXQuY29udGFpbmVyLFxuICAgICAgc3BlZWR5OiBjYWNoZS5zaGVldC5pc1NwZWVkeVxuICAgIH0pO1xuICAgIHZhciByZWh5ZHJhdGluZyA9IGZhbHNlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJzdHlsZVtkYXRhLWVtb3Rpb249XFxcIlwiICsga2V5ICsgXCIgXCIgKyBzZXJpYWxpemVkLm5hbWUgKyBcIlxcXCJdXCIpO1xuXG4gICAgaWYgKGNhY2hlLnNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICBzaGVldC5iZWZvcmUgPSBjYWNoZS5zaGVldC50YWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICByZWh5ZHJhdGluZyA9IHRydWU7IC8vIGNsZWFyIHRoZSBoYXNoIHNvIHRoaXMgbm9kZSB3b24ndCBiZSByZWNvZ25pemFibGUgYXMgcmVoeWRyYXRhYmxlIGJ5IG90aGVyIDxHbG9iYWwvPnNcblxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIGtleSk7XG4gICAgICBzaGVldC5oeWRyYXRlKFtub2RlXSk7XG4gICAgfVxuXG4gICAgc2hlZXRSZWYuY3VycmVudCA9IFtzaGVldCwgcmVoeWRyYXRpbmddO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH07XG4gIH0sIFtjYWNoZV0pO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldFJlZkN1cnJlbnQgPSBzaGVldFJlZi5jdXJyZW50O1xuICAgIHZhciBzaGVldCA9IHNoZWV0UmVmQ3VycmVudFswXSxcbiAgICAgICAgcmVoeWRyYXRpbmcgPSBzaGVldFJlZkN1cnJlbnRbMV07XG5cbiAgICBpZiAocmVoeWRyYXRpbmcpIHtcbiAgICAgIHNoZWV0UmVmQ3VycmVudFsxXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZXJpYWxpemVkLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5zZXJ0IGtleWZyYW1lc1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLm5leHQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChzaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgLy8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0IHRoZW4gaXQgd2lsbCBiZSBudWxsIHNvIHRoZSBzdHlsZSBlbGVtZW50IHdpbGwgYmUgYXBwZW5kZWRcbiAgICAgIHZhciBlbGVtZW50ID0gc2hlZXQudGFnc1tzaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZztcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGVsZW1lbnQ7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH1cblxuICAgIGNhY2hlLmluc2VydChcIlwiLCBzZXJpYWxpemVkLCBzaGVldCwgZmFsc2UpO1xuICB9LCBbY2FjaGUsIHNlcmlhbGl6ZWQubmFtZV0pO1xuICByZXR1cm4gbnVsbDtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBHbG9iYWwuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkdsb2JhbCc7XG59XG5cbmZ1bmN0aW9uIGNzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTdHlsZXMoYXJncyk7XG59XG5cbnZhciBrZXlmcmFtZXMgPSBmdW5jdGlvbiBrZXlmcmFtZXMoKSB7XG4gIHZhciBpbnNlcnRhYmxlID0gY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgdmFyIG5hbWUgPSBcImFuaW1hdGlvbi1cIiArIGluc2VydGFibGUubmFtZTsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBzdHlsZXM6IFwiQGtleWZyYW1lcyBcIiArIG5hbWUgKyBcIntcIiArIGluc2VydGFibGUuc3R5bGVzICsgXCJ9XCIsXG4gICAgYW5pbTogMSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJfRU1PX1wiICsgdGhpcy5uYW1lICsgXCJfXCIgKyB0aGlzLnN0eWxlcyArIFwiX0VNT19cIjtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uIGNsYXNzbmFtZXMoYXJncykge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFyZy5zdHlsZXMgIT09IHVuZGVmaW5lZCAmJiBhcmcubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdSBoYXZlIHBhc3NlZCBzdHlsZXMgY3JlYXRlZCB3aXRoIGBjc3NgIGZyb20gYEBlbW90aW9uL3JlYWN0YCBwYWNrYWdlIHRvIHRoZSBgY3hgLlxcbicgKyAnYGN4YCBpcyBtZWFudCB0byBjb21wb3NlIGNsYXNzIG5hbWVzIChzdHJpbmdzKSBzbyB5b3Ugc2hvdWxkIGNvbnZlcnQgdGhvc2Ugc3R5bGVzIHRvIGEgY2xhc3MgbmFtZSBieSBwYXNzaW5nIHRoZW0gdG8gdGhlIGBjc3NgIHJlY2VpdmVkIGZyb20gPENsYXNzTmFtZXMvPiBjb21wb25lbnQuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvQWRkID0gJyc7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gYXJnKSB7XG4gICAgICAgICAgICAgIGlmIChhcmdba10gJiYgaykge1xuICAgICAgICAgICAgICAgIHRvQWRkICYmICh0b0FkZCArPSAnICcpO1xuICAgICAgICAgICAgICAgIHRvQWRkICs9IGs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgdG9BZGQgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9BZGQpIHtcbiAgICAgIGNscyAmJiAoY2xzICs9ICcgJyk7XG4gICAgICBjbHMgKz0gdG9BZGQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNscztcbn07XG5cbmZ1bmN0aW9uIG1lcmdlKHJlZ2lzdGVyZWQsIGNzcywgY2xhc3NOYW1lKSB7XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW107XG4gIHZhciByYXdDbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZSk7XG5cbiAgaWYgKHJlZ2lzdGVyZWRTdHlsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICByZXR1cm4gcmF3Q2xhc3NOYW1lICsgY3NzKHJlZ2lzdGVyZWRTdHlsZXMpO1xufVxuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWRBcnIgPSBfcmVmLnNlcmlhbGl6ZWRBcnI7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWRBcnJbaV0sIGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIENsYXNzTmFtZXMgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgdmFyIGhhc1JlbmRlcmVkID0gZmFsc2U7XG4gIHZhciBzZXJpYWxpemVkQXJyID0gW107XG5cbiAgdmFyIGNzcyA9IGZ1bmN0aW9uIGNzcygpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjc3MgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIGNhY2hlLnJlZ2lzdGVyZWQpO1xuICAgIHNlcmlhbGl6ZWRBcnIucHVzaChzZXJpYWxpemVkKTsgLy8gcmVnaXN0cmF0aW9uIGhhcyB0byBoYXBwZW4gaGVyZSBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWlnaHQgZ2V0IGNvbnN1bWVkIGJ5IGBjeGBcblxuICAgIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB9O1xuXG4gIHZhciBjeCA9IGZ1bmN0aW9uIGN4KCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2N4IGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZShjYWNoZS5yZWdpc3RlcmVkLCBjc3MsIGNsYXNzbmFtZXMoYXJncykpO1xuICB9O1xuXG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNzczogY3NzLFxuICAgIGN4OiBjeCxcbiAgICB0aGVtZTogUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG4gIH07XG4gIHZhciBlbGUgPSBwcm9wcy5jaGlsZHJlbihjb250ZW50KTtcbiAgaGFzUmVuZGVyZWQgPSB0cnVlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkQXJyOiBzZXJpYWxpemVkQXJyXG4gIH0pLCBlbGUpO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIENsYXNzTmFtZXMuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkNsYXNzTmFtZXMnO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaXNCcm93c2VyID0gXCJvYmplY3RcIiAhPT0gJ3VuZGVmaW5lZCc7IC8vICMxNzI3LCAjMjkwNSBmb3Igc29tZSByZWFzb24gSmVzdCBhbmQgVml0ZXN0IGV2YWx1YXRlIG1vZHVsZXMgdHdpY2UgaWYgc29tZSBjb25zdW1pbmcgbW9kdWxlIGdldHMgbW9ja2VkXG5cbiAgdmFyIGlzVGVzdEVudiA9IHR5cGVvZiBqZXN0ICE9PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgdmkgIT09ICd1bmRlZmluZWQnO1xuXG4gIGlmIChpc0Jyb3dzZXIgJiYgIWlzVGVzdEVudikge1xuICAgIC8vIGdsb2JhbFRoaXMgaGFzIHdpZGUgYnJvd3NlciBzdXBwb3J0IC0gaHR0cHM6Ly9jYW5pdXNlLmNvbS8/c2VhcmNoPWdsb2JhbFRoaXMsIE5vZGUuanMgMTIgYW5kIGxhdGVyXG4gICAgdmFyIGdsb2JhbENvbnRleHQgPSAvLyAkRmxvd0lnbm9yZVxuICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgIDogaXNCcm93c2VyID8gd2luZG93IDogZ2xvYmFsO1xuICAgIHZhciBnbG9iYWxLZXkgPSBcIl9fRU1PVElPTl9SRUFDVF9cIiArIHBrZy52ZXJzaW9uLnNwbGl0KCcuJylbMF0gKyBcIl9fXCI7XG5cbiAgICBpZiAoZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBhcmUgbG9hZGluZyBAZW1vdGlvbi9yZWFjdCB3aGVuIGl0IGlzIGFscmVhZHkgbG9hZGVkLiBSdW5uaW5nICcgKyAnbXVsdGlwbGUgaW5zdGFuY2VzIG1heSBjYXVzZSBwcm9ibGVtcy4gVGhpcyBjYW4gaGFwcGVuIGlmIG11bHRpcGxlICcgKyAndmVyc2lvbnMgYXJlIHVzZWQsIG9yIGlmIG11bHRpcGxlIGJ1aWxkcyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFyZSAnICsgJ3VzZWQuJyk7XG4gICAgfVxuXG4gICAgZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldID0gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgeyBDbGFzc05hbWVzLCBHbG9iYWwsIGpzeCBhcyBjcmVhdGVFbGVtZW50LCBjc3MsIGpzeCwga2V5ZnJhbWVzIH07XG4iLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxlcnRVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUFsZXJ0Jywgc2xvdCk7XG59XG5jb25zdCBhbGVydENsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlBbGVydCcsIFsncm9vdCcsICdhY3Rpb24nLCAnaWNvbicsICdtZXNzYWdlJywgJ2ZpbGxlZCcsICdmaWxsZWRTdWNjZXNzJywgJ2ZpbGxlZEluZm8nLCAnZmlsbGVkV2FybmluZycsICdmaWxsZWRFcnJvcicsICdvdXRsaW5lZCcsICdvdXRsaW5lZFN1Y2Nlc3MnLCAnb3V0bGluZWRJbmZvJywgJ291dGxpbmVkV2FybmluZycsICdvdXRsaW5lZEVycm9yJywgJ3N0YW5kYXJkJywgJ3N0YW5kYXJkU3VjY2VzcycsICdzdGFuZGFyZEluZm8nLCAnc3RhbmRhcmRXYXJuaW5nJywgJ3N0YW5kYXJkRXJyb3InXSk7XG5leHBvcnQgZGVmYXVsdCBhbGVydENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlU3ZnSWNvbiBmcm9tICcuLi8uLi91dGlscy9jcmVhdGVTdmdJY29uJztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3ZnSWNvbiggLyojX19QVVJFX18qL19qc3goXCJwYXRoXCIsIHtcbiAgZDogXCJNMjAsMTJBOCw4IDAgMCwxIDEyLDIwQTgsOCAwIDAsMSA0LDEyQTgsOCAwIDAsMSAxMiw0QzEyLjc2LDQgMTMuNSw0LjExIDE0LjIsIDQuMzFMMTUuNzcsMi43NEMxNC42MSwyLjI2IDEzLjM0LDIgMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwgMCAyMiwxMk03LjkxLDEwLjA4TDYuNSwxMS41TDExLDE2TDIxLDZMMTkuNTksNC41OEwxMSwxMy4xN0w3LjkxLDEwLjA4WlwiXG59KSwgJ1N1Y2Nlc3NPdXRsaW5lZCcpOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN2Z0ljb24oIC8qI19fUFVSRV9fKi9fanN4KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTEyIDUuOTlMMTkuNTMgMTlINC40N0wxMiA1Ljk5TTEyIDJMMSAyMWgyMkwxMiAyem0xIDE0aC0ydjJoMnYtMnptMC02aC0ydjRoMnYtNHpcIlxufSksICdSZXBvcnRQcm9ibGVtT3V0bGluZWQnKTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjcmVhdGVTdmdJY29uIGZyb20gJy4uLy4uL3V0aWxzL2NyZWF0ZVN2Z0ljb24nO1xuXG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVTdmdJY29uKCAvKiNfX1BVUkVfXyovX2pzeChcInBhdGhcIiwge1xuICBkOiBcIk0xMSAxNWgydjJoLTJ6bTAtOGgydjZoLTJ6bS45OS01QzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyek0xMiAyMGMtNC40MiAwLTgtMy41OC04LThzMy41OC04IDgtOCA4IDMuNTggOCA4LTMuNTggOC04IDh6XCJcbn0pLCAnRXJyb3JPdXRsaW5lJyk7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3JlYXRlU3ZnSWNvbiBmcm9tICcuLi8uLi91dGlscy9jcmVhdGVTdmdJY29uJztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3ZnSWNvbiggLyojX19QVVJFX18qL19qc3goXCJwYXRoXCIsIHtcbiAgZDogXCJNMTEsOUgxM1Y3SDExTTEyLDIwQzcuNTksMjAgNCwxNi40MSA0LDEyQzQsNy41OSA3LjU5LDQgMTIsNEMxNi40MSw0IDIwLDcuNTkgMjAsIDEyQzIwLDE2LjQxIDE2LjQxLDIwIDEyLDIwTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwgMTAgMCAwLDAgMTIsMk0xMSwxN0gxM1YxMUgxMVYxN1pcIlxufSksICdJbmZvT3V0bGluZWQnKTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhY3Rpb25cIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNsb3NlVGV4dFwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50c1wiLCBcImNvbXBvbmVudHNQcm9wc1wiLCBcImljb25cIiwgXCJpY29uTWFwcGluZ1wiLCBcIm9uQ2xvc2VcIiwgXCJyb2xlXCIsIFwic2V2ZXJpdHlcIiwgXCJzbG90UHJvcHNcIiwgXCJzbG90c1wiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBkYXJrZW4sIGxpZ2h0ZW4gfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgUGFwZXIgZnJvbSAnLi4vUGFwZXInO1xuaW1wb3J0IGFsZXJ0Q2xhc3NlcywgeyBnZXRBbGVydFV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYWxlcnRDbGFzc2VzJztcbmltcG9ydCBJY29uQnV0dG9uIGZyb20gJy4uL0ljb25CdXR0b24nO1xuaW1wb3J0IFN1Y2Nlc3NPdXRsaW5lZEljb24gZnJvbSAnLi4vaW50ZXJuYWwvc3ZnLWljb25zL1N1Y2Nlc3NPdXRsaW5lZCc7XG5pbXBvcnQgUmVwb3J0UHJvYmxlbU91dGxpbmVkSWNvbiBmcm9tICcuLi9pbnRlcm5hbC9zdmctaWNvbnMvUmVwb3J0UHJvYmxlbU91dGxpbmVkJztcbmltcG9ydCBFcnJvck91dGxpbmVJY29uIGZyb20gJy4uL2ludGVybmFsL3N2Zy1pY29ucy9FcnJvck91dGxpbmUnO1xuaW1wb3J0IEluZm9PdXRsaW5lZEljb24gZnJvbSAnLi4vaW50ZXJuYWwvc3ZnLWljb25zL0luZm9PdXRsaW5lZCc7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gJy4uL2ludGVybmFsL3N2Zy1pY29ucy9DbG9zZSc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIHZhcmlhbnQsXG4gICAgY29sb3IsXG4gICAgc2V2ZXJpdHksXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgYCR7dmFyaWFudH0ke2NhcGl0YWxpemUoY29sb3IgfHwgc2V2ZXJpdHkpfWAsIGAke3ZhcmlhbnR9YF0sXG4gICAgaWNvbjogWydpY29uJ10sXG4gICAgbWVzc2FnZTogWydtZXNzYWdlJ10sXG4gICAgYWN0aW9uOiBbJ2FjdGlvbiddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0QWxlcnRVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IEFsZXJ0Um9vdCA9IHN0eWxlZChQYXBlciwge1xuICBuYW1lOiAnTXVpQWxlcnQnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9JHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IgfHwgb3duZXJTdGF0ZS5zZXZlcml0eSl9YF1dO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICBjb25zdCBnZXRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IGRhcmtlbiA6IGxpZ2h0ZW47XG4gIGNvbnN0IGdldEJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IGxpZ2h0ZW4gOiBkYXJrZW47XG4gIGNvbnN0IGNvbG9yID0gb3duZXJTdGF0ZS5jb2xvciB8fCBvd25lclN0YXRlLnNldmVyaXR5O1xuICByZXR1cm4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYm9keTIsIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHBhZGRpbmc6ICc2cHggMTZweCdcbiAgfSwgY29sb3IgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnc3RhbmRhcmQnICYmIHtcbiAgICBjb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5BbGVydFtgJHtjb2xvcn1Db2xvcmBdIDogZ2V0Q29sb3IodGhlbWUucGFsZXR0ZVtjb2xvcl0ubGlnaHQsIDAuNiksXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkFsZXJ0W2Ake2NvbG9yfVN0YW5kYXJkQmdgXSA6IGdldEJhY2tncm91bmRDb2xvcih0aGVtZS5wYWxldHRlW2NvbG9yXS5saWdodCwgMC45KSxcbiAgICBbYCYgLiR7YWxlcnRDbGFzc2VzLmljb259YF06IHRoZW1lLnZhcnMgPyB7XG4gICAgICBjb2xvcjogdGhlbWUudmFycy5wYWxldHRlLkFsZXJ0W2Ake2NvbG9yfUljb25Db2xvcmBdXG4gICAgfSA6IHtcbiAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlW2NvbG9yXS5tYWluXG4gICAgfVxuICB9LCBjb2xvciAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIGNvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkFsZXJ0W2Ake2NvbG9yfUNvbG9yYF0gOiBnZXRDb2xvcih0aGVtZS5wYWxldHRlW2NvbG9yXS5saWdodCwgMC42KSxcbiAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtjb2xvcl0ubGlnaHR9YCxcbiAgICBbYCYgLiR7YWxlcnRDbGFzc2VzLmljb259YF06IHRoZW1lLnZhcnMgPyB7XG4gICAgICBjb2xvcjogdGhlbWUudmFycy5wYWxldHRlLkFsZXJ0W2Ake2NvbG9yfUljb25Db2xvcmBdXG4gICAgfSA6IHtcbiAgICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlW2NvbG9yXS5tYWluXG4gICAgfVxuICB9LCBjb2xvciAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdmaWxsZWQnICYmIF9leHRlbmRzKHtcbiAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRNZWRpdW1cbiAgfSwgdGhlbWUudmFycyA/IHtcbiAgICBjb2xvcjogdGhlbWUudmFycy5wYWxldHRlLkFsZXJ0W2Ake2NvbG9yfUZpbGxlZENvbG9yYF0sXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzLnBhbGV0dGUuQWxlcnRbYCR7Y29sb3J9RmlsbGVkQmdgXVxuICB9IDoge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnZGFyaycgPyB0aGVtZS5wYWxldHRlW2NvbG9yXS5kYXJrIDogdGhlbWUucGFsZXR0ZVtjb2xvcl0ubWFpbixcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5nZXRDb250cmFzdFRleHQodGhlbWUucGFsZXR0ZVtjb2xvcl0ubWFpbilcbiAgfSkpO1xufSk7XG5jb25zdCBBbGVydEljb24gPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUFsZXJ0JyxcbiAgc2xvdDogJ0ljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5pY29uXG59KSh7XG4gIG1hcmdpblJpZ2h0OiAxMixcbiAgcGFkZGluZzogJzdweCAwJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmb250U2l6ZTogMjIsXG4gIG9wYWNpdHk6IDAuOVxufSk7XG5jb25zdCBBbGVydE1lc3NhZ2UgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aUFsZXJ0JyxcbiAgc2xvdDogJ01lc3NhZ2UnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5tZXNzYWdlXG59KSh7XG4gIHBhZGRpbmc6ICc4cHggMCcsXG4gIG1pbldpZHRoOiAwLFxuICBvdmVyZmxvdzogJ2F1dG8nXG59KTtcbmNvbnN0IEFsZXJ0QWN0aW9uID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlBbGVydCcsXG4gIHNsb3Q6ICdBY3Rpb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5hY3Rpb25cbn0pKHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gIHBhZGRpbmc6ICc0cHggMCAwIDE2cHgnLFxuICBtYXJnaW5MZWZ0OiAnYXV0bycsXG4gIG1hcmdpblJpZ2h0OiAtOFxufSk7XG5jb25zdCBkZWZhdWx0SWNvbk1hcHBpbmcgPSB7XG4gIHN1Y2Nlc3M6IC8qI19fUFVSRV9fKi9fanN4KFN1Y2Nlc3NPdXRsaW5lZEljb24sIHtcbiAgICBmb250U2l6ZTogXCJpbmhlcml0XCJcbiAgfSksXG4gIHdhcm5pbmc6IC8qI19fUFVSRV9fKi9fanN4KFJlcG9ydFByb2JsZW1PdXRsaW5lZEljb24sIHtcbiAgICBmb250U2l6ZTogXCJpbmhlcml0XCJcbiAgfSksXG4gIGVycm9yOiAvKiNfX1BVUkVfXyovX2pzeChFcnJvck91dGxpbmVJY29uLCB7XG4gICAgZm9udFNpemU6IFwiaW5oZXJpdFwiXG4gIH0pLFxuICBpbmZvOiAvKiNfX1BVUkVfXyovX2pzeChJbmZvT3V0bGluZWRJY29uLCB7XG4gICAgZm9udFNpemU6IFwiaW5oZXJpdFwiXG4gIH0pXG59O1xuY29uc3QgQWxlcnQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBBbGVydChpblByb3BzLCByZWYpIHtcbiAgdmFyIF9yZWYsIF9zbG90cyRjbG9zZUJ1dHRvbiwgX3JlZjIsIF9zbG90cyRjbG9zZUljb24sIF9zbG90UHJvcHMkY2xvc2VCdXR0bywgX3Nsb3RQcm9wcyRjbG9zZUljb247XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUFsZXJ0J1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgYWN0aW9uLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjbG9zZVRleHQgPSAnQ2xvc2UnLFxuICAgICAgY29sb3IsXG4gICAgICBjb21wb25lbnRzID0ge30sXG4gICAgICBjb21wb25lbnRzUHJvcHMgPSB7fSxcbiAgICAgIGljb24sXG4gICAgICBpY29uTWFwcGluZyA9IGRlZmF1bHRJY29uTWFwcGluZyxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICByb2xlID0gJ2FsZXJ0JyxcbiAgICAgIHNldmVyaXR5ID0gJ3N1Y2Nlc3MnLFxuICAgICAgc2xvdFByb3BzID0ge30sXG4gICAgICBzbG90cyA9IHt9LFxuICAgICAgdmFyaWFudCA9ICdzdGFuZGFyZCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIHNldmVyaXR5LFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgQWxlcnRDbG9zZUJ1dHRvbiA9IChfcmVmID0gKF9zbG90cyRjbG9zZUJ1dHRvbiA9IHNsb3RzLmNsb3NlQnV0dG9uKSAhPSBudWxsID8gX3Nsb3RzJGNsb3NlQnV0dG9uIDogY29tcG9uZW50cy5DbG9zZUJ1dHRvbikgIT0gbnVsbCA/IF9yZWYgOiBJY29uQnV0dG9uO1xuICBjb25zdCBBbGVydENsb3NlSWNvbiA9IChfcmVmMiA9IChfc2xvdHMkY2xvc2VJY29uID0gc2xvdHMuY2xvc2VJY29uKSAhPSBudWxsID8gX3Nsb3RzJGNsb3NlSWNvbiA6IGNvbXBvbmVudHMuQ2xvc2VJY29uKSAhPSBudWxsID8gX3JlZjIgOiBDbG9zZUljb247XG4gIGNvbnN0IGNsb3NlQnV0dG9uUHJvcHMgPSAoX3Nsb3RQcm9wcyRjbG9zZUJ1dHRvID0gc2xvdFByb3BzLmNsb3NlQnV0dG9uKSAhPSBudWxsID8gX3Nsb3RQcm9wcyRjbG9zZUJ1dHRvIDogY29tcG9uZW50c1Byb3BzLmNsb3NlQnV0dG9uO1xuICBjb25zdCBjbG9zZUljb25Qcm9wcyA9IChfc2xvdFByb3BzJGNsb3NlSWNvbiA9IHNsb3RQcm9wcy5jbG9zZUljb24pICE9IG51bGwgPyBfc2xvdFByb3BzJGNsb3NlSWNvbiA6IGNvbXBvbmVudHNQcm9wcy5jbG9zZUljb247XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoQWxlcnRSb290LCBfZXh0ZW5kcyh7XG4gICAgcm9sZTogcm9sZSxcbiAgICBlbGV2YXRpb246IDAsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIHJlZjogcmVmXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFtpY29uICE9PSBmYWxzZSA/IC8qI19fUFVSRV9fKi9fanN4KEFsZXJ0SWNvbiwge1xuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5pY29uLFxuICAgICAgY2hpbGRyZW46IGljb24gfHwgaWNvbk1hcHBpbmdbc2V2ZXJpdHldIHx8IGRlZmF1bHRJY29uTWFwcGluZ1tzZXZlcml0eV1cbiAgICB9KSA6IG51bGwsIC8qI19fUFVSRV9fKi9fanN4KEFsZXJ0TWVzc2FnZSwge1xuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5tZXNzYWdlLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSksIGFjdGlvbiAhPSBudWxsID8gLyojX19QVVJFX18qL19qc3goQWxlcnRBY3Rpb24sIHtcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuYWN0aW9uLFxuICAgICAgY2hpbGRyZW46IGFjdGlvblxuICAgIH0pIDogbnVsbCwgYWN0aW9uID09IG51bGwgJiYgb25DbG9zZSA/IC8qI19fUFVSRV9fKi9fanN4KEFsZXJ0QWN0aW9uLCB7XG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmFjdGlvbixcbiAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChBbGVydENsb3NlQnV0dG9uLCBfZXh0ZW5kcyh7XG4gICAgICAgIHNpemU6IFwic21hbGxcIixcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IGNsb3NlVGV4dCxcbiAgICAgICAgdGl0bGU6IGNsb3NlVGV4dCxcbiAgICAgICAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICAgICAgICBvbkNsaWNrOiBvbkNsb3NlXG4gICAgICB9LCBjbG9zZUJ1dHRvblByb3BzLCB7XG4gICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChBbGVydENsb3NlSWNvbiwgX2V4dGVuZHMoe1xuICAgICAgICAgIGZvbnRTaXplOiBcInNtYWxsXCJcbiAgICAgICAgfSwgY2xvc2VJY29uUHJvcHMpKVxuICAgICAgfSkpXG4gICAgfSkgOiBudWxsXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEFsZXJ0LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBhY3Rpb24gdG8gZGlzcGxheS4gSXQgcmVuZGVycyBhZnRlciB0aGUgbWVzc2FnZSwgYXQgdGhlIGVuZCBvZiB0aGUgYWxlcnQuXG4gICAqL1xuICBhY3Rpb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBsYWJlbCBmb3IgdGhlICpjbG9zZSBwb3B1cCogaWNvbiBidXR0b24uXG4gICAqXG4gICAqIEZvciBsb2NhbGl6YXRpb24gcHVycG9zZXMsIHlvdSBjYW4gdXNlIHRoZSBwcm92aWRlZCBbdHJhbnNsYXRpb25zXSgvbWF0ZXJpYWwtdWkvZ3VpZGVzL2xvY2FsaXphdGlvbi8pLlxuICAgKiBAZGVmYXVsdCAnQ2xvc2UnXG4gICAqL1xuICBjbG9zZVRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC4gVW5sZXNzIHByb3ZpZGVkLCB0aGUgdmFsdWUgaXMgdGFrZW4gZnJvbSB0aGUgYHNldmVyaXR5YCBwcm9wLlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBzbG90c2AgcHJvcC5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBzbG90c2AgcHJvcCBpbnN0ZWFkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29tcG9uZW50czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBDbG9zZUJ1dHRvbjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIENsb3NlSWNvbjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGV4dHJhIHByb3BzIGZvciB0aGUgc2xvdCBjb21wb25lbnRzLlxuICAgKiBZb3UgY2FuIG92ZXJyaWRlIHRoZSBleGlzdGluZyBwcm9wcyBvciBhZGQgbmV3IG9uZXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBzbG90UHJvcHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdFByb3BzYCBwcm9wIGluc3RlYWQsIGFzIGBjb21wb25lbnRzUHJvcHNgIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29tcG9uZW50c1Byb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGNsb3NlQnV0dG9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNsb3NlSWNvbjogUHJvcFR5cGVzLm9iamVjdFxuICB9KSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSBpY29uIGRpc3BsYXllZCBiZWZvcmUgdGhlIGNoaWxkcmVuLlxuICAgKiBVbmxlc3MgcHJvdmlkZWQsIHRoZSBpY29uIGlzIG1hcHBlZCB0byB0aGUgdmFsdWUgb2YgdGhlIGBzZXZlcml0eWAgcHJvcC5cbiAgICogU2V0IHRvIGBmYWxzZWAgdG8gcmVtb3ZlIHRoZSBgaWNvbmAuXG4gICAqL1xuICBpY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgbWFwcyB0aGUgYHNldmVyaXR5YCBwcm9wIHRvIGEgcmFuZ2Ugb2YgZGlmZmVyZW50IGljb25zLFxuICAgKiBmb3IgaW5zdGFuY2Ugc3VjY2VzcyB0byBgPFN1Y2Nlc3NPdXRsaW5lZD5gLlxuICAgKiBJZiB5b3Ugd2lzaCB0byBjaGFuZ2UgdGhpcyBtYXBwaW5nLCB5b3UgY2FuIHByb3ZpZGUgeW91ciBvd24uXG4gICAqIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHRoZSBgaWNvbmAgcHJvcCB0byBvdmVycmlkZSB0aGUgaWNvbiBkaXNwbGF5ZWQuXG4gICAqL1xuICBpY29uTWFwcGluZzogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBlcnJvcjogUHJvcFR5cGVzLm5vZGUsXG4gICAgaW5mbzogUHJvcFR5cGVzLm5vZGUsXG4gICAgc3VjY2VzczogUHJvcFR5cGVzLm5vZGUsXG4gICAgd2FybmluZzogUHJvcFR5cGVzLm5vZGVcbiAgfSksXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBjb21wb25lbnQgcmVxdWVzdHMgdG8gYmUgY2xvc2VkLlxuICAgKiBXaGVuIHByb3ZpZGVkIGFuZCBubyBgYWN0aW9uYCBwcm9wIGlzIHNldCwgYSBjbG9zZSBpY29uIGJ1dHRvbiBpcyBkaXNwbGF5ZWQgdGhhdCB0cmlnZ2VycyB0aGUgY2FsbGJhY2sgd2hlbiBjbGlja2VkLlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIEFSSUEgcm9sZSBhdHRyaWJ1dGUgb2YgdGhlIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdhbGVydCdcbiAgICovXG4gIHJvbGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc2V2ZXJpdHkgb2YgdGhlIGFsZXJ0LiBUaGlzIGRlZmluZXMgdGhlIGNvbG9yIGFuZCBpY29uIHVzZWQuXG4gICAqIEBkZWZhdWx0ICdzdWNjZXNzJ1xuICAgKi9cbiAgc2V2ZXJpdHk6IFByb3BUeXBlcy5vbmVPZihbJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLFxuICAvKipcbiAgICogVGhlIGV4dHJhIHByb3BzIGZvciB0aGUgc2xvdCBjb21wb25lbnRzLlxuICAgKiBZb3UgY2FuIG92ZXJyaWRlIHRoZSBleGlzdGluZyBwcm9wcyBvciBhZGQgbmV3IG9uZXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBjb21wb25lbnRzUHJvcHNgIHByb3AsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdFByb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGNsb3NlQnV0dG9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNsb3NlSWNvbjogUHJvcFR5cGVzLm9iamVjdFxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBjb21wb25lbnRzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGNsb3NlQnV0dG9uOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgY2xvc2VJY29uOiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICdzdGFuZGFyZCdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZmlsbGVkJywgJ291dGxpbmVkJywgJ3N0YW5kYXJkJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBBbGVydDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlCdXR0b24nLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCdXR0b24nLCBbJ3Jvb3QnLCAndGV4dCcsICd0ZXh0SW5oZXJpdCcsICd0ZXh0UHJpbWFyeScsICd0ZXh0U2Vjb25kYXJ5JywgJ3RleHRTdWNjZXNzJywgJ3RleHRFcnJvcicsICd0ZXh0SW5mbycsICd0ZXh0V2FybmluZycsICdvdXRsaW5lZCcsICdvdXRsaW5lZEluaGVyaXQnLCAnb3V0bGluZWRQcmltYXJ5JywgJ291dGxpbmVkU2Vjb25kYXJ5JywgJ291dGxpbmVkU3VjY2VzcycsICdvdXRsaW5lZEVycm9yJywgJ291dGxpbmVkSW5mbycsICdvdXRsaW5lZFdhcm5pbmcnLCAnY29udGFpbmVkJywgJ2NvbnRhaW5lZEluaGVyaXQnLCAnY29udGFpbmVkUHJpbWFyeScsICdjb250YWluZWRTZWNvbmRhcnknLCAnY29udGFpbmVkU3VjY2VzcycsICdjb250YWluZWRFcnJvcicsICdjb250YWluZWRJbmZvJywgJ2NvbnRhaW5lZFdhcm5pbmcnLCAnZGlzYWJsZUVsZXZhdGlvbicsICdmb2N1c1Zpc2libGUnLCAnZGlzYWJsZWQnLCAnY29sb3JJbmhlcml0JywgJ3RleHRTaXplU21hbGwnLCAndGV4dFNpemVNZWRpdW0nLCAndGV4dFNpemVMYXJnZScsICdvdXRsaW5lZFNpemVTbWFsbCcsICdvdXRsaW5lZFNpemVNZWRpdW0nLCAnb3V0bGluZWRTaXplTGFyZ2UnLCAnY29udGFpbmVkU2l6ZVNtYWxsJywgJ2NvbnRhaW5lZFNpemVNZWRpdW0nLCAnY29udGFpbmVkU2l6ZUxhcmdlJywgJ3NpemVNZWRpdW0nLCAnc2l6ZVNtYWxsJywgJ3NpemVMYXJnZScsICdmdWxsV2lkdGgnLCAnc3RhcnRJY29uJywgJ2VuZEljb24nLCAnaWNvblNpemVTbWFsbCcsICdpY29uU2l6ZU1lZGl1bScsICdpY29uU2l6ZUxhcmdlJ10pO1xuZXhwb3J0IGRlZmF1bHQgYnV0dG9uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiY2xhc3NOYW1lXCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlRWxldmF0aW9uXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwiZW5kSWNvblwiLCBcImZvY3VzVmlzaWJsZUNsYXNzTmFtZVwiLCBcImZ1bGxXaWR0aFwiLCBcInNpemVcIiwgXCJzdGFydEljb25cIiwgXCJ0eXBlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGludGVybmFsX3Jlc29sdmVQcm9wcyBhcyByZXNvbHZlUHJvcHMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCwgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJy4uL0J1dHRvbkJhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgYnV0dG9uQ2xhc3NlcywgeyBnZXRCdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2J1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IEJ1dHRvbkdyb3VwQ29udGV4dCBmcm9tICcuLi9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgYCR7dmFyaWFudH0ke2NhcGl0YWxpemUoY29sb3IpfWAsIGBzaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGAke3ZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gLCBjb2xvciA9PT0gJ2luaGVyaXQnICYmICdjb2xvckluaGVyaXQnLCBkaXNhYmxlRWxldmF0aW9uICYmICdkaXNhYmxlRWxldmF0aW9uJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnXSxcbiAgICBsYWJlbDogWydsYWJlbCddLFxuICAgIHN0YXJ0SWNvbjogWydzdGFydEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF0sXG4gICAgZW5kSWNvbjogWydlbmRJY29uJywgYGljb25TaXplJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRCdXR0b25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgY29tbW9uSWNvblN0eWxlcyA9IG93bmVyU3RhdGUgPT4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMThcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbWVkaXVtJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMjBcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMlxuICB9XG59KTtcbmNvbnN0IEJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBzdHlsZXNbYCR7b3duZXJTdGF0ZS52YXJpYW50fSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2BzaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdLCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYgc3R5bGVzLmNvbG9ySW5oZXJpdCwgb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHN0eWxlcy5kaXNhYmxlRWxldmF0aW9uLCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiBzdHlsZXMuZnVsbFdpZHRoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSRwYWxldHRlJGdldENvbiwgX3RoZW1lJHBhbGV0dGU7XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSA6IHRoZW1lLnBhbGV0dGUuZ3JleVs4MDBdO1xuICBjb25zdCBpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXkuQTEwMCA6IHRoZW1lLnBhbGV0dGUuZ3JleVs3MDBdO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYnV0dG9uLCB7XG4gICAgbWluV2lkdGg6IDY0LFxuICAgIHBhZGRpbmc6ICc2cHggMTZweCcsXG4gICAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ2JhY2tncm91bmQtY29sb3InLCAnYm94LXNoYWRvdycsICdib3JkZXItY29sb3InLCAnY29sb3InXSwge1xuICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0XG4gICAgfSksXG4gICAgJyY6aG92ZXInOiBfZXh0ZW5kcyh7XG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5Q2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbn1gLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkSG92ZXJCZyA6IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbNF0sXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmdyZXlbMzAwXVxuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uZGFyayxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICAgICAgfVxuICAgIH0pLFxuICAgICcmOmFjdGl2ZSc6IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbOF1cbiAgICB9KSxcbiAgICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXTogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s2XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IF9leHRlbmRzKHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZH1gXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1swXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZFxuICAgIH0pXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNnB4IDhweCdcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc1cHggMTVweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkIGN1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sXG4gICAgYm9yZGVyOiB0aGVtZS52YXJzID8gYDFweCBzb2xpZCByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvIDAuNSlgIDogYDFweCBzb2xpZCAke2FscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgMC41KX1gXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIGNvbG9yOiB0aGVtZS52YXJzID9cbiAgICAvLyB0aGlzIGlzIHNhZmUgYmVjYXVzZSBncmV5IGRvZXMgbm90IGNoYW5nZSBiZXR3ZWVuIGRlZmF1bHQgbGlnaHQvZGFyayBtb2RlXG4gICAgdGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeSA6IChfdGhlbWUkcGFsZXR0ZSRnZXRDb24gPSAoX3RoZW1lJHBhbGV0dGUgPSB0aGVtZS5wYWxldHRlKS5nZXRDb250cmFzdFRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkcGFsZXR0ZSRnZXRDb24uY2FsbChfdGhlbWUkcGFsZXR0ZSwgdGhlbWUucGFsZXR0ZS5ncmV5WzMwMF0pLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5CdXR0b24uaW5oZXJpdENvbnRhaW5lZEJnIDogaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvcixcbiAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uY29udHJhc3RUZXh0LFxuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgYm9yZGVyQ29sb3I6ICdjdXJyZW50Q29sb3InXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzRweCA1cHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAxMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnM3B4IDlweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzdweCAyMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzRweCAxMHB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAyMnB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9KTtcbn0sICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUuZGlzYWJsZUVsZXZhdGlvbiAmJiB7XG4gIGJveFNoYWRvdzogJ25vbmUnLFxuICAnJjpob3Zlcic6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gICcmOmFjdGl2ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfVxufSk7XG5jb25zdCBCdXR0b25TdGFydEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnU3RhcnRJY29uJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5zdGFydEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogOCxcbiAgbWFyZ2luTGVmdDogLTRcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpbkxlZnQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b25FbmRJY29uID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ0VuZEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmVuZEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogLTQsXG4gIG1hcmdpbkxlZnQ6IDhcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpblJpZ2h0OiAtMlxufSwgY29tbW9uSWNvblN0eWxlcyhvd25lclN0YXRlKSkpO1xuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICAvLyBwcm9wcyBwcmlvcml0eTogYGluUHJvcHNgID4gYGNvbnRleHRQcm9wc2AgPiBgdGhlbWVEZWZhdWx0UHJvcHNgXG4gIGNvbnN0IGNvbnRleHRQcm9wcyA9IFJlYWN0LnVzZUNvbnRleHQoQnV0dG9uR3JvdXBDb250ZXh0KTtcbiAgY29uc3QgcmVzb2x2ZWRQcm9wcyA9IHJlc29sdmVQcm9wcyhjb250ZXh0UHJvcHMsIGluUHJvcHMpO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiByZXNvbHZlZFByb3BzLFxuICAgIG5hbWU6ICdNdWlCdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgY29tcG9uZW50ID0gJ2J1dHRvbicsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUVsZXZhdGlvbiA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBlbmRJY29uOiBlbmRJY29uUHJvcCxcbiAgICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSxcbiAgICAgIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nLFxuICAgICAgc3RhcnRJY29uOiBzdGFydEljb25Qcm9wLFxuICAgICAgdHlwZSxcbiAgICAgIHZhcmlhbnQgPSAndGV4dCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmdWxsV2lkdGgsXG4gICAgc2l6ZSxcbiAgICB0eXBlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3Qgc3RhcnRJY29uID0gc3RhcnRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25TdGFydEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3RhcnRJY29uLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IHN0YXJ0SWNvblByb3BcbiAgfSk7XG4gIGNvbnN0IGVuZEljb24gPSBlbmRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25FbmRJY29uLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLmVuZEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogZW5kSWNvblByb3BcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNvbnRleHRQcm9wcy5jbGFzc05hbWUsIGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgZm9jdXNSaXBwbGU6ICFkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuZm9jdXNWaXNpYmxlLCBmb2N1c1Zpc2libGVDbGFzc05hbWUpLFxuICAgIHJlZjogcmVmLFxuICAgIHR5cGU6IHR5cGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzLFxuICAgIGNoaWxkcmVuOiBbc3RhcnRJY29uLCBjaGlsZHJlbiwgZW5kSWNvbl1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCdXR0b24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnaW5mbycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBubyBlbGV2YXRpb24gaXMgdXNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVFbGV2YXRpb246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgIGtleWJvYXJkIGZvY3VzIHJpcHBsZSBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVGb2N1c1JpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgZWZmZWN0IGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiDimqDvuI8gV2l0aG91dCBhIHJpcHBsZSB0aGVyZSBpcyBubyBzdHlsaW5nIGZvciA6Zm9jdXMtdmlzaWJsZSBieSBkZWZhdWx0LiBCZSBzdXJlXG4gICAqIHRvIGhpZ2hsaWdodCB0aGUgZWxlbWVudCBieSBhcHBseWluZyBzZXBhcmF0ZSBzdHlsZXMgd2l0aCB0aGUgYC5NdWktZm9jdXNWaXNpYmxlYCBjbGFzcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgZW5kSWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBidXR0b24gd2lsbCB0YWtlIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmdWxsV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIFVSTCB0byBsaW5rIHRvIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBJZiBkZWZpbmVkLCBhbiBgYWAgZWxlbWVudCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJvb3Qgbm9kZS5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBgc21hbGxgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRlbnNlIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBzdGFydEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAndGV4dCdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnY29udGFpbmVkJywgJ291dGxpbmVkJywgJ3RleHQnXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IEJ1dHRvbkdyb3VwQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEJ1dHRvbkdyb3VwQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdCdXR0b25Hcm91cENvbnRleHQnO1xufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uR3JvdXBDb250ZXh0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRDb2xsYXBzZVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQ29sbGFwc2UnLCBzbG90KTtcbn1cbmNvbnN0IGNvbGxhcHNlQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUNvbGxhcHNlJywgWydyb290JywgJ2hvcml6b250YWwnLCAndmVydGljYWwnLCAnZW50ZXJlZCcsICdoaWRkZW4nLCAnd3JhcHBlcicsICd3cmFwcGVySW5uZXInXSk7XG5leHBvcnQgZGVmYXVsdCBjb2xsYXBzZUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWRkRW5kTGlzdGVuZXJcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbGxhcHNlZFNpemVcIiwgXCJjb21wb25lbnRcIiwgXCJlYXNpbmdcIiwgXCJpblwiLCBcIm9uRW50ZXJcIiwgXCJvbkVudGVyZWRcIiwgXCJvbkVudGVyaW5nXCIsIFwib25FeGl0XCIsIFwib25FeGl0ZWRcIiwgXCJvbkV4aXRpbmdcIiwgXCJvcmllbnRhdGlvblwiLCBcInN0eWxlXCIsIFwidGltZW91dFwiLCBcIlRyYW5zaXRpb25Db21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZUFjY2VwdGluZ1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCB7IGR1cmF0aW9uIH0gZnJvbSAnLi4vc3R5bGVzL2NyZWF0ZVRyYW5zaXRpb25zJztcbmltcG9ydCB7IGdldFRyYW5zaXRpb25Qcm9wcyB9IGZyb20gJy4uL3RyYW5zaXRpb25zL3V0aWxzJztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWUnO1xuaW1wb3J0IHsgdXNlRm9ya1JlZiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldENvbGxhcHNlVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9jb2xsYXBzZUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBvcmllbnRhdGlvbixcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBgJHtvcmllbnRhdGlvbn1gXSxcbiAgICBlbnRlcmVkOiBbJ2VudGVyZWQnXSxcbiAgICBoaWRkZW46IFsnaGlkZGVuJ10sXG4gICAgd3JhcHBlcjogWyd3cmFwcGVyJywgYCR7b3JpZW50YXRpb259YF0sXG4gICAgd3JhcHBlcklubmVyOiBbJ3dyYXBwZXJJbm5lcicsIGAke29yaWVudGF0aW9ufWBdXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0Q29sbGFwc2VVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IENvbGxhcHNlUm9vdCA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQ29sbGFwc2UnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUub3JpZW50YXRpb25dLCBvd25lclN0YXRlLnN0YXRlID09PSAnZW50ZXJlZCcgJiYgc3R5bGVzLmVudGVyZWQsIG93bmVyU3RhdGUuc3RhdGUgPT09ICdleGl0ZWQnICYmICFvd25lclN0YXRlLmluICYmIG93bmVyU3RhdGUuY29sbGFwc2VkU2l6ZSA9PT0gJzBweCcgJiYgc3R5bGVzLmhpZGRlbl07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGhlaWdodDogMCxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ2hlaWdodCcpXG59LCBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYge1xuICBoZWlnaHQ6ICdhdXRvJyxcbiAgd2lkdGg6IDAsXG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnd2lkdGgnKVxufSwgb3duZXJTdGF0ZS5zdGF0ZSA9PT0gJ2VudGVyZWQnICYmIF9leHRlbmRzKHtcbiAgaGVpZ2h0OiAnYXV0bycsXG4gIG92ZXJmbG93OiAndmlzaWJsZSdcbn0sIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gIHdpZHRoOiAnYXV0bydcbn0pLCBvd25lclN0YXRlLnN0YXRlID09PSAnZXhpdGVkJyAmJiAhb3duZXJTdGF0ZS5pbiAmJiBvd25lclN0YXRlLmNvbGxhcHNlZFNpemUgPT09ICcwcHgnICYmIHtcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbn0pKTtcbmNvbnN0IENvbGxhcHNlV3JhcHBlciA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQ29sbGFwc2UnLFxuICBzbG90OiAnV3JhcHBlcicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLndyYXBwZXJcbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgLy8gSGFjayB0byBnZXQgY2hpbGRyZW4gd2l0aCBhIG5lZ2F0aXZlIG1hcmdpbiB0byBub3QgZmFsc2lmeSB0aGUgaGVpZ2h0IGNvbXB1dGF0aW9uLlxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHdpZHRoOiAnMTAwJSdcbn0sIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gIHdpZHRoOiAnYXV0bycsXG4gIGhlaWdodDogJzEwMCUnXG59KSk7XG5jb25zdCBDb2xsYXBzZVdyYXBwZXJJbm5lciA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpQ29sbGFwc2UnLFxuICBzbG90OiAnV3JhcHBlcklubmVyJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMud3JhcHBlcklubmVyXG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHdpZHRoOiAnMTAwJSdcbn0sIG93bmVyU3RhdGUub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyAmJiB7XG4gIHdpZHRoOiAnYXV0bycsXG4gIGhlaWdodDogJzEwMCUnXG59KSk7XG5cbi8qKlxuICogVGhlIENvbGxhcHNlIHRyYW5zaXRpb24gaXMgdXNlZCBieSB0aGVcbiAqIFtWZXJ0aWNhbCBTdGVwcGVyXSgvbWF0ZXJpYWwtdWkvcmVhY3Qtc3RlcHBlci8jdmVydGljYWwtc3RlcHBlcikgU3RlcENvbnRlbnQgY29tcG9uZW50LlxuICogSXQgdXNlcyBbcmVhY3QtdHJhbnNpdGlvbi1ncm91cF0oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cCkgaW50ZXJuYWxseS5cbiAqL1xuY29uc3QgQ29sbGFwc2UgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDb2xsYXBzZShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQ29sbGFwc2UnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBhZGRFbmRMaXN0ZW5lcixcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sbGFwc2VkU2l6ZTogY29sbGFwc2VkU2l6ZVByb3AgPSAnMHB4JyxcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGVhc2luZyxcbiAgICAgIGluOiBpblByb3AsXG4gICAgICBvbkVudGVyLFxuICAgICAgb25FbnRlcmVkLFxuICAgICAgb25FbnRlcmluZyxcbiAgICAgIG9uRXhpdCxcbiAgICAgIG9uRXhpdGVkLFxuICAgICAgb25FeGl0aW5nLFxuICAgICAgb3JpZW50YXRpb24gPSAndmVydGljYWwnLFxuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0ID0gZHVyYXRpb24uc3RhbmRhcmQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudCA9IFRyYW5zaXRpb25cbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIG9yaWVudGF0aW9uLFxuICAgIGNvbGxhcHNlZFNpemU6IGNvbGxhcHNlZFNpemVQcm9wXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgdGltZXIgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3Qgd3JhcHBlclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgYXV0b1RyYW5zaXRpb25EdXJhdGlvbiA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBjb2xsYXBzZWRTaXplID0gdHlwZW9mIGNvbGxhcHNlZFNpemVQcm9wID09PSAnbnVtYmVyJyA/IGAke2NvbGxhcHNlZFNpemVQcm9wfXB4YCA6IGNvbGxhcHNlZFNpemVQcm9wO1xuICBjb25zdCBpc0hvcml6b250YWwgPSBvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnO1xuICBjb25zdCBzaXplID0gaXNIb3Jpem9udGFsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICBjb25zdCBub2RlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKHJlZiwgbm9kZVJlZik7XG4gIGNvbnN0IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjayA9PiBtYXliZUlzQXBwZWFyaW5nID0+IHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBub2RlUmVmLmN1cnJlbnQ7XG5cbiAgICAgIC8vIG9uRW50ZXJYeHggYW5kIG9uRXhpdFh4eCBjYWxsYmFja3MgaGF2ZSBhIGRpZmZlcmVudCBhcmd1bWVudHMubGVuZ3RoIHZhbHVlLlxuICAgICAgaWYgKG1heWJlSXNBcHBlYXJpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKG5vZGUsIG1heWJlSXNBcHBlYXJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgZ2V0V3JhcHBlclNpemUgPSAoKSA9PiB3cmFwcGVyUmVmLmN1cnJlbnQgPyB3cmFwcGVyUmVmLmN1cnJlbnRbaXNIb3Jpem9udGFsID8gJ2NsaWVudFdpZHRoJyA6ICdjbGllbnRIZWlnaHQnXSA6IDA7XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjaygobm9kZSwgaXNBcHBlYXJpbmcpID0+IHtcbiAgICBpZiAod3JhcHBlclJlZi5jdXJyZW50ICYmIGlzSG9yaXpvbnRhbCkge1xuICAgICAgLy8gU2V0IGFic29sdXRlIHBvc2l0aW9uIHRvIGdldCB0aGUgc2l6ZSBvZiBjb2xsYXBzZWQgY29udGVudFxuICAgICAgd3JhcHBlclJlZi5jdXJyZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICB9XG4gICAgbm9kZS5zdHlsZVtzaXplXSA9IGNvbGxhcHNlZFNpemU7XG4gICAgaWYgKG9uRW50ZXIpIHtcbiAgICAgIG9uRW50ZXIobm9kZSwgaXNBcHBlYXJpbmcpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjaygobm9kZSwgaXNBcHBlYXJpbmcpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyU2l6ZSA9IGdldFdyYXBwZXJTaXplKCk7XG4gICAgaWYgKHdyYXBwZXJSZWYuY3VycmVudCAmJiBpc0hvcml6b250YWwpIHtcbiAgICAgIC8vIEFmdGVyIHRoZSBzaXplIGlzIHJlYWQgcmVzZXQgdGhlIHBvc2l0aW9uIGJhY2sgdG8gZGVmYXVsdFxuICAgICAgd3JhcHBlclJlZi5jdXJyZW50LnN0eWxlLnBvc2l0aW9uID0gJyc7XG4gICAgfVxuICAgIGNvbnN0IHtcbiAgICAgIGR1cmF0aW9uOiB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICBlYXNpbmc6IHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblxuICAgIH0gPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2VudGVyJ1xuICAgIH0pO1xuICAgIGlmICh0aW1lb3V0ID09PSAnYXV0bycpIHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uMiA9IHRoZW1lLnRyYW5zaXRpb25zLmdldEF1dG9IZWlnaHREdXJhdGlvbih3cmFwcGVyU2l6ZSk7XG4gICAgICBub2RlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGAke2R1cmF0aW9uMn1tc2A7XG4gICAgICBhdXRvVHJhbnNpdGlvbkR1cmF0aW9uLmN1cnJlbnQgPSBkdXJhdGlvbjI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gdHlwZW9mIHRyYW5zaXRpb25EdXJhdGlvbiA9PT0gJ3N0cmluZycgPyB0cmFuc2l0aW9uRHVyYXRpb24gOiBgJHt0cmFuc2l0aW9uRHVyYXRpb259bXNgO1xuICAgIH1cbiAgICBub2RlLnN0eWxlW3NpemVdID0gYCR7d3JhcHBlclNpemV9cHhgO1xuICAgIG5vZGUuc3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uID0gdHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uO1xuICAgIGlmIChvbkVudGVyaW5nKSB7XG4gICAgICBvbkVudGVyaW5nKG5vZGUsIGlzQXBwZWFyaW5nKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjaygobm9kZSwgaXNBcHBlYXJpbmcpID0+IHtcbiAgICBub2RlLnN0eWxlW3NpemVdID0gJ2F1dG8nO1xuICAgIGlmIChvbkVudGVyZWQpIHtcbiAgICAgIG9uRW50ZXJlZChub2RlLCBpc0FwcGVhcmluZyk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRXhpdCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgbm9kZS5zdHlsZVtzaXplXSA9IGAke2dldFdyYXBwZXJTaXplKCl9cHhgO1xuICAgIGlmIChvbkV4aXQpIHtcbiAgICAgIG9uRXhpdChub2RlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKG9uRXhpdGVkKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlclNpemUgPSBnZXRXcmFwcGVyU2l6ZSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGR1cmF0aW9uOiB0cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICBlYXNpbmc6IHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblxuICAgIH0gPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2V4aXQnXG4gICAgfSk7XG4gICAgaWYgKHRpbWVvdXQgPT09ICdhdXRvJykge1xuICAgICAgLy8gVE9ETzogcmVuYW1lIGdldEF1dG9IZWlnaHREdXJhdGlvbiB0byBzb21ldGhpbmcgbW9yZSBnZW5lcmljICh3aWR0aCBzdXBwb3J0KVxuICAgICAgLy8gQWN0dWFsbHkgaXQganVzdCBjYWxjdWxhdGVzIGFuaW1hdGlvbiBkdXJhdGlvbiBiYXNlZCBvbiBzaXplXG4gICAgICBjb25zdCBkdXJhdGlvbjIgPSB0aGVtZS50cmFuc2l0aW9ucy5nZXRBdXRvSGVpZ2h0RHVyYXRpb24od3JhcHBlclNpemUpO1xuICAgICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSBgJHtkdXJhdGlvbjJ9bXNgO1xuICAgICAgYXV0b1RyYW5zaXRpb25EdXJhdGlvbi5jdXJyZW50ID0gZHVyYXRpb24yO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IHR5cGVvZiB0cmFuc2l0aW9uRHVyYXRpb24gPT09ICdzdHJpbmcnID8gdHJhbnNpdGlvbkR1cmF0aW9uIDogYCR7dHJhbnNpdGlvbkR1cmF0aW9ufW1zYDtcbiAgICB9XG4gICAgbm9kZS5zdHlsZVtzaXplXSA9IGNvbGxhcHNlZFNpemU7XG4gICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24gPSB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb247XG4gICAgaWYgKG9uRXhpdGluZykge1xuICAgICAgb25FeGl0aW5nKG5vZGUpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUFkZEVuZExpc3RlbmVyID0gbmV4dCA9PiB7XG4gICAgaWYgKHRpbWVvdXQgPT09ICdhdXRvJykge1xuICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQobmV4dCwgYXV0b1RyYW5zaXRpb25EdXJhdGlvbi5jdXJyZW50IHx8IDApO1xuICAgIH1cbiAgICBpZiAoYWRkRW5kTGlzdGVuZXIpIHtcbiAgICAgIC8vIE9sZCBjYWxsIHNpZ25hdHVyZSBiZWZvcmUgYHJlYWN0LXRyYW5zaXRpb24tZ3JvdXBgIGltcGxlbWVudGVkIGBub2RlUmVmYFxuICAgICAgYWRkRW5kTGlzdGVuZXIobm9kZVJlZi5jdXJyZW50LCBuZXh0KTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgaW46IGluUHJvcCxcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgb25FeGl0aW5nOiBoYW5kbGVFeGl0aW5nLFxuICAgIGFkZEVuZExpc3RlbmVyOiBoYW5kbGVBZGRFbmRMaXN0ZW5lcixcbiAgICBub2RlUmVmOiBub2RlUmVmLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQgPT09ICdhdXRvJyA/IG51bGwgOiB0aW1lb3V0XG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IChzdGF0ZSwgY2hpbGRQcm9wcykgPT4gLyojX19QVVJFX18qL19qc3goQ29sbGFwc2VSb290LCBfZXh0ZW5kcyh7XG4gICAgICBhczogY29tcG9uZW50LFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lLCB7XG4gICAgICAgICdlbnRlcmVkJzogY2xhc3Nlcy5lbnRlcmVkLFxuICAgICAgICAnZXhpdGVkJzogIWluUHJvcCAmJiBjb2xsYXBzZWRTaXplID09PSAnMHB4JyAmJiBjbGFzc2VzLmhpZGRlblxuICAgICAgfVtzdGF0ZV0pLFxuICAgICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgICAgW2lzSG9yaXpvbnRhbCA/ICdtaW5XaWR0aCcgOiAnbWluSGVpZ2h0J106IGNvbGxhcHNlZFNpemVcbiAgICAgIH0sIHN0eWxlKSxcbiAgICAgIG93bmVyU3RhdGU6IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLCB7XG4gICAgICAgIHN0YXRlXG4gICAgICB9KSxcbiAgICAgIHJlZjogaGFuZGxlUmVmXG4gICAgfSwgY2hpbGRQcm9wcywge1xuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENvbGxhcHNlV3JhcHBlciwge1xuICAgICAgICBvd25lclN0YXRlOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZSwge1xuICAgICAgICAgIHN0YXRlXG4gICAgICAgIH0pLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMud3JhcHBlcixcbiAgICAgICAgcmVmOiB3cmFwcGVyUmVmLFxuICAgICAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goQ29sbGFwc2VXcmFwcGVySW5uZXIsIHtcbiAgICAgICAgICBvd25lclN0YXRlOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZSwge1xuICAgICAgICAgICAgc3RhdGVcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMud3JhcHBlcklubmVyLFxuICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBDb2xsYXBzZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gdHJhbnNpdGlvbiBlbmQgdHJpZ2dlci4gQ2FsbGVkIHdpdGggdGhlIHRyYW5zaXRpb25pbmcgRE9NXG4gICAqIG5vZGUgYW5kIGEgZG9uZSBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gTm90ZTogVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICovXG4gIGFkZEVuZExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG5vZGUgdG8gYmUgY29sbGFwc2VkLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSB3aWR0aCAoaG9yaXpvbnRhbCkgb3IgaGVpZ2h0ICh2ZXJ0aWNhbCkgb2YgdGhlIGNvbnRhaW5lciB3aGVuIGNvbGxhcHNlZC5cbiAgICogQGRlZmF1bHQgJzBweCdcbiAgICovXG4gIGNvbGxhcHNlZFNpemU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogZWxlbWVudFR5cGVBY2NlcHRpbmdSZWYsXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNpdGlvbiB0aW1pbmcgZnVuY3Rpb24uXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSBlYXNpbmcgb3IgYSBvYmplY3QgY29udGFpbmluZyBlbnRlciBhbmQgZXhpdCB2YWx1ZXMuXG4gICAqL1xuICBlYXNpbmc6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zaGFwZSh7XG4gICAgZW50ZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZXhpdDogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IHdpbGwgdHJhbnNpdGlvbiBpbi5cbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FbnRlcmVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXJpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FeGl0OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBUaGUgdHJhbnNpdGlvbiBvcmllbnRhdGlvbi5cbiAgICogQGRlZmF1bHQgJ3ZlcnRpY2FsJ1xuICAgKi9cbiAgb3JpZW50YXRpb246IFByb3BUeXBlcy5vbmVPZihbJ2hvcml6b250YWwnLCAndmVydGljYWwnXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSBkdXJhdGlvbiBmb3IgdGhlIHRyYW5zaXRpb24sIGluIG1pbGxpc2Vjb25kcy5cbiAgICogWW91IG1heSBzcGVjaWZ5IGEgc2luZ2xlIHRpbWVvdXQgZm9yIGFsbCB0cmFuc2l0aW9ucywgb3IgaW5kaXZpZHVhbGx5IHdpdGggYW4gb2JqZWN0LlxuICAgKlxuICAgKiBTZXQgdG8gJ2F1dG8nIHRvIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlIHRyYW5zaXRpb24gdGltZSBiYXNlZCBvbiBoZWlnaHQuXG4gICAqIEBkZWZhdWx0IGR1cmF0aW9uLnN0YW5kYXJkXG4gICAqL1xuICB0aW1lb3V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydhdXRvJ10pLCBQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFwcGVhcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBlbnRlcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBleGl0OiBQcm9wVHlwZXMubnVtYmVyXG4gIH0pXSlcbn0gOiB2b2lkIDA7XG5Db2xsYXBzZS5tdWlTdXBwb3J0QXV0byA9IHRydWU7XG5leHBvcnQgZGVmYXVsdCBDb2xsYXBzZTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhZGRFbmRMaXN0ZW5lclwiLCBcImFwcGVhclwiLCBcImNoaWxkcmVuXCIsIFwiZWFzaW5nXCIsIFwiaW5cIiwgXCJvbkVudGVyXCIsIFwib25FbnRlcmVkXCIsIFwib25FbnRlcmluZ1wiLCBcIm9uRXhpdFwiLCBcIm9uRXhpdGVkXCIsIFwib25FeGl0aW5nXCIsIFwic3R5bGVcIiwgXCJ0aW1lb3V0XCIsIFwiVHJhbnNpdGlvbkNvbXBvbmVudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBlbGVtZW50QWNjZXB0aW5nUmVmIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lJztcbmltcG9ydCB7IHJlZmxvdywgZ2V0VHJhbnNpdGlvblByb3BzIH0gZnJvbSAnLi4vdHJhbnNpdGlvbnMvdXRpbHMnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3Qgc3R5bGVzID0ge1xuICBlbnRlcmluZzoge1xuICAgIG9wYWNpdHk6IDFcbiAgfSxcbiAgZW50ZXJlZDoge1xuICAgIG9wYWNpdHk6IDFcbiAgfVxufTtcblxuLyoqXG4gKiBUaGUgRmFkZSB0cmFuc2l0aW9uIGlzIHVzZWQgYnkgdGhlIFtNb2RhbF0oL21hdGVyaWFsLXVpL3JlYWN0LW1vZGFsLykgY29tcG9uZW50LlxuICogSXQgdXNlcyBbcmVhY3QtdHJhbnNpdGlvbi1ncm91cF0oaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cCkgaW50ZXJuYWxseS5cbiAqL1xuY29uc3QgRmFkZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZhZGUocHJvcHMsIHJlZikge1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGRlZmF1bHRUaW1lb3V0ID0ge1xuICAgIGVudGVyOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5lbnRlcmluZ1NjcmVlbixcbiAgICBleGl0OiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5sZWF2aW5nU2NyZWVuXG4gIH07XG4gIGNvbnN0IHtcbiAgICAgIGFkZEVuZExpc3RlbmVyLFxuICAgICAgYXBwZWFyID0gdHJ1ZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZWFzaW5nLFxuICAgICAgaW46IGluUHJvcCxcbiAgICAgIG9uRW50ZXIsXG4gICAgICBvbkVudGVyZWQsXG4gICAgICBvbkVudGVyaW5nLFxuICAgICAgb25FeGl0LFxuICAgICAgb25FeGl0ZWQsXG4gICAgICBvbkV4aXRpbmcsXG4gICAgICBzdHlsZSxcbiAgICAgIHRpbWVvdXQgPSBkZWZhdWx0VGltZW91dCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBUcmFuc2l0aW9uQ29tcG9uZW50ID0gVHJhbnNpdGlvblxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBlbmFibGVTdHJpY3RNb2RlQ29tcGF0ID0gdHJ1ZTtcbiAgY29uc3Qgbm9kZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihub2RlUmVmLCBjaGlsZHJlbi5yZWYsIHJlZik7XG4gIGNvbnN0IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sgPSBjYWxsYmFjayA9PiBtYXliZUlzQXBwZWFyaW5nID0+IHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBub2RlUmVmLmN1cnJlbnQ7XG5cbiAgICAgIC8vIG9uRW50ZXJYeHggYW5kIG9uRXhpdFh4eCBjYWxsYmFja3MgaGF2ZSBhIGRpZmZlcmVudCBhcmd1bWVudHMubGVuZ3RoIHZhbHVlLlxuICAgICAgaWYgKG1heWJlSXNBcHBlYXJpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjYWxsYmFjayhub2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKG5vZGUsIG1heWJlSXNBcHBlYXJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlRW50ZXJpbmcgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKG9uRW50ZXJpbmcpO1xuICBjb25zdCBoYW5kbGVFbnRlciA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2soKG5vZGUsIGlzQXBwZWFyaW5nKSA9PiB7XG4gICAgcmVmbG93KG5vZGUpOyAvLyBTbyB0aGUgYW5pbWF0aW9uIGFsd2F5cyBzdGFydCBmcm9tIHRoZSBzdGFydC5cblxuICAgIGNvbnN0IHRyYW5zaXRpb25Qcm9wcyA9IGdldFRyYW5zaXRpb25Qcm9wcyh7XG4gICAgICBzdHlsZSxcbiAgICAgIHRpbWVvdXQsXG4gICAgICBlYXNpbmdcbiAgICB9LCB7XG4gICAgICBtb2RlOiAnZW50ZXInXG4gICAgfSk7XG4gICAgbm9kZS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ29wYWNpdHknLCB0cmFuc2l0aW9uUHJvcHMpO1xuICAgIGlmIChvbkVudGVyKSB7XG4gICAgICBvbkVudGVyKG5vZGUsIGlzQXBwZWFyaW5nKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkVudGVyZWQpO1xuICBjb25zdCBoYW5kbGVFeGl0aW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkV4aXRpbmcpO1xuICBjb25zdCBoYW5kbGVFeGl0ID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhub2RlID0+IHtcbiAgICBjb25zdCB0cmFuc2l0aW9uUHJvcHMgPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2V4aXQnXG4gICAgfSk7XG4gICAgbm9kZS5zdHlsZS53ZWJraXRUcmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ29wYWNpdHknLCB0cmFuc2l0aW9uUHJvcHMpO1xuICAgIGlmIChvbkV4aXQpIHtcbiAgICAgIG9uRXhpdChub2RlKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFeGl0ZWQgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKG9uRXhpdGVkKTtcbiAgY29uc3QgaGFuZGxlQWRkRW5kTGlzdGVuZXIgPSBuZXh0ID0+IHtcbiAgICBpZiAoYWRkRW5kTGlzdGVuZXIpIHtcbiAgICAgIC8vIE9sZCBjYWxsIHNpZ25hdHVyZSBiZWZvcmUgYHJlYWN0LXRyYW5zaXRpb24tZ3JvdXBgIGltcGxlbWVudGVkIGBub2RlUmVmYFxuICAgICAgYWRkRW5kTGlzdGVuZXIobm9kZVJlZi5jdXJyZW50LCBuZXh0KTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgYXBwZWFyOiBhcHBlYXIsXG4gICAgaW46IGluUHJvcCxcbiAgICBub2RlUmVmOiBlbmFibGVTdHJpY3RNb2RlQ29tcGF0ID8gbm9kZVJlZiA6IHVuZGVmaW5lZCxcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgb25FeGl0aW5nOiBoYW5kbGVFeGl0aW5nLFxuICAgIGFkZEVuZExpc3RlbmVyOiBoYW5kbGVBZGRFbmRMaXN0ZW5lcixcbiAgICB0aW1lb3V0OiB0aW1lb3V0XG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IChzdGF0ZSwgY2hpbGRQcm9wcykgPT4ge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIF9leHRlbmRzKHtcbiAgICAgICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlID09PSAnZXhpdGVkJyAmJiAhaW5Qcm9wID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfSwgc3R5bGVzW3N0YXRlXSwgc3R5bGUsIGNoaWxkcmVuLnByb3BzLnN0eWxlKSxcbiAgICAgICAgcmVmOiBoYW5kbGVSZWZcbiAgICAgIH0sIGNoaWxkUHJvcHMpKTtcbiAgICB9XG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gRmFkZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gdHJhbnNpdGlvbiBlbmQgdHJpZ2dlci4gQ2FsbGVkIHdpdGggdGhlIHRyYW5zaXRpb25pbmcgRE9NXG4gICAqIG5vZGUgYW5kIGEgZG9uZSBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gTm90ZTogVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICovXG4gIGFkZEVuZExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFBlcmZvcm0gdGhlIGVudGVyIHRyYW5zaXRpb24gd2hlbiBpdCBmaXJzdCBtb3VudHMgaWYgYGluYCBpcyBhbHNvIGB0cnVlYC5cbiAgICogU2V0IHRoaXMgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBBIHNpbmdsZSBjaGlsZCBjb250ZW50IGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogZWxlbWVudEFjY2VwdGluZ1JlZi5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgZWFzaW5nIG9yIGEgb2JqZWN0IGNvbnRhaW5pbmcgZW50ZXIgYW5kIGV4aXQgdmFsdWVzLlxuICAgKi9cbiAgZWFzaW5nOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGVudGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCB3aWxsIHRyYW5zaXRpb24gaW4uXG4gICAqL1xuICBpbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXJlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gZm9yIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnMsIG9yIGluZGl2aWR1YWxseSB3aXRoIGFuIG9iamVjdC5cbiAgICogQGRlZmF1bHQge1xuICAgKiAgIGVudGVyOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5lbnRlcmluZ1NjcmVlbixcbiAgICogICBleGl0OiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5sZWF2aW5nU2NyZWVuLFxuICAgKiB9XG4gICAqL1xuICB0aW1lb3V0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFwcGVhcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBlbnRlcjogUHJvcFR5cGVzLm51bWJlcixcbiAgICBleGl0OiBQcm9wVHlwZXMubnVtYmVyXG4gIH0pXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBGYWRlOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlJY29uQnV0dG9uJywgc2xvdCk7XG59XG5jb25zdCBpY29uQnV0dG9uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUljb25CdXR0b24nLCBbJ3Jvb3QnLCAnZGlzYWJsZWQnLCAnY29sb3JJbmhlcml0JywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdjb2xvckVycm9yJywgJ2NvbG9ySW5mbycsICdjb2xvclN1Y2Nlc3MnLCAnY29sb3JXYXJuaW5nJywgJ2VkZ2VTdGFydCcsICdlZGdlRW5kJywgJ3NpemVTbWFsbCcsICdzaXplTWVkaXVtJywgJ3NpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IGljb25CdXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImVkZ2VcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJzaXplXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJy4uL0J1dHRvbkJhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgaWNvbkJ1dHRvbkNsYXNzZXMsIHsgZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vaWNvbkJ1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGRpc2FibGVkLFxuICAgIGNvbG9yLFxuICAgIGVkZ2UsXG4gICAgc2l6ZVxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJywgY29sb3IgIT09ICdkZWZhdWx0JyAmJiBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGVkZ2UgJiYgYGVkZ2Uke2NhcGl0YWxpemUoZWRnZSl9YCwgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRJY29uQnV0dG9uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBJY29uQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIG5hbWU6ICdNdWlJY29uQnV0dG9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiBzdHlsZXNbYGNvbG9yJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBvd25lclN0YXRlLmVkZ2UgJiYgc3R5bGVzW2BlZGdlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuZWRnZSl9YF0sIHN0eWxlc1tgc2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgZmxleDogJzAgMCBhdXRvJyxcbiAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgyNCksXG4gIHBhZGRpbmc6IDgsXG4gIGJvcmRlclJhZGl1czogJzUwJScsXG4gIG92ZXJmbG93OiAndmlzaWJsZScsXG4gIC8vIEV4cGxpY2l0bHkgc2V0IHRoZSBkZWZhdWx0IHZhbHVlIHRvIHNvbHZlIGEgYnVnIG9uIElFMTEuXG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLFxuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ2JhY2tncm91bmQtY29sb3InLCB7XG4gICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0XG4gIH0pXG59LCAhb3duZXJTdGF0ZS5kaXNhYmxlUmlwcGxlICYmIHtcbiAgJyY6aG92ZXInOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZUNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZSwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgIH1cbiAgfVxufSwgb3duZXJTdGF0ZS5lZGdlID09PSAnc3RhcnQnICYmIHtcbiAgbWFyZ2luTGVmdDogb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnID8gLTMgOiAtMTJcbn0sIG93bmVyU3RhdGUuZWRnZSA9PT0gJ2VuZCcgJiYge1xuICBtYXJnaW5SaWdodDogb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnID8gLTMgOiAtMTJcbn0pLCAoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3BhbGV0dGU7XG4gIGNvbnN0IHBhbGV0dGUgPSAoX3BhbGV0dGUgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlW293bmVyU3RhdGUuY29sb3JdO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICdpbmhlcml0J1xuICB9LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIF9leHRlbmRzKHtcbiAgICBjb2xvcjogcGFsZXR0ZSA9PSBudWxsID8gdm9pZCAwIDogcGFsZXR0ZS5tYWluXG4gIH0sICFvd25lclN0YXRlLmRpc2FibGVSaXBwbGUgJiYge1xuICAgICcmOmhvdmVyJzogX2V4dGVuZHMoe30sIHBhbGV0dGUgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHtwYWxldHRlLm1haW5DaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYShwYWxldHRlLm1haW4sIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSlcbiAgICB9LCB7XG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9KVxuICB9KSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgICBwYWRkaW5nOiA1LFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTgpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiB7XG4gICAgcGFkZGluZzogMTIsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgyOClcbiAgfSwge1xuICAgIFtgJi4ke2ljb25CdXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkXG4gICAgfVxuICB9KTtcbn0pO1xuXG4vKipcbiAqIFJlZmVyIHRvIHRoZSBbSWNvbnNdKC9tYXRlcmlhbC11aS9pY29ucy8pIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50YXRpb25cbiAqIHJlZ2FyZGluZyB0aGUgYXZhaWxhYmxlIGljb24gb3B0aW9ucy5cbiAqL1xuY29uc3QgSWNvbkJ1dHRvbiA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEljb25CdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUljb25CdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBlZGdlID0gZmFsc2UsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbG9yID0gJ2RlZmF1bHQnLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVGb2N1c1JpcHBsZSA9IGZhbHNlLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBlZGdlLFxuICAgIGNvbG9yLFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBzaXplXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChJY29uQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgY2VudGVyUmlwcGxlOiB0cnVlLFxuICAgIGZvY3VzUmlwcGxlOiAhZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gSWNvbkJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgaWNvbiB0byBkaXNwbGF5LlxuICAgKi9cbiAgY2hpbGRyZW46IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5ub2RlLCBwcm9wcyA9PiB7XG4gICAgY29uc3QgZm91bmQgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KHByb3BzLmNoaWxkcmVuKS5zb21lKGNoaWxkID0+IC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgY2hpbGQucHJvcHMub25DbGljayk7XG4gICAgaWYgKGZvdW5kKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKFsnTVVJOiBZb3UgYXJlIHByb3ZpZGluZyBhbiBvbkNsaWNrIGV2ZW50IGxpc3RlbmVyIHRvIGEgY2hpbGQgb2YgYSBidXR0b24gZWxlbWVudC4nLCAnUHJlZmVyIGFwcGx5aW5nIGl0IHRvIHRoZSBJY29uQnV0dG9uIGRpcmVjdGx5LicsICdUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgd2hvbGUgPGJ1dHRvbj4gd2lsbCBiZSByZXNwb25zaXZlIHRvIGNsaWNrIGV2ZW50cy4nXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ2RlZmF1bHQnXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ2RlZmF1bHQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlICBrZXlib2FyZCBmb2N1cyByaXBwbGUgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGdpdmVuLCB1c2VzIGEgbmVnYXRpdmUgbWFyZ2luIHRvIGNvdW50ZXJhY3QgdGhlIHBhZGRpbmcgb24gb25lXG4gICAqIHNpZGUgKHRoaXMgaXMgb2Z0ZW4gaGVscGZ1bCBmb3IgYWxpZ25pbmcgdGhlIGxlZnQgb3IgcmlnaHRcbiAgICogc2lkZSBvZiB0aGUgaWNvbiB3aXRoIGNvbnRlbnQgYWJvdmUgb3IgYmVsb3csIHdpdGhvdXQgcnVpbmluZyB0aGUgYm9yZGVyXG4gICAqIHNpemUgYW5kIHNoYXBlKS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGVkZ2U6IFByb3BUeXBlcy5vbmVPZihbJ2VuZCcsICdzdGFydCcsIGZhbHNlXSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBgc21hbGxgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRlbnNlIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEljb25CdXR0b247IiwiLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy1pb3MvYmxvYi9iY2EzNjEwNzQwNTU5NGQ1YjdiMTYyNjVhNWIwZWQ2OThmODVhNWVlL2NvbXBvbmVudHMvRWxldmF0aW9uL3NyYy9VSUNvbG9yJTJCTWF0ZXJpYWxFbGV2YXRpb24ubSNMNjFcbmNvbnN0IGdldE92ZXJsYXlBbHBoYSA9IGVsZXZhdGlvbiA9PiB7XG4gIGxldCBhbHBoYVZhbHVlO1xuICBpZiAoZWxldmF0aW9uIDwgMSkge1xuICAgIGFscGhhVmFsdWUgPSA1LjExOTE2ICogZWxldmF0aW9uICoqIDI7XG4gIH0gZWxzZSB7XG4gICAgYWxwaGFWYWx1ZSA9IDQuNSAqIE1hdGgubG9nKGVsZXZhdGlvbiArIDEpICsgMjtcbiAgfVxuICByZXR1cm4gKGFscGhhVmFsdWUgLyAxMDApLnRvRml4ZWQoMik7XG59O1xuZXhwb3J0IGRlZmF1bHQgZ2V0T3ZlcmxheUFscGhhOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXBlclV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpUGFwZXInLCBzbG90KTtcbn1cbmNvbnN0IHBhcGVyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVBhcGVyJywgWydyb290JywgJ3JvdW5kZWQnLCAnb3V0bGluZWQnLCAnZWxldmF0aW9uJywgJ2VsZXZhdGlvbjAnLCAnZWxldmF0aW9uMScsICdlbGV2YXRpb24yJywgJ2VsZXZhdGlvbjMnLCAnZWxldmF0aW9uNCcsICdlbGV2YXRpb241JywgJ2VsZXZhdGlvbjYnLCAnZWxldmF0aW9uNycsICdlbGV2YXRpb244JywgJ2VsZXZhdGlvbjknLCAnZWxldmF0aW9uMTAnLCAnZWxldmF0aW9uMTEnLCAnZWxldmF0aW9uMTInLCAnZWxldmF0aW9uMTMnLCAnZWxldmF0aW9uMTQnLCAnZWxldmF0aW9uMTUnLCAnZWxldmF0aW9uMTYnLCAnZWxldmF0aW9uMTcnLCAnZWxldmF0aW9uMTgnLCAnZWxldmF0aW9uMTknLCAnZWxldmF0aW9uMjAnLCAnZWxldmF0aW9uMjEnLCAnZWxldmF0aW9uMjInLCAnZWxldmF0aW9uMjMnLCAnZWxldmF0aW9uMjQnXSk7XG5leHBvcnQgZGVmYXVsdCBwYXBlckNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZWxldmF0aW9uXCIsIFwic3F1YXJlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzLCBpbnRlZ2VyUHJvcFR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCBnZXRPdmVybGF5QWxwaGEgZnJvbSAnLi4vc3R5bGVzL2dldE92ZXJsYXlBbHBoYSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lJztcbmltcG9ydCB7IGdldFBhcGVyVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9wYXBlckNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzcXVhcmUsXG4gICAgZWxldmF0aW9uLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgIXNxdWFyZSAmJiAncm91bmRlZCcsIHZhcmlhbnQgPT09ICdlbGV2YXRpb24nICYmIGBlbGV2YXRpb24ke2VsZXZhdGlvbn1gXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFBhcGVyVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBQYXBlclJvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aVBhcGVyJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCAhb3duZXJTdGF0ZS5zcXVhcmUgJiYgc3R5bGVzLnJvdW5kZWQsIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2VsZXZhdGlvbicgJiYgc3R5bGVzW2BlbGV2YXRpb24ke293bmVyU3RhdGUuZWxldmF0aW9ufWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSR2YXJzJG92ZXJsYXlzO1xuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYmFja2dyb3VuZC5wYXBlcixcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5wcmltYXJ5LFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnYm94LXNoYWRvdycpXG4gIH0sICFvd25lclN0YXRlLnNxdWFyZSAmJiB7XG4gICAgYm9yZGVyUmFkaXVzOiB0aGVtZS5zaGFwZS5ib3JkZXJSYWRpdXNcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5kaXZpZGVyfWBcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZWxldmF0aW9uJyAmJiBfZXh0ZW5kcyh7XG4gICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1tvd25lclN0YXRlLmVsZXZhdGlvbl1cbiAgfSwgIXRoZW1lLnZhcnMgJiYgdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnZGFyaycgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogYGxpbmVhci1ncmFkaWVudCgke2FscGhhKCcjZmZmJywgZ2V0T3ZlcmxheUFscGhhKG93bmVyU3RhdGUuZWxldmF0aW9uKSl9LCAke2FscGhhKCcjZmZmJywgZ2V0T3ZlcmxheUFscGhhKG93bmVyU3RhdGUuZWxldmF0aW9uKSl9KWBcbiAgfSwgdGhlbWUudmFycyAmJiB7XG4gICAgYmFja2dyb3VuZEltYWdlOiAoX3RoZW1lJHZhcnMkb3ZlcmxheXMgPSB0aGVtZS52YXJzLm92ZXJsYXlzKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHZhcnMkb3ZlcmxheXNbb3duZXJTdGF0ZS5lbGV2YXRpb25dXG4gIH0pKTtcbn0pO1xuY29uc3QgUGFwZXIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBQYXBlcihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpUGFwZXInXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIGVsZXZhdGlvbiA9IDEsXG4gICAgICBzcXVhcmUgPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAnZWxldmF0aW9uJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGVsZXZhdGlvbixcbiAgICBzcXVhcmUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgICBpZiAodGhlbWUuc2hhZG93c1tlbGV2YXRpb25dID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSBlbGV2YXRpb24gcHJvdmlkZWQgPFBhcGVyIGVsZXZhdGlvbj17JHtlbGV2YXRpb259fT4gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgdGhlbWUuYCwgYFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBcXGB0aGVtZS5zaGFkb3dzWyR7ZWxldmF0aW9ufV1cXGAgaXMgZGVmaW5lZC5gXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChQYXBlclJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZlxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBQYXBlci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogU2hhZG93IGRlcHRoLCBjb3JyZXNwb25kcyB0byBgZHBgIGluIHRoZSBzcGVjLlxuICAgKiBJdCBhY2NlcHRzIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDI0IGluY2x1c2l2ZS5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgZWxldmF0aW9uOiBjaGFpblByb3BUeXBlcyhpbnRlZ2VyUHJvcFR5cGUsIHByb3BzID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBlbGV2YXRpb24sXG4gICAgICB2YXJpYW50XG4gICAgfSA9IHByb3BzO1xuICAgIGlmIChlbGV2YXRpb24gPiAwICYmIHZhcmlhbnQgPT09ICdvdXRsaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoYE1VSTogQ29tYmluaW5nIFxcYGVsZXZhdGlvbj17JHtlbGV2YXRpb259fVxcYCB3aXRoIFxcYHZhcmlhbnQ9XCIke3ZhcmlhbnR9XCJcXGAgaGFzIG5vIGVmZmVjdC4gRWl0aGVyIHVzZSBcXGBlbGV2YXRpb249ezB9XFxgIG9yIHVzZSBhIGRpZmZlcmVudCBcXGB2YXJpYW50XFxgLmApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHJvdW5kZWQgY29ybmVycyBhcmUgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzcXVhcmU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAnZWxldmF0aW9uJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydlbGV2YXRpb24nLCAnb3V0bGluZWQnXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFBhcGVyOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqXG4gKiBBbGlhcyB0byBgQ2xlYXJgLlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3ZnSWNvbiggLyojX19QVVJFX18qL19qc3goXCJwYXRoXCIsIHtcbiAgZDogXCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiXG59KSwgJ0Nsb3NlJyk7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVN2Z0ljb24nLCBzbG90KTtcbn1cbmNvbnN0IHN2Z0ljb25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpU3ZnSWNvbicsIFsncm9vdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JBY3Rpb24nLCAnY29sb3JFcnJvcicsICdjb2xvckRpc2FibGVkJywgJ2ZvbnRTaXplSW5oZXJpdCcsICdmb250U2l6ZVNtYWxsJywgJ2ZvbnRTaXplTWVkaXVtJywgJ2ZvbnRTaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBzdmdJY29uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiZm9udFNpemVcIiwgXCJodG1sQ29sb3JcIiwgXCJpbmhlcml0Vmlld0JveFwiLCBcInRpdGxlQWNjZXNzXCIsIFwidmlld0JveFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3N2Z0ljb25DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3IsXG4gICAgZm9udFNpemUsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgY29sb3IgIT09ICdpbmhlcml0JyAmJiBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBmb250U2l6ZSR7Y2FwaXRhbGl6ZShmb250U2l6ZSl9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRTdmdJY29uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBTdmdJY29uUm9vdCA9IHN0eWxlZCgnc3ZnJywge1xuICBuYW1lOiAnTXVpU3ZnSWNvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2Bmb250U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmZvbnRTaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkdHJhbnNpdGlvbnMsIF90aGVtZSR0cmFuc2l0aW9ucyRjciwgX3RoZW1lJHRyYW5zaXRpb25zMiwgX3RoZW1lJHR5cG9ncmFwaHksIF90aGVtZSR0eXBvZ3JhcGh5JHB4VCwgX3RoZW1lJHR5cG9ncmFwaHkyLCBfdGhlbWUkdHlwb2dyYXBoeTIkcHgsIF90aGVtZSR0eXBvZ3JhcGh5MywgX3RoZW1lJHR5cG9ncmFwaHkzJHB4LCBfcGFsZXR0ZSRvd25lclN0YXRlJGMsIF9wYWxldHRlLCBfcGFsZXR0ZTIsIF9wYWxldHRlMztcbiAgcmV0dXJuIHtcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgd2lkdGg6ICcxZW0nLFxuICAgIGhlaWdodDogJzFlbScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLy8gdGhlIDxzdmc+IHdpbGwgZGVmaW5lIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyBgY3VycmVudENvbG9yYFxuICAgIC8vIGUuZy4gaGVyb2ljb25zIHVzZXMgZmlsbD1cIm5vbmVcIiBhbmQgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICBmaWxsOiBvd25lclN0YXRlLmhhc1N2Z0FzQ2hpbGQgPyB1bmRlZmluZWQgOiAnY3VycmVudENvbG9yJyxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICAgIHRyYW5zaXRpb246IChfdGhlbWUkdHJhbnNpdGlvbnMgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zJGNyID0gX3RoZW1lJHRyYW5zaXRpb25zLmNyZWF0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9ucyRjci5jYWxsKF90aGVtZSR0cmFuc2l0aW9ucywgJ2ZpbGwnLCB7XG4gICAgICBkdXJhdGlvbjogKF90aGVtZSR0cmFuc2l0aW9uczIgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IF90aGVtZSR0cmFuc2l0aW9uczIuZHVyYXRpb24pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHJhbnNpdGlvbnMyLnNob3J0ZXJcbiAgICB9KSxcbiAgICBmb250U2l6ZToge1xuICAgICAgaW5oZXJpdDogJ2luaGVyaXQnLFxuICAgICAgc21hbGw6ICgoX3RoZW1lJHR5cG9ncmFwaHkgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeSRweFQgPSBfdGhlbWUkdHlwb2dyYXBoeS5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkkcHhULmNhbGwoX3RoZW1lJHR5cG9ncmFwaHksIDIwKSkgfHwgJzEuMjVyZW0nLFxuICAgICAgbWVkaXVtOiAoKF90aGVtZSR0eXBvZ3JhcGh5MiA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5MiRweCA9IF90aGVtZSR0eXBvZ3JhcGh5Mi5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkyJHB4LmNhbGwoX3RoZW1lJHR5cG9ncmFwaHkyLCAyNCkpIHx8ICcxLjVyZW0nLFxuICAgICAgbGFyZ2U6ICgoX3RoZW1lJHR5cG9ncmFwaHkzID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkzJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkzLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTMkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTMsIDM1KSkgfHwgJzIuMTg3NXJlbSdcbiAgICB9W293bmVyU3RhdGUuZm9udFNpemVdLFxuICAgIC8vIFRPRE8gdjUgZGVwcmVjYXRlLCB2NiByZW1vdmUgZm9yIHN4XG4gICAgY29sb3I6IChfcGFsZXR0ZSRvd25lclN0YXRlJGMgPSAoX3BhbGV0dGUgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUgPSBfcGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlLm1haW4pICE9IG51bGwgPyBfcGFsZXR0ZSRvd25lclN0YXRlJGMgOiB7XG4gICAgICBhY3Rpb246IChfcGFsZXR0ZTIgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUyID0gX3BhbGV0dGUyLmFjdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlMi5hY3RpdmUsXG4gICAgICBkaXNhYmxlZDogKF9wYWxldHRlMyA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTMgPSBfcGFsZXR0ZTMuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUzLmRpc2FibGVkLFxuICAgICAgaW5oZXJpdDogdW5kZWZpbmVkXG4gICAgfVtvd25lclN0YXRlLmNvbG9yXVxuICB9O1xufSk7XG5jb25zdCBTdmdJY29uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gU3ZnSWNvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpU3ZnSWNvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAnaW5oZXJpdCcsXG4gICAgICBjb21wb25lbnQgPSAnc3ZnJyxcbiAgICAgIGZvbnRTaXplID0gJ21lZGl1bScsXG4gICAgICBodG1sQ29sb3IsXG4gICAgICBpbmhlcml0Vmlld0JveCA9IGZhbHNlLFxuICAgICAgdGl0bGVBY2Nlc3MsXG4gICAgICB2aWV3Qm94ID0gJzAgMCAyNCAyNCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgaGFzU3ZnQXNDaGlsZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiYgY2hpbGRyZW4udHlwZSA9PT0gJ3N2Zyc7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZm9udFNpemUsXG4gICAgaW5zdGFuY2VGb250U2l6ZTogaW5Qcm9wcy5mb250U2l6ZSxcbiAgICBpbmhlcml0Vmlld0JveCxcbiAgICB2aWV3Qm94LFxuICAgIGhhc1N2Z0FzQ2hpbGRcbiAgfSk7XG4gIGNvbnN0IG1vcmUgPSB7fTtcbiAgaWYgKCFpbmhlcml0Vmlld0JveCkge1xuICAgIG1vcmUudmlld0JveCA9IHZpZXdCb3g7XG4gIH1cbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFN2Z0ljb25Sb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNvbG9yOiBodG1sQ29sb3IsXG4gICAgXCJhcmlhLWhpZGRlblwiOiB0aXRsZUFjY2VzcyA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgcm9sZTogdGl0bGVBY2Nlc3MgPyAnaW1nJyA6IHVuZGVmaW5lZCxcbiAgICByZWY6IHJlZlxuICB9LCBtb3JlLCBvdGhlciwgaGFzU3ZnQXNDaGlsZCAmJiBjaGlsZHJlbi5wcm9wcywge1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IFtoYXNTdmdBc0NoaWxkID8gY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4gOiBjaGlsZHJlbiwgdGl0bGVBY2Nlc3MgPyAvKiNfX1BVUkVfXyovX2pzeChcInRpdGxlXCIsIHtcbiAgICAgIGNoaWxkcmVuOiB0aXRsZUFjY2Vzc1xuICAgIH0pIDogbnVsbF1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBTdmdJY29uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIE5vZGUgcGFzc2VkIGludG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgYGh0bWxDb2xvcmAgcHJvcCB0byBhcHBseSBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdpbmhlcml0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdhY3Rpb24nLCAnZGlzYWJsZWQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGZvbnRTaXplIGFwcGxpZWQgdG8gdGhlIGljb24uIERlZmF1bHRzIHRvIDI0cHgsIGJ1dCBjYW4gYmUgY29uZmlndXJlIHRvIGluaGVyaXQgZm9udCBzaXplLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgZm9udFNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdsYXJnZScsICdtZWRpdW0nLCAnc21hbGwnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgYSBjb2xvciBhdHRyaWJ1dGUgdG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgaHRtbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcm9vdCBub2RlIHdpbGwgaW5oZXJpdCB0aGUgY3VzdG9tIGBjb21wb25lbnRgJ3Mgdmlld0JveCBhbmQgdGhlIGB2aWV3Qm94YFxuICAgKiBwcm9wIHdpbGwgYmUgaWdub3JlZC5cbiAgICogVXNlZnVsIHdoZW4geW91IHdhbnQgdG8gcmVmZXJlbmNlIGEgY3VzdG9tIGBjb21wb25lbnRgIGFuZCBoYXZlIGBTdmdJY29uYCBwYXNzIHRoYXRcbiAgICogYGNvbXBvbmVudGAncyB2aWV3Qm94IHRvIHRoZSByb290IG5vZGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmhlcml0Vmlld0JveDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc2hhcGUtcmVuZGVyaW5nIGF0dHJpYnV0ZS4gVGhlIGJlaGF2aW9yIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBpcyBkZXNjcmliZWQgb24gdGhlXG4gICAqIFtNRE4gV2ViIERvY3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc2hhcGUtcmVuZGVyaW5nKS5cbiAgICogSWYgeW91IGFyZSBoYXZpbmcgaXNzdWVzIHdpdGggYmx1cnJ5IGljb25zIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgdGhpcyBwcm9wLlxuICAgKi9cbiAgc2hhcGVSZW5kZXJpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIGh1bWFuLXJlYWRhYmxlIHRpdGxlIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIGl0LlxuICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHLWFjY2Vzcy8jRXF1aXZhbGVudFxuICAgKi9cbiAgdGl0bGVBY2Nlc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIHJlZGVmaW5lIHdoYXQgdGhlIGNvb3JkaW5hdGVzIHdpdGhvdXQgdW5pdHMgbWVhbiBpbnNpZGUgYW4gU1ZHIGVsZW1lbnQuXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGUgU1ZHIGVsZW1lbnQgaXMgNTAwICh3aWR0aCkgYnkgMjAwIChoZWlnaHQpLFxuICAgKiBhbmQgeW91IHBhc3Mgdmlld0JveD1cIjAgMCA1MCAyMFwiLFxuICAgKiB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvb3JkaW5hdGVzIGluc2lkZSB0aGUgU1ZHIHdpbGwgZ28gZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyICgwLDApXG4gICAqIHRvIGJvdHRvbSByaWdodCAoNTAsMjApIGFuZCBlYWNoIHVuaXQgd2lsbCBiZSB3b3J0aCAxMHB4LlxuICAgKiBAZGVmYXVsdCAnMCAwIDI0IDI0J1xuICAgKi9cbiAgdmlld0JveDogUHJvcFR5cGVzLnN0cmluZ1xufSA6IHZvaWQgMDtcblN2Z0ljb24ubXVpTmFtZSA9ICdTdmdJY29uJztcbmV4cG9ydCBkZWZhdWx0IFN2Z0ljb247IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTdmdJY29uIGZyb20gJy4uL1N2Z0ljb24nO1xuXG4vKipcbiAqIFByaXZhdGUgbW9kdWxlIHJlc2VydmVkIGZvciBAbXVpIHBhY2thZ2VzLlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3ZnSWNvbihwYXRoLCBkaXNwbGF5TmFtZSkge1xuICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIHJlZikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTdmdJY29uLCBfZXh0ZW5kcyh7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IGAke2Rpc3BsYXlOYW1lfUljb25gLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcywge1xuICAgICAgY2hpbGRyZW46IHBhdGhcbiAgICB9KSk7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBOZWVkIHRvIHNldCBgZGlzcGxheU5hbWVgIG9uIHRoZSBpbm5lciBjb21wb25lbnQgZm9yIFJlYWN0Lm1lbW8uXG4gICAgLy8gUmVhY3QgcHJpb3IgdG8gMTYuMTQgaWdub3JlcyBgZGlzcGxheU5hbWVgIG9uIHRoZSB3cmFwcGVyLlxuICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2Rpc3BsYXlOYW1lfUljb25gO1xuICB9XG4gIENvbXBvbmVudC5tdWlOYW1lID0gU3ZnSWNvbi5tdWlOYW1lO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oIC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENvbXBvbmVudCkpO1xufSJdLCJuYW1lcyI6WyJHbG9iYWwiLCJ3IiwicHJvcHMiLCJjYWNoZSIsInN0eWxlcyIsInNlcmlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJUIiwiaSIsIl9yZWYiLCJzZXJpYWxpemVkTmFtZXMiLCJuYW1lIiwic2VyaWFsaXplZFN0eWxlcyIsIm5leHQiLCJzaG91bGRDYWNoZSIsImNvbXBhdCIsInJ1bGVzIiwiaW5zZXJ0Iiwic2hlZXQiLCJrZXkiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsIm5vbmNlIiwic2hlZXRSZWYiLCJjb25zdHJ1Y3RvciIsImNvbnRhaW5lciIsInNwZWVkeSIsImlzU3BlZWR5IiwicmVoeWRyYXRpbmciLCJub2RlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwidGFncyIsImxlbmd0aCIsImJlZm9yZSIsInNldEF0dHJpYnV0ZSIsImh5ZHJhdGUiLCJjdXJyZW50IiwiZmx1c2giLCJzaGVldFJlZkN1cnJlbnQiLCJlbGVtZW50IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiY3NzIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJrZXlmcmFtZXMiLCJpbnNlcnRhYmxlIiwiYXBwbHkiLCJhbmltIiwidG9TdHJpbmciLCJ0aGlzIiwiZ2V0QWxlcnRVdGlsaXR5Q2xhc3MiLCJzbG90IiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiY3JlYXRlU3ZnSWNvbiIsImQiLCJfZXhjbHVkZWQiLCJBbGVydFJvb3QiLCJzdHlsZWQiLCJQYXBlciIsIm92ZXJyaWRlc1Jlc29sdmVyIiwib3duZXJTdGF0ZSIsInJvb3QiLCJ2YXJpYW50IiwiY2FwaXRhbGl6ZSIsImNvbG9yIiwic2V2ZXJpdHkiLCJ0aGVtZSIsImdldENvbG9yIiwicGFsZXR0ZSIsIm1vZGUiLCJnZXRCYWNrZ3JvdW5kQ29sb3IiLCJ0eXBvZ3JhcGh5IiwiYm9keTIiLCJiYWNrZ3JvdW5kQ29sb3IiLCJkaXNwbGF5IiwicGFkZGluZyIsInZhcnMiLCJBbGVydCIsImxpZ2h0IiwiaWNvbiIsIm1haW4iLCJib3JkZXIiLCJmb250V2VpZ2h0IiwiZm9udFdlaWdodE1lZGl1bSIsImRhcmsiLCJnZXRDb250cmFzdFRleHQiLCJBbGVydEljb24iLCJtYXJnaW5SaWdodCIsImZvbnRTaXplIiwib3BhY2l0eSIsIkFsZXJ0TWVzc2FnZSIsIm1lc3NhZ2UiLCJtaW5XaWR0aCIsIm92ZXJmbG93IiwiQWxlcnRBY3Rpb24iLCJhY3Rpb24iLCJhbGlnbkl0ZW1zIiwibWFyZ2luTGVmdCIsImRlZmF1bHRJY29uTWFwcGluZyIsInN1Y2Nlc3MiLCJTdWNjZXNzT3V0bGluZWQiLCJ3YXJuaW5nIiwiUmVwb3J0UHJvYmxlbU91dGxpbmVkIiwiZXJyb3IiLCJFcnJvck91dGxpbmUiLCJpbmZvIiwiSW5mb091dGxpbmVkIiwiaW5Qcm9wcyIsInJlZiIsIl9zbG90cyRjbG9zZUJ1dHRvbiIsIl9yZWYyIiwiX3Nsb3RzJGNsb3NlSWNvbiIsIl9zbG90UHJvcHMkY2xvc2VCdXR0byIsIl9zbG90UHJvcHMkY2xvc2VJY29uIiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiY2xvc2VUZXh0IiwiY29tcG9uZW50cyIsImNvbXBvbmVudHNQcm9wcyIsImljb25NYXBwaW5nIiwib25DbG9zZSIsInJvbGUiLCJzbG90UHJvcHMiLCJzbG90cyIsIm90aGVyIiwiY2xhc3NlcyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJBbGVydENsb3NlQnV0dG9uIiwiY2xvc2VCdXR0b24iLCJDbG9zZUJ1dHRvbiIsIkljb25CdXR0b24iLCJBbGVydENsb3NlSWNvbiIsImNsb3NlSWNvbiIsIkNsb3NlSWNvbiIsIkNsb3NlIiwiY2xvc2VCdXR0b25Qcm9wcyIsImNsb3NlSWNvblByb3BzIiwiZWxldmF0aW9uIiwic2l6ZSIsInRpdGxlIiwib25DbGljayIsImdldEJ1dHRvblV0aWxpdHlDbGFzcyIsImNvbW1vbkljb25TdHlsZXMiLCJCdXR0b25Sb290IiwiQnV0dG9uQmFzZSIsInNob3VsZEZvcndhcmRQcm9wIiwicHJvcCIsImNvbG9ySW5oZXJpdCIsImRpc2FibGVFbGV2YXRpb24iLCJmdWxsV2lkdGgiLCJfdGhlbWUkcGFsZXR0ZSRnZXRDb24iLCJfdGhlbWUkcGFsZXR0ZSIsImluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IiLCJncmV5IiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yIiwiQTEwMCIsImJ1dHRvbiIsImJvcmRlclJhZGl1cyIsInNoYXBlIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb25zIiwiY3JlYXRlIiwiZHVyYXRpb24iLCJzaG9ydCIsInRleHREZWNvcmF0aW9uIiwidGV4dCIsInByaW1hcnlDaGFubmVsIiwiaG92ZXJPcGFjaXR5IiwicHJpbWFyeSIsIm1haW5DaGFubmVsIiwiQnV0dG9uIiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmciLCJib3hTaGFkb3ciLCJzaGFkb3dzIiwiZm9jdXNWaXNpYmxlIiwiZGlzYWJsZWQiLCJkaXNhYmxlZEJhY2tncm91bmQiLCJjYWxsIiwiaW5oZXJpdENvbnRhaW5lZEJnIiwiY29udHJhc3RUZXh0IiwiYm9yZGVyQ29sb3IiLCJweFRvUmVtIiwid2lkdGgiLCJCdXR0b25TdGFydEljb24iLCJzdGFydEljb24iLCJCdXR0b25FbmRJY29uIiwiZW5kSWNvbiIsImNvbnRleHRQcm9wcyIsIkJ1dHRvbkdyb3VwQ29udGV4dCIsInJlc29sdmVkUHJvcHMiLCJyZXNvbHZlUHJvcHMiLCJjb21wb25lbnQiLCJkaXNhYmxlRm9jdXNSaXBwbGUiLCJlbmRJY29uUHJvcCIsImZvY3VzVmlzaWJsZUNsYXNzTmFtZSIsInN0YXJ0SWNvblByb3AiLCJ0eXBlIiwibGFiZWwiLCJjb21wb3NlZENsYXNzZXMiLCJmb2N1c1JpcHBsZSIsImdldENvbGxhcHNlVXRpbGl0eUNsYXNzIiwiQ29sbGFwc2VSb290Iiwib3JpZW50YXRpb24iLCJzdGF0ZSIsImVudGVyZWQiLCJpbiIsImNvbGxhcHNlZFNpemUiLCJoaWRkZW4iLCJoZWlnaHQiLCJ2aXNpYmlsaXR5IiwiQ29sbGFwc2VXcmFwcGVyIiwid3JhcHBlciIsIkNvbGxhcHNlV3JhcHBlcklubmVyIiwid3JhcHBlcklubmVyIiwiQ29sbGFwc2UiLCJhZGRFbmRMaXN0ZW5lciIsImNvbGxhcHNlZFNpemVQcm9wIiwiZWFzaW5nIiwiaW5Qcm9wIiwib25FbnRlciIsIm9uRW50ZXJlZCIsIm9uRW50ZXJpbmciLCJvbkV4aXQiLCJvbkV4aXRlZCIsIm9uRXhpdGluZyIsInN0eWxlIiwidGltZW91dCIsInN0YW5kYXJkIiwiVHJhbnNpdGlvbkNvbXBvbmVudCIsIlRyYW5zaXRpb24iLCJ1c2VUaGVtZSIsInRpbWVyIiwid3JhcHBlclJlZiIsImF1dG9UcmFuc2l0aW9uRHVyYXRpb24iLCJpc0hvcml6b250YWwiLCJjbGVhclRpbWVvdXQiLCJub2RlUmVmIiwiaGFuZGxlUmVmIiwidXNlRm9ya1JlZiIsIm5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2siLCJjYWxsYmFjayIsIm1heWJlSXNBcHBlYXJpbmciLCJnZXRXcmFwcGVyU2l6ZSIsImhhbmRsZUVudGVyIiwiaXNBcHBlYXJpbmciLCJwb3NpdGlvbiIsImhhbmRsZUVudGVyaW5nIiwid3JhcHBlclNpemUiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJ0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24iLCJkdXJhdGlvbjIiLCJnZXRBdXRvSGVpZ2h0RHVyYXRpb24iLCJoYW5kbGVFbnRlcmVkIiwiaGFuZGxlRXhpdCIsImhhbmRsZUV4aXRlZCIsImhhbmRsZUV4aXRpbmciLCJzZXRUaW1lb3V0IiwiY2hpbGRQcm9wcyIsImFzIiwibXVpU3VwcG9ydEF1dG8iLCJlbnRlcmluZyIsImRlZmF1bHRUaW1lb3V0IiwiZW50ZXIiLCJlbnRlcmluZ1NjcmVlbiIsImV4aXQiLCJsZWF2aW5nU2NyZWVuIiwiYXBwZWFyIiwidHJhbnNpdGlvblByb3BzIiwid2Via2l0VHJhbnNpdGlvbiIsImdldEljb25CdXR0b25VdGlsaXR5Q2xhc3MiLCJJY29uQnV0dG9uUm9vdCIsImVkZ2UiLCJ0ZXh0QWxpZ24iLCJmbGV4IiwiYWN0aXZlIiwic2hvcnRlc3QiLCJkaXNhYmxlUmlwcGxlIiwiYWN0aXZlQ2hhbm5lbCIsIl9wYWxldHRlIiwiY2VudGVyUmlwcGxlIiwiYWxwaGFWYWx1ZSIsIk1hdGgiLCJsb2ciLCJ0b0ZpeGVkIiwiZ2V0UGFwZXJVdGlsaXR5Q2xhc3MiLCJQYXBlclJvb3QiLCJzcXVhcmUiLCJyb3VuZGVkIiwiX3RoZW1lJHZhcnMkb3ZlcmxheXMiLCJiYWNrZ3JvdW5kIiwicGFwZXIiLCJkaXZpZGVyIiwiYmFja2dyb3VuZEltYWdlIiwib3ZlcmxheXMiLCJnZXRTdmdJY29uVXRpbGl0eUNsYXNzIiwiU3ZnSWNvblJvb3QiLCJfdGhlbWUkdHJhbnNpdGlvbnMiLCJfdGhlbWUkdHJhbnNpdGlvbnMkY3IiLCJfdGhlbWUkdHJhbnNpdGlvbnMyIiwiX3RoZW1lJHR5cG9ncmFwaHkiLCJfdGhlbWUkdHlwb2dyYXBoeSRweFQiLCJfdGhlbWUkdHlwb2dyYXBoeTIiLCJfdGhlbWUkdHlwb2dyYXBoeTIkcHgiLCJfdGhlbWUkdHlwb2dyYXBoeTMiLCJfdGhlbWUkdHlwb2dyYXBoeTMkcHgiLCJfcGFsZXR0ZSRvd25lclN0YXRlJGMiLCJfcGFsZXR0ZTIiLCJfcGFsZXR0ZTMiLCJ1c2VyU2VsZWN0IiwiZmlsbCIsImhhc1N2Z0FzQ2hpbGQiLCJmbGV4U2hyaW5rIiwic2hvcnRlciIsImluaGVyaXQiLCJzbWFsbCIsIm1lZGl1bSIsImxhcmdlIiwiU3ZnSWNvbiIsImh0bWxDb2xvciIsImluaGVyaXRWaWV3Qm94IiwidGl0bGVBY2Nlc3MiLCJ2aWV3Qm94IiwiaW5zdGFuY2VGb250U2l6ZSIsIm1vcmUiLCJmb2N1c2FibGUiLCJtdWlOYW1lIiwicGF0aCIsImRpc3BsYXlOYW1lIiwiQ29tcG9uZW50Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7480.5d49a080.js b/react_frontend/static/react_frontend/js/7480.5d49a080.js new file mode 100644 index 000000000..41714ef15 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7480.5d49a080.js @@ -0,0 +1,3 @@ +/*! For license information please see 7480.5d49a080.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7480],{7480:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzQ4MC40ZmFlZTI3NC5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnFCLFNBQUNBLEdBQ3BCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2ZvbGxvd19yb2FkL3JlYWN0LWNvbXBvbmVudHMvRm9sbG93Um9hZFJSLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9mb2xsb3dSb2FkUlIuY3NzXCI7XHJcblxyXG5jb25zdCBGb2xsb3dSb2FkUlIgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgRm9sbG93Um9hZFJSOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7480.5d49a080.js.LICENSE.txt b/react_frontend/static/react_frontend/js/7480.5d49a080.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7480.5d49a080.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/7551.85496cda.js b/react_frontend/static/react_frontend/js/7551.85496cda.js new file mode 100644 index 000000000..6d3301e5c --- /dev/null +++ b/react_frontend/static/react_frontend/js/7551.85496cda.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7551],{8984:(e,r,o)=>{"use strict";var t=o(4994);r.A=void 0;var i=t(o(2032)),a=o(4848),n=(0,i.default)((0,a.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z"}),"Save");r.A=n},2471:(e,r,o)=>{"use strict";o.d(r,{A:()=>j});var t=o(8168),i=o(8587),a=o(6540),n=o(53),l=o(5659),s=o(4661),d=o(7577),c=o(4409),u=o(7623),p=o(1915),m=o(8641),f=o(4433),h=o(779),v=o(8086),A=o(9716),b=o(8466),x=o(8413),y=o(1609);function T(e){return(0,y.A)("MuiFormHelperText",e)}const R=(0,x.A)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var g,F=o(4848);const w=["children","className","component","disabled","error","filled","focused","margin","required","variant"],P=(0,d.Ay)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:o}=e;return[r.root,o.size&&r[`size${(0,b.A)(o.size)}`],o.contained&&r.contained,o.filled&&r.filled]}})((({theme:e,ownerState:r})=>(0,t.A)({color:(e.vars||e).palette.text.secondary},e.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${R.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${R.error}`]:{color:(e.vars||e).palette.error.main}},"small"===r.size&&{marginTop:4},r.contained&&{marginLeft:14,marginRight:14}))),C=a.forwardRef((function(e,r){const o=(0,c.A)({props:e,name:"MuiFormHelperText"}),{children:a,className:s,component:d="p"}=o,u=(0,i.A)(o,w),p=(0,A.A)(),m=(0,v.A)({props:o,muiFormControl:p,states:["variant","size","disabled","error","filled","focused","required"]}),f=(0,t.A)({},o,{component:d,contained:"filled"===m.variant||"outlined"===m.variant,variant:m.variant,size:m.size,disabled:m.disabled,error:m.error,filled:m.filled,focused:m.focused,required:m.required}),h=(e=>{const{classes:r,contained:o,size:t,disabled:i,error:a,filled:n,focused:s,required:d}=e,c={root:["root",i&&"disabled",a&&"error",t&&`size${(0,b.A)(t)}`,o&&"contained",s&&"focused",n&&"filled",d&&"required"]};return(0,l.A)(c,T,r)})(f);return(0,F.jsx)(P,(0,t.A)({as:d,ownerState:f,className:(0,n.A)(h.root,s),ref:r},u,{children:" "===a?g||(g=(0,F.jsx)("span",{className:"notranslate",children:"​"})):a}))}));var z=o(2071);function k(e){return(0,y.A)("MuiTextField",e)}(0,x.A)("MuiTextField",["root"]);const q=["autoComplete","autoFocus","children","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","id","InputLabelProps","inputProps","InputProps","inputRef","label","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","placeholder","required","rows","select","SelectProps","type","value","variant"],S={standard:u.A,filled:p.A,outlined:m.A},_=(0,d.Ay)(h.A,{name:"MuiTextField",slot:"Root",overridesResolver:(e,r)=>r.root})({}),j=a.forwardRef((function(e,r){const o=(0,c.A)({props:e,name:"MuiTextField"}),{autoComplete:a,autoFocus:d=!1,children:u,className:p,color:m="primary",defaultValue:h,disabled:v=!1,error:A=!1,FormHelperTextProps:b,fullWidth:x=!1,helperText:y,id:T,InputLabelProps:R,inputProps:g,InputProps:w,inputRef:P,label:j,maxRows:M,minRows:H,multiline:I=!1,name:O,onBlur:N,onChange:W,onClick:L,onFocus:V,placeholder:$,required:B=!1,rows:E,select:D=!1,SelectProps:U,type:Y,value:G,variant:J="outlined"}=o,K=(0,i.A)(o,q),Q=(0,t.A)({},o,{autoFocus:d,color:m,disabled:v,error:A,fullWidth:x,multiline:I,required:B,select:D,variant:J}),X=(e=>{const{classes:r}=e;return(0,l.A)({root:["root"]},k,r)})(Q),Z={};"outlined"===J&&(R&&void 0!==R.shrink&&(Z.notched=R.shrink),Z.label=j),D&&(U&&U.native||(Z.id=void 0),Z["aria-describedby"]=void 0);const ee=(0,s.A)(T),re=y&&ee?`${ee}-helper-text`:void 0,oe=j&&ee?`${ee}-label`:void 0,te=S[J],ie=(0,F.jsx)(te,(0,t.A)({"aria-describedby":re,autoComplete:a,autoFocus:d,defaultValue:h,fullWidth:x,multiline:I,name:O,rows:E,maxRows:M,minRows:H,type:Y,value:G,id:ee,inputRef:P,onBlur:N,onChange:W,onFocus:V,onClick:L,placeholder:$,inputProps:g},Z,w));return(0,F.jsxs)(_,(0,t.A)({className:(0,n.A)(X.root,p),disabled:v,error:A,fullWidth:x,ref:r,required:B,color:m,variant:J,ownerState:Q},K,{children:[null!=j&&""!==j&&(0,F.jsx)(f.A,(0,t.A)({htmlFor:ee,id:oe},R,{children:j})),D?(0,F.jsx)(z.A,(0,t.A)({"aria-describedby":re,id:ee,labelId:oe,value:G,input:ie},U,{children:u})):ie,y&&(0,F.jsx)(C,(0,t.A)({id:re},b,{children:y}))]}))}))},2694:(e,r,o)=>{"use strict";var t=o(6925);function i(){}function a(){}a.resetWarningCache=i,e.exports=function(){function e(e,r,o,i,a,n){if(n!==t){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function r(){return e}e.isRequired=e;var o={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:r,element:e,elementType:e,instanceOf:r,node:e,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:a,resetWarningCache:i};return o.PropTypes=o,o}},5556:(e,r,o)=>{e.exports=o(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzU1MS43NGFiM2Q4Yi5qcyIsIm1hcHBpbmdzIjoib0hBR0lBLEVBQXlCLEVBQVEsTUFJckNDLEVBQVEsT0FBVSxFQUNsQixJQUFJQyxFQUFpQkYsRUFBdUIsRUFBUSxPQUNoREcsRUFBYyxFQUFRLE1BQ3RCQyxHQUFXLEVBQUlGLEVBQWVHLFVBQXVCLEVBQUlGLEVBQVlHLEtBQUssT0FBUSxDQUNwRkMsRUFBRyxtSkFDRCxRQUNKTixFQUFRLEVBQVVHLEMsb09DWFgsU0FBU0ksRUFBZ0NDLEdBQzlDLE9BQU8sRUFBQUMsRUFBQSxHQUFxQixvQkFBcUJELEVBQ25ELENBQ0EsTUFDQSxHQUQ4QixFQUFBRSxFQUFBLEdBQXVCLG9CQUFxQixDQUFDLE9BQVEsUUFBUyxXQUFZLFlBQWEsYUFBYyxZQUFhLFVBQVcsU0FBVSxhLElDRGpLQyxFLFVBQ0osTUFBTUMsRUFBWSxDQUFDLFdBQVksWUFBYSxZQUFhLFdBQVksUUFBUyxTQUFVLFVBQVcsU0FBVSxXQUFZLFdBNEJuSEMsR0FBcUIsRUFBQUMsRUFBQSxJQUFPLElBQUssQ0FDckNDLEtBQU0sb0JBQ05QLEtBQU0sT0FDTlEsa0JBQW1CLENBQUNDLEVBQU9DLEtBQ3pCLE1BQU0sV0FDSkMsR0FDRUYsRUFDSixNQUFPLENBQUNDLEVBQU9FLEtBQU1ELEVBQVdFLE1BQVFILEVBQU8sUUFBTyxFQUFBSSxFQUFBLEdBQVdILEVBQVdFLFNBQVVGLEVBQVdJLFdBQWFMLEVBQU9LLFVBQVdKLEVBQVdLLFFBQVVOLEVBQU9NLE9BQU8sR0FQNUksRUFTeEIsRUFDREMsUUFDQU4saUJBQ0ksT0FBUyxDQUNiTyxPQUFRRCxFQUFNRSxNQUFRRixHQUFPRyxRQUFRQyxLQUFLQyxXQUN6Q0wsRUFBTU0sV0FBV0MsUUFBUyxDQUMzQkMsVUFBVyxPQUNYQyxVQUFXLEVBQ1hDLFlBQWEsRUFDYkMsYUFBYyxFQUNkQyxXQUFZLEVBQ1osQ0FBQyxLQUFLLEVBQXNCQyxZQUFhLENBQ3ZDWixPQUFRRCxFQUFNRSxNQUFRRixHQUFPRyxRQUFRQyxLQUFLUyxVQUU1QyxDQUFDLEtBQUssRUFBc0JDLFNBQVUsQ0FDcENiLE9BQVFELEVBQU1FLE1BQVFGLEdBQU9HLFFBQVFXLE1BQU1DLE9BRXhCLFVBQXBCckIsRUFBV0UsTUFBb0IsQ0FDaENhLFVBQVcsR0FDVmYsRUFBV0ksV0FBYSxDQUN6QmMsV0FBWSxHQUNaRixZQUFhLE9Bc0dmLEVBcEdvQyxjQUFpQixTQUF3Qk0sRUFBU0MsR0FDcEYsTUFBTXpCLEdBQVEsRUFBQTBCLEVBQUEsR0FBYyxDQUMxQjFCLE1BQU93QixFQUNQMUIsS0FBTSx1QkFFRixTQUNGNkIsRUFBUSxVQUNSQyxFQUFTLFVBQ1RDLEVBQVksS0FDVjdCLEVBQ0o4QixHQUFRLE9BQThCOUIsRUFBT0wsR0FDekNvQyxHQUFpQixFQUFBQyxFQUFBLEtBQ2pCQyxHQUFNLEVBQUFDLEVBQUEsR0FBaUIsQ0FDM0JsQyxRQUNBK0IsaUJBQ0FJLE9BQVEsQ0FBQyxVQUFXLE9BQVEsV0FBWSxRQUFTLFNBQVUsVUFBVyxjQUVsRWpDLEdBQWEsT0FBUyxDQUFDLEVBQUdGLEVBQU8sQ0FDckM2QixZQUNBdkIsVUFBMkIsV0FBaEIyQixFQUFJRyxTQUF3QyxhQUFoQkgsRUFBSUcsUUFDM0NBLFFBQVNILEVBQUlHLFFBQ2JoQyxLQUFNNkIsRUFBSTdCLEtBQ1ZpQixTQUFVWSxFQUFJWixTQUNkQyxNQUFPVyxFQUFJWCxNQUNYZixPQUFRMEIsRUFBSTFCLE9BQ1o4QixRQUFTSixFQUFJSSxRQUNiQyxTQUFVTCxFQUFJSyxXQUVWQyxFQTVFa0JyQyxLQUN4QixNQUFNLFFBQ0pxQyxFQUFPLFVBQ1BqQyxFQUFTLEtBQ1RGLEVBQUksU0FDSmlCLEVBQVEsTUFDUkMsRUFBSyxPQUNMZixFQUFNLFFBQ044QixFQUFPLFNBQ1BDLEdBQ0VwQyxFQUNFc0MsRUFBUSxDQUNackMsS0FBTSxDQUFDLE9BQVFrQixHQUFZLFdBQVlDLEdBQVMsUUFBU2xCLEdBQVEsUUFBTyxFQUFBQyxFQUFBLEdBQVdELEtBQVNFLEdBQWEsWUFBYStCLEdBQVcsVUFBVzlCLEdBQVUsU0FBVStCLEdBQVksYUFFOUssT0FBTyxFQUFBRyxFQUFBLEdBQWVELEVBQU9sRCxFQUFpQ2lELEVBQVEsRUE4RHRERyxDQUFrQnhDLEdBQ2xDLE9BQW9CLFNBQUtOLEdBQW9CLE9BQVMsQ0FDcEQrQyxHQUFJZCxFQUNKM0IsV0FBWUEsRUFDWjBCLFdBQVcsT0FBS1csRUFBUXBDLEtBQU15QixHQUM5QkgsSUFBS0EsR0FDSkssRUFBTyxDQUNSSCxTQUF1QixNQUFiQSxFQUNWakMsSUFBVUEsR0FBcUIsU0FBSyxPQUFRLENBQzFDa0MsVUFBVyxjQUNYRCxTQUFVLE9BQ05BLElBRVYsSSxjQ3hHTyxTQUFTaUIsRUFBeUJyRCxHQUN2QyxPQUFPLEVBQUFDLEVBQUEsR0FBcUIsZUFBZ0JELEVBQzlDLEVBQ3lCLEVBQUFFLEVBQUEsR0FBdUIsZUFBZ0IsQ0FBQyxTQUFqRSxNQ0RNLEVBQVksQ0FBQyxlQUFnQixZQUFhLFdBQVksWUFBYSxRQUFTLGVBQWdCLFdBQVksUUFBUyxzQkFBdUIsWUFBYSxhQUFjLEtBQU0sa0JBQW1CLGFBQWMsYUFBYyxXQUFZLFFBQVMsVUFBVyxVQUFXLFlBQWEsT0FBUSxTQUFVLFdBQVksVUFBVyxVQUFXLGNBQWUsV0FBWSxPQUFRLFNBQVUsY0FBZSxPQUFRLFFBQVMsV0FrQmpab0QsRUFBbUIsQ0FDdkJDLFNBQVVDLEVBQUEsRUFDVnhDLE9BQVF5QyxFQUFBLEVBQ1JDLFNBQVVDLEVBQUEsR0FXTkMsR0FBZ0IsRUFBQXRELEVBQUEsSUFBT3VELEVBQUEsRUFBYSxDQUN4Q3RELEtBQU0sZUFDTlAsS0FBTSxPQUNOUSxrQkFBbUIsQ0FBQ0MsRUFBT0MsSUFBV0EsRUFBT0UsTUFIekIsQ0FJbkIsQ0FBQyxHQW9WSixFQWxUK0IsY0FBaUIsU0FBbUJxQixFQUFTQyxHQUMxRSxNQUFNekIsR0FBUSxFQUFBMEIsRUFBQSxHQUFjLENBQzFCMUIsTUFBT3dCLEVBQ1AxQixLQUFNLGtCQUVGLGFBQ0Z1RCxFQUFZLFVBQ1pDLEdBQVksRUFBSyxTQUNqQjNCLEVBQVEsVUFDUkMsRUFBUyxNQUNUbkIsRUFBUSxVQUFTLGFBQ2pCOEMsRUFBWSxTQUNabEMsR0FBVyxFQUFLLE1BQ2hCQyxHQUFRLEVBQUssb0JBQ2JrQyxFQUFtQixVQUNuQkMsR0FBWSxFQUFLLFdBQ2pCQyxFQUNBQyxHQUFJQyxFQUFVLGdCQUNkQyxFQUFlLFdBQ2ZDLEVBQVUsV0FDVkMsRUFBVSxTQUNWQyxFQUFRLE1BQ1JDLEVBQUssUUFDTEMsRUFBTyxRQUNQQyxFQUFPLFVBQ1BDLEdBQVksRUFBSyxLQUNqQnRFLEVBQUksT0FDSnVFLEVBQU0sU0FDTkMsRUFBUSxRQUNSQyxFQUFPLFFBQ1BDLEVBQU8sWUFDUEMsRUFBVyxTQUNYbkMsR0FBVyxFQUFLLEtBQ2hCb0MsRUFBSSxPQUNKQyxHQUFTLEVBQUssWUFDZEMsRUFBVyxLQUNYQyxFQUFJLE1BQ0pDLEVBQUssUUFDTDFDLEVBQVUsWUFDUnBDLEVBQ0o4QixHQUFRLE9BQThCOUIsRUFBTyxHQUN6Q0UsR0FBYSxPQUFTLENBQUMsRUFBR0YsRUFBTyxDQUNyQ3NELFlBQ0E3QyxRQUNBWSxXQUNBQyxRQUNBbUMsWUFDQVcsWUFDQTlCLFdBQ0FxQyxTQUNBdkMsWUFFSUcsRUFuR2tCckMsS0FDeEIsTUFBTSxRQUNKcUMsR0FDRXJDLEVBSUosT0FBTyxFQUFBdUMsRUFBQSxHQUhPLENBQ1p0QyxLQUFNLENBQUMsU0FFb0J5QyxFQUEwQkwsRUFBUSxFQTRGL0MsQ0FBa0JyQyxHQU01QjZFLEVBQVksQ0FBQyxFQUNILGFBQVozQyxJQUNFeUIsUUFBcUQsSUFBM0JBLEVBQWdCbUIsU0FDNUNELEVBQVVFLFFBQVVwQixFQUFnQm1CLFFBRXRDRCxFQUFVZCxNQUFRQSxHQUVoQlUsSUFFR0MsR0FBZ0JBLEVBQVlNLFNBQy9CSCxFQUFVcEIsUUFBS3dCLEdBRWpCSixFQUFVLHlCQUFzQkksR0FFbEMsTUFBTXhCLElBQUssRUFBQXlCLEVBQUEsR0FBTXhCLEdBQ1h5QixHQUFlM0IsR0FBY0MsR0FBSyxHQUFHQSxzQkFBbUJ3QixFQUN4REcsR0FBZXJCLEdBQVNOLEdBQUssR0FBR0EsZ0JBQWF3QixFQUM3Q0ksR0FBaUIxQyxFQUFpQlQsR0FDbENvRCxJQUE0QixTQUFLRCxJQUFnQixPQUFTLENBQzlELG1CQUFvQkYsR0FDcEJoQyxhQUFjQSxFQUNkQyxVQUFXQSxFQUNYQyxhQUFjQSxFQUNkRSxVQUFXQSxFQUNYVyxVQUFXQSxFQUNYdEUsS0FBTUEsRUFDTjRFLEtBQU1BLEVBQ05SLFFBQVNBLEVBQ1RDLFFBQVNBLEVBQ1RVLEtBQU1BLEVBQ05DLE1BQU9BLEVBQ1BuQixHQUFJQSxHQUNKSyxTQUFVQSxFQUNWSyxPQUFRQSxFQUNSQyxTQUFVQSxFQUNWRSxRQUFTQSxFQUNURCxRQUFTQSxFQUNURSxZQUFhQSxFQUNiWCxXQUFZQSxHQUNYaUIsRUFBV2hCLElBQ2QsT0FBb0IsVUFBTVosR0FBZSxPQUFTLENBQ2hEdkIsV0FBVyxPQUFLVyxFQUFRcEMsS0FBTXlCLEdBQzlCUCxTQUFVQSxFQUNWQyxNQUFPQSxFQUNQbUMsVUFBV0EsRUFDWGhDLElBQUtBLEVBQ0xhLFNBQVVBLEVBQ1Y3QixNQUFPQSxFQUNQMkIsUUFBU0EsRUFDVGxDLFdBQVlBLEdBQ1g0QixFQUFPLENBQ1JILFNBQVUsQ0FBVSxNQUFUc0MsR0FBMkIsS0FBVkEsSUFBNkIsU0FBS3dCLEVBQUEsR0FBWSxPQUFTLENBQ2pGQyxRQUFTL0IsR0FDVEEsR0FBSTJCLElBQ0h6QixFQUFpQixDQUNsQmxDLFNBQVVzQyxLQUNQVSxHQUFzQixTQUFLZ0IsRUFBQSxHQUFRLE9BQVMsQ0FDL0MsbUJBQW9CTixHQUNwQjFCLEdBQUlBLEdBQ0ppQyxRQUFTTixHQUNUUixNQUFPQSxFQUNQZSxNQUFPTCxJQUNOWixFQUFhLENBQ2RqRCxTQUFVQSxLQUNONkQsR0FBYzlCLElBQTJCLFNBQUssR0FBZ0IsT0FBUyxDQUMzRUMsR0FBSTBCLElBQ0g3QixFQUFxQixDQUN0QjdCLFNBQVUrQixRQUdoQixHLDhCQ2pNQSxJQUFJb0MsRUFBdUIsRUFBUSxNQUVuQyxTQUFTQyxJQUFpQixDQUMxQixTQUFTQyxJQUEwQixDQUNuQ0EsRUFBdUJDLGtCQUFvQkYsRUFFM0NHLEVBQU9uSCxRQUFVLFdBQ2YsU0FBU29ILEVBQUtuRyxFQUFPb0csRUFBVUMsRUFBZUMsRUFBVUMsRUFBY0MsR0FDcEUsR0FBSUEsSUFBV1YsRUFBZixDQUlBLElBQUlXLEVBQU0sSUFBSUMsTUFDWixtTEFLRixNQURBRCxFQUFJM0csS0FBTyxzQkFDTDJHLENBUE4sQ0FRRixDQUVBLFNBQVNFLElBQ1AsT0FBT1IsQ0FDVCxDQUhBQSxFQUFLUyxXQUFhVCxFQU1sQixJQUFJVSxFQUFpQixDQUNuQkMsTUFBT1gsRUFDUFksT0FBUVosRUFDUmEsS0FBTWIsRUFDTmMsS0FBTWQsRUFDTmUsT0FBUWYsRUFDUmdCLE9BQVFoQixFQUNSaUIsT0FBUWpCLEVBQ1JrQixPQUFRbEIsRUFFUm1CLElBQUtuQixFQUNMb0IsUUFBU1osRUFDVGEsUUFBU3JCLEVBQ1RzQixZQUFhdEIsRUFDYnVCLFdBQVlmLEVBQ1pnQixLQUFNeEIsRUFDTnlCLFNBQVVqQixFQUNWa0IsTUFBT2xCLEVBQ1BtQixVQUFXbkIsRUFDWG9CLE1BQU9wQixFQUNQcUIsTUFBT3JCLEVBRVBzQixlQUFnQmpDLEVBQ2hCQyxrQkFBbUJGLEdBS3JCLE9BRkFjLEVBQWVxQixVQUFZckIsRUFFcEJBLENBQ1QsQyxpQkMvQ0VYLEVBQU9uSCxRQUFVLEVBQVEsS0FBUixFLHdCQ05uQm1ILEVBQU9uSCxRQUZvQiw4QyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvU2F2ZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1IZWxwZXJUZXh0L2Zvcm1IZWxwZXJUZXh0Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1IZWxwZXJUZXh0L0Zvcm1IZWxwZXJUZXh0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVGV4dEZpZWxkL3RleHRGaWVsZENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UZXh0RmllbGQvVGV4dEZpZWxkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cInVzZSBjbGllbnRcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xudmFyIF9jcmVhdGVTdmdJY29uID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi91dGlscy9jcmVhdGVTdmdJY29uXCIpKTtcbnZhciBfanN4UnVudGltZSA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTtcbnZhciBfZGVmYXVsdCA9ICgwLCBfY3JlYXRlU3ZnSWNvbi5kZWZhdWx0KSggLyojX19QVVJFX18qLygwLCBfanN4UnVudGltZS5qc3gpKFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0elwiXG59KSwgJ1NhdmUnKTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtSGVscGVyVGV4dFV0aWxpdHlDbGFzc2VzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlGb3JtSGVscGVyVGV4dCcsIHNsb3QpO1xufVxuY29uc3QgZm9ybUhlbHBlclRleHRDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpRm9ybUhlbHBlclRleHQnLCBbJ3Jvb3QnLCAnZXJyb3InLCAnZGlzYWJsZWQnLCAnc2l6ZVNtYWxsJywgJ3NpemVNZWRpdW0nLCAnY29udGFpbmVkJywgJ2ZvY3VzZWQnLCAnZmlsbGVkJywgJ3JlcXVpcmVkJ10pO1xuZXhwb3J0IGRlZmF1bHQgZm9ybUhlbHBlclRleHRDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbnZhciBfc3BhbjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZGlzYWJsZWRcIiwgXCJlcnJvclwiLCBcImZpbGxlZFwiLCBcImZvY3VzZWRcIiwgXCJtYXJnaW5cIiwgXCJyZXF1aXJlZFwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgZm9ybUNvbnRyb2xTdGF0ZSBmcm9tICcuLi9Gb3JtQ29udHJvbC9mb3JtQ29udHJvbFN0YXRlJztcbmltcG9ydCB1c2VGb3JtQ29udHJvbCBmcm9tICcuLi9Gb3JtQ29udHJvbC91c2VGb3JtQ29udHJvbCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgZm9ybUhlbHBlclRleHRDbGFzc2VzLCB7IGdldEZvcm1IZWxwZXJUZXh0VXRpbGl0eUNsYXNzZXMgfSBmcm9tICcuL2Zvcm1IZWxwZXJUZXh0Q2xhc3Nlcyc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgY29udGFpbmVkLFxuICAgIHNpemUsXG4gICAgZGlzYWJsZWQsXG4gICAgZXJyb3IsXG4gICAgZmlsbGVkLFxuICAgIGZvY3VzZWQsXG4gICAgcmVxdWlyZWRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGVycm9yICYmICdlcnJvcicsIHNpemUgJiYgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YCwgY29udGFpbmVkICYmICdjb250YWluZWQnLCBmb2N1c2VkICYmICdmb2N1c2VkJywgZmlsbGVkICYmICdmaWxsZWQnLCByZXF1aXJlZCAmJiAncmVxdWlyZWQnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEZvcm1IZWxwZXJUZXh0VXRpbGl0eUNsYXNzZXMsIGNsYXNzZXMpO1xufTtcbmNvbnN0IEZvcm1IZWxwZXJUZXh0Um9vdCA9IHN0eWxlZCgncCcsIHtcbiAgbmFtZTogJ011aUZvcm1IZWxwZXJUZXh0JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIG93bmVyU3RhdGUuc2l6ZSAmJiBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXSwgb3duZXJTdGF0ZS5jb250YWluZWQgJiYgc3R5bGVzLmNvbnRhaW5lZCwgb3duZXJTdGF0ZS5maWxsZWQgJiYgc3R5bGVzLmZpbGxlZF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS50ZXh0LnNlY29uZGFyeVxufSwgdGhlbWUudHlwb2dyYXBoeS5jYXB0aW9uLCB7XG4gIHRleHRBbGlnbjogJ2xlZnQnLFxuICBtYXJnaW5Ub3A6IDMsXG4gIG1hcmdpblJpZ2h0OiAwLFxuICBtYXJnaW5Cb3R0b206IDAsXG4gIG1hcmdpbkxlZnQ6IDAsXG4gIFtgJi4ke2Zvcm1IZWxwZXJUZXh0Q2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS50ZXh0LmRpc2FibGVkXG4gIH0sXG4gIFtgJi4ke2Zvcm1IZWxwZXJUZXh0Q2xhc3Nlcy5lcnJvcn1gXToge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5lcnJvci5tYWluXG4gIH1cbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpblRvcDogNFxufSwgb3duZXJTdGF0ZS5jb250YWluZWQgJiYge1xuICBtYXJnaW5MZWZ0OiAxNCxcbiAgbWFyZ2luUmlnaHQ6IDE0XG59KSk7XG5jb25zdCBGb3JtSGVscGVyVGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZvcm1IZWxwZXJUZXh0KGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlGb3JtSGVscGVyVGV4dCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ3AnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG11aUZvcm1Db250cm9sID0gdXNlRm9ybUNvbnRyb2woKTtcbiAgY29uc3QgZmNzID0gZm9ybUNvbnRyb2xTdGF0ZSh7XG4gICAgcHJvcHMsXG4gICAgbXVpRm9ybUNvbnRyb2wsXG4gICAgc3RhdGVzOiBbJ3ZhcmlhbnQnLCAnc2l6ZScsICdkaXNhYmxlZCcsICdlcnJvcicsICdmaWxsZWQnLCAnZm9jdXNlZCcsICdyZXF1aXJlZCddXG4gIH0pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29tcG9uZW50LFxuICAgIGNvbnRhaW5lZDogZmNzLnZhcmlhbnQgPT09ICdmaWxsZWQnIHx8IGZjcy52YXJpYW50ID09PSAnb3V0bGluZWQnLFxuICAgIHZhcmlhbnQ6IGZjcy52YXJpYW50LFxuICAgIHNpemU6IGZjcy5zaXplLFxuICAgIGRpc2FibGVkOiBmY3MuZGlzYWJsZWQsXG4gICAgZXJyb3I6IGZjcy5lcnJvcixcbiAgICBmaWxsZWQ6IGZjcy5maWxsZWQsXG4gICAgZm9jdXNlZDogZmNzLmZvY3VzZWQsXG4gICAgcmVxdWlyZWQ6IGZjcy5yZXF1aXJlZFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRm9ybUhlbHBlclRleHRSb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcmVmOiByZWZcbiAgfSwgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogY2hpbGRyZW4gPT09ICcgJyA/IC8vIG5vdHJhbnNsYXRlIG5lZWRlZCB3aGlsZSBHb29nbGUgVHJhbnNsYXRlIHdpbGwgbm90IGZpeCB6ZXJvLXdpZHRoIHNwYWNlIGlzc3VlXG4gICAgX3NwYW4gfHwgKF9zcGFuID0gLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogXCJub3RyYW5zbGF0ZVwiLFxuICAgICAgY2hpbGRyZW46IFwiXFx1MjAwQlwiXG4gICAgfSkpIDogY2hpbGRyZW5cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBGb3JtSGVscGVyVGV4dC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBJZiBgJyAnYCBpcyBwcm92aWRlZCwgdGhlIGNvbXBvbmVudCByZXNlcnZlcyBvbmUgbGluZSBoZWlnaHQgZm9yIGRpc3BsYXlpbmcgYSBmdXR1cmUgbWVzc2FnZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGhlbHBlciB0ZXh0IHNob3VsZCBiZSBkaXNwbGF5ZWQgaW4gYSBkaXNhYmxlZCBzdGF0ZS5cbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgaGVscGVyIHRleHQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhbiBlcnJvciBzdGF0ZS5cbiAgICovXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGhlbHBlciB0ZXh0IHNob3VsZCB1c2UgZmlsbGVkIGNsYXNzZXMga2V5LlxuICAgKi9cbiAgZmlsbGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGhlbHBlciB0ZXh0IHNob3VsZCB1c2UgZm9jdXNlZCBjbGFzc2VzIGtleS5cbiAgICovXG4gIGZvY3VzZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYGRlbnNlYCwgd2lsbCBhZGp1c3QgdmVydGljYWwgc3BhY2luZy4gVGhpcyBpcyBub3JtYWxseSBvYnRhaW5lZCB2aWEgY29udGV4dCBmcm9tXG4gICAqIEZvcm1Db250cm9sLlxuICAgKi9cbiAgbWFyZ2luOiBQcm9wVHlwZXMub25lT2YoWydkZW5zZSddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGhlbHBlciB0ZXh0IHNob3VsZCB1c2UgcmVxdWlyZWQgY2xhc3NlcyBrZXkuXG4gICAqL1xuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2ZpbGxlZCcsICdvdXRsaW5lZCcsICdzdGFuZGFyZCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRm9ybUhlbHBlclRleHQ7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRleHRGaWVsZFV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpVGV4dEZpZWxkJywgc2xvdCk7XG59XG5jb25zdCB0ZXh0RmllbGRDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVGV4dEZpZWxkJywgWydyb290J10pO1xuZXhwb3J0IGRlZmF1bHQgdGV4dEZpZWxkQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhdXRvQ29tcGxldGVcIiwgXCJhdXRvRm9jdXNcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGVmYXVsdFZhbHVlXCIsIFwiZGlzYWJsZWRcIiwgXCJlcnJvclwiLCBcIkZvcm1IZWxwZXJUZXh0UHJvcHNcIiwgXCJmdWxsV2lkdGhcIiwgXCJoZWxwZXJUZXh0XCIsIFwiaWRcIiwgXCJJbnB1dExhYmVsUHJvcHNcIiwgXCJpbnB1dFByb3BzXCIsIFwiSW5wdXRQcm9wc1wiLCBcImlucHV0UmVmXCIsIFwibGFiZWxcIiwgXCJtYXhSb3dzXCIsIFwibWluUm93c1wiLCBcIm11bHRpbGluZVwiLCBcIm5hbWVcIiwgXCJvbkJsdXJcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQ2xpY2tcIiwgXCJvbkZvY3VzXCIsIFwicGxhY2Vob2xkZXJcIiwgXCJyZXF1aXJlZFwiLCBcInJvd3NcIiwgXCJzZWxlY3RcIiwgXCJTZWxlY3RQcm9wc1wiLCBcInR5cGVcIiwgXCJ2YWx1ZVwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyByZWZUeXBlLCB1bnN0YWJsZV91c2VJZCBhcyB1c2VJZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBJbnB1dCBmcm9tICcuLi9JbnB1dCc7XG5pbXBvcnQgRmlsbGVkSW5wdXQgZnJvbSAnLi4vRmlsbGVkSW5wdXQnO1xuaW1wb3J0IE91dGxpbmVkSW5wdXQgZnJvbSAnLi4vT3V0bGluZWRJbnB1dCc7XG5pbXBvcnQgSW5wdXRMYWJlbCBmcm9tICcuLi9JbnB1dExhYmVsJztcbmltcG9ydCBGb3JtQ29udHJvbCBmcm9tICcuLi9Gb3JtQ29udHJvbCc7XG5pbXBvcnQgRm9ybUhlbHBlclRleHQgZnJvbSAnLi4vRm9ybUhlbHBlclRleHQnO1xuaW1wb3J0IFNlbGVjdCBmcm9tICcuLi9TZWxlY3QnO1xuaW1wb3J0IHsgZ2V0VGV4dEZpZWxkVXRpbGl0eUNsYXNzIH0gZnJvbSAnLi90ZXh0RmllbGRDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB2YXJpYW50Q29tcG9uZW50ID0ge1xuICBzdGFuZGFyZDogSW5wdXQsXG4gIGZpbGxlZDogRmlsbGVkSW5wdXQsXG4gIG91dGxpbmVkOiBPdXRsaW5lZElucHV0XG59O1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VGV4dEZpZWxkVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBUZXh0RmllbGRSb290ID0gc3R5bGVkKEZvcm1Db250cm9sLCB7XG4gIG5hbWU6ICdNdWlUZXh0RmllbGQnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnJvb3Rcbn0pKHt9KTtcblxuLyoqXG4gKiBUaGUgYFRleHRGaWVsZGAgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciB0aGUgbW9zdCBjb21tb24gY2FzZXMgKDgwJSkuXG4gKiBJdCBjYW5ub3QgYmUgYWxsIHRoaW5ncyB0byBhbGwgcGVvcGxlLCBvdGhlcndpc2UgdGhlIEFQSSB3b3VsZCBncm93IG91dCBvZiBjb250cm9sLlxuICpcbiAqICMjIEFkdmFuY2VkIENvbmZpZ3VyYXRpb25cbiAqXG4gKiBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoYXQgdGhlIHRleHQgZmllbGQgaXMgYSBzaW1wbGUgYWJzdHJhY3Rpb25cbiAqIG9uIHRvcCBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6XG4gKlxuICogLSBbRm9ybUNvbnRyb2xdKC9tYXRlcmlhbC11aS9hcGkvZm9ybS1jb250cm9sLylcbiAqIC0gW0lucHV0TGFiZWxdKC9tYXRlcmlhbC11aS9hcGkvaW5wdXQtbGFiZWwvKVxuICogLSBbRmlsbGVkSW5wdXRdKC9tYXRlcmlhbC11aS9hcGkvZmlsbGVkLWlucHV0LylcbiAqIC0gW091dGxpbmVkSW5wdXRdKC9tYXRlcmlhbC11aS9hcGkvb3V0bGluZWQtaW5wdXQvKVxuICogLSBbSW5wdXRdKC9tYXRlcmlhbC11aS9hcGkvaW5wdXQvKVxuICogLSBbRm9ybUhlbHBlclRleHRdKC9tYXRlcmlhbC11aS9hcGkvZm9ybS1oZWxwZXItdGV4dC8pXG4gKlxuICogSWYgeW91IHdpc2ggdG8gYWx0ZXIgdGhlIHByb3BzIGFwcGxpZWQgdG8gdGhlIGBpbnB1dGAgZWxlbWVudCwgeW91IGNhbiBkbyBzbyBhcyBmb2xsb3dzOlxuICpcbiAqIGBgYGpzeFxuICogY29uc3QgaW5wdXRQcm9wcyA9IHtcbiAqICAgc3RlcDogMzAwLFxuICogfTtcbiAqXG4gKiByZXR1cm4gPFRleHRGaWVsZCBpZD1cInRpbWVcIiB0eXBlPVwidGltZVwiIGlucHV0UHJvcHM9e2lucHV0UHJvcHN9IC8+O1xuICogYGBgXG4gKlxuICogRm9yIGFkdmFuY2VkIGNhc2VzLCBwbGVhc2UgbG9vayBhdCB0aGUgc291cmNlIG9mIFRleHRGaWVsZCBieSBjbGlja2luZyBvbiB0aGVcbiAqIFwiRWRpdCB0aGlzIHBhZ2VcIiBidXR0b24gYWJvdmUuIENvbnNpZGVyIGVpdGhlcjpcbiAqXG4gKiAtIHVzaW5nIHRoZSB1cHBlciBjYXNlIHByb3BzIGZvciBwYXNzaW5nIHZhbHVlcyBkaXJlY3RseSB0byB0aGUgY29tcG9uZW50c1xuICogLSB1c2luZyB0aGUgdW5kZXJseWluZyBjb21wb25lbnRzIGRpcmVjdGx5IGFzIHNob3duIGluIHRoZSBkZW1vc1xuICovXG5jb25zdCBUZXh0RmllbGQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUZXh0RmllbGQoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVRleHRGaWVsZCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGF1dG9Db21wbGV0ZSxcbiAgICAgIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBlcnJvciA9IGZhbHNlLFxuICAgICAgRm9ybUhlbHBlclRleHRQcm9wcyxcbiAgICAgIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAgICAgaGVscGVyVGV4dCxcbiAgICAgIGlkOiBpZE92ZXJyaWRlLFxuICAgICAgSW5wdXRMYWJlbFByb3BzLFxuICAgICAgaW5wdXRQcm9wcyxcbiAgICAgIElucHV0UHJvcHMsXG4gICAgICBpbnB1dFJlZixcbiAgICAgIGxhYmVsLFxuICAgICAgbWF4Um93cyxcbiAgICAgIG1pblJvd3MsXG4gICAgICBtdWx0aWxpbmUgPSBmYWxzZSxcbiAgICAgIG5hbWUsXG4gICAgICBvbkJsdXIsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvbkZvY3VzLFxuICAgICAgcGxhY2Vob2xkZXIsXG4gICAgICByZXF1aXJlZCA9IGZhbHNlLFxuICAgICAgcm93cyxcbiAgICAgIHNlbGVjdCA9IGZhbHNlLFxuICAgICAgU2VsZWN0UHJvcHMsXG4gICAgICB0eXBlLFxuICAgICAgdmFsdWUsXG4gICAgICB2YXJpYW50ID0gJ291dGxpbmVkJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgYXV0b0ZvY3VzLFxuICAgIGNvbG9yLFxuICAgIGRpc2FibGVkLFxuICAgIGVycm9yLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBtdWx0aWxpbmUsXG4gICAgcmVxdWlyZWQsXG4gICAgc2VsZWN0LFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoc2VsZWN0ICYmICFjaGlsZHJlbikge1xuICAgICAgY29uc29sZS5lcnJvcignTVVJOiBgY2hpbGRyZW5gIG11c3QgYmUgcGFzc2VkIHdoZW4gdXNpbmcgdGhlIGBUZXh0RmllbGRgIGNvbXBvbmVudCB3aXRoIGBzZWxlY3RgLicpO1xuICAgIH1cbiAgfVxuICBjb25zdCBJbnB1dE1vcmUgPSB7fTtcbiAgaWYgKHZhcmlhbnQgPT09ICdvdXRsaW5lZCcpIHtcbiAgICBpZiAoSW5wdXRMYWJlbFByb3BzICYmIHR5cGVvZiBJbnB1dExhYmVsUHJvcHMuc2hyaW5rICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgSW5wdXRNb3JlLm5vdGNoZWQgPSBJbnB1dExhYmVsUHJvcHMuc2hyaW5rO1xuICAgIH1cbiAgICBJbnB1dE1vcmUubGFiZWwgPSBsYWJlbDtcbiAgfVxuICBpZiAoc2VsZWN0KSB7XG4gICAgLy8gdW5zZXQgZGVmYXVsdHMgZnJvbSB0ZXh0Ym94IGlucHV0c1xuICAgIGlmICghU2VsZWN0UHJvcHMgfHwgIVNlbGVjdFByb3BzLm5hdGl2ZSkge1xuICAgICAgSW5wdXRNb3JlLmlkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBJbnB1dE1vcmVbJ2FyaWEtZGVzY3JpYmVkYnknXSA9IHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBpZCA9IHVzZUlkKGlkT3ZlcnJpZGUpO1xuICBjb25zdCBoZWxwZXJUZXh0SWQgPSBoZWxwZXJUZXh0ICYmIGlkID8gYCR7aWR9LWhlbHBlci10ZXh0YCA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaW5wdXRMYWJlbElkID0gbGFiZWwgJiYgaWQgPyBgJHtpZH0tbGFiZWxgIDogdW5kZWZpbmVkO1xuICBjb25zdCBJbnB1dENvbXBvbmVudCA9IHZhcmlhbnRDb21wb25lbnRbdmFyaWFudF07XG4gIGNvbnN0IElucHV0RWxlbWVudCA9IC8qI19fUFVSRV9fKi9fanN4KElucHV0Q29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGhlbHBlclRleHRJZCxcbiAgICBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSxcbiAgICBhdXRvRm9jdXM6IGF1dG9Gb2N1cyxcbiAgICBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aCxcbiAgICBtdWx0aWxpbmU6IG11bHRpbGluZSxcbiAgICBuYW1lOiBuYW1lLFxuICAgIHJvd3M6IHJvd3MsXG4gICAgbWF4Um93czogbWF4Um93cyxcbiAgICBtaW5Sb3dzOiBtaW5Sb3dzLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIGlkOiBpZCxcbiAgICBpbnB1dFJlZjogaW5wdXRSZWYsXG4gICAgb25CbHVyOiBvbkJsdXIsXG4gICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgIG9uRm9jdXM6IG9uRm9jdXMsXG4gICAgb25DbGljazogb25DbGljayxcbiAgICBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsXG4gICAgaW5wdXRQcm9wczogaW5wdXRQcm9wc1xuICB9LCBJbnB1dE1vcmUsIElucHV0UHJvcHMpKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhUZXh0RmllbGRSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgZXJyb3I6IGVycm9yLFxuICAgIGZ1bGxXaWR0aDogZnVsbFdpZHRoLFxuICAgIHJlZjogcmVmLFxuICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICBjb2xvcjogY29sb3IsXG4gICAgdmFyaWFudDogdmFyaWFudCxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFtsYWJlbCAhPSBudWxsICYmIGxhYmVsICE9PSAnJyAmJiAvKiNfX1BVUkVfXyovX2pzeChJbnB1dExhYmVsLCBfZXh0ZW5kcyh7XG4gICAgICBodG1sRm9yOiBpZCxcbiAgICAgIGlkOiBpbnB1dExhYmVsSWRcbiAgICB9LCBJbnB1dExhYmVsUHJvcHMsIHtcbiAgICAgIGNoaWxkcmVuOiBsYWJlbFxuICAgIH0pKSwgc2VsZWN0ID8gLyojX19QVVJFX18qL19qc3goU2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogaGVscGVyVGV4dElkLFxuICAgICAgaWQ6IGlkLFxuICAgICAgbGFiZWxJZDogaW5wdXRMYWJlbElkLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgaW5wdXQ6IElucHV0RWxlbWVudFxuICAgIH0sIFNlbGVjdFByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogY2hpbGRyZW5cbiAgICB9KSkgOiBJbnB1dEVsZW1lbnQsIGhlbHBlclRleHQgJiYgLyojX19QVVJFX18qL19qc3goRm9ybUhlbHBlclRleHQsIF9leHRlbmRzKHtcbiAgICAgIGlkOiBoZWxwZXJUZXh0SWRcbiAgICB9LCBGb3JtSGVscGVyVGV4dFByb3BzLCB7XG4gICAgICBjaGlsZHJlbjogaGVscGVyVGV4dFxuICAgIH0pKV1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUZXh0RmllbGQucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhpcyBwcm9wIGhlbHBzIHVzZXJzIHRvIGZpbGwgZm9ybXMgZmFzdGVyLCBlc3BlY2lhbGx5IG9uIG1vYmlsZSBkZXZpY2VzLlxuICAgKiBUaGUgbmFtZSBjYW4gYmUgY29uZnVzaW5nLCBhcyBpdCdzIG1vcmUgbGlrZSBhbiBhdXRvZmlsbC5cbiAgICogWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IGl0IFtmb2xsb3dpbmcgdGhlIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI2F1dG9maWxsKS5cbiAgICovXG4gIGF1dG9Db21wbGV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgZWxlbWVudCBpcyBmb2N1c2VkIGR1cmluZyB0aGUgZmlyc3QgbW91bnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZS4gVXNlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgY29udHJvbGxlZC5cbiAgICovXG4gIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxhYmVsIGlzIGRpc3BsYXllZCBpbiBhbiBlcnJvciBzdGF0ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIFtgRm9ybUhlbHBlclRleHRgXSgvbWF0ZXJpYWwtdWkvYXBpL2Zvcm0taGVscGVyLXRleHQvKSBlbGVtZW50LlxuICAgKi9cbiAgRm9ybUhlbHBlclRleHRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGlucHV0IHdpbGwgdGFrZSB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBoZWxwZXIgdGV4dCBjb250ZW50LlxuICAgKi9cbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogVXNlIHRoaXMgcHJvcCB0byBtYWtlIGBsYWJlbGAgYW5kIGBoZWxwZXJUZXh0YCBhY2Nlc3NpYmxlIGZvciBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgW2BJbnB1dExhYmVsYF0oL21hdGVyaWFsLXVpL2FwaS9pbnB1dC1sYWJlbC8pIGVsZW1lbnQuXG4gICAqIFBvaW50ZXIgZXZlbnRzIGxpa2UgYG9uQ2xpY2tgIGFyZSBlbmFibGVkIGlmIGFuZCBvbmx5IGlmIGBzaHJpbmtgIGlzIGB0cnVlYC5cbiAgICovXG4gIElucHV0TGFiZWxQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFtBdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjQXR0cmlidXRlcykgYXBwbGllZCB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIElucHV0IGVsZW1lbnQuXG4gICAqIEl0IHdpbGwgYmUgYSBbYEZpbGxlZElucHV0YF0oL21hdGVyaWFsLXVpL2FwaS9maWxsZWQtaW5wdXQvKSxcbiAgICogW2BPdXRsaW5lZElucHV0YF0oL21hdGVyaWFsLXVpL2FwaS9vdXRsaW5lZC1pbnB1dC8pIG9yIFtgSW5wdXRgXSgvbWF0ZXJpYWwtdWkvYXBpL2lucHV0LylcbiAgICogY29tcG9uZW50IGRlcGVuZGluZyBvbiB0aGUgYHZhcmlhbnRgIHByb3AgdmFsdWUuXG4gICAqL1xuICBJbnB1dFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogUGFzcyBhIHJlZiB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgaW5wdXRSZWY6IHJlZlR5cGUsXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgY29udGVudC5cbiAgICovXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIElmIGBkZW5zZWAgb3IgYG5vcm1hbGAsIHdpbGwgYWRqdXN0IHZlcnRpY2FsIHNwYWNpbmcgb2YgdGhpcyBhbmQgY29udGFpbmVkIGNvbXBvbmVudHMuXG4gICAqIEBkZWZhdWx0ICdub25lJ1xuICAgKi9cbiAgbWFyZ2luOiBQcm9wVHlwZXMub25lT2YoWydkZW5zZScsICdub25lJywgJ25vcm1hbCddKSxcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSB3aGVuIG11bHRpbGluZSBvcHRpb24gaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBtYXhSb3dzOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aWxpbmUgb3B0aW9uIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgbWluUm93czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBhIGB0ZXh0YXJlYWAgZWxlbWVudCBpcyByZW5kZXJlZCBpbnN0ZWFkIG9mIGFuIGlucHV0LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbXVsdGlsaW5lOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE5hbWUgYXR0cmlidXRlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIHZhbHVlIGlzIGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICogWW91IGNhbiBwdWxsIG91dCB0aGUgbmV3IHZhbHVlIGJ5IGFjY2Vzc2luZyBgZXZlbnQudGFyZ2V0LnZhbHVlYCAoc3RyaW5nKS5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBUaGUgc2hvcnQgaGludCBkaXNwbGF5ZWQgaW4gdGhlIGBpbnB1dGAgYmVmb3JlIHRoZSB1c2VyIGVudGVycyBhIHZhbHVlLlxuICAgKi9cbiAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsYWJlbCBpcyBkaXNwbGF5ZWQgYXMgcmVxdWlyZWQgYW5kIHRoZSBgaW5wdXRgIGVsZW1lbnQgaXMgcmVxdWlyZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cyB0byBkaXNwbGF5IHdoZW4gbXVsdGlsaW5lIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIHJvd3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFJlbmRlciBhIFtgU2VsZWN0YF0oL21hdGVyaWFsLXVpL2FwaS9zZWxlY3QvKSBlbGVtZW50IHdoaWxlIHBhc3NpbmcgdGhlIElucHV0IGVsZW1lbnQgdG8gYFNlbGVjdGAgYXMgYGlucHV0YCBwYXJhbWV0ZXIuXG4gICAqIElmIHRoaXMgb3B0aW9uIGlzIHNldCB5b3UgbXVzdCBwYXNzIHRoZSBvcHRpb25zIG9mIHRoZSBzZWxlY3QgYXMgY2hpbGRyZW4uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBzZWxlY3Q6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgW2BTZWxlY3RgXSgvbWF0ZXJpYWwtdWkvYXBpL3NlbGVjdC8pIGVsZW1lbnQuXG4gICAqL1xuICBTZWxlY3RQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ21lZGl1bScsICdzbWFsbCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVHlwZSBvZiB0aGUgYGlucHV0YCBlbGVtZW50LiBJdCBzaG91bGQgYmUgW2EgdmFsaWQgSFRNTDUgaW5wdXQgdHlwZV0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0Zvcm1fJTNDaW5wdXQlM0VfdHlwZXMpLlxuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQsIHJlcXVpcmVkIGZvciBhIGNvbnRyb2xsZWQgY29tcG9uZW50LlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICdvdXRsaW5lZCdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcy5vbmVPZihbJ2ZpbGxlZCcsICdvdXRsaW5lZCcsICdzdGFuZGFyZCddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFRleHRGaWVsZDsiLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiJdLCJuYW1lcyI6WyJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZXhwb3J0cyIsIl9jcmVhdGVTdmdJY29uIiwiX2pzeFJ1bnRpbWUiLCJfZGVmYXVsdCIsImRlZmF1bHQiLCJqc3giLCJkIiwiZ2V0Rm9ybUhlbHBlclRleHRVdGlsaXR5Q2xhc3NlcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfc3BhbiIsIl9leGNsdWRlZCIsIkZvcm1IZWxwZXJUZXh0Um9vdCIsInN0eWxlZCIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwib3duZXJTdGF0ZSIsInJvb3QiLCJzaXplIiwiY2FwaXRhbGl6ZSIsImNvbnRhaW5lZCIsImZpbGxlZCIsInRoZW1lIiwiY29sb3IiLCJ2YXJzIiwicGFsZXR0ZSIsInRleHQiLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiY2FwdGlvbiIsInRleHRBbGlnbiIsIm1hcmdpblRvcCIsIm1hcmdpblJpZ2h0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCIsImRpc2FibGVkIiwiZXJyb3IiLCJtYWluIiwiaW5Qcm9wcyIsInJlZiIsInVzZVRoZW1lUHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImNvbXBvbmVudCIsIm90aGVyIiwibXVpRm9ybUNvbnRyb2wiLCJ1c2VGb3JtQ29udHJvbCIsImZjcyIsImZvcm1Db250cm9sU3RhdGUiLCJzdGF0ZXMiLCJ2YXJpYW50IiwiZm9jdXNlZCIsInJlcXVpcmVkIiwiY2xhc3NlcyIsInNsb3RzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImFzIiwiZ2V0VGV4dEZpZWxkVXRpbGl0eUNsYXNzIiwidmFyaWFudENvbXBvbmVudCIsInN0YW5kYXJkIiwiSW5wdXQiLCJGaWxsZWRJbnB1dCIsIm91dGxpbmVkIiwiT3V0bGluZWRJbnB1dCIsIlRleHRGaWVsZFJvb3QiLCJGb3JtQ29udHJvbCIsImF1dG9Db21wbGV0ZSIsImF1dG9Gb2N1cyIsImRlZmF1bHRWYWx1ZSIsIkZvcm1IZWxwZXJUZXh0UHJvcHMiLCJmdWxsV2lkdGgiLCJoZWxwZXJUZXh0IiwiaWQiLCJpZE92ZXJyaWRlIiwiSW5wdXRMYWJlbFByb3BzIiwiaW5wdXRQcm9wcyIsIklucHV0UHJvcHMiLCJpbnB1dFJlZiIsImxhYmVsIiwibWF4Um93cyIsIm1pblJvd3MiLCJtdWx0aWxpbmUiLCJvbkJsdXIiLCJvbkNoYW5nZSIsIm9uQ2xpY2siLCJvbkZvY3VzIiwicGxhY2Vob2xkZXIiLCJyb3dzIiwic2VsZWN0IiwiU2VsZWN0UHJvcHMiLCJ0eXBlIiwidmFsdWUiLCJJbnB1dE1vcmUiLCJzaHJpbmsiLCJub3RjaGVkIiwibmF0aXZlIiwidW5kZWZpbmVkIiwidXNlSWQiLCJoZWxwZXJUZXh0SWQiLCJpbnB1dExhYmVsSWQiLCJJbnB1dENvbXBvbmVudCIsIklucHV0RWxlbWVudCIsIklucHV0TGFiZWwiLCJodG1sRm9yIiwiU2VsZWN0IiwibGFiZWxJZCIsImlucHV0IiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwibW9kdWxlIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJQcm9wVHlwZXMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7596.c395ef9a.js b/react_frontend/static/react_frontend/js/7596.c395ef9a.js new file mode 100644 index 000000000..d075c85f6 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7596.c395ef9a.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7596],{6206:(t,e,n)=>{n.r(e),n.d(e,{default:()=>v});var r=n(6540),l=n(8532),o=n(4719),a=n(4761),i=n(2230),s=n(5556),c=n.n(s),u=n(8729),f=n(8130),d=n(7229),y=n(8160),p=n(958),x=n(284),m=n(4078),b=n(4848);function j(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,l,o,a,i=[],s=!0,c=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(i.push(r.value),i.length!==e);s=!0);}catch(t){c=!0,l=t}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw l}}return i}}(t,e)||function(t,e){if(t){if("string"==typeof t)return h(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n{n.r(t),n.d(t,{default:()=>d});var r,o=n(6540),s=n(6632),i=n(1224),l=n(2848),a=n(973),c=n(4848);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,s,i,l=[],a=!0,c=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;a=!1}else for(;!(a=(r=s.call(n)).done)&&(l.push(r.value),l.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw o}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{t.r(n),t.d(n,{defaultEditorSourceCode:()=>o,monacoEditorThemeList:()=>i,pylint_convention:()=>l,pylint_error:()=>a,pylint_fatal:()=>d,pylint_refactor:()=>p,pylint_warning:()=>c,resizeList:()=>r});var r=["min","max"],i=["vs-dark"],o="import WebGUI\nimport HAL\nimport Frequency\n# Enter sequential code!\n\nwhile True:\n # Enter iterative code!\n Frequency.tick()\n\n",a=["E0401","E1101"],c=["W0611"],l=["C0114","C0303","C0304","C0305","C0411"],p=[],d=[]}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzY2NC5kZTY5NWQ1NC5qcyIsIm1hcHBpbmdzIjoib1RBQU8sSUFBTUEsRUFBYSxDQUFDLE1BQU8sT0FDckJDLEVBQXdCLENBQUMsV0FDekJDLEVBQTBCLDhJQWMxQkMsRUFBZSxDQUFDLFFBQVMsU0FDekJDLEVBQWlCLENBQUMsU0FDbEJDLEVBQW9CLENBQUMsUUFBUyxRQUFTLFFBQVMsUUFBUyxTQUN6REMsRUFBa0IsR0FDbEJDLEVBQWUsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yL2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcmVzaXplTGlzdCA9IFtcIm1pblwiLCBcIm1heFwiXTtcclxuZXhwb3J0IGNvbnN0IG1vbmFjb0VkaXRvclRoZW1lTGlzdCA9IFtcInZzLWRhcmtcIl07XHJcbmV4cG9ydCBjb25zdCBkZWZhdWx0RWRpdG9yU291cmNlQ29kZSA9IGBpbXBvcnQgV2ViR1VJXHJcbmltcG9ydCBIQUxcclxuaW1wb3J0IEZyZXF1ZW5jeVxyXG4jIEVudGVyIHNlcXVlbnRpYWwgY29kZSFcclxuXHJcbndoaWxlIFRydWU6XHJcbiAgICAjIEVudGVyIGl0ZXJhdGl2ZSBjb2RlIVxyXG4gICAgRnJlcXVlbmN5LnRpY2soKVxyXG5cclxuYDtcclxuXHJcbi8vIEtub3cgYWJvdXQgcHlsaW50IEVycm9ycyB3aXRoIHR5cGVcclxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vY29kZXplcnJvL2Y3ZjY5NjcwMmVlN2VhMTI3ODJkOWFmM2Y5YmI0ZjRjXHJcbi8vIHB5bGludCBkaXNhYmxlIGVycm9yXHJcbmV4cG9ydCBjb25zdCBweWxpbnRfZXJyb3IgPSBbXCJFMDQwMVwiLCBcIkUxMTAxXCJdO1xyXG5leHBvcnQgY29uc3QgcHlsaW50X3dhcm5pbmcgPSBbXCJXMDYxMVwiXTtcclxuZXhwb3J0IGNvbnN0IHB5bGludF9jb252ZW50aW9uID0gW1wiQzAxMTRcIiwgXCJDMDMwM1wiLCBcIkMwMzA0XCIsIFwiQzAzMDVcIiwgXCJDMDQxMVwiXTtcclxuZXhwb3J0IGNvbnN0IHB5bGludF9yZWZhY3RvciA9IFtdO1xyXG5leHBvcnQgY29uc3QgcHlsaW50X2ZhdGFsID0gW107Il0sIm5hbWVzIjpbInJlc2l6ZUxpc3QiLCJtb25hY29FZGl0b3JUaGVtZUxpc3QiLCJkZWZhdWx0RWRpdG9yU291cmNlQ29kZSIsInB5bGludF9lcnJvciIsInB5bGludF93YXJuaW5nIiwicHlsaW50X2NvbnZlbnRpb24iLCJweWxpbnRfcmVmYWN0b3IiLCJweWxpbnRfZmF0YWwiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7748.8add31d8.js b/react_frontend/static/react_frontend/js/7748.8add31d8.js new file mode 100644 index 000000000..f040fc623 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7748.8add31d8.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7748],{7748:(t,e,n)=>{function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);nc});var a=28,o=77,i=null,l=null;function c(t,e,n){(i=(l=t).getContext("2d")).clearRect(0,0,l.width,l.height),i.beginPath(),i.fillStyle="black",i.fillRect(l.width/2-a/2,l.height/2-o/2,a,o),i.stroke(),i.closePath(),e.length&&(h(e[0],n[0],"f","#FF0000"),h(e[1],n[1],"r","#F7FF00"),h(e[2],n[2],"b","#0FFF00"))}function h(t,e,n,c){var h=0,f=0;switch(i.strokeStyle=c,n){case"f":h=l.width/2,f=l.height/2-o/2+16;break;case"r":h=l.width/2+a/2,f=l.height/2;break;case"b":h=l.width/2,f=l.height/2+o/2}e*=.53;var s,b=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return r(t,e);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var a=0,o=function(){};return{s:o,n:function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return l=t.done,t},e:function(t){c=!0,i=t},f:function(){try{l||null==n.return||n.return()}finally{if(c)throw i}}}}(t);try{for(b.s();!(s=b.n()).done;){var d=s.value;d[0]*=.53;var v=null,y=null;d[0]>e?(v=f-e*Math.sin(d[1]),y=h+e*Math.cos(d[1])):(v=f-d[0]*Math.sin(d[1]),y=h+d[0]*Math.cos(d[1]));var g=void 0;switch(n){case"f":break;case"r":y=(g=u(h,f,y,v,-90))[0],v=g[1];break;case"b":y=(g=u(h,f,y,v,180))[0],v=g[1]}i.beginPath(),i.moveTo(h,f),i.lineTo(y,v),i.stroke(),i.closePath()}}catch(t){b.e(t)}finally{b.f()}}function u(t,e,n,r,a){var o=Math.PI/180*a,i=Math.cos(o),l=Math.sin(o);return[i*(n-t)+l*(r-e)+t,i*(r-e)-l*(n-t)+e]}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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dGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9hdXRvcGFya2luZy9yZWFjdC1jb21wb25lbnRzL21hcF92aWV3LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFJldHJlaXZlIHRoZSBjYW52YXMgZWxlbWVudHMgYW5kIGNvbnRleHRcclxubGV0IGNhcldpZHRoID0gMjg7XHJcbmxldCBjYXJIZWlnaHQgPSA3NztcclxubGV0IGN0eD0gbnVsbFxyXG5sZXQgbWFwQ2FudmFzID0gbnVsbFxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhaW50RXZlbnQoY2FudmFzLCBsYXNlcnMsIHJhbmdlcykge1xyXG4gICAgbWFwQ2FudmFzID0gY2FudmFzXHJcbiAgICBjdHggPSBtYXBDYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xyXG5cclxuXHJcbiAgY3R4LmNsZWFyUmVjdCgwLCAwLCBtYXBDYW52YXMud2lkdGgsIG1hcENhbnZhcy5oZWlnaHQpO1xyXG5cclxuICAvLyBEcmF3IENhclxyXG4gIGRyYXdDYXIoKTtcclxuICAvLyBEcmF3IExhc2VyXHJcbiAgaWYgKGxhc2Vycy5sZW5ndGgpe1xyXG4gIGRyYXdMYXNlcihsYXNlcnNbMF0sIHJhbmdlc1swXSwgXCJmXCIsIFwiI0ZGMDAwMFwiKTtcclxuICBkcmF3TGFzZXIobGFzZXJzWzFdLCByYW5nZXNbMV0sIFwiclwiLCBcIiNGN0ZGMDBcIik7XHJcbiAgZHJhd0xhc2VyKGxhc2Vyc1syXSwgcmFuZ2VzWzJdLCBcImJcIiwgXCIjMEZGRjAwXCIpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0NhcigpIHtcclxuXHJcbiAgY3R4LmJlZ2luUGF0aCgpO1xyXG5cclxuICAvLyBDaGFzc2lzXHJcbiAgY3R4LmZpbGxTdHlsZSA9IFwiYmxhY2tcIjtcclxuICBjdHguZmlsbFJlY3QoXHJcbiAgICBtYXBDYW52YXMud2lkdGggLyAyIC0gY2FyV2lkdGggLyAyLFxyXG4gICAgbWFwQ2FudmFzLmhlaWdodCAvIDIgLSBjYXJIZWlnaHQgLyAyLFxyXG4gICAgY2FyV2lkdGgsXHJcbiAgICBjYXJIZWlnaHRcclxuICApO1xyXG5cclxuICBjdHguc3Ryb2tlKCk7XHJcblxyXG4gIGN0eC5jbG9zZVBhdGgoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0xhc2VyKGxhc2VyLCBtYXhfcmFuZ2UsIHBvcywgY29sb3IpIHtcclxuICBsZXQgb3JpZ2lueCA9IDA7XHJcbiAgbGV0IG9yaWdpbnkgPSAwO1xyXG4gIGxldCByZXNpemVGYWN0b3IgPSAwLjUzO1xyXG4gIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yO1xyXG4gIHN3aXRjaCAocG9zKSB7XHJcbiAgICBjYXNlIFwiZlwiOlxyXG4gICAgICBvcmlnaW54ID0gbWFwQ2FudmFzLndpZHRoIC8gMjtcclxuICAgICAgb3JpZ2lueSA9IG1hcENhbnZhcy5oZWlnaHQgLyAyIC0gY2FySGVpZ2h0IC8gMiArIDE2O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgXCJyXCI6XHJcbiAgICAgIG9yaWdpbnggPSBtYXBDYW52YXMud2lkdGggLyAyICsgY2FyV2lkdGggLyAyO1xyXG4gICAgICBvcmlnaW55ID0gbWFwQ2FudmFzLmhlaWdodCAvIDI7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSBcImJcIjpcclxuICAgICAgb3JpZ2lueCA9IG1hcENhbnZhcy53aWR0aCAvIDI7XHJcbiAgICAgIG9yaWdpbnkgPSBtYXBDYW52YXMuaGVpZ2h0IC8gMiArIGNhckhlaWdodCAvIDI7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuXHJcbiAgLy8gUmVzaXplcyB0aGUgbGFzZXJzXHJcbiAgbWF4X3JhbmdlICo9IHJlc2l6ZUZhY3RvcjtcclxuXHJcbiAgZm9yIChsZXQgZCBvZiBsYXNlcikge1xyXG4gICAgZFswXSAqPSByZXNpemVGYWN0b3I7XHJcbiAgICBsZXQgcHkgPSBudWxsO1xyXG4gICAgbGV0IHB4ID0gbnVsbDtcclxuXHJcbiAgICBpZiAoZFswXSA+IG1heF9yYW5nZSkge1xyXG4gICAgICBweSA9IG9yaWdpbnkgLSBtYXhfcmFuZ2UgKiBNYXRoLnNpbihkWzFdKTtcclxuICAgICAgcHggPSBvcmlnaW54ICsgbWF4X3JhbmdlICogTWF0aC5jb3MoZFsxXSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBweSA9IG9yaWdpbnkgLSBkWzBdICogTWF0aC5zaW4oZFsxXSk7XHJcbiAgICAgIHB4ID0gb3JpZ2lueCArIGRbMF0gKiBNYXRoLmNvcyhkWzFdKTtcclxuICAgIH1cclxuICAgIC8vIFJvdGF0ZXMgZm9yIHJpZ2h0IGFuZCBiYWNrIGxhc2Vyc1xyXG4gICAgbGV0IHJvdGF0ZWRQb2ludHM7XHJcbiAgICBzd2l0Y2ggKHBvcykge1xyXG4gICAgICBjYXNlIFwiZlwiOlxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiclwiOlxyXG4gICAgICAgIHJvdGF0ZWRQb2ludHMgPSByb3RhdGUob3JpZ2lueCwgb3JpZ2lueSwgcHgsIHB5LCAtOTApO1xyXG4gICAgICAgIHB4ID0gcm90YXRlZFBvaW50c1swXTtcclxuICAgICAgICBweSA9IHJvdGF0ZWRQb2ludHNbMV07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJiXCI6XHJcbiAgICAgICAgcm90YXRlZFBvaW50cyA9IHJvdGF0ZShvcmlnaW54LCBvcmlnaW55LCBweCwgcHksIDE4MCk7XHJcbiAgICAgICAgcHggPSByb3RhdGVkUG9pbnRzWzBdO1xyXG4gICAgICAgIHB5ID0gcm90YXRlZFBvaW50c1sxXTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBjdHguYmVnaW5QYXRoKCk7XHJcbiAgICBjdHgubW92ZVRvKG9yaWdpbngsIG9yaWdpbnkpO1xyXG4gICAgY3R4LmxpbmVUbyhweCwgcHkpO1xyXG4gICAgY3R4LnN0cm9rZSgpO1xyXG5cclxuICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICB9XHJcbn1cclxuXHJcbi8vIFJvdGF0ZXMgdGhlIHBvaW50XHJcbmZ1bmN0aW9uIHJvdGF0ZShjeCwgY3ksIHgsIHksIGFuZ2xlKSB7XHJcbiAgbGV0IHJhZGlhbnMgPSAoTWF0aC5QSSAvIDE4MCkgKiBhbmdsZTtcclxuICBsZXQgY29zID0gTWF0aC5jb3MocmFkaWFucyk7XHJcbiAgbGV0IHNpbiA9IE1hdGguc2luKHJhZGlhbnMpO1xyXG4gIGxldCBueCA9IGNvcyAqICh4IC0gY3gpICsgc2luICogKHkgLSBjeSkgKyBjeDtcclxuICBsZXQgbnkgPSBjb3MgKiAoeSAtIGN5KSAtIHNpbiAqICh4IC0gY3gpICsgY3k7XHJcbiAgcmV0dXJuIFtueCwgbnldO1xyXG59Il0sIm5hbWVzIjpbImNhcldpZHRoIiwiY2FySGVpZ2h0IiwiY3R4IiwibWFwQ2FudmFzIiwicGFpbnRFdmVudCIsImNhbnZhcyIsImxhc2VycyIsInJhbmdlcyIsImdldENvbnRleHQiLCJjbGVhclJlY3QiLCJ3aWR0aCIsImhlaWdodCIsImJlZ2luUGF0aCIsImZpbGxTdHlsZSIsImZpbGxSZWN0Iiwic3Ryb2tlIiwiY2xvc2VQYXRoIiwibGVuZ3RoIiwiZHJhd0xhc2VyIiwibGFzZXIiLCJtYXhfcmFuZ2UiLCJwb3MiLCJjb2xvciIsIm9yaWdpbngiLCJvcmlnaW55Iiwic3Ryb2tlU3R5bGUiLCJfc3RlcCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwicyIsIm4iLCJkb25lIiwiZCIsInZhbHVlIiwicHkiLCJweCIsIk1hdGgiLCJzaW4iLCJjb3MiLCJyb3RhdGVkUG9pbnRzIiwicm90YXRlIiwibW92ZVRvIiwibGluZVRvIiwiZXJyIiwiZSIsImYiLCJjeCIsImN5IiwieCIsInkiLCJhbmdsZSIsInJhZGlhbnMiLCJQSSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7786.1bdfce60.js b/react_frontend/static/react_frontend/js/7786.1bdfce60.js new file mode 100644 index 000000000..165a72138 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7786.1bdfce60.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7786],{7786:(e,n,r)=>{r.r(n),r.d(n,{filterLineNumber:()=>i,monacoEditorGlyph:()=>t,renderGlyphs:()=>o});var t=function(e){var n=e.monaco,r=e.editor,t=e.setLineNumber;r.onMouseDown((function(e){var r=e.target;if(r&&r.type===n.editor.MouseTargetType.GUTTER_GLYPH_MARGIN){var o=r.position.lineNumber;t(o)}}))},o=function(e,n){var r=[];n&&(n.forEach((function(e,n){var t={range:new monaco.Range(e,1,e,1),options:{glyphMarginClassName:"glyph-indicator",glyphMarginHoverMessage:{value:""}}};r.push(t)})),e.current.set(r))},i=function(e){var n,r=e.lineNumberDecorations,t=e.lineNumber,o=e.maxEditorRows;return n=r.filter((function(e){return e<=o})),-1===t||(n.find((function(e){return e===t}))?n=n.filter((function(e){return e!==t})):n.push(t)),n}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzc4Ni43Zjk2YTJkYi5qcyIsIm1hcHBpbmdzIjoia01BQU8sSUFBTUEsRUFBb0IsU0FBSEMsR0FBMEMsSUFBcENDLEVBQU1ELEVBQU5DLE9BQVFDLEVBQU1GLEVBQU5FLE9BQVFDLEVBQWFILEVBQWJHLGNBQ2xERCxFQUFPRSxhQUFZLFNBQUNDLEdBQ2xCLElBQU1DLEVBQVNELEVBQU1DLE9BR3JCLEdBQ0VBLEdBQ0FBLEVBQU9DLE9BQVNOLEVBQU9DLE9BQU9NLGdCQUFnQkMsb0JBQzlDLENBQ0EsSUFBTUMsRUFBYUosRUFBT0ssU0FBU0QsV0FFbkNQLEVBQWNPLEVBQ2hCLENBQ0YsR0FDRixFQUVhRSxFQUFlLFNBQzFCQyxFQUNBQyxHQUVBLElBQU1DLEVBQVksR0FDYkQsSUFFTEEsRUFBeUJFLFNBQVEsU0FBQ0MsRUFBTUMsR0FDdEMsSUFBTUMsRUFBZ0IsQ0FDcEJDLE1BQU8sSUFBSW5CLE9BQU9vQixNQUFNSixFQUFNLEVBQUdBLEVBQU0sR0FDdkNLLFFBQVMsQ0FDUEMscUJBQXNCLGtCQUN0QkMsd0JBQXlCLENBQ3ZCQyxNQUFPLE1BSWJWLEVBQVVXLEtBQUtQLEVBQ2pCLElBR0FOLEVBQXdCYyxRQUFRQyxJQUFJYixHQUN0QyxFQUdhYyxFQUFtQixTQUFIQyxHQUl2QixJQUNBaEIsRUFKSmlCLEVBQXFCRCxFQUFyQkMsc0JBQ0FyQixFQUFVb0IsRUFBVnBCLFdBQ0FzQixFQUFhRixFQUFiRSxjQVNBLE9BSkFsQixFQUEyQmlCLEVBQXNCRSxRQUMvQyxTQUFDaEIsR0FBSSxPQUFLQSxHQUFRZSxDQUFhLEtBR2IsSUFBaEJ0QixJQUd1QkksRUFBeUJvQixNQUNsRCxTQUFDakIsR0FBSSxPQUFLQSxJQUFTUCxDQUFVLElBTTdCSSxFQUEyQkEsRUFBeUJtQixRQUNsRCxTQUFDaEIsR0FBSSxPQUFLQSxJQUFTUCxDQUFVLElBRTFCSSxFQUF5QlksS0FBS2hCLElBYlBJLENBZ0JoQyxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9lZGl0b3JzL21vbmFjby1lZGl0b3IvaGVscGVyL21vbmFjb0VkaXRvckdseXBoLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBtb25hY29FZGl0b3JHbHlwaCA9ICh7IG1vbmFjbywgZWRpdG9yLCBzZXRMaW5lTnVtYmVyIH0pID0+IHtcclxuICBlZGl0b3Iub25Nb3VzZURvd24oKGV2ZW50KSA9PiB7XHJcbiAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgdGhlIGNsaWNrIGhhcHBlbmVkIGluIHRoZSBnbHlwaCBtYXJnaW5cclxuICAgIGlmIChcclxuICAgICAgdGFyZ2V0ICYmXHJcbiAgICAgIHRhcmdldC50eXBlID09PSBtb25hY28uZWRpdG9yLk1vdXNlVGFyZ2V0VHlwZS5HVVRURVJfR0xZUEhfTUFSR0lOXHJcbiAgICApIHtcclxuICAgICAgY29uc3QgbGluZU51bWJlciA9IHRhcmdldC5wb3NpdGlvbi5saW5lTnVtYmVyO1xyXG5cclxuICAgICAgc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKTtcclxuICAgIH1cclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCByZW5kZXJHbHlwaHMgPSAoXHJcbiAgbGluZU51bWJlckRlY29yYXRpb25SZWYsXHJcbiAgYWxsTGluZU51bWJlckRlY29yYXRpb25zXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbEdseXBocyA9IFtdO1xyXG4gIGlmICghYWxsTGluZU51bWJlckRlY29yYXRpb25zKSByZXR1cm47XHJcblxyXG4gIGFsbExpbmVOdW1iZXJEZWNvcmF0aW9ucy5mb3JFYWNoKChsaW5lLCBpKSA9PiB7XHJcbiAgICBjb25zdCBuZXdEZWNvcmF0aW9uID0ge1xyXG4gICAgICByYW5nZTogbmV3IG1vbmFjby5SYW5nZShsaW5lLCAxLCBsaW5lLCAxKSxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIGdseXBoTWFyZ2luQ2xhc3NOYW1lOiBcImdseXBoLWluZGljYXRvclwiLFxyXG4gICAgICAgIGdseXBoTWFyZ2luSG92ZXJNZXNzYWdlOiB7XHJcbiAgICAgICAgICB2YWx1ZTogYGAsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBhbGxHbHlwaHMucHVzaChuZXdEZWNvcmF0aW9uKTtcclxuICB9KTtcclxuXHJcbiAgLy8gQWRkIHRoZSBuZXcgZGVjb3JhdGlvbiB0byB0aGUgZGVjb3JhdGlvbnMgY29sbGVjdGlvblxyXG4gIGxpbmVOdW1iZXJEZWNvcmF0aW9uUmVmLmN1cnJlbnQuc2V0KGFsbEdseXBocyk7XHJcbn07XHJcblxyXG4vLyBmaWx0ZXIgbGluZSBudW1iZXJcclxuZXhwb3J0IGNvbnN0IGZpbHRlckxpbmVOdW1iZXIgPSAoe1xyXG4gIGxpbmVOdW1iZXJEZWNvcmF0aW9ucyxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG1heEVkaXRvclJvd3MsXHJcbn0pID0+IHtcclxuICBsZXQgYWxsTGluZU51bWJlckRlY29yYXRpb25zO1xyXG5cclxuICAvLyBGaWx0ZXIgYWxsIG5vIGV4aXN0aW5nIHJvd3NcclxuICBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMgPSBsaW5lTnVtYmVyRGVjb3JhdGlvbnMuZmlsdGVyKFxyXG4gICAgKGxpbmUpID0+IGxpbmUgPD0gbWF4RWRpdG9yUm93c1xyXG4gICk7XHJcblxyXG4gIGlmIChsaW5lTnVtYmVyID09PSAtMSkgcmV0dXJuIGFsbExpbmVOdW1iZXJEZWNvcmF0aW9ucztcclxuXHJcbiAgLy8gY2hlY2sgbGluZSBudW1iZXIgZXhpc3RpbmdcclxuICBjb25zdCBsaW5lTnVtYmVyRXhpc3RpbmcgPSBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMuZmluZChcclxuICAgIChsaW5lKSA9PiBsaW5lID09PSBsaW5lTnVtYmVyXHJcbiAgKTtcclxuXHJcbiAgLy8gY2hlY2sgaWYgbGluZU51bWJlciBhbHJlYWR5IGV4aXN0LCB0aGVuIHJlbW92ZSBmcm9tIGxpc3QgYW5kIHJlbmRlciBnbHlwaHNcclxuICAvLyBvdGhlcndpc2UgYWRkIHRvIGxpc3QgYW5kIHJlbmRlciBnbHlwaHNcclxuICBpZiAobGluZU51bWJlckV4aXN0aW5nKSB7XHJcbiAgICBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMgPSBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMuZmlsdGVyKFxyXG4gICAgICAobGluZSkgPT4gbGluZSAhPT0gbGluZU51bWJlclxyXG4gICAgKTtcclxuICB9IGVsc2UgYWxsTGluZU51bWJlckRlY29yYXRpb25zLnB1c2gobGluZU51bWJlcik7XHJcblxyXG4gIHJldHVybiBhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnM7XHJcbn07XHJcbiJdLCJuYW1lcyI6WyJtb25hY29FZGl0b3JHbHlwaCIsIl9yZWYiLCJtb25hY28iLCJlZGl0b3IiLCJzZXRMaW5lTnVtYmVyIiwib25Nb3VzZURvd24iLCJldmVudCIsInRhcmdldCIsInR5cGUiLCJNb3VzZVRhcmdldFR5cGUiLCJHVVRURVJfR0xZUEhfTUFSR0lOIiwibGluZU51bWJlciIsInBvc2l0aW9uIiwicmVuZGVyR2x5cGhzIiwibGluZU51bWJlckRlY29yYXRpb25SZWYiLCJhbGxMaW5lTnVtYmVyRGVjb3JhdGlvbnMiLCJhbGxHbHlwaHMiLCJmb3JFYWNoIiwibGluZSIsImkiLCJuZXdEZWNvcmF0aW9uIiwicmFuZ2UiLCJSYW5nZSIsIm9wdGlvbnMiLCJnbHlwaE1hcmdpbkNsYXNzTmFtZSIsImdseXBoTWFyZ2luSG92ZXJNZXNzYWdlIiwidmFsdWUiLCJwdXNoIiwiY3VycmVudCIsInNldCIsImZpbHRlckxpbmVOdW1iZXIiLCJfcmVmMiIsImxpbmVOdW1iZXJEZWNvcmF0aW9ucyIsIm1heEVkaXRvclJvd3MiLCJmaWx0ZXIiLCJmaW5kIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7820.5d3bd8cb.js b/react_frontend/static/react_frontend/js/7820.5d3bd8cb.js new file mode 100644 index 000000000..1d654f059 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7820.5d3bd8cb.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7820],{7820:(n,e,t)=>{t.r(e),t.d(e,{default:()=>p});var o,i,r,s,c=t(6540),a=t(8031),l=t(2477),u=t(4719),f=t(6831),d=t(3357),b=t(8763),m=t(1224),h=t(4848);function g(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var o,i,r,s,c=[],a=!0,l=!1;try{if(r=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;a=!1}else for(;!(a=(o=r.call(t)).done)&&(c.push(o.value),c.length!==e);a=!0);}catch(n){l=!0,i=n}finally{try{if(!a&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw i}}return c}}(n,e)||function(n,e){if(n){if("string"==typeof n)return y(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?y(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,o=Array(e);t1&&void 0!==arguments[1])||arguments[1])},hideLoading:function(){r("",!1)},showFailLoading:s=function(n,e){i&&i(n,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])},hideFailLoading:function(){s("",null,!1)},subscribeHandler:function(n){o=n},subscribeFailHandler:function(n){i=n}});const p=function(){var n=g(c.useState(!1),2),e=n[0],t=n[1],o=g(c.useState(""),2),i=o[0],r=o[1],s=g(c.useState(null),2),y=s[0],p=s[1];c.useEffect((function(){RoboticsReactComponents.MessageSystem.Loading.subscribeHandler((function(n,e){r(n),e?R():w()}))}),[]),c.useEffect((function(){RoboticsReactComponents.MessageSystem.Loading.subscribeFailHandler((function(n,e,t){r(n),t?R():w(),e&&p(e)}))}),[]);var w=function(){t(!1),p(null)},R=function(){t(!0)};return(0,h.jsxs)(a.A,{open:e,onClose:w,className:"fixed-size-dialog",children:[(0,h.jsx)(l.A,{className:"center-content",children:(0,h.jsxs)(u.A,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[(0,h.jsx)(f.A,{id:"responsive-dialog-title",children:i}),!y&&(0,h.jsx)(d.A,{})]})}),y?(0,h.jsxs)(b.A,{children:[(0,h.jsx)(m.A,{onClick:function(){window.open("/instructions/","_blank")},children:"RADI Instructions"}),(0,h.jsx)(m.A,{onClick:function(){window.location.reload()},children:"Reload"})]}):""]})}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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bXBvbmVudHMvbWVzc2FnZV9zeXN0ZW0vTG9hZGluZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQm94LFxyXG4gIENpcmN1bGFyUHJvZ3Jlc3MsXHJcbiAgRGlhbG9nLFxyXG4gIERpYWxvZ0FjdGlvbnMsXHJcbiAgRGlhbG9nQ29udGVudCxcclxuICBEaWFsb2dUaXRsZSxcclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xyXG5cclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL21lc3NhZ2Vfc3lzdGVtL0xvYWRpbmcuY3NzXCI7XHJcblxyXG53aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMgPSB3aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMgfHwge307XHJcbndpbmRvdy5Sb2JvdGljc1JlYWN0Q29tcG9uZW50cy5NZXNzYWdlU3lzdGVtID1cclxuICB3aW5kb3cuUm9ib3RpY3NSZWFjdENvbXBvbmVudHMuTWVzc2FnZVN5c3RlbSB8fCB7fTtcclxud2luZG93LlJvYm90aWNzUmVhY3RDb21wb25lbnRzLk1lc3NhZ2VTeXN0ZW0uTG9hZGluZyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgbGV0IGhhbmRsZXIgPSBudWxsO1xyXG4gIGxldCBmYWlsSGFuZGxlciA9IG51bGw7XHJcblxyXG4gIGNvbnN0IHNob3dMb2FkaW5nID0gKG1lc3NhZ2UsIHNob3cgPSB0cnVlKSA9PiB7XHJcbiAgICBpZiAoaGFuZGxlcikge1xyXG4gICAgICBoYW5kbGVyKG1lc3NhZ2UsIHNob3cpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IHNob3dGYWlsTG9hZGluZyA9IChtZXNzYWdlLCBhY3Rpb24sIHNob3cgPSB0cnVlKSA9PiB7XHJcbiAgICBpZiAoZmFpbEhhbmRsZXIpIHtcclxuICAgICAgZmFpbEhhbmRsZXIobWVzc2FnZSwgYWN0aW9uLCBzaG93KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCBoaWRlTG9hZGluZyA9ICgpID0+IHtcclxuICAgIHNob3dMb2FkaW5nKFwiXCIsIGZhbHNlKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBoaWRlRmFpbExvYWRpbmcgPSAoKSA9PiB7XHJcbiAgICBzaG93RmFpbExvYWRpbmcoXCJcIiwgbnVsbCwgZmFsc2UpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHN1YnNjcmliZUhhbmRsZXIgPSAoaGFuZGxlckZ1bmMpID0+IHtcclxuICAgIGhhbmRsZXIgPSBoYW5kbGVyRnVuYztcclxuICB9O1xyXG5cclxuICBjb25zdCBzdWJzY3JpYmVGYWlsSGFuZGxlciA9IChmYWlsSGFuZGxlckZ1bmMpID0+IHtcclxuICAgIGZhaWxIYW5kbGVyID0gZmFpbEhhbmRsZXJGdW5jO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBzaG93TG9hZGluZzogc2hvd0xvYWRpbmcsXHJcbiAgICBoaWRlTG9hZGluZzogaGlkZUxvYWRpbmcsXHJcbiAgICBzaG93RmFpbExvYWRpbmc6IHNob3dGYWlsTG9hZGluZyxcclxuICAgIGhpZGVGYWlsTG9hZGluZzogaGlkZUZhaWxMb2FkaW5nLFxyXG4gICAgc3Vic2NyaWJlSGFuZGxlcjogc3Vic2NyaWJlSGFuZGxlcixcclxuICAgIHN1YnNjcmliZUZhaWxIYW5kbGVyOiBzdWJzY3JpYmVGYWlsSGFuZGxlcixcclxuICB9O1xyXG59KSgpO1xyXG5cclxuY29uc3QgTG9hZGluZyA9ICgpID0+IHtcclxuICBjb25zdCBbb3Blbiwgc2V0T3Blbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW2Nsb3NlRGF0YSwgc2V0Q2xvc2VEYXRhXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgUm9ib3RpY3NSZWFjdENvbXBvbmVudHMuTWVzc2FnZVN5c3RlbS5Mb2FkaW5nLnN1YnNjcmliZUhhbmRsZXIoXHJcbiAgICAgIChtZXNzYWdlLCBzaG93KSA9PiB7XHJcbiAgICAgICAgc2V0TWVzc2FnZShtZXNzYWdlKTtcclxuICAgICAgICBpZiAoc2hvdykge1xyXG4gICAgICAgICAgaGFuZGxlT3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBoYW5kbGVDbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5NZXNzYWdlU3lzdGVtLkxvYWRpbmcuc3Vic2NyaWJlRmFpbEhhbmRsZXIoXHJcbiAgICAgIChtZXNzYWdlLCBhY3Rpb24sIHNob3cpID0+IHtcclxuICAgICAgICBzZXRNZXNzYWdlKG1lc3NhZ2UpO1xyXG4gICAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgICBoYW5kbGVPcGVuKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGhhbmRsZUNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChhY3Rpb24pIHtcclxuICAgICAgICAgIHNldENsb3NlRGF0YShhY3Rpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9LCBbXSk7XHJcblxyXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xyXG4gICAgc2V0T3BlbihmYWxzZSk7XHJcbiAgICBzZXRDbG9zZURhdGEobnVsbCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlT3BlbiA9ICgpID0+IHtcclxuICAgIHNldE9wZW4odHJ1ZSk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlID0gKCkgPT4ge1xyXG4gICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IG9wZW5JbnN0cnVjdGlvbnMgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cub3BlbihcIi9pbnN0cnVjdGlvbnMvXCIsIFwiX2JsYW5rXCIpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8RGlhbG9nIG9wZW49e29wZW59IG9uQ2xvc2U9e2hhbmRsZUNsb3NlfSBjbGFzc05hbWU9XCJmaXhlZC1zaXplLWRpYWxvZ1wiPlxyXG4gICAgICA8RGlhbG9nQ29udGVudCBjbGFzc05hbWU9XCJjZW50ZXItY29udGVudFwiPlxyXG4gICAgICAgIDxCb3hcclxuICAgICAgICAgIHN4PXt7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxyXG4gICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxyXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPERpYWxvZ1RpdGxlIGlkPVwicmVzcG9uc2l2ZS1kaWFsb2ctdGl0bGVcIj57bWVzc2FnZX08L0RpYWxvZ1RpdGxlPlxyXG4gICAgICAgICAgeyFjbG9zZURhdGEgJiYgPENpcmN1bGFyUHJvZ3Jlc3MgLz59XHJcbiAgICAgICAgPC9Cb3g+XHJcbiAgICAgIDwvRGlhbG9nQ29udGVudD5cclxuICAgICAge2Nsb3NlRGF0YSA/IChcclxuICAgICAgICA8RGlhbG9nQWN0aW9ucz5cclxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17b3Blbkluc3RydWN0aW9uc30+UkFESSBJbnN0cnVjdGlvbnM8L0J1dHRvbj5cclxuICAgICAgICAgIDxCdXR0b24gb25DbGljaz17aGFuZGxlfT5SZWxvYWQ8L0J1dHRvbj5cclxuICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XHJcbiAgICAgICkgOiAoXHJcbiAgICAgICAgXCJcIlxyXG4gICAgICApfVxyXG4gICAgPC9EaWFsb2c+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IExvYWRpbmc7XHJcbiJdLCJuYW1lcyI6WyJoYW5kbGVyIiwiZmFpbEhhbmRsZXIiLCJzaG93TG9hZGluZyIsInNob3dGYWlsTG9hZGluZyIsIndpbmRvdyIsIlJvYm90aWNzUmVhY3RDb21wb25lbnRzIiwiTWVzc2FnZVN5c3RlbSIsIkxvYWRpbmciLCJtZXNzYWdlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiaGlkZUxvYWRpbmciLCJhY3Rpb24iLCJoaWRlRmFpbExvYWRpbmciLCJzdWJzY3JpYmVIYW5kbGVyIiwiaGFuZGxlckZ1bmMiLCJzdWJzY3JpYmVGYWlsSGFuZGxlciIsImZhaWxIYW5kbGVyRnVuYyIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0Iiwib3BlbiIsInNldE9wZW4iLCJfUmVhY3QkdXNlU3RhdGU0Iiwic2V0TWVzc2FnZSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJjbG9zZURhdGEiLCJzZXRDbG9zZURhdGEiLCJzaG93IiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiX2pzeHMiLCJEaWFsb2ciLCJvbkNsb3NlIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJfanN4IiwiRGlhbG9nQ29udGVudCIsIkJveCIsInN4IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJEaWFsb2dUaXRsZSIsImlkIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkRpYWxvZ0FjdGlvbnMiLCJCdXR0b24iLCJvbkNsaWNrIiwibG9jYXRpb24iLCJyZWxvYWQiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7823.99385b7d.js b/react_frontend/static/react_frontend/js/7823.99385b7d.js new file mode 100644 index 000000000..44fcbb5e8 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7823.99385b7d.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7823],{7823:(t,n,r)=>{r.r(n),r.d(n,{addToPath:()=>a,updatePath:()=>e});var e=function(t,n,r,e){for(var a="M ",o=0;o0&&n(a)},a=function(t,n,r){r.includes([t,n])||r.push([t,n])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzgyMy41NmIxODAxZC5qcyIsIm1hcHBpbmdzIjoiaUtBQU8sSUFBTUEsRUFBYSxTQUFDQyxFQUFPQyxFQUFpQkMsRUFBUUMsR0FHekQsSUFGQSxJQUFJQyxFQUFVLEtBRUxDLEVBQVEsRUFBR0EsRUFBUUwsRUFBTU0sT0FBUUQsSUFBUyxDQUNqRCxJQUFNRSxFQUFVUCxFQUFNSyxHQUNsQkcsRUFBT0QsRUFBUSxHQUFLTCxFQUNwQk8sRUFBT0YsRUFBUSxHQUFLSixFQUNWLElBQVZFLElBQ0ZELEdBQVdLLEVBQUtDLFdBQVksSUFBTUYsRUFBSUUsWUFFeENOLEdBQVcsTUFBUUssRUFBS0MsV0FBYSxJQUFNRixFQUFJRSxVQUNqRCxDQUVJVixFQUFNTSxPQUFTLEdBQ2pCTCxFQUFnQkcsRUFFcEIsRUFFYU8sRUFBWSxTQUFDQyxFQUFHQyxFQUFHYixHQUN6QkEsRUFBTWMsU0FBUyxDQUFDRixFQUFHQyxLQUN0QmIsRUFBTWUsS0FBSyxDQUFDSCxFQUFHQyxHQUVuQixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmFjdXVtX2NsZWFuZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvaGVscGVycy9WYWN1dW1DbGVhbmVySGVscGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB1cGRhdGVQYXRoID0gKHRyYWlsLCBzZXRQYXRoQ2FsbGJhY2ssIGhlaWdodCwgd2lkdGgpID0+IHtcclxuICB2YXIgbmV3UGF0aCA9IFwiTSBcIjtcclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRyYWlsLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRyYWlsW2luZGV4XTtcclxuICAgIHZhciB0b3AgID0gZWxlbWVudFswXSAqIGhlaWdodDtcclxuICAgIHZhciBsZWZ0ID0gZWxlbWVudFsxXSAqIHdpZHRoO1xyXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIG5ld1BhdGggKz0gbGVmdC50b1N0cmluZygpKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbmV3UGF0aCArPSBcIiBMIFwiICsgbGVmdC50b1N0cmluZygpICsgXCIsXCIgKyB0b3AudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGlmICh0cmFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICBzZXRQYXRoQ2FsbGJhY2sobmV3UGF0aClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhZGRUb1BhdGggPSAoeCwgeSwgdHJhaWwpID0+IHtcclxuICBpZiAoIXRyYWlsLmluY2x1ZGVzKFt4LCB5XSkpIHtcclxuICAgIHRyYWlsLnB1c2goW3gsIHldKTtcclxuICB9XHJcbn0iXSwibmFtZXMiOlsidXBkYXRlUGF0aCIsInRyYWlsIiwic2V0UGF0aENhbGxiYWNrIiwiaGVpZ2h0Iiwid2lkdGgiLCJuZXdQYXRoIiwiaW5kZXgiLCJsZW5ndGgiLCJlbGVtZW50IiwidG9wIiwibGVmdCIsInRvU3RyaW5nIiwiYWRkVG9QYXRoIiwieCIsInkiLCJpbmNsdWRlcyIsInB1c2giXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7826.84dc4072.js b/react_frontend/static/react_frontend/js/7826.84dc4072.js new file mode 100644 index 000000000..1fa2a2b7a --- /dev/null +++ b/react_frontend/static/react_frontend/js/7826.84dc4072.js @@ -0,0 +1,3 @@ +/*! For license information please see 7826.84dc4072.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7826],{7826:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvNzgyNi4xOGEwN2I3Ny5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUndCLFNBQUNBLEdBQ3ZCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvc2l0aW9uX2NvbnRyb2xfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL1Bvc2l0aW9uQ29udHJvbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvUG9zaXRpb25Db250cm9sLmNzc1wiO1xyXG5cclxuY29uc3QgUG9zaXRpb25Db250cm9sID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFBvc2l0aW9uQ29udHJvbDsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7826.84dc4072.js.LICENSE.txt b/react_frontend/static/react_frontend/js/7826.84dc4072.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7826.84dc4072.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/7839.1c037679.js b/react_frontend/static/react_frontend/js/7839.1c037679.js new file mode 100644 index 000000000..a835dabac --- /dev/null +++ b/react_frontend/static/react_frontend/js/7839.1c037679.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7839],{7839:(e,t,o)=>{o.d(t,{A:()=>I});var r=o(8587),n=o(8168),i=o(6540),p=o(53),a=o(5659),l=o(4856),s=o(4279),c=o(7577),u=o(4675),m=o(4409),d=o(8466),h=o(7467),g=o(3879),f=o(3034),A=o(6852),v=o(1668),T=o(1544),b=o(1159),w=o(8413),y=o(1609);function x(e){return(0,y.A)("MuiTooltip",e)}const R=(0,w.A)("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]);var P=o(4848);const M=["arrow","children","classes","components","componentsProps","describeChild","disableFocusListener","disableHoverListener","disableInteractive","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","id","leaveDelay","leaveTouchDelay","onClose","onOpen","open","placement","PopperComponent","PopperProps","slotProps","slots","title","TransitionComponent","TransitionProps"],C=(0,c.Ay)(g.A,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.popper,!o.disableInteractive&&t.popperInteractive,o.arrow&&t.popperArrow,!o.open&&t.popperClose]}})((({theme:e,ownerState:t,open:o})=>(0,n.A)({zIndex:(e.vars||e).zIndex.tooltip,pointerEvents:"none"},!t.disableInteractive&&{pointerEvents:"auto"},!o&&{pointerEvents:"none"},t.arrow&&{[`&[data-popper-placement*="bottom"] .${R.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${R.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${R.arrow}`]:(0,n.A)({},t.isRtl?{right:0,marginRight:"-0.71em"}:{left:0,marginLeft:"-0.71em"},{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}}),[`&[data-popper-placement*="left"] .${R.arrow}`]:(0,n.A)({},t.isRtl?{left:0,marginLeft:"-0.71em"}:{right:0,marginRight:"-0.71em"},{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}})}))),L=(0,c.Ay)("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.tooltip,o.touch&&t.touch,o.arrow&&t.tooltipArrow,t[`tooltipPlacement${(0,d.A)(o.placement.split("-")[0])}`]]}})((({theme:e,ownerState:t})=>{return(0,n.A)({backgroundColor:e.vars?e.vars.palette.Tooltip.bg:(0,s.X4)(e.palette.grey[700],.92),borderRadius:(e.vars||e).shape.borderRadius,color:(e.vars||e).palette.common.white,fontFamily:e.typography.fontFamily,padding:"4px 8px",fontSize:e.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:e.typography.fontWeightMedium},t.arrow&&{position:"relative",margin:0},t.touch&&{padding:"8px 16px",fontSize:e.typography.pxToRem(14),lineHeight:(o=16/14,Math.round(1e5*o)/1e5+"em"),fontWeight:e.typography.fontWeightRegular},{[`.${R.popper}[data-popper-placement*="left"] &`]:(0,n.A)({transformOrigin:"right center"},t.isRtl?(0,n.A)({marginLeft:"14px"},t.touch&&{marginLeft:"24px"}):(0,n.A)({marginRight:"14px"},t.touch&&{marginRight:"24px"})),[`.${R.popper}[data-popper-placement*="right"] &`]:(0,n.A)({transformOrigin:"left center"},t.isRtl?(0,n.A)({marginRight:"14px"},t.touch&&{marginRight:"24px"}):(0,n.A)({marginLeft:"14px"},t.touch&&{marginLeft:"24px"})),[`.${R.popper}[data-popper-placement*="top"] &`]:(0,n.A)({transformOrigin:"center bottom",marginBottom:"14px"},t.touch&&{marginBottom:"24px"}),[`.${R.popper}[data-popper-placement*="bottom"] &`]:(0,n.A)({transformOrigin:"center top",marginTop:"14px"},t.touch&&{marginTop:"24px"})});var o})),S=(0,c.Ay)("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(e,t)=>t.arrow})((({theme:e})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:e.vars?e.vars.palette.Tooltip.bg:(0,s.X4)(e.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}})));let k=!1,O=null,E={x:0,y:0};function N(e,t){return o=>{t&&t(o),e(o)}}const I=i.forwardRef((function(e,t){var o,s,c,w,y,R,I,B,D,F,W,$,j,z,U,H,X,V,_;const Y=(0,m.A)({props:e,name:"MuiTooltip"}),{arrow:q=!1,children:G,components:J={},componentsProps:K={},describeChild:Q=!1,disableFocusListener:Z=!1,disableHoverListener:ee=!1,disableInteractive:te=!1,disableTouchListener:oe=!1,enterDelay:re=100,enterNextDelay:ne=0,enterTouchDelay:ie=700,followCursor:pe=!1,id:ae,leaveDelay:le=0,leaveTouchDelay:se=1500,onClose:ce,onOpen:ue,open:me,placement:de="bottom",PopperComponent:he,PopperProps:ge={},slotProps:fe={},slots:Ae={},title:ve,TransitionComponent:Te=h.A,TransitionProps:be}=Y,we=(0,r.A)(Y,M),ye=i.isValidElement(G)?G:(0,P.jsx)("span",{children:G}),xe=(0,u.A)(),Re="rtl"===xe.direction,[Pe,Me]=i.useState(),[Ce,Le]=i.useState(null),Se=i.useRef(!1),ke=te||pe,Oe=i.useRef(),Ee=i.useRef(),Ne=i.useRef(),Ie=i.useRef(),[Be,De]=(0,b.A)({controlled:me,default:!1,name:"Tooltip",state:"open"});let Fe=Be;const We=(0,v.A)(ae),$e=i.useRef(),je=i.useCallback((()=>{void 0!==$e.current&&(document.body.style.WebkitUserSelect=$e.current,$e.current=void 0),clearTimeout(Ie.current)}),[]);i.useEffect((()=>()=>{clearTimeout(Oe.current),clearTimeout(Ee.current),clearTimeout(Ne.current),je()}),[je]);const ze=e=>{clearTimeout(O),k=!0,De(!0),ue&&!Fe&&ue(e)},Ue=(0,f.A)((e=>{clearTimeout(O),O=setTimeout((()=>{k=!1}),800+le),De(!1),ce&&Fe&&ce(e),clearTimeout(Oe.current),Oe.current=setTimeout((()=>{Se.current=!1}),xe.transitions.duration.shortest)})),He=e=>{Se.current&&"touchstart"!==e.type||(Pe&&Pe.removeAttribute("title"),clearTimeout(Ee.current),clearTimeout(Ne.current),re||k&&ne?Ee.current=setTimeout((()=>{ze(e)}),k?ne:re):ze(e))},Xe=e=>{clearTimeout(Ee.current),clearTimeout(Ne.current),Ne.current=setTimeout((()=>{Ue(e)}),le)},{isFocusVisibleRef:Ve,onBlur:_e,onFocus:Ye,ref:qe}=(0,T.A)(),[,Ge]=i.useState(!1),Je=e=>{_e(e),!1===Ve.current&&(Ge(!1),Xe(e))},Ke=e=>{Pe||Me(e.currentTarget),Ye(e),!0===Ve.current&&(Ge(!0),He(e))},Qe=e=>{Se.current=!0;const t=ye.props;t.onTouchStart&&t.onTouchStart(e)},Ze=He,et=Xe;i.useEffect((()=>{if(Fe)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){"Escape"!==e.key&&"Esc"!==e.key||Ue(e)}}),[Ue,Fe]);const tt=(0,A.A)(ye.ref,qe,Me,t);ve||0===ve||(Fe=!1);const ot=i.useRef(),rt={},nt="string"==typeof ve;Q?(rt.title=Fe||!nt||ee?null:ve,rt["aria-describedby"]=Fe?We:null):(rt["aria-label"]=nt?ve:null,rt["aria-labelledby"]=Fe&&!nt?We:null);const it=(0,n.A)({},rt,we,ye.props,{className:(0,p.A)(we.className,ye.props.className),onTouchStart:Qe,ref:tt},pe?{onMouseMove:e=>{const t=ye.props;t.onMouseMove&&t.onMouseMove(e),E={x:e.clientX,y:e.clientY},ot.current&&ot.current.update()}}:{}),pt={};oe||(it.onTouchStart=e=>{Qe(e),clearTimeout(Ne.current),clearTimeout(Oe.current),je(),$e.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",Ie.current=setTimeout((()=>{document.body.style.WebkitUserSelect=$e.current,He(e)}),ie)},it.onTouchEnd=e=>{ye.props.onTouchEnd&&ye.props.onTouchEnd(e),je(),clearTimeout(Ne.current),Ne.current=setTimeout((()=>{Ue(e)}),se)}),ee||(it.onMouseOver=N(Ze,it.onMouseOver),it.onMouseLeave=N(et,it.onMouseLeave),ke||(pt.onMouseOver=Ze,pt.onMouseLeave=et)),Z||(it.onFocus=N(Ke,it.onFocus),it.onBlur=N(Je,it.onBlur),ke||(pt.onFocus=Ke,pt.onBlur=Je));const at=i.useMemo((()=>{var e;let t=[{name:"arrow",enabled:Boolean(Ce),options:{element:Ce,padding:4}}];return null!=(e=ge.popperOptions)&&e.modifiers&&(t=t.concat(ge.popperOptions.modifiers)),(0,n.A)({},ge.popperOptions,{modifiers:t})}),[Ce,ge]),lt=(0,n.A)({},Y,{isRtl:Re,arrow:q,disableInteractive:ke,placement:de,PopperComponentProp:he,touch:Se.current}),st=(e=>{const{classes:t,disableInteractive:o,arrow:r,touch:n,placement:i}=e,p={popper:["popper",!o&&"popperInteractive",r&&"popperArrow"],tooltip:["tooltip",r&&"tooltipArrow",n&&"touch",`tooltipPlacement${(0,d.A)(i.split("-")[0])}`],arrow:["arrow"]};return(0,a.A)(p,x,t)})(lt),ct=null!=(o=null!=(s=Ae.popper)?s:J.Popper)?o:C,ut=null!=(c=null!=(w=null!=(y=Ae.transition)?y:J.Transition)?w:Te)?c:h.A,mt=null!=(R=null!=(I=Ae.tooltip)?I:J.Tooltip)?R:L,dt=null!=(B=null!=(D=Ae.arrow)?D:J.Arrow)?B:S,ht=(0,l.A)(ct,(0,n.A)({},ge,null!=(F=fe.popper)?F:K.popper,{className:(0,p.A)(st.popper,null==ge?void 0:ge.className,null==(W=null!=($=fe.popper)?$:K.popper)?void 0:W.className)}),lt),gt=(0,l.A)(ut,(0,n.A)({},be,null!=(j=fe.transition)?j:K.transition),lt),ft=(0,l.A)(mt,(0,n.A)({},null!=(z=fe.tooltip)?z:K.tooltip,{className:(0,p.A)(st.tooltip,null==(U=null!=(H=fe.tooltip)?H:K.tooltip)?void 0:U.className)}),lt),At=(0,l.A)(dt,(0,n.A)({},null!=(X=fe.arrow)?X:K.arrow,{className:(0,p.A)(st.arrow,null==(V=null!=(_=fe.arrow)?_:K.arrow)?void 0:V.className)}),lt);return(0,P.jsxs)(i.Fragment,{children:[i.cloneElement(ye,it),(0,P.jsx)(ct,(0,n.A)({as:null!=he?he:g.A,placement:de,anchorEl:pe?{getBoundingClientRect:()=>({top:E.y,left:E.x,right:E.x,bottom:E.y,width:0,height:0})}:Pe,popperRef:ot,open:!!Pe&&Fe,id:We,transition:!0},pt,ht,{popperOptions:at,children:({TransitionProps:e})=>(0,P.jsx)(ut,(0,n.A)({timeout:xe.transitions.duration.shorter},e,gt,{children:(0,P.jsxs)(mt,(0,n.A)({},ft,{children:[ve,q?(0,P.jsx)(dt,(0,n.A)({},At,{ref:Le})):null]}))}))}))]})}))}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVUsQ0FBYyxlQUFtQkEsR0FBVWlGLEtBQTZCLFNBQUs3RCxJQUFpQixPQUFTLENBQy9HMEcsR0FBMkIsTUFBdkJ6RyxHQUE4QkEsR0FBc0J4SCxFQUFBLEVBQ3hEa0MsVUFBV0EsR0FDWGdNLFNBQVVuSCxHQUFlLENBQ3ZCb0gsc0JBQXVCLEtBQU0sQ0FDM0JqTixJQUFLb0QsRUFBZUUsRUFDcEI5QyxLQUFNNEMsRUFBZUMsRUFDckIvQyxNQUFPOEMsRUFBZUMsRUFDdEJsRCxPQUFRaUQsRUFBZUUsRUFDdkIzQyxNQUFPLEVBQ1BELE9BQVEsS0FFUndHLEdBQ0oyRCxVQUFXQSxHQUNYcEwsT0FBTXlILElBQVl6SCxHQUNsQnFHLEdBQUlBLEdBQ0p1RyxZQUFZLEdBQ1hoQixHQUE2QnFCLEdBQWEsQ0FDM0NqQixjQUFlQSxHQUNmeEcsU0FBVSxFQUNSNkIsZ0JBQWlCb0csTUFDQSxTQUFLdkcsSUFBcUIsT0FBUyxDQUNwRHdHLFFBQVN4TixHQUFNb0osWUFBWUMsU0FBU29FLFNBQ25DRixFQUFzQk4sR0FBaUIsQ0FDeEMzSCxVQUF1QixVQUFNc0gsSUFBa0IsT0FBUyxDQUFDLEVBQUdNLEdBQWMsQ0FDeEU1SCxTQUFVLENBQUN5QixHQUFPbkgsR0FBcUIsU0FBS2lOLElBQWdCLE9BQVMsQ0FBQyxFQUFHTSxHQUFtQixDQUMxRmxKLElBQUt5RCxNQUNELGlCQUtoQixHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Ub29sdGlwL3Rvb2x0aXBDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVG9vbHRpcC9Ub29sdGlwLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUb29sdGlwJywgc2xvdCk7XG59XG5jb25zdCB0b29sdGlwQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVRvb2x0aXAnLCBbJ3BvcHBlcicsICdwb3BwZXJJbnRlcmFjdGl2ZScsICdwb3BwZXJBcnJvdycsICdwb3BwZXJDbG9zZScsICd0b29sdGlwJywgJ3Rvb2x0aXBBcnJvdycsICd0b3VjaCcsICd0b29sdGlwUGxhY2VtZW50TGVmdCcsICd0b29sdGlwUGxhY2VtZW50UmlnaHQnLCAndG9vbHRpcFBsYWNlbWVudFRvcCcsICd0b29sdGlwUGxhY2VtZW50Qm90dG9tJywgJ2Fycm93J10pO1xuZXhwb3J0IGRlZmF1bHQgdG9vbHRpcENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYXJyb3dcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzZXNcIiwgXCJjb21wb25lbnRzXCIsIFwiY29tcG9uZW50c1Byb3BzXCIsIFwiZGVzY3JpYmVDaGlsZFwiLCBcImRpc2FibGVGb2N1c0xpc3RlbmVyXCIsIFwiZGlzYWJsZUhvdmVyTGlzdGVuZXJcIiwgXCJkaXNhYmxlSW50ZXJhY3RpdmVcIiwgXCJkaXNhYmxlVG91Y2hMaXN0ZW5lclwiLCBcImVudGVyRGVsYXlcIiwgXCJlbnRlck5leHREZWxheVwiLCBcImVudGVyVG91Y2hEZWxheVwiLCBcImZvbGxvd0N1cnNvclwiLCBcImlkXCIsIFwibGVhdmVEZWxheVwiLCBcImxlYXZlVG91Y2hEZWxheVwiLCBcIm9uQ2xvc2VcIiwgXCJvbk9wZW5cIiwgXCJvcGVuXCIsIFwicGxhY2VtZW50XCIsIFwiUG9wcGVyQ29tcG9uZW50XCIsIFwiUG9wcGVyUHJvcHNcIiwgXCJzbG90UHJvcHNcIiwgXCJzbG90c1wiLCBcInRpdGxlXCIsIFwiVHJhbnNpdGlvbkNvbXBvbmVudFwiLCBcIlRyYW5zaXRpb25Qcm9wc1wiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGVsZW1lbnRBY2NlcHRpbmdSZWYgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzLCBhcHBlbmRPd25lclN0YXRlIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgR3JvdyBmcm9tICcuLi9Hcm93JztcbmltcG9ydCBQb3BwZXIgZnJvbSAnLi4vUG9wcGVyJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJy4uL3V0aWxzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgdXNlSWQgZnJvbSAnLi4vdXRpbHMvdXNlSWQnO1xuaW1wb3J0IHVzZUlzRm9jdXNWaXNpYmxlIGZyb20gJy4uL3V0aWxzL3VzZUlzRm9jdXNWaXNpYmxlJztcbmltcG9ydCB1c2VDb250cm9sbGVkIGZyb20gJy4uL3V0aWxzL3VzZUNvbnRyb2xsZWQnO1xuaW1wb3J0IHRvb2x0aXBDbGFzc2VzLCB7IGdldFRvb2x0aXBVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3Rvb2x0aXBDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiByb3VuZCh2YWx1ZSkge1xuICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIDFlNSkgLyAxZTU7XG59XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlSW50ZXJhY3RpdmUsXG4gICAgYXJyb3csXG4gICAgdG91Y2gsXG4gICAgcGxhY2VtZW50XG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICBwb3BwZXI6IFsncG9wcGVyJywgIWRpc2FibGVJbnRlcmFjdGl2ZSAmJiAncG9wcGVySW50ZXJhY3RpdmUnLCBhcnJvdyAmJiAncG9wcGVyQXJyb3cnXSxcbiAgICB0b29sdGlwOiBbJ3Rvb2x0aXAnLCBhcnJvdyAmJiAndG9vbHRpcEFycm93JywgdG91Y2ggJiYgJ3RvdWNoJywgYHRvb2x0aXBQbGFjZW1lbnQke2NhcGl0YWxpemUocGxhY2VtZW50LnNwbGl0KCctJylbMF0pfWBdLFxuICAgIGFycm93OiBbJ2Fycm93J11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRUb29sdGlwVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBUb29sdGlwUG9wcGVyID0gc3R5bGVkKFBvcHBlciwge1xuICBuYW1lOiAnTXVpVG9vbHRpcCcsXG4gIHNsb3Q6ICdQb3BwZXInLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnBvcHBlciwgIW93bmVyU3RhdGUuZGlzYWJsZUludGVyYWN0aXZlICYmIHN0eWxlcy5wb3BwZXJJbnRlcmFjdGl2ZSwgb3duZXJTdGF0ZS5hcnJvdyAmJiBzdHlsZXMucG9wcGVyQXJyb3csICFvd25lclN0YXRlLm9wZW4gJiYgc3R5bGVzLnBvcHBlckNsb3NlXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGUsXG4gIG9wZW5cbn0pID0+IF9leHRlbmRzKHtcbiAgekluZGV4OiAodGhlbWUudmFycyB8fCB0aGVtZSkuekluZGV4LnRvb2x0aXAsXG4gIHBvaW50ZXJFdmVudHM6ICdub25lJ1xufSwgIW93bmVyU3RhdGUuZGlzYWJsZUludGVyYWN0aXZlICYmIHtcbiAgcG9pbnRlckV2ZW50czogJ2F1dG8nXG59LCAhb3BlbiAmJiB7XG4gIHBvaW50ZXJFdmVudHM6ICdub25lJ1xufSwgb3duZXJTdGF0ZS5hcnJvdyAmJiB7XG4gIFtgJltkYXRhLXBvcHBlci1wbGFjZW1lbnQqPVwiYm90dG9tXCJdIC4ke3Rvb2x0aXBDbGFzc2VzLmFycm93fWBdOiB7XG4gICAgdG9wOiAwLFxuICAgIG1hcmdpblRvcDogJy0wLjcxZW0nLFxuICAgICcmOjpiZWZvcmUnOiB7XG4gICAgICB0cmFuc2Zvcm1PcmlnaW46ICcwIDEwMCUnXG4gICAgfVxuICB9LFxuICBbYCZbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1cInRvcFwiXSAuJHt0b29sdGlwQ2xhc3Nlcy5hcnJvd31gXToge1xuICAgIGJvdHRvbTogMCxcbiAgICBtYXJnaW5Cb3R0b206ICctMC43MWVtJyxcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgdHJhbnNmb3JtT3JpZ2luOiAnMTAwJSAwJ1xuICAgIH1cbiAgfSxcbiAgW2AmW2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9XCJyaWdodFwiXSAuJHt0b29sdGlwQ2xhc3Nlcy5hcnJvd31gXTogX2V4dGVuZHMoe30sICFvd25lclN0YXRlLmlzUnRsID8ge1xuICAgIGxlZnQ6IDAsXG4gICAgbWFyZ2luTGVmdDogJy0wLjcxZW0nXG4gIH0gOiB7XG4gICAgcmlnaHQ6IDAsXG4gICAgbWFyZ2luUmlnaHQ6ICctMC43MWVtJ1xuICB9LCB7XG4gICAgaGVpZ2h0OiAnMWVtJyxcbiAgICB3aWR0aDogJzAuNzFlbScsXG4gICAgJyY6OmJlZm9yZSc6IHtcbiAgICAgIHRyYW5zZm9ybU9yaWdpbjogJzEwMCUgMTAwJSdcbiAgICB9XG4gIH0pLFxuICBbYCZbZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1cImxlZnRcIl0gLiR7dG9vbHRpcENsYXNzZXMuYXJyb3d9YF06IF9leHRlbmRzKHt9LCAhb3duZXJTdGF0ZS5pc1J0bCA/IHtcbiAgICByaWdodDogMCxcbiAgICBtYXJnaW5SaWdodDogJy0wLjcxZW0nXG4gIH0gOiB7XG4gICAgbGVmdDogMCxcbiAgICBtYXJnaW5MZWZ0OiAnLTAuNzFlbSdcbiAgfSwge1xuICAgIGhlaWdodDogJzFlbScsXG4gICAgd2lkdGg6ICcwLjcxZW0nLFxuICAgICcmOjpiZWZvcmUnOiB7XG4gICAgICB0cmFuc2Zvcm1PcmlnaW46ICcwIDAnXG4gICAgfVxuICB9KVxufSkpO1xuY29uc3QgVG9vbHRpcFRvb2x0aXAgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aVRvb2x0aXAnLFxuICBzbG90OiAnVG9vbHRpcCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMudG9vbHRpcCwgb3duZXJTdGF0ZS50b3VjaCAmJiBzdHlsZXMudG91Y2gsIG93bmVyU3RhdGUuYXJyb3cgJiYgc3R5bGVzLnRvb2x0aXBBcnJvdywgc3R5bGVzW2B0b29sdGlwUGxhY2VtZW50JHtjYXBpdGFsaXplKG93bmVyU3RhdGUucGxhY2VtZW50LnNwbGl0KCctJylbMF0pfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLlRvb2x0aXAuYmcgOiBhbHBoYSh0aGVtZS5wYWxldHRlLmdyZXlbNzAwXSwgMC45MiksXG4gIGJvcmRlclJhZGl1czogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYXBlLmJvcmRlclJhZGl1cyxcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmNvbW1vbi53aGl0ZSxcbiAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250RmFtaWx5LFxuICBwYWRkaW5nOiAnNHB4IDhweCcsXG4gIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTEpLFxuICBtYXhXaWR0aDogMzAwLFxuICBtYXJnaW46IDIsXG4gIHdvcmRXcmFwOiAnYnJlYWstd29yZCcsXG4gIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bVxufSwgb3duZXJTdGF0ZS5hcnJvdyAmJiB7XG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBtYXJnaW46IDBcbn0sIG93bmVyU3RhdGUudG91Y2ggJiYge1xuICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE0KSxcbiAgbGluZUhlaWdodDogYCR7cm91bmQoMTYgLyAxNCl9ZW1gLFxuICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmZvbnRXZWlnaHRSZWd1bGFyXG59LCB7XG4gIFtgLiR7dG9vbHRpcENsYXNzZXMucG9wcGVyfVtkYXRhLXBvcHBlci1wbGFjZW1lbnQqPVwibGVmdFwiXSAmYF06IF9leHRlbmRzKHtcbiAgICB0cmFuc2Zvcm1PcmlnaW46ICdyaWdodCBjZW50ZXInXG4gIH0sICFvd25lclN0YXRlLmlzUnRsID8gX2V4dGVuZHMoe1xuICAgIG1hcmdpblJpZ2h0OiAnMTRweCdcbiAgfSwgb3duZXJTdGF0ZS50b3VjaCAmJiB7XG4gICAgbWFyZ2luUmlnaHQ6ICcyNHB4J1xuICB9KSA6IF9leHRlbmRzKHtcbiAgICBtYXJnaW5MZWZ0OiAnMTRweCdcbiAgfSwgb3duZXJTdGF0ZS50b3VjaCAmJiB7XG4gICAgbWFyZ2luTGVmdDogJzI0cHgnXG4gIH0pKSxcbiAgW2AuJHt0b29sdGlwQ2xhc3Nlcy5wb3BwZXJ9W2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9XCJyaWdodFwiXSAmYF06IF9leHRlbmRzKHtcbiAgICB0cmFuc2Zvcm1PcmlnaW46ICdsZWZ0IGNlbnRlcidcbiAgfSwgIW93bmVyU3RhdGUuaXNSdGwgPyBfZXh0ZW5kcyh7XG4gICAgbWFyZ2luTGVmdDogJzE0cHgnXG4gIH0sIG93bmVyU3RhdGUudG91Y2ggJiYge1xuICAgIG1hcmdpbkxlZnQ6ICcyNHB4J1xuICB9KSA6IF9leHRlbmRzKHtcbiAgICBtYXJnaW5SaWdodDogJzE0cHgnXG4gIH0sIG93bmVyU3RhdGUudG91Y2ggJiYge1xuICAgIG1hcmdpblJpZ2h0OiAnMjRweCdcbiAgfSkpLFxuICBbYC4ke3Rvb2x0aXBDbGFzc2VzLnBvcHBlcn1bZGF0YS1wb3BwZXItcGxhY2VtZW50Kj1cInRvcFwiXSAmYF06IF9leHRlbmRzKHtcbiAgICB0cmFuc2Zvcm1PcmlnaW46ICdjZW50ZXIgYm90dG9tJyxcbiAgICBtYXJnaW5Cb3R0b206ICcxNHB4J1xuICB9LCBvd25lclN0YXRlLnRvdWNoICYmIHtcbiAgICBtYXJnaW5Cb3R0b206ICcyNHB4J1xuICB9KSxcbiAgW2AuJHt0b29sdGlwQ2xhc3Nlcy5wb3BwZXJ9W2RhdGEtcG9wcGVyLXBsYWNlbWVudCo9XCJib3R0b21cIl0gJmBdOiBfZXh0ZW5kcyh7XG4gICAgdHJhbnNmb3JtT3JpZ2luOiAnY2VudGVyIHRvcCcsXG4gICAgbWFyZ2luVG9wOiAnMTRweCdcbiAgfSwgb3duZXJTdGF0ZS50b3VjaCAmJiB7XG4gICAgbWFyZ2luVG9wOiAnMjRweCdcbiAgfSlcbn0pKTtcbmNvbnN0IFRvb2x0aXBBcnJvdyA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVRvb2x0aXAnLFxuICBzbG90OiAnQXJyb3cnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5hcnJvd1xufSkoKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHdpZHRoOiAnMWVtJyxcbiAgaGVpZ2h0OiAnMC43MWVtJyAvKiA9IHdpZHRoIC8gc3FydCgyKSA9IChsZW5ndGggb2YgdGhlIGh5cG90ZW51c2UpICovLFxuICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgY29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuVG9vbHRpcC5iZyA6IGFscGhhKHRoZW1lLnBhbGV0dGUuZ3JleVs3MDBdLCAwLjkpLFxuICAnJjo6YmVmb3JlJzoge1xuICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICBtYXJnaW46ICdhdXRvJyxcbiAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnY3VycmVudENvbG9yJyxcbiAgICB0cmFuc2Zvcm06ICdyb3RhdGUoNDVkZWcpJ1xuICB9XG59KSk7XG5sZXQgaHlzdGVyc2lzT3BlbiA9IGZhbHNlO1xubGV0IGh5c3RlcnNpc1RpbWVyID0gbnVsbDtcbmxldCBjdXJzb3JQb3NpdGlvbiA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0UmVzZXQoKSB7XG4gIGh5c3RlcnNpc09wZW4gPSBmYWxzZTtcbiAgY2xlYXJUaW1lb3V0KGh5c3RlcnNpc1RpbWVyKTtcbn1cbmZ1bmN0aW9uIGNvbXBvc2VFdmVudEhhbmRsZXIoaGFuZGxlciwgZXZlbnRIYW5kbGVyKSB7XG4gIHJldHVybiBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50SGFuZGxlcikge1xuICAgICAgZXZlbnRIYW5kbGVyKGV2ZW50KTtcbiAgICB9XG4gICAgaGFuZGxlcihldmVudCk7XG4gIH07XG59XG5cbi8vIFRPRE8gdjY6IFJlbW92ZSBQb3BwZXJDb21wb25lbnQsIFBvcHBlclByb3BzLCBUcmFuc2l0aW9uQ29tcG9uZW50IGFuZCBUcmFuc2l0aW9uUHJvcHMuXG5jb25zdCBUb29sdGlwID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVG9vbHRpcChpblByb3BzLCByZWYpIHtcbiAgdmFyIF9yZWYsIF9zbG90cyRwb3BwZXIsIF9yZWYyLCBfcmVmMywgX3Nsb3RzJHRyYW5zaXRpb24sIF9yZWY0LCBfc2xvdHMkdG9vbHRpcCwgX3JlZjUsIF9zbG90cyRhcnJvdywgX3Nsb3RQcm9wcyRwb3BwZXIsIF9yZWY2LCBfc2xvdFByb3BzJHBvcHBlcjIsIF9zbG90UHJvcHMkdHJhbnNpdGlvbiwgX3Nsb3RQcm9wcyR0b29sdGlwLCBfcmVmNywgX3Nsb3RQcm9wcyR0b29sdGlwMiwgX3Nsb3RQcm9wcyRhcnJvdywgX3JlZjgsIF9zbG90UHJvcHMkYXJyb3cyO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUb29sdGlwJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgYXJyb3cgPSBmYWxzZSxcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblByb3AsXG4gICAgICBjb21wb25lbnRzID0ge30sXG4gICAgICBjb21wb25lbnRzUHJvcHMgPSB7fSxcbiAgICAgIGRlc2NyaWJlQ2hpbGQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVGb2N1c0xpc3RlbmVyID0gZmFsc2UsXG4gICAgICBkaXNhYmxlSG92ZXJMaXN0ZW5lciA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUludGVyYWN0aXZlOiBkaXNhYmxlSW50ZXJhY3RpdmVQcm9wID0gZmFsc2UsXG4gICAgICBkaXNhYmxlVG91Y2hMaXN0ZW5lciA9IGZhbHNlLFxuICAgICAgZW50ZXJEZWxheSA9IDEwMCxcbiAgICAgIGVudGVyTmV4dERlbGF5ID0gMCxcbiAgICAgIGVudGVyVG91Y2hEZWxheSA9IDcwMCxcbiAgICAgIGZvbGxvd0N1cnNvciA9IGZhbHNlLFxuICAgICAgaWQ6IGlkUHJvcCxcbiAgICAgIGxlYXZlRGVsYXkgPSAwLFxuICAgICAgbGVhdmVUb3VjaERlbGF5ID0gMTUwMCxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICBvbk9wZW4sXG4gICAgICBvcGVuOiBvcGVuUHJvcCxcbiAgICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgICAgUG9wcGVyQ29tcG9uZW50OiBQb3BwZXJDb21wb25lbnRQcm9wLFxuICAgICAgUG9wcGVyUHJvcHMgPSB7fSxcbiAgICAgIHNsb3RQcm9wcyA9IHt9LFxuICAgICAgc2xvdHMgPSB7fSxcbiAgICAgIHRpdGxlLFxuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudDogVHJhbnNpdGlvbkNvbXBvbmVudFByb3AgPSBHcm93LFxuICAgICAgVHJhbnNpdGlvblByb3BzXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgLy8gdG8gcHJldmVudCBydW50aW1lIGVycm9ycywgZGV2ZWxvcGVycyB3aWxsIG5lZWQgdG8gcHJvdmlkZSBhIGNoaWxkIGFzIGEgUmVhY3QgZWxlbWVudCBhbnl3YXkuXG4gIGNvbnN0IGNoaWxkcmVuID0gLyojX19QVVJFX18qL1JlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuUHJvcCkgPyBjaGlsZHJlblByb3AgOiAvKiNfX1BVUkVfXyovX2pzeChcInNwYW5cIiwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblByb3BcbiAgfSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNSdGwgPSB0aGVtZS5kaXJlY3Rpb24gPT09ICdydGwnO1xuICBjb25zdCBbY2hpbGROb2RlLCBzZXRDaGlsZE5vZGVdID0gUmVhY3QudXNlU3RhdGUoKTtcbiAgY29uc3QgW2Fycm93UmVmLCBzZXRBcnJvd1JlZl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgaWdub3JlTm9uVG91Y2hFdmVudHMgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBkaXNhYmxlSW50ZXJhY3RpdmUgPSBkaXNhYmxlSW50ZXJhY3RpdmVQcm9wIHx8IGZvbGxvd0N1cnNvcjtcbiAgY29uc3QgY2xvc2VUaW1lciA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBlbnRlclRpbWVyID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IGxlYXZlVGltZXIgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3QgdG91Y2hUaW1lciA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBbb3BlblN0YXRlLCBzZXRPcGVuU3RhdGVdID0gdXNlQ29udHJvbGxlZCh7XG4gICAgY29udHJvbGxlZDogb3BlblByb3AsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gICAgbmFtZTogJ1Rvb2x0aXAnLFxuICAgIHN0YXRlOiAnb3BlbidcbiAgfSk7XG4gIGxldCBvcGVuID0gb3BlblN0YXRlO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGlzQ29udHJvbGxlZFxuICAgIH0gPSBSZWFjdC51c2VSZWYob3BlblByb3AgIT09IHVuZGVmaW5lZCk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGNoaWxkTm9kZSAmJiBjaGlsZE5vZGUuZGlzYWJsZWQgJiYgIWlzQ29udHJvbGxlZCAmJiB0aXRsZSAhPT0gJycgJiYgY2hpbGROb2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2J1dHRvbicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogWW91IGFyZSBwcm92aWRpbmcgYSBkaXNhYmxlZCBgYnV0dG9uYCBjaGlsZCB0byB0aGUgVG9vbHRpcCBjb21wb25lbnQuJywgJ0EgZGlzYWJsZWQgZWxlbWVudCBkb2VzIG5vdCBmaXJlIGV2ZW50cy4nLCBcIlRvb2x0aXAgbmVlZHMgdG8gbGlzdGVuIHRvIHRoZSBjaGlsZCBlbGVtZW50J3MgZXZlbnRzIHRvIGRpc3BsYXkgdGhlIHRpdGxlLlwiLCAnJywgJ0FkZCBhIHNpbXBsZSB3cmFwcGVyIGVsZW1lbnQsIHN1Y2ggYXMgYSBgc3BhbmAuJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH0sIFt0aXRsZSwgY2hpbGROb2RlLCBpc0NvbnRyb2xsZWRdKTtcbiAgfVxuICBjb25zdCBpZCA9IHVzZUlkKGlkUHJvcCk7XG4gIGNvbnN0IHByZXZVc2VyU2VsZWN0ID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IHN0b3BUb3VjaEludGVyYWN0aW9uID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChwcmV2VXNlclNlbGVjdC5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuV2Via2l0VXNlclNlbGVjdCA9IHByZXZVc2VyU2VsZWN0LmN1cnJlbnQ7XG4gICAgICBwcmV2VXNlclNlbGVjdC5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjbGVhclRpbWVvdXQodG91Y2hUaW1lci5jdXJyZW50KTtcbiAgfSwgW10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoY2xvc2VUaW1lci5jdXJyZW50KTtcbiAgICAgIGNsZWFyVGltZW91dChlbnRlclRpbWVyLmN1cnJlbnQpO1xuICAgICAgY2xlYXJUaW1lb3V0KGxlYXZlVGltZXIuY3VycmVudCk7XG4gICAgICBzdG9wVG91Y2hJbnRlcmFjdGlvbigpO1xuICAgIH07XG4gIH0sIFtzdG9wVG91Y2hJbnRlcmFjdGlvbl0pO1xuICBjb25zdCBoYW5kbGVPcGVuID0gZXZlbnQgPT4ge1xuICAgIGNsZWFyVGltZW91dChoeXN0ZXJzaXNUaW1lcik7XG4gICAgaHlzdGVyc2lzT3BlbiA9IHRydWU7XG5cbiAgICAvLyBUaGUgbW91c2VvdmVyIGV2ZW50IHdpbGwgdHJpZ2dlciBmb3IgZXZlcnkgbmVzdGVkIGVsZW1lbnQgaW4gdGhlIHRvb2x0aXAuXG4gICAgLy8gV2UgY2FuIHNraXAgcmVyZW5kZXJpbmcgd2hlbiB0aGUgdG9vbHRpcCBpcyBhbHJlYWR5IG9wZW4uXG4gICAgLy8gV2UgYXJlIHVzaW5nIHRoZSBtb3VzZW92ZXIgZXZlbnQgaW5zdGVhZCBvZiB0aGUgbW91c2VlbnRlciBldmVudCB0byBmaXggYSBoaWRlL3Nob3cgaXNzdWUuXG4gICAgc2V0T3BlblN0YXRlKHRydWUpO1xuICAgIGlmIChvbk9wZW4gJiYgIW9wZW4pIHtcbiAgICAgIG9uT3BlbihldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVDbG9zZSA9IHVzZUV2ZW50Q2FsbGJhY2soXG4gIC8qKlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50IHwgRXZlbnR9IGV2ZW50XG4gICAqL1xuICBldmVudCA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KGh5c3RlcnNpc1RpbWVyKTtcbiAgICBoeXN0ZXJzaXNUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaHlzdGVyc2lzT3BlbiA9IGZhbHNlO1xuICAgIH0sIDgwMCArIGxlYXZlRGVsYXkpO1xuICAgIHNldE9wZW5TdGF0ZShmYWxzZSk7XG4gICAgaWYgKG9uQ2xvc2UgJiYgb3Blbikge1xuICAgICAgb25DbG9zZShldmVudCk7XG4gICAgfVxuICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyLmN1cnJlbnQpO1xuICAgIGNsb3NlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWdub3JlTm9uVG91Y2hFdmVudHMuY3VycmVudCA9IGZhbHNlO1xuICAgIH0sIHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXN0KTtcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUVudGVyID0gZXZlbnQgPT4ge1xuICAgIGlmIChpZ25vcmVOb25Ub3VjaEV2ZW50cy5jdXJyZW50ICYmIGV2ZW50LnR5cGUgIT09ICd0b3VjaHN0YXJ0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgdGl0bGUgYWhlYWQgb2YgdGltZS5cbiAgICAvLyBXZSBkb24ndCB3YW50IHRvIHdhaXQgZm9yIHRoZSBuZXh0IHJlbmRlciBjb21taXQuXG4gICAgLy8gV2Ugd291bGQgcmlzayBkaXNwbGF5aW5nIHR3byB0b29sdGlwcyBhdCB0aGUgc2FtZSB0aW1lIChuYXRpdmUgKyB0aGlzIG9uZSkuXG4gICAgaWYgKGNoaWxkTm9kZSkge1xuICAgICAgY2hpbGROb2RlLnJlbW92ZUF0dHJpYnV0ZSgndGl0bGUnKTtcbiAgICB9XG4gICAgY2xlYXJUaW1lb3V0KGVudGVyVGltZXIuY3VycmVudCk7XG4gICAgY2xlYXJUaW1lb3V0KGxlYXZlVGltZXIuY3VycmVudCk7XG4gICAgaWYgKGVudGVyRGVsYXkgfHwgaHlzdGVyc2lzT3BlbiAmJiBlbnRlck5leHREZWxheSkge1xuICAgICAgZW50ZXJUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhbmRsZU9wZW4oZXZlbnQpO1xuICAgICAgfSwgaHlzdGVyc2lzT3BlbiA/IGVudGVyTmV4dERlbGF5IDogZW50ZXJEZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZU9wZW4oZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlTGVhdmUgPSBldmVudCA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KGVudGVyVGltZXIuY3VycmVudCk7XG4gICAgY2xlYXJUaW1lb3V0KGxlYXZlVGltZXIuY3VycmVudCk7XG4gICAgbGVhdmVUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBoYW5kbGVDbG9zZShldmVudCk7XG4gICAgfSwgbGVhdmVEZWxheSk7XG4gIH07XG4gIGNvbnN0IHtcbiAgICBpc0ZvY3VzVmlzaWJsZVJlZixcbiAgICBvbkJsdXI6IGhhbmRsZUJsdXJWaXNpYmxlLFxuICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzVmlzaWJsZSxcbiAgICByZWY6IGZvY3VzVmlzaWJsZVJlZlxuICB9ID0gdXNlSXNGb2N1c1Zpc2libGUoKTtcbiAgLy8gV2UgZG9uJ3QgbmVjZXNzYXJpbHkgY2FyZSBhYm91dCB0aGUgZm9jdXNWaXNpYmxlIHN0YXRlICh3aGljaCBpcyBzYWZlIHRvIGFjY2VzcyB2aWEgcmVmIGFueXdheSkuXG4gIC8vIFdlIGp1c3QgbmVlZCB0byByZS1yZW5kZXIgdGhlIFRvb2x0aXAgaWYgdGhlIGZvY3VzLXZpc2libGUgc3RhdGUgY2hhbmdlcy5cbiAgY29uc3QgWywgc2V0Q2hpbGRJc0ZvY3VzVmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGhhbmRsZUJsdXIgPSBldmVudCA9PiB7XG4gICAgaGFuZGxlQmx1clZpc2libGUoZXZlbnQpO1xuICAgIGlmIChpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID09PSBmYWxzZSkge1xuICAgICAgc2V0Q2hpbGRJc0ZvY3VzVmlzaWJsZShmYWxzZSk7XG4gICAgICBoYW5kbGVMZWF2ZShldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVGb2N1cyA9IGV2ZW50ID0+IHtcbiAgICAvLyBXb3JrYXJvdW5kIGZvciBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzc3NjlcbiAgICAvLyBUaGUgYXV0b0ZvY3VzIG9mIFJlYWN0IG1pZ2h0IHRyaWdnZXIgdGhlIGV2ZW50IGJlZm9yZSB0aGUgY29tcG9uZW50RGlkTW91bnQuXG4gICAgLy8gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGlzIGV2ZW50dWFsaXR5LlxuICAgIGlmICghY2hpbGROb2RlKSB7XG4gICAgICBzZXRDaGlsZE5vZGUoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgfVxuICAgIGhhbmRsZUZvY3VzVmlzaWJsZShldmVudCk7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlUmVmLmN1cnJlbnQgPT09IHRydWUpIHtcbiAgICAgIHNldENoaWxkSXNGb2N1c1Zpc2libGUodHJ1ZSk7XG4gICAgICBoYW5kbGVFbnRlcihldmVudCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBkZXRlY3RUb3VjaFN0YXJ0ID0gZXZlbnQgPT4ge1xuICAgIGlnbm9yZU5vblRvdWNoRXZlbnRzLmN1cnJlbnQgPSB0cnVlO1xuICAgIGNvbnN0IGNoaWxkcmVuUHJvcHMgPSBjaGlsZHJlbi5wcm9wcztcbiAgICBpZiAoY2hpbGRyZW5Qcm9wcy5vblRvdWNoU3RhcnQpIHtcbiAgICAgIGNoaWxkcmVuUHJvcHMub25Ub3VjaFN0YXJ0KGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZU1vdXNlT3ZlciA9IGhhbmRsZUVudGVyO1xuICBjb25zdCBoYW5kbGVNb3VzZUxlYXZlID0gaGFuZGxlTGVhdmU7XG4gIGNvbnN0IGhhbmRsZVRvdWNoU3RhcnQgPSBldmVudCA9PiB7XG4gICAgZGV0ZWN0VG91Y2hTdGFydChldmVudCk7XG4gICAgY2xlYXJUaW1lb3V0KGxlYXZlVGltZXIuY3VycmVudCk7XG4gICAgY2xlYXJUaW1lb3V0KGNsb3NlVGltZXIuY3VycmVudCk7XG4gICAgc3RvcFRvdWNoSW50ZXJhY3Rpb24oKTtcbiAgICBwcmV2VXNlclNlbGVjdC5jdXJyZW50ID0gZG9jdW1lbnQuYm9keS5zdHlsZS5XZWJraXRVc2VyU2VsZWN0O1xuICAgIC8vIFByZXZlbnQgaU9TIHRleHQgc2VsZWN0aW9uIG9uIGxvbmctdGFwLlxuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuV2Via2l0VXNlclNlbGVjdCA9ICdub25lJztcbiAgICB0b3VjaFRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuV2Via2l0VXNlclNlbGVjdCA9IHByZXZVc2VyU2VsZWN0LmN1cnJlbnQ7XG4gICAgICBoYW5kbGVFbnRlcihldmVudCk7XG4gICAgfSwgZW50ZXJUb3VjaERlbGF5KTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlVG91Y2hFbmQgPSBldmVudCA9PiB7XG4gICAgaWYgKGNoaWxkcmVuLnByb3BzLm9uVG91Y2hFbmQpIHtcbiAgICAgIGNoaWxkcmVuLnByb3BzLm9uVG91Y2hFbmQoZXZlbnQpO1xuICAgIH1cbiAgICBzdG9wVG91Y2hJbnRlcmFjdGlvbigpO1xuICAgIGNsZWFyVGltZW91dChsZWF2ZVRpbWVyLmN1cnJlbnQpO1xuICAgIGxlYXZlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaGFuZGxlQ2xvc2UoZXZlbnQpO1xuICAgIH0sIGxlYXZlVG91Y2hEZWxheSk7XG4gIH07XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gbmF0aXZlRXZlbnRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBoYW5kbGVLZXlEb3duKG5hdGl2ZUV2ZW50KSB7XG4gICAgICAvLyBJRTExLCBFZGdlIChwcmlvciB0byB1c2luZyBCaW5rPykgdXNlICdFc2MnXG4gICAgICBpZiAobmF0aXZlRXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBuYXRpdmVFdmVudC5rZXkgPT09ICdFc2MnKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKG5hdGl2ZUV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bik7XG4gICAgfTtcbiAgfSwgW2hhbmRsZUNsb3NlLCBvcGVuXSk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYoY2hpbGRyZW4ucmVmLCBmb2N1c1Zpc2libGVSZWYsIHNldENoaWxkTm9kZSwgcmVmKTtcblxuICAvLyBUaGVyZSBpcyBubyBwb2ludCBpbiBkaXNwbGF5aW5nIGFuIGVtcHR5IHRvb2x0aXAuXG4gIGlmICghdGl0bGUgJiYgdGl0bGUgIT09IDApIHtcbiAgICBvcGVuID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgcG9wcGVyUmVmID0gUmVhY3QudXNlUmVmKCk7XG4gIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IGV2ZW50ID0+IHtcbiAgICBjb25zdCBjaGlsZHJlblByb3BzID0gY2hpbGRyZW4ucHJvcHM7XG4gICAgaWYgKGNoaWxkcmVuUHJvcHMub25Nb3VzZU1vdmUpIHtcbiAgICAgIGNoaWxkcmVuUHJvcHMub25Nb3VzZU1vdmUoZXZlbnQpO1xuICAgIH1cbiAgICBjdXJzb3JQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgfTtcbiAgICBpZiAocG9wcGVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHBvcHBlclJlZi5jdXJyZW50LnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbmFtZU9yRGVzY1Byb3BzID0ge307XG4gIGNvbnN0IHRpdGxlSXNTdHJpbmcgPSB0eXBlb2YgdGl0bGUgPT09ICdzdHJpbmcnO1xuICBpZiAoZGVzY3JpYmVDaGlsZCkge1xuICAgIG5hbWVPckRlc2NQcm9wcy50aXRsZSA9ICFvcGVuICYmIHRpdGxlSXNTdHJpbmcgJiYgIWRpc2FibGVIb3Zlckxpc3RlbmVyID8gdGl0bGUgOiBudWxsO1xuICAgIG5hbWVPckRlc2NQcm9wc1snYXJpYS1kZXNjcmliZWRieSddID0gb3BlbiA/IGlkIDogbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBuYW1lT3JEZXNjUHJvcHNbJ2FyaWEtbGFiZWwnXSA9IHRpdGxlSXNTdHJpbmcgPyB0aXRsZSA6IG51bGw7XG4gICAgbmFtZU9yRGVzY1Byb3BzWydhcmlhLWxhYmVsbGVkYnknXSA9IG9wZW4gJiYgIXRpdGxlSXNTdHJpbmcgPyBpZCA6IG51bGw7XG4gIH1cbiAgY29uc3QgY2hpbGRyZW5Qcm9wcyA9IF9leHRlbmRzKHt9LCBuYW1lT3JEZXNjUHJvcHMsIG90aGVyLCBjaGlsZHJlbi5wcm9wcywge1xuICAgIGNsYXNzTmFtZTogY2xzeChvdGhlci5jbGFzc05hbWUsIGNoaWxkcmVuLnByb3BzLmNsYXNzTmFtZSksXG4gICAgb25Ub3VjaFN0YXJ0OiBkZXRlY3RUb3VjaFN0YXJ0LFxuICAgIHJlZjogaGFuZGxlUmVmXG4gIH0sIGZvbGxvd0N1cnNvciA/IHtcbiAgICBvbk1vdXNlTW92ZTogaGFuZGxlTW91c2VNb3ZlXG4gIH0gOiB7fSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hpbGRyZW5Qcm9wc1snZGF0YS1tdWktaW50ZXJuYWwtY2xvbmUtZWxlbWVudCddID0gdHJ1ZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoY2hpbGROb2RlICYmICFjaGlsZE5vZGUuZ2V0QXR0cmlidXRlKCdkYXRhLW11aS1pbnRlcm5hbC1jbG9uZS1lbGVtZW50JykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogVGhlIGBjaGlsZHJlbmAgY29tcG9uZW50IG9mIHRoZSBUb29sdGlwIGlzIG5vdCBmb3J3YXJkaW5nIGl0cyBwcm9wcyBjb3JyZWN0bHkuJywgJ1BsZWFzZSBtYWtlIHN1cmUgdGhhdCBwcm9wcyBhcmUgc3ByZWFkIG9uIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCB0aGUgcmVmIGlzIGFwcGxpZWQgdG8uJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH0sIFtjaGlsZE5vZGVdKTtcbiAgfVxuICBjb25zdCBpbnRlcmFjdGl2ZVdyYXBwZXJMaXN0ZW5lcnMgPSB7fTtcbiAgaWYgKCFkaXNhYmxlVG91Y2hMaXN0ZW5lcikge1xuICAgIGNoaWxkcmVuUHJvcHMub25Ub3VjaFN0YXJ0ID0gaGFuZGxlVG91Y2hTdGFydDtcbiAgICBjaGlsZHJlblByb3BzLm9uVG91Y2hFbmQgPSBoYW5kbGVUb3VjaEVuZDtcbiAgfVxuICBpZiAoIWRpc2FibGVIb3Zlckxpc3RlbmVyKSB7XG4gICAgY2hpbGRyZW5Qcm9wcy5vbk1vdXNlT3ZlciA9IGNvbXBvc2VFdmVudEhhbmRsZXIoaGFuZGxlTW91c2VPdmVyLCBjaGlsZHJlblByb3BzLm9uTW91c2VPdmVyKTtcbiAgICBjaGlsZHJlblByb3BzLm9uTW91c2VMZWF2ZSA9IGNvbXBvc2VFdmVudEhhbmRsZXIoaGFuZGxlTW91c2VMZWF2ZSwgY2hpbGRyZW5Qcm9wcy5vbk1vdXNlTGVhdmUpO1xuICAgIGlmICghZGlzYWJsZUludGVyYWN0aXZlKSB7XG4gICAgICBpbnRlcmFjdGl2ZVdyYXBwZXJMaXN0ZW5lcnMub25Nb3VzZU92ZXIgPSBoYW5kbGVNb3VzZU92ZXI7XG4gICAgICBpbnRlcmFjdGl2ZVdyYXBwZXJMaXN0ZW5lcnMub25Nb3VzZUxlYXZlID0gaGFuZGxlTW91c2VMZWF2ZTtcbiAgICB9XG4gIH1cbiAgaWYgKCFkaXNhYmxlRm9jdXNMaXN0ZW5lcikge1xuICAgIGNoaWxkcmVuUHJvcHMub25Gb2N1cyA9IGNvbXBvc2VFdmVudEhhbmRsZXIoaGFuZGxlRm9jdXMsIGNoaWxkcmVuUHJvcHMub25Gb2N1cyk7XG4gICAgY2hpbGRyZW5Qcm9wcy5vbkJsdXIgPSBjb21wb3NlRXZlbnRIYW5kbGVyKGhhbmRsZUJsdXIsIGNoaWxkcmVuUHJvcHMub25CbHVyKTtcbiAgICBpZiAoIWRpc2FibGVJbnRlcmFjdGl2ZSkge1xuICAgICAgaW50ZXJhY3RpdmVXcmFwcGVyTGlzdGVuZXJzLm9uRm9jdXMgPSBoYW5kbGVGb2N1cztcbiAgICAgIGludGVyYWN0aXZlV3JhcHBlckxpc3RlbmVycy5vbkJsdXIgPSBoYW5kbGVCbHVyO1xuICAgIH1cbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChjaGlsZHJlbi5wcm9wcy50aXRsZSkge1xuICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogWW91IGhhdmUgcHJvdmlkZWQgYSBgdGl0bGVgIHByb3AgdG8gdGhlIGNoaWxkIG9mIDxUb29sdGlwIC8+LicsIGBSZW1vdmUgdGhpcyB0aXRsZSBwcm9wIFxcYCR7Y2hpbGRyZW4ucHJvcHMudGl0bGV9XFxgIG9yIHRoZSBUb29sdGlwIGNvbXBvbmVudC5gXS5qb2luKCdcXG4nKSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBvcHBlck9wdGlvbnMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICB2YXIgX1BvcHBlclByb3BzJHBvcHBlck9wO1xuICAgIGxldCB0b29sdGlwTW9kaWZpZXJzID0gW3tcbiAgICAgIG5hbWU6ICdhcnJvdycsXG4gICAgICBlbmFibGVkOiBCb29sZWFuKGFycm93UmVmKSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZWxlbWVudDogYXJyb3dSZWYsXG4gICAgICAgIHBhZGRpbmc6IDRcbiAgICAgIH1cbiAgICB9XTtcbiAgICBpZiAoKF9Qb3BwZXJQcm9wcyRwb3BwZXJPcCA9IFBvcHBlclByb3BzLnBvcHBlck9wdGlvbnMpICE9IG51bGwgJiYgX1BvcHBlclByb3BzJHBvcHBlck9wLm1vZGlmaWVycykge1xuICAgICAgdG9vbHRpcE1vZGlmaWVycyA9IHRvb2x0aXBNb2RpZmllcnMuY29uY2F0KFBvcHBlclByb3BzLnBvcHBlck9wdGlvbnMubW9kaWZpZXJzKTtcbiAgICB9XG4gICAgcmV0dXJuIF9leHRlbmRzKHt9LCBQb3BwZXJQcm9wcy5wb3BwZXJPcHRpb25zLCB7XG4gICAgICBtb2RpZmllcnM6IHRvb2x0aXBNb2RpZmllcnNcbiAgICB9KTtcbiAgfSwgW2Fycm93UmVmLCBQb3BwZXJQcm9wc10pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgaXNSdGwsXG4gICAgYXJyb3csXG4gICAgZGlzYWJsZUludGVyYWN0aXZlLFxuICAgIHBsYWNlbWVudCxcbiAgICBQb3BwZXJDb21wb25lbnRQcm9wLFxuICAgIHRvdWNoOiBpZ25vcmVOb25Ub3VjaEV2ZW50cy5jdXJyZW50XG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IFBvcHBlckNvbXBvbmVudCA9IChfcmVmID0gKF9zbG90cyRwb3BwZXIgPSBzbG90cy5wb3BwZXIpICE9IG51bGwgPyBfc2xvdHMkcG9wcGVyIDogY29tcG9uZW50cy5Qb3BwZXIpICE9IG51bGwgPyBfcmVmIDogVG9vbHRpcFBvcHBlcjtcbiAgY29uc3QgVHJhbnNpdGlvbkNvbXBvbmVudCA9IChfcmVmMiA9IChfcmVmMyA9IChfc2xvdHMkdHJhbnNpdGlvbiA9IHNsb3RzLnRyYW5zaXRpb24pICE9IG51bGwgPyBfc2xvdHMkdHJhbnNpdGlvbiA6IGNvbXBvbmVudHMuVHJhbnNpdGlvbikgIT0gbnVsbCA/IF9yZWYzIDogVHJhbnNpdGlvbkNvbXBvbmVudFByb3ApICE9IG51bGwgPyBfcmVmMiA6IEdyb3c7XG4gIGNvbnN0IFRvb2x0aXBDb21wb25lbnQgPSAoX3JlZjQgPSAoX3Nsb3RzJHRvb2x0aXAgPSBzbG90cy50b29sdGlwKSAhPSBudWxsID8gX3Nsb3RzJHRvb2x0aXAgOiBjb21wb25lbnRzLlRvb2x0aXApICE9IG51bGwgPyBfcmVmNCA6IFRvb2x0aXBUb29sdGlwO1xuICBjb25zdCBBcnJvd0NvbXBvbmVudCA9IChfcmVmNSA9IChfc2xvdHMkYXJyb3cgPSBzbG90cy5hcnJvdykgIT0gbnVsbCA/IF9zbG90cyRhcnJvdyA6IGNvbXBvbmVudHMuQXJyb3cpICE9IG51bGwgPyBfcmVmNSA6IFRvb2x0aXBBcnJvdztcbiAgY29uc3QgcG9wcGVyUHJvcHMgPSBhcHBlbmRPd25lclN0YXRlKFBvcHBlckNvbXBvbmVudCwgX2V4dGVuZHMoe30sIFBvcHBlclByb3BzLCAoX3Nsb3RQcm9wcyRwb3BwZXIgPSBzbG90UHJvcHMucG9wcGVyKSAhPSBudWxsID8gX3Nsb3RQcm9wcyRwb3BwZXIgOiBjb21wb25lbnRzUHJvcHMucG9wcGVyLCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucG9wcGVyLCBQb3BwZXJQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogUG9wcGVyUHJvcHMuY2xhc3NOYW1lLCAoX3JlZjYgPSAoX3Nsb3RQcm9wcyRwb3BwZXIyID0gc2xvdFByb3BzLnBvcHBlcikgIT0gbnVsbCA/IF9zbG90UHJvcHMkcG9wcGVyMiA6IGNvbXBvbmVudHNQcm9wcy5wb3BwZXIpID09IG51bGwgPyB2b2lkIDAgOiBfcmVmNi5jbGFzc05hbWUpXG4gIH0pLCBvd25lclN0YXRlKTtcbiAgY29uc3QgdHJhbnNpdGlvblByb3BzID0gYXBwZW5kT3duZXJTdGF0ZShUcmFuc2l0aW9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7fSwgVHJhbnNpdGlvblByb3BzLCAoX3Nsb3RQcm9wcyR0cmFuc2l0aW9uID0gc2xvdFByb3BzLnRyYW5zaXRpb24pICE9IG51bGwgPyBfc2xvdFByb3BzJHRyYW5zaXRpb24gOiBjb21wb25lbnRzUHJvcHMudHJhbnNpdGlvbiksIG93bmVyU3RhdGUpO1xuICBjb25zdCB0b29sdGlwUHJvcHMgPSBhcHBlbmRPd25lclN0YXRlKFRvb2x0aXBDb21wb25lbnQsIF9leHRlbmRzKHt9LCAoX3Nsb3RQcm9wcyR0b29sdGlwID0gc2xvdFByb3BzLnRvb2x0aXApICE9IG51bGwgPyBfc2xvdFByb3BzJHRvb2x0aXAgOiBjb21wb25lbnRzUHJvcHMudG9vbHRpcCwge1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnRvb2x0aXAsIChfcmVmNyA9IChfc2xvdFByb3BzJHRvb2x0aXAyID0gc2xvdFByb3BzLnRvb2x0aXApICE9IG51bGwgPyBfc2xvdFByb3BzJHRvb2x0aXAyIDogY29tcG9uZW50c1Byb3BzLnRvb2x0aXApID09IG51bGwgPyB2b2lkIDAgOiBfcmVmNy5jbGFzc05hbWUpXG4gIH0pLCBvd25lclN0YXRlKTtcbiAgY29uc3QgdG9vbHRpcEFycm93UHJvcHMgPSBhcHBlbmRPd25lclN0YXRlKEFycm93Q29tcG9uZW50LCBfZXh0ZW5kcyh7fSwgKF9zbG90UHJvcHMkYXJyb3cgPSBzbG90UHJvcHMuYXJyb3cpICE9IG51bGwgPyBfc2xvdFByb3BzJGFycm93IDogY29tcG9uZW50c1Byb3BzLmFycm93LCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuYXJyb3csIChfcmVmOCA9IChfc2xvdFByb3BzJGFycm93MiA9IHNsb3RQcm9wcy5hcnJvdykgIT0gbnVsbCA/IF9zbG90UHJvcHMkYXJyb3cyIDogY29tcG9uZW50c1Byb3BzLmFycm93KSA9PSBudWxsID8gdm9pZCAwIDogX3JlZjguY2xhc3NOYW1lKVxuICB9KSwgb3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIGNoaWxkcmVuUHJvcHMpLCAvKiNfX1BVUkVfXyovX2pzeChQb3BwZXJDb21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgIGFzOiBQb3BwZXJDb21wb25lbnRQcm9wICE9IG51bGwgPyBQb3BwZXJDb21wb25lbnRQcm9wIDogUG9wcGVyLFxuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBhbmNob3JFbDogZm9sbG93Q3Vyc29yID8ge1xuICAgICAgICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6ICgpID0+ICh7XG4gICAgICAgICAgdG9wOiBjdXJzb3JQb3NpdGlvbi55LFxuICAgICAgICAgIGxlZnQ6IGN1cnNvclBvc2l0aW9uLngsXG4gICAgICAgICAgcmlnaHQ6IGN1cnNvclBvc2l0aW9uLngsXG4gICAgICAgICAgYm90dG9tOiBjdXJzb3JQb3NpdGlvbi55LFxuICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgIGhlaWdodDogMFxuICAgICAgICB9KVxuICAgICAgfSA6IGNoaWxkTm9kZSxcbiAgICAgIHBvcHBlclJlZjogcG9wcGVyUmVmLFxuICAgICAgb3BlbjogY2hpbGROb2RlID8gb3BlbiA6IGZhbHNlLFxuICAgICAgaWQ6IGlkLFxuICAgICAgdHJhbnNpdGlvbjogdHJ1ZVxuICAgIH0sIGludGVyYWN0aXZlV3JhcHBlckxpc3RlbmVycywgcG9wcGVyUHJvcHMsIHtcbiAgICAgIHBvcHBlck9wdGlvbnM6IHBvcHBlck9wdGlvbnMsXG4gICAgICBjaGlsZHJlbjogKHtcbiAgICAgICAgVHJhbnNpdGlvblByb3BzOiBUcmFuc2l0aW9uUHJvcHNJbm5lclxuICAgICAgfSkgPT4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkNvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgICAgICB0aW1lb3V0OiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyXG4gICAgICB9LCBUcmFuc2l0aW9uUHJvcHNJbm5lciwgdHJhbnNpdGlvblByb3BzLCB7XG4gICAgICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeHMoVG9vbHRpcENvbXBvbmVudCwgX2V4dGVuZHMoe30sIHRvb2x0aXBQcm9wcywge1xuICAgICAgICAgIGNoaWxkcmVuOiBbdGl0bGUsIGFycm93ID8gLyojX19QVVJFX18qL19qc3goQXJyb3dDb21wb25lbnQsIF9leHRlbmRzKHt9LCB0b29sdGlwQXJyb3dQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBzZXRBcnJvd1JlZlxuICAgICAgICAgIH0pKSA6IG51bGxdXG4gICAgICAgIH0pKVxuICAgICAgfSkpXG4gICAgfSkpXVxuICB9KTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVG9vbHRpcC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIGFkZHMgYW4gYXJyb3cgdG8gdGhlIHRvb2x0aXAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhcnJvdzogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUb29sdGlwIHJlZmVyZW5jZSBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IGVsZW1lbnRBY2NlcHRpbmdSZWYuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgc2xvdHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdHNgIHByb3AgaW5zdGVhZC5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgQXJyb3c6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBQb3BwZXI6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBUb29sdGlwOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgVHJhbnNpdGlvbjogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGV4dHJhIHByb3BzIGZvciB0aGUgc2xvdCBjb21wb25lbnRzLlxuICAgKiBZb3UgY2FuIG92ZXJyaWRlIHRoZSBleGlzdGluZyBwcm9wcyBvciBhZGQgbmV3IG9uZXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBzbG90UHJvcHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdFByb3BzYCBwcm9wIGluc3RlYWQsIGFzIGBjb21wb25lbnRzUHJvcHNgIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29tcG9uZW50c1Byb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFycm93OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHBvcHBlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB0b29sdGlwOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHRyYW5zaXRpb246IFByb3BUeXBlcy5vYmplY3RcbiAgfSksXG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGlmIHRoZSBgdGl0bGVgIGFjdHMgYXMgYW4gYWNjZXNzaWJsZSBkZXNjcmlwdGlvbi5cbiAgICogQnkgZGVmYXVsdCB0aGUgYHRpdGxlYCBhY3RzIGFzIGFuIGFjY2Vzc2libGUgbGFiZWwgZm9yIHRoZSBjaGlsZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlc2NyaWJlQ2hpbGQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRG8gbm90IHJlc3BvbmQgdG8gZm9jdXMtdmlzaWJsZSBldmVudHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNMaXN0ZW5lcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBEbyBub3QgcmVzcG9uZCB0byBob3ZlciBldmVudHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlSG92ZXJMaXN0ZW5lcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBNYWtlcyBhIHRvb2x0aXAgbm90IGludGVyYWN0aXZlLCBpLmUuIGl0IHdpbGwgY2xvc2Ugd2hlbiB0aGUgdXNlclxuICAgKiBob3ZlcnMgb3ZlciB0aGUgdG9vbHRpcCBiZWZvcmUgdGhlIGBsZWF2ZURlbGF5YCBpcyBleHBpcmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUludGVyYWN0aXZlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIERvIG5vdCByZXNwb25kIHRvIGxvbmcgcHJlc3MgdG91Y2ggZXZlbnRzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVRvdWNoTGlzdGVuZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc2hvd2luZyB0aGUgdG9vbHRpcC5cbiAgICogVGhpcyBwcm9wIHdvbid0IGltcGFjdCB0aGUgZW50ZXIgdG91Y2ggZGVsYXkgKGBlbnRlclRvdWNoRGVsYXlgKS5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICBlbnRlckRlbGF5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgc2hvd2luZyB0aGUgdG9vbHRpcCB3aGVuIG9uZSB3YXMgYWxyZWFkeSByZWNlbnRseSBvcGVuZWQuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIGVudGVyTmV4dERlbGF5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYSB1c2VyIG11c3QgdG91Y2ggdGhlIGVsZW1lbnQgYmVmb3JlIHNob3dpbmcgdGhlIHRvb2x0aXAuXG4gICAqIEBkZWZhdWx0IDcwMFxuICAgKi9cbiAgZW50ZXJUb3VjaERlbGF5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdG9vbHRpcCBmb2xsb3cgdGhlIGN1cnNvciBvdmVyIHRoZSB3cmFwcGVkIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmb2xsb3dDdXJzb3I6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhpcyBwcm9wIGlzIHVzZWQgdG8gaGVscCBpbXBsZW1lbnQgdGhlIGFjY2Vzc2liaWxpdHkgbG9naWMuXG4gICAqIElmIHlvdSBkb24ndCBwcm92aWRlIHRoaXMgcHJvcC4gSXQgZmFsbHMgYmFjayB0byBhIHJhbmRvbWx5IGdlbmVyYXRlZCBpZC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgKiBUaGlzIHByb3Agd29uJ3QgaW1wYWN0IHRoZSBsZWF2ZSB0b3VjaCBkZWxheSAoYGxlYXZlVG91Y2hEZWxheWApLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBsZWF2ZURlbGF5OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgc3RvcHMgdG91Y2hpbmcgYW4gZWxlbWVudCBiZWZvcmUgaGlkaW5nIHRoZSB0b29sdGlwLlxuICAgKiBAZGVmYXVsdCAxNTAwXG4gICAqL1xuICBsZWF2ZVRvdWNoRGVsYXk6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSBjb21wb25lbnQgcmVxdWVzdHMgdG8gYmUgY2xvc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IHJlcXVlc3RzIHRvIGJlIG9wZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3QuU3ludGhldGljRXZlbnR9IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKi9cbiAgb25PcGVuOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBzaG93bi5cbiAgICovXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVG9vbHRpcCBwbGFjZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdib3R0b20nXG4gICAqL1xuICBwbGFjZW1lbnQ6IFByb3BUeXBlcy5vbmVPZihbJ2JvdHRvbS1lbmQnLCAnYm90dG9tLXN0YXJ0JywgJ2JvdHRvbScsICdsZWZ0LWVuZCcsICdsZWZ0LXN0YXJ0JywgJ2xlZnQnLCAncmlnaHQtZW5kJywgJ3JpZ2h0LXN0YXJ0JywgJ3JpZ2h0JywgJ3RvcC1lbmQnLCAndG9wLXN0YXJ0JywgJ3RvcCddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHBvcHBlci5cbiAgICogQGRlZmF1bHQgUG9wcGVyXG4gICAqL1xuICBQb3BwZXJDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIFtgUG9wcGVyYF0oL21hdGVyaWFsLXVpL2FwaS9wb3BwZXIvKSBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgUG9wcGVyUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYGNvbXBvbmVudHNQcm9wc2AgcHJvcCwgd2hpY2ggd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90UHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYXJyb3c6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcG9wcGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHRvb2x0aXA6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdHJhbnNpdGlvbjogUHJvcFR5cGVzLm9iamVjdFxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBjb21wb25lbnRzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGFycm93OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgcG9wcGVyOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgdG9vbHRpcDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIHRyYW5zaXRpb246IFByb3BUeXBlcy5lbGVtZW50VHlwZVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRvb2x0aXAgdGl0bGUuIFplcm8tbGVuZ3RoIHRpdGxlcyBzdHJpbmcsIHVuZGVmaW5lZCwgbnVsbCBhbmQgZmFsc2UgYXJlIG5ldmVyIGRpc3BsYXllZC5cbiAgICovXG4gIHRpdGxlOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHRyYW5zaXRpb24uXG4gICAqIFtGb2xsb3cgdGhpcyBndWlkZV0oL21hdGVyaWFsLXVpL3RyYW5zaXRpb25zLyN0cmFuc2l0aW9uY29tcG9uZW50LXByb3ApIHRvIGxlYXJuIG1vcmUgYWJvdXQgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IEdyb3dcbiAgICovXG4gIFRyYW5zaXRpb25Db21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIHRyYW5zaXRpb24gZWxlbWVudC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGVsZW1lbnQgaXMgYmFzZWQgb24gdGhpcyBbYFRyYW5zaXRpb25gXShodHRwOi8vcmVhY3Rjb21tdW5pdHkub3JnL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvdHJhbnNpdGlvbi8pIGNvbXBvbmVudC5cbiAgICovXG4gIFRyYW5zaXRpb25Qcm9wczogUHJvcFR5cGVzLm9iamVjdFxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFRvb2x0aXA7Il0sIm5hbWVzIjpbImdldFRvb2x0aXBVdGlsaXR5Q2xhc3MiLCJzbG90IiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiVG9vbHRpcFBvcHBlciIsInN0eWxlZCIsIlBvcHBlciIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwib3duZXJTdGF0ZSIsInBvcHBlciIsImRpc2FibGVJbnRlcmFjdGl2ZSIsInBvcHBlckludGVyYWN0aXZlIiwiYXJyb3ciLCJwb3BwZXJBcnJvdyIsIm9wZW4iLCJwb3BwZXJDbG9zZSIsInRoZW1lIiwiekluZGV4IiwidmFycyIsInRvb2x0aXAiLCJwb2ludGVyRXZlbnRzIiwidG9wIiwibWFyZ2luVG9wIiwidHJhbnNmb3JtT3JpZ2luIiwiYm90dG9tIiwibWFyZ2luQm90dG9tIiwiaXNSdGwiLCJyaWdodCIsIm1hcmdpblJpZ2h0IiwibGVmdCIsIm1hcmdpbkxlZnQiLCJoZWlnaHQiLCJ3aWR0aCIsIlRvb2x0aXBUb29sdGlwIiwidG91Y2giLCJ0b29sdGlwQXJyb3ciLCJjYXBpdGFsaXplIiwicGxhY2VtZW50Iiwic3BsaXQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwYWxldHRlIiwiVG9vbHRpcCIsImJnIiwiZ3JleSIsImJvcmRlclJhZGl1cyIsInNoYXBlIiwiY29sb3IiLCJjb21tb24iLCJ3aGl0ZSIsImZvbnRGYW1pbHkiLCJ0eXBvZ3JhcGh5IiwicGFkZGluZyIsImZvbnRTaXplIiwicHhUb1JlbSIsIm1heFdpZHRoIiwibWFyZ2luIiwid29yZFdyYXAiLCJmb250V2VpZ2h0IiwiZm9udFdlaWdodE1lZGl1bSIsInBvc2l0aW9uIiwibGluZUhlaWdodCIsInZhbHVlIiwiTWF0aCIsInJvdW5kIiwiZm9udFdlaWdodFJlZ3VsYXIiLCJUb29sdGlwQXJyb3ciLCJvdmVyZmxvdyIsImJveFNpemluZyIsImNvbnRlbnQiLCJkaXNwbGF5IiwidHJhbnNmb3JtIiwiaHlzdGVyc2lzT3BlbiIsImh5c3RlcnNpc1RpbWVyIiwiY3Vyc29yUG9zaXRpb24iLCJ4IiwieSIsImNvbXBvc2VFdmVudEhhbmRsZXIiLCJoYW5kbGVyIiwiZXZlbnRIYW5kbGVyIiwiZXZlbnQiLCJpblByb3BzIiwicmVmIiwiX3JlZiIsIl9zbG90cyRwb3BwZXIiLCJfcmVmMiIsIl9yZWYzIiwiX3Nsb3RzJHRyYW5zaXRpb24iLCJfcmVmNCIsIl9zbG90cyR0b29sdGlwIiwiX3JlZjUiLCJfc2xvdHMkYXJyb3ciLCJfc2xvdFByb3BzJHBvcHBlciIsIl9yZWY2IiwiX3Nsb3RQcm9wcyRwb3BwZXIyIiwiX3Nsb3RQcm9wcyR0cmFuc2l0aW9uIiwiX3Nsb3RQcm9wcyR0b29sdGlwIiwiX3JlZjciLCJfc2xvdFByb3BzJHRvb2x0aXAyIiwiX3Nsb3RQcm9wcyRhcnJvdyIsIl9yZWY4IiwiX3Nsb3RQcm9wcyRhcnJvdzIiLCJ1c2VUaGVtZVByb3BzIiwiY2hpbGRyZW4iLCJjaGlsZHJlblByb3AiLCJjb21wb25lbnRzIiwiY29tcG9uZW50c1Byb3BzIiwiZGVzY3JpYmVDaGlsZCIsImRpc2FibGVGb2N1c0xpc3RlbmVyIiwiZGlzYWJsZUhvdmVyTGlzdGVuZXIiLCJkaXNhYmxlSW50ZXJhY3RpdmVQcm9wIiwiZGlzYWJsZVRvdWNoTGlzdGVuZXIiLCJlbnRlckRlbGF5IiwiZW50ZXJOZXh0RGVsYXkiLCJlbnRlclRvdWNoRGVsYXkiLCJmb2xsb3dDdXJzb3IiLCJpZCIsImlkUHJvcCIsImxlYXZlRGVsYXkiLCJsZWF2ZVRvdWNoRGVsYXkiLCJvbkNsb3NlIiwib25PcGVuIiwib3BlblByb3AiLCJQb3BwZXJDb21wb25lbnQiLCJQb3BwZXJDb21wb25lbnRQcm9wIiwiUG9wcGVyUHJvcHMiLCJzbG90UHJvcHMiLCJzbG90cyIsInRpdGxlIiwiVHJhbnNpdGlvbkNvbXBvbmVudCIsIlRyYW5zaXRpb25Db21wb25lbnRQcm9wIiwiR3JvdyIsIlRyYW5zaXRpb25Qcm9wcyIsIm90aGVyIiwidXNlVGhlbWUiLCJkaXJlY3Rpb24iLCJjaGlsZE5vZGUiLCJzZXRDaGlsZE5vZGUiLCJhcnJvd1JlZiIsInNldEFycm93UmVmIiwiaWdub3JlTm9uVG91Y2hFdmVudHMiLCJjbG9zZVRpbWVyIiwiZW50ZXJUaW1lciIsImxlYXZlVGltZXIiLCJ0b3VjaFRpbWVyIiwib3BlblN0YXRlIiwic2V0T3BlblN0YXRlIiwidXNlQ29udHJvbGxlZCIsImNvbnRyb2xsZWQiLCJkZWZhdWx0Iiwic3RhdGUiLCJ1c2VJZCIsInByZXZVc2VyU2VsZWN0Iiwic3RvcFRvdWNoSW50ZXJhY3Rpb24iLCJ1bmRlZmluZWQiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJib2R5Iiwic3R5bGUiLCJXZWJraXRVc2VyU2VsZWN0IiwiY2xlYXJUaW1lb3V0IiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwidXNlRXZlbnRDYWxsYmFjayIsInNldFRpbWVvdXQiLCJ0cmFuc2l0aW9ucyIsImR1cmF0aW9uIiwic2hvcnRlc3QiLCJoYW5kbGVFbnRlciIsInR5cGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJoYW5kbGVMZWF2ZSIsImlzRm9jdXNWaXNpYmxlUmVmIiwib25CbHVyIiwiaGFuZGxlQmx1clZpc2libGUiLCJvbkZvY3VzIiwiaGFuZGxlRm9jdXNWaXNpYmxlIiwiZm9jdXNWaXNpYmxlUmVmIiwidXNlSXNGb2N1c1Zpc2libGUiLCJzZXRDaGlsZElzRm9jdXNWaXNpYmxlIiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwiY3VycmVudFRhcmdldCIsImRldGVjdFRvdWNoU3RhcnQiLCJjaGlsZHJlblByb3BzIiwib25Ub3VjaFN0YXJ0IiwiaGFuZGxlTW91c2VPdmVyIiwiaGFuZGxlTW91c2VMZWF2ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVLZXlEb3duIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdGl2ZUV2ZW50Iiwia2V5IiwiaGFuZGxlUmVmIiwidXNlRm9ya1JlZiIsInBvcHBlclJlZiIsIm5hbWVPckRlc2NQcm9wcyIsInRpdGxlSXNTdHJpbmciLCJjbGFzc05hbWUiLCJvbk1vdXNlTW92ZSIsImNsaWVudFgiLCJjbGllbnRZIiwidXBkYXRlIiwiaW50ZXJhY3RpdmVXcmFwcGVyTGlzdGVuZXJzIiwib25Ub3VjaEVuZCIsIm9uTW91c2VPdmVyIiwib25Nb3VzZUxlYXZlIiwicG9wcGVyT3B0aW9ucyIsIl9Qb3BwZXJQcm9wcyRwb3BwZXJPcCIsInRvb2x0aXBNb2RpZmllcnMiLCJlbmFibGVkIiwiQm9vbGVhbiIsIm9wdGlvbnMiLCJlbGVtZW50IiwibW9kaWZpZXJzIiwiY29uY2F0IiwiY2xhc3NlcyIsImNvbXBvc2VDbGFzc2VzIiwidXNlVXRpbGl0eUNsYXNzZXMiLCJ0cmFuc2l0aW9uIiwiVHJhbnNpdGlvbiIsIlRvb2x0aXBDb21wb25lbnQiLCJBcnJvd0NvbXBvbmVudCIsIkFycm93IiwicG9wcGVyUHJvcHMiLCJhcHBlbmRPd25lclN0YXRlIiwidHJhbnNpdGlvblByb3BzIiwidG9vbHRpcFByb3BzIiwidG9vbHRpcEFycm93UHJvcHMiLCJhcyIsImFuY2hvckVsIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiVHJhbnNpdGlvblByb3BzSW5uZXIiLCJ0aW1lb3V0Iiwic2hvcnRlciJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7841.1ad28ecf.js b/react_frontend/static/react_frontend/js/7841.1ad28ecf.js new file mode 100644 index 000000000..ad52d8cb4 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7841.1ad28ecf.js @@ -0,0 +1,3 @@ +/*! For license information please see 7841.1ad28ecf.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7841],{6030:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>f});var a=t(6540),n=t(5556),o=t.n(n);const s=t.p+"716ddc926982c9ed9955.svg",c=t.p+"07a88875353ecc692463.svg";var i=t(4848);function u(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var a,n,o,s,c=[],i=!0,u=!1;try{if(o=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;i=!1}else for(;!(i=(a=o.call(t)).done)&&(c.push(a.value),c.length!==r);i=!0);}catch(e){u=!0,n=e}finally{try{if(!i&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(u)throw n}}return c}}(e,r)||function(e,r){if(e){if("string"==typeof e)return l(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?l(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,a=Array(r);t{"use strict";var a=t(6925);function n(){}function o(){}o.resetWarningCache=n,e.exports=function(){function e(e,r,t,n,o,s){if(s!==a){var c=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw c.name="Invariant Violation",c}}function r(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:r,element:e,elementType:e,instanceOf:r,node:e,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:o,resetWarningCache:n};return t.PropTypes=t,t}},5556:(e,r,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,r,t)=>{"use strict";var a=t(6540),n=Symbol.for("react.element"),o=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,c=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function u(e,r,t){var a,o={},u=null,l=null;for(a in void 0!==t&&(u=""+t),void 0!==r.key&&(u=""+r.key),void 0!==r.ref&&(l=r.ref),r)s.call(r,a)&&!i.hasOwnProperty(a)&&(o[a]=r[a]);if(e&&e.defaultProps)for(a in r=e.defaultProps)void 0===o[a]&&(o[a]=r[a]);return{$$typeof:n,type:e,key:u,ref:l,props:o,_owner:c.current}}r.Fragment=o,r.jsx=u,r.jsxs=u},4848:(e,r,t)=>{"use strict";e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUUyQixLQUFLVixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFL0ksTUFBTTZJLEVBQUVPLE9BQU9wQixFQUFFcUIsUUFBUSxDQUFDOUQsRUFBUStELFNBQVMzQixFQUFFcEMsRUFBUWdFLElBQUlmLEVBQUVqRCxFQUFRaUUsS0FBS2hCLCtCQ1B4V2xELEVBQU9DLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9vYnN0YWNsZV9hdm9pZGFuY2UvcmVhY3QtY29tcG9uZW50cy9TcGVjaWZpY09ic3RhY2xlQXZvaWRhbmNlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5pbXBvcnQgRjFDYXIgZnJvbSBcIi4uL3Jlc291cmNlcy9pbWFnZXMvZjEtY2FyLnN2Z1wiO1xyXG5pbXBvcnQgQXJyb3cgZnJvbSBcIi4uL3Jlc291cmNlcy9pbWFnZXMvYXJyb3cuc3ZnXCI7XHJcbmltcG9ydCBcIi4vY3NzL0dVSUNhbnZhcy5jc3NcIjtcclxuXHJcbmZ1bmN0aW9uIFNwZWNpZmljT2JzdGFjbGVBdm9pZGFuY2UocHJvcHMpIHtcclxuICBjb25zdCBtZXRlciA9IDczOyAvLyAxbSA9IDczcHhcclxuXHJcbiAgY29uc3QgW2xhc2VyLCBzZXRMYXNlcl0gPSBSZWFjdC51c2VTdGF0ZShbXSlcclxuICBjb25zdCBbbWF4UmFuZ2UsIHNldE1heFJhbmdlXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG4gIGNvbnN0IFtjYXJGb3JjZSwgc2V0Q2FyRm9yY2VdID0gUmVhY3QudXNlU3RhdGUoWzIgKiBtZXRlciwgMF0pXHJcbiAgY29uc3QgW2F2Z0ZvcmNlLCBzZXRBdmdGb3JjZV0gPSBSZWFjdC51c2VTdGF0ZShbMiAqIG1ldGVyLCAwXSlcclxuICBjb25zdCBbb2JzRm9yY2UsIHNldE9ic0ZvcmNlXSA9IFJlYWN0LnVzZVN0YXRlKFsyICogbWV0ZXIsIC1NYXRoLlBJIC8gMl0pXHJcbiAgY29uc3QgW3RhcmdldFBvc2UsIHNldFRhcmdldFBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuXHJcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gc3Vic2NyaWJpbmcgdG8gWyd1cGRhdGUnXSBldmVudHNcIik7XHJcblxyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gbWVzc2FnZS5kYXRhLnVwZGF0ZTtcclxuICAgICAgaWYoZGF0YS5tYXApe1xyXG4gICAgICAgIGNvbnN0IGRhdGFUb0RyYXcgPSBKU09OLnBhcnNlKGRhdGEubWFwKVxyXG5cclxuICAgICAgICBzZXRMYXNlcihkYXRhVG9EcmF3Lmxhc2VyKVxyXG4gICAgICAgIHNldE1heFJhbmdlKGRhdGFUb0RyYXcubWF4X3JhbmdlKVxyXG4gICAgICAgIHZhciBjYXJGb3JjZURpc3QgPSBnZXREaXN0KGRhdGFUb0RyYXcuY2FyWzBdLCBkYXRhVG9EcmF3LmNhclsxXSlcclxuICAgICAgICBzZXRDYXJGb3JjZShbY2FyRm9yY2VEaXN0ICogbWV0ZXIsIGdldEFuZyhkYXRhVG9EcmF3LmNhclswXSwgZGF0YVRvRHJhdy5jYXJbMV0pXSlcclxuICAgICAgICB2YXIgYXZnRm9yY2VEaXN0ID0gZ2V0RGlzdChkYXRhVG9EcmF3LmF2ZXJhZ2VbMF0sIGRhdGFUb0RyYXcuYXZlcmFnZVsxXSlcclxuICAgICAgICBzZXRBdmdGb3JjZShbYXZnRm9yY2VEaXN0ICogbWV0ZXIsIGdldEFuZyhkYXRhVG9EcmF3LmF2ZXJhZ2VbMF0sIGRhdGFUb0RyYXcuYXZlcmFnZVsxXSldKVxyXG4gICAgICAgIHZhciBvYnNGb3JjZURpc3QgPSBnZXREaXN0KGRhdGFUb0RyYXcub2JzdGFjbGVbMF0sIGRhdGFUb0RyYXcub2JzdGFjbGVbMV0pXHJcbiAgICAgICAgc2V0T2JzRm9yY2UoW29ic0ZvcmNlRGlzdCAqIG1ldGVyLCBnZXRBbmcoZGF0YVRvRHJhdy5vYnN0YWNsZVswXSwgZGF0YVRvRHJhdy5vYnN0YWNsZVsxXSldKVxyXG4gICAgICAgIHZhciB0YXJnZXREaXN0ID0gZ2V0RGlzdChkYXRhVG9EcmF3LnBvc2VbMF0gLSBkYXRhVG9EcmF3LnRhcmdldFswXSwgZGF0YVRvRHJhdy5wb3NlWzFdIC0gZGF0YVRvRHJhdy50YXJnZXRbMV0pXHJcbiAgICAgICAgdmFyIHRhcmdldEFuZyA9IGdldEFuZyhkYXRhVG9EcmF3LnBvc2VbMF0gLSBkYXRhVG9EcmF3LnRhcmdldFswXSwgZGF0YVRvRHJhdy5wb3NlWzFdIC0gZGF0YVRvRHJhdy50YXJnZXRbMV0pXHJcbiAgICAgICAgc2V0VGFyZ2V0UG9zZShbdGFyZ2V0RGlzdCptZXRlciwgdGFyZ2V0QW5nIC0gZGF0YVRvRHJhdy5wb3NlWzJdIC0gTWF0aC5QSV0pXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNlbmQgdGhlIEFDSyBvZiB0aGUgbXNnXHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc2VuZChcImd1aVwiLCBcImFja1wiKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZ2V0RGlzdCA9ICh4LHkpID0+IHtcclxuICAgICAgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyh4LDIpICsgTWF0aC5wb3coeSwyKSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBnZXRBbmcgPSAoeCx5KSA9PiB7XHJcbiAgICAgIHZhciBhbmcgPSBNYXRoLlBJIC8gMjtcclxuICAgIFx0aWYoeCAhPSAwKXtcclxuICAgICAgICBhbmcgPSBNYXRoLmF0YW4yKHksIHgpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhbmc7XHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgIGhlaWdodDogXCIxMDAlXCIsIGJhY2tncm91bmRDb2xvcjogXCIjMzYzMjMzXCIsIHBvc2l0aW9uOlwicmVsYXRpdmVcIiwgb3ZlcmZsb3c6XCJoaWRkZW5cIn19PlxyXG4gICAgICA8aW1nIHNyYz17RjFDYXJ9IGlkPVwiZjEtY2FyXCIvPlxyXG4gICAgICB7bGFzZXIubWFwKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHZhciBhbmcgPSAtZWxlbWVudFsxXVxyXG4gICAgICAgIHZhciBsZW5ndGggPSAoZWxlbWVudFswXSAvIG1heFJhbmdlKSoxMDA7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxociBjbGFzc05hbWU9XCJsYXNlci1iZWFtXCIgc3R5bGU9e3tyb3RhdGU6IFwieiBcIisgYW5nICtcInJhZFwiLCB3aWR0aDogXCJjYWxjKFwiK2xlbmd0aCArIFwiJSlcIn19Lz5cclxuICAgICAgICApfSlcclxuICAgICAgfVxyXG4gICAgICA8aW1nIGNsYXNzTmFtZT1cImFycm93IGdyZWVuXCIgc3JjPXtBcnJvd30gc3R5bGU9e3toZWlnaHQ6IGNhckZvcmNlWzBdLCByb3RhdGU6IFwieiBcIisgLWNhckZvcmNlWzFdICtcInJhZFwifX0vPlxyXG4gICAgICA8aW1nIGNsYXNzTmFtZT1cImFycm93IHJlZFwiIHNyYz17QXJyb3d9IHN0eWxlPXt7aGVpZ2h0OiBvYnNGb3JjZVswXSwgcm90YXRlOiBcInogXCIrIC1vYnNGb3JjZVsxXSArXCJyYWRcIn19Lz5cclxuICAgICAgPGltZyBjbGFzc05hbWU9XCJhcnJvd1wiIHNyYz17QXJyb3d9IHN0eWxlPXt7aGVpZ2h0OiBhdmdGb3JjZVswXSwgcm90YXRlOiBcInogXCIrIC1hdmdGb3JjZVsxXSArXCJyYWRcIiwgekluZGV4OiBcIjZcIn19Lz5cclxuICAgICAge3RhcmdldFBvc2UgJiZcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRhcmdldC1jb250YWluZXJcIiBzdHlsZT17e2hlaWdodDogdGFyZ2V0UG9zZVswXSwgcm90YXRlOiBcInogXCIrIC10YXJnZXRQb3NlWzFdICtcInJhZFwifX0+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwidGFyZ2V0XCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5TcGVjaWZpY09ic3RhY2xlQXZvaWRhbmNlLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNPYnN0YWNsZUF2b2lkYW5jZVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY09ic3RhY2xlQXZvaWRhbmNlIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdCIsImxhc2VyIiwic2V0TGFzZXIiLCJfUmVhY3QkdXNlU3RhdGU0IiwibWF4UmFuZ2UiLCJzZXRNYXhSYW5nZSIsIl9SZWFjdCR1c2VTdGF0ZTYiLCJjYXJGb3JjZSIsInNldENhckZvcmNlIiwiX1JlYWN0JHVzZVN0YXRlOCIsImF2Z0ZvcmNlIiwic2V0QXZnRm9yY2UiLCJfUmVhY3QkdXNlU3RhdGUxMCIsIk1hdGgiLCJQSSIsIm9ic0ZvcmNlIiwic2V0T2JzRm9yY2UiLCJfUmVhY3QkdXNlU3RhdGUxMiIsInRhcmdldFBvc2UiLCJzZXRUYXJnZXRQb3NlIiwiY29uc29sZSIsImxvZyIsImNhbGxiYWNrIiwibWVzc2FnZSIsImRhdGEiLCJ1cGRhdGUiLCJtYXAiLCJkYXRhVG9EcmF3IiwiSlNPTiIsInBhcnNlIiwibWF4X3JhbmdlIiwiY2FyRm9yY2VEaXN0IiwiZ2V0RGlzdCIsImNhciIsImdldEFuZyIsImF2Z0ZvcmNlRGlzdCIsImF2ZXJhZ2UiLCJvYnNGb3JjZURpc3QiLCJvYnN0YWNsZSIsInRhcmdldERpc3QiLCJwb3NlIiwidGFyZ2V0IiwidGFyZ2V0QW5nIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzZW5kIiwieCIsInkiLCJzcXJ0IiwicG93IiwiYW5nIiwiYXRhbjIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5Iiwid2lkdGgiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwb3NpdGlvbiIsIm92ZXJmbG93IiwiY2hpbGRyZW4iLCJfanN4Iiwic3JjIiwiRjFDYXIiLCJpZCIsImVsZW1lbnQiLCJsZW5ndGgiLCJjbGFzc05hbWUiLCJyb3RhdGUiLCJBcnJvdyIsInpJbmRleCIsInByb3BUeXBlcyIsImNpcmN1aXQiLCJQcm9wVHlwZXMiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiRXJyb3IiLCJuYW1lIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImFycmF5IiwiYmlnaW50IiwiYm9vbCIsImZ1bmMiLCJudW1iZXIiLCJvYmplY3QiLCJzdHJpbmciLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7841.1ad28ecf.js.LICENSE.txt b/react_frontend/static/react_frontend/js/7841.1ad28ecf.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7841.1ad28ecf.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/7903.fc3fb7a9.js b/react_frontend/static/react_frontend/js/7903.fc3fb7a9.js new file mode 100644 index 000000000..3af2d84d1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7903.fc3fb7a9.js @@ -0,0 +1,3 @@ +/*! For license information please see 7903.fc3fb7a9.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[7903],{2217:(e,r,t)=>{t.r(r),t.d(r,{default:()=>c});var n=t(6540);const o=t.p+"df2d975eff24335477f0.svg";var a=t(4848);function s(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,a,s,i=[],c=!0,l=!1;try{if(a=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=a.call(t)).done)&&(i.push(n.value),i.length!==r);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw o}}return i}}(e,r)||function(e,r){if(e){if("string"==typeof e)return i(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?i(e,r):void 0}}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t{var n=t(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),s=Object.prototype.hasOwnProperty,i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,r,t){var n,a={},l=null,u=null;for(n in void 0!==t&&(l=""+t),void 0!==r.key&&(l=""+r.key),void 0!==r.ref&&(u=r.ref),r)s.call(r,n)&&!c.hasOwnProperty(n)&&(a[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===a[n]&&(a[n]=r[n]);return{$$typeof:o,type:e,key:l,ref:u,props:a,_owner:i.current}}r.Fragment=a,r.jsx=l,r.jsxs=l},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9hdXRvcGFya2luZy9yZWFjdC1jb21wb25lbnRzL0xhc2Vycy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXHJcbmltcG9ydCBcIi4vY3NzL0dVSUNhbnZhcy5jc3NcIjtcclxuaW1wb3J0IENhciBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy9jYXItdG9wLXZpZXcuc3ZnXCI7XHJcblxyXG5jb25zdCBMYXNlcnMgPSAocHJvcHMpID0+IHtcclxuICAgIGNvbnN0IG1ldGVyID0gNzM7IC8vIDFtID0gNzNweFxyXG5cclxuICAgIGNvbnN0IFtsYXNlciwgc2V0TGFzZXJdID0gUmVhY3QudXNlU3RhdGUoW10pXHJcbiAgICBjb25zdCBbbWF4UmFuZ2UsIHNldE1heFJhbmdlXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG4gICAgY29uc3QgW2xhc2VyMSwgc2V0TGFzZXIxXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG4gICAgY29uc3QgW21heFJhbmdlMSwgc2V0TWF4UmFuZ2UxXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG4gICAgY29uc3QgW2xhc2VyMiwgc2V0TGFzZXIyXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG4gICAgY29uc3QgW21heFJhbmdlMiwgc2V0TWF4UmFuZ2UyXSA9IFJlYWN0LnVzZVN0YXRlKFtdKVxyXG5cclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICAgICAgICBpZihtZXNzYWdlLmRhdGEudXBkYXRlLm1hcCl7XHJcbiAgICAgICAgICAgICAgY29uc3QgbWFwX2RhdGEgPSBKU09OLnBhcnNlKG1lc3NhZ2UuZGF0YS51cGRhdGUubWFwKTtcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhtYXBfZGF0YSlcclxuICAgICAgICAgICAgICBzZXRMYXNlciAobWFwX2RhdGEubGFzZXJzWzBdKVxyXG4gICAgICAgICAgICAgIHNldExhc2VyMShtYXBfZGF0YS5sYXNlcnNbMV0pXHJcbiAgICAgICAgICAgICAgc2V0TGFzZXIyKG1hcF9kYXRhLmxhc2Vyc1syXSlcclxuICAgICAgICAgICAgICBzZXRNYXhSYW5nZSAobWFwX2RhdGEucmFuZ2VzWzBdKVxyXG4gICAgICAgICAgICAgIHNldE1heFJhbmdlMShtYXBfZGF0YS5yYW5nZXNbMV0pXHJcbiAgICAgICAgICAgICAgc2V0TWF4UmFuZ2UyKG1hcF9kYXRhLnJhbmdlc1syXSlcclxuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhtYXBfZGF0YS5yYW5nZXMpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gU2VuZCB0aGUgQUNLIG9mIHRoZSBtc2dcclxuICAgICAgICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwiYWNrXCIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgICAgIFtSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgICBjYWxsYmFja1xyXG4gICAgICAgICk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICAgICAgUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICBbUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICAgICAgICBjYWxsYmFja1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9LCBbXSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBzdHlsZT17e2Rpc3BsYXk6IFwiZmxleFwiLCAgIHdpZHRoOiBcIjEwMCVcIixcclxuICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6IFwiIzM2MzIzM1wiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCIsIG92ZXJmbG93OlwiaGlkZGVuXCJcclxuICAgICAgfX0+XHJcbiAgICAgICAgPGltZyBzcmM9e0Nhcn0gaWQ9XCJjYXJcIi8+XHJcbiAgICAgICAge2xhc2VyLm1hcChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIHZhciBhbmcgPSAtZWxlbWVudFsxXVxyXG4gICAgICAgICAgdmFyIGxlbmd0aCA9IChlbGVtZW50WzBdIC8gNzUpICogbWV0ZXI7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8aHIgY2xhc3NOYW1lPVwibGFzZXItYmVhbVwiIFxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgcm90YXRlOiBcInogXCIrIGFuZyArXCJyYWRcIixcclxuICAgICAgICAgICAgICB3aWR0aDogbGVuZ3RoICsgXCJweFwiLFxyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCJyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHJnYigyNTUsIDExMiwgMTEyKSxyZ2IoMjU1LCAxMTIsIDExMikgNzNweCxyZ2IoMTc1LCAyOSwgMjkpICA3M3B4LHJnYigxNzUsIDI5LCAyOSkgMTQ2cHgpXCIsXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZFNpemU6IFwiMTAwJSAxcHhcIixcclxuICAgICAgICAgICAgICBib3R0b206IFwiNTklXCIsXHJcbiAgICAgICAgICAgICAgbGVmdDogXCI1MCVcIixcclxuICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IFwiMCUgMCVcIixcclxuICAgICAgICAgICAgICB6SW5kZXg6IFwiM1wifX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICApfSlcclxuICAgICAgICB9XHJcbiAgICAgICAge2xhc2VyMS5tYXAoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICB2YXIgYW5nID0gLWVsZW1lbnRbMV0gKyBNYXRoLlBJLzJcclxuICAgICAgICAgIHZhciBsZW5ndGggPSAoZWxlbWVudFswXSAvIDc1KSAqIG1ldGVyO1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGhyIGNsYXNzTmFtZT1cImxhc2VyLWJlYW1cIiBcclxuICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgIHJvdGF0ZTogXCJ6IFwiKyBhbmcgK1wicmFkXCIsXHJcbiAgICAgICAgICAgICAgd2lkdGg6IGxlbmd0aCArIFwicHhcIixcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwicmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudCh0byByaWdodCxyZ2IoMTEyLCAxMzgsIDI1NSkscmdiKDExMiwgMTM4LCAyNTUpIDczcHgscmdiKDEwMCwgMTk4LCAyNTUpIDczcHgscmdiKDEwMCwgMTk4LCAyNTUpIDE0NnB4KVwiLFxyXG4gICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiBcIjEwMCUgMXB4XCIsXHJcbiAgICAgICAgICAgICAgYm90dG9tOiBcIjUwJVwiLFxyXG4gICAgICAgICAgICAgIGxlZnQ6IFwiNTIlXCIsXHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBcIjAlIDAlXCIsXHJcbiAgICAgICAgICAgICAgekluZGV4OiBcIjRcIn19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfSlcclxuICAgICAgICB9XHJcbiAgICAgICAge2xhc2VyMi5tYXAoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICB2YXIgYW5nID0gLWVsZW1lbnRbMV0gKyBNYXRoLlBJXHJcbiAgICAgICAgICB2YXIgbGVuZ3RoID0gKGVsZW1lbnRbMF0gLyA3NSkgKiBtZXRlcjtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxociBjbGFzc05hbWU9XCJsYXNlci1iZWFtXCIgXHJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICByb3RhdGU6IFwieiBcIisgYW5nICtcInJhZFwiLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiBsZW5ndGggKyBcInB4XCIsXHJcbiAgICAgICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcInJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQscmdiKDExMiwgMjU1LCAxMTkpLHJnYigxMTIsIDI1NSwgMTE5KSA3M3B4LHJnYigxOCwgMTM4LCAxNCkgNzNweCxyZ2IoMTgsIDEzOCwgMTQpIDE0NnB4KVwiLFxyXG4gICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiBcIjEwMCUgMXB4XCIsXHJcbiAgICAgICAgICAgICAgYm90dG9tOiBcIjQxJVwiLFxyXG4gICAgICAgICAgICAgIGxlZnQ6IFwiNTAlXCIsXHJcbiAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBcIjAlIDAlXCIsXHJcbiAgICAgICAgICAgICAgekluZGV4OiBcIjNcIn19XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfSlcclxuICAgICAgICB9XHJcblx0ICAgIDwvZGl2PlxyXG4pfTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IExhc2VyczsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdCIsImxhc2VyIiwic2V0TGFzZXIiLCJfUmVhY3QkdXNlU3RhdGU0Iiwic2V0TWF4UmFuZ2UiLCJfUmVhY3QkdXNlU3RhdGU2IiwibGFzZXIxIiwic2V0TGFzZXIxIiwiX1JlYWN0JHVzZVN0YXRlOCIsInNldE1heFJhbmdlMSIsIl9SZWFjdCR1c2VTdGF0ZTEwIiwibGFzZXIyIiwic2V0TGFzZXIyIiwiX1JlYWN0JHVzZVN0YXRlMTIiLCJzZXRNYXhSYW5nZTIiLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJkYXRhIiwidXBkYXRlIiwibWFwIiwibWFwX2RhdGEiLCJKU09OIiwicGFyc2UiLCJjb25zb2xlIiwibG9nIiwibGFzZXJzIiwicmFuZ2VzIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzZW5kIiwic3Vic2NyaWJlIiwiZXZlbnRzIiwiVVBEQVRFIiwidW5zdWJzY3JpYmUiLCJfanN4cyIsInN0eWxlIiwiZGlzcGxheSIsIndpZHRoIiwiaGVpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwicG9zaXRpb24iLCJvdmVyZmxvdyIsImNoaWxkcmVuIiwiX2pzeCIsInNyYyIsIkNhciIsImlkIiwiZWxlbWVudCIsImFuZyIsImxlbmd0aCIsImNsYXNzTmFtZSIsInJvdGF0ZSIsImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kU2l6ZSIsImJvdHRvbSIsImxlZnQiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJ6SW5kZXgiLCJNYXRoIiwiUEkiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/7903.fc3fb7a9.js.LICENSE.txt b/react_frontend/static/react_frontend/js/7903.fc3fb7a9.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/7903.fc3fb7a9.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8038.e967ed72.js b/react_frontend/static/react_frontend/js/8038.e967ed72.js new file mode 100644 index 000000000..8d1ffbfa5 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8038.e967ed72.js @@ -0,0 +1,3 @@ +/*! For license information please see 8038.e967ed72.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8038,945],{8306:(e,t,r)=>{r.r(t),r.d(t,{useEditorReudcer:()=>f});var o=r(6540),n=r(3721);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r{var o=r(6540),n=Symbol.for("react.element"),i=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var o,i={},u=null,c=null;for(o in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)a.call(t,o)&&!l.hasOwnProperty(o)&&(i[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps)void 0===i[o]&&(i[o]=t[o]);return{$$typeof:n,type:e,key:u,ref:c,props:i,_owner:s.current}}t.Fragment=i,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR0MsS0FBSSxFQUFHQyxRQUFPLEVBQUdDLFVBQVMsR0FDaFAsU0FBU0MsRUFBRUMsRUFBRUMsRUFBRUMsR0FBRyxJQUFJQyxFQUFFQyxFQUFFLENBQUMsRUFBRUMsRUFBRSxLQUFLQyxFQUFFLEtBQWlGLElBQUlILFVBQWhGLElBQVNELElBQUlHLEVBQUUsR0FBR0gsUUFBRyxJQUFTRCxFQUFFTixNQUFNVSxFQUFFLEdBQUdKLEVBQUVOLFVBQUssSUFBU00sRUFBRUwsTUFBTVUsRUFBRUwsRUFBRUwsS0FBY0ssRUFBRWQsRUFBRW9CLEtBQUtOLEVBQUVFLEtBQUtULEVBQUVKLGVBQWVhLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBUzFCLEVBQUViLEtBQUs4QixFQUFFTCxJQUFJVSxFQUFFVCxJQUFJVSxFQUFFSSxNQUFNTixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUUMsU0FBUzVCLEVBQUUyQixFQUFRRSxJQUFJaEIsRUFBRWMsRUFBUUcsS0FBS2pCLGtCQ1B4V2tCLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9ob29rcy91c2VFZGl0b3JSZXVkY2VyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWR1Y2VyIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7XHJcbiAgbW9uYWNvRWRpdG9yVGhlbWVMaXN0LFxyXG4gIHJlc2l6ZUxpc3QsXHJcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZWRpdG9ycy9tb25hY28tZWRpdG9yXCI7XHJcblxyXG5jb25zdCBlZGl0b3JJbml0aWFsU3RhdGUgPSB7XHJcbiAgaXNMb2FkaW5nOiB0cnVlLFxyXG4gIG1vbmFjb0VkaXRvclRoZW1lOiBtb25hY29FZGl0b3JUaGVtZUxpc3RbMF0sIC8vXHJcbiAgcmVzaXplRWRpdG9yOiByZXNpemVMaXN0WzBdLFxyXG4gIGVkaXRvck9wdGlvbnM6IHtcclxuICAgIC8vXHJcbiAgICBmb250U2l6ZTogMTQsXHJcbiAgICBsaW5lTnVtYmVyczogXCJvblwiLFxyXG4gICAgcm91bmRlZFNlbGVjdGlvbjogZmFsc2UsXHJcbiAgICBzY3JvbGxCZXlvbmRMYXN0TGluZTogdHJ1ZSxcclxuICAgIC8vIHdvcmQgd2FycFxyXG4gICAgd29yZFdyYXA6IFwid29yZFdyYXBDb2x1bW5cIixcclxuICAgIHdvcmRXcmFwQ29sdW1uOiA4MCxcclxuICAgIHdyYXBwaW5nSW5kZW50OiBcImluZGVudFwiLFxyXG4gICAgLy9cclxuICAgIG1pbmltYXA6IHsgZW5hYmxlZDogZmFsc2UgfSxcclxuICAgIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcclxuICAgIHRhYlNpemU6IDQsXHJcbiAgICBydWxlcnM6IFs4MF0sXHJcbiAgICBzdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVyczogdHJ1ZSxcclxuICAgIHF1aWNrU3VnZ2VzdGlvbnM6IHRydWUsXHJcbiAgICB3b3JkQmFzZWRTdWdnZXN0aW9uczogdHJ1ZSxcclxuICAgIC8vXHJcbiAgICBob3ZlcjogdHJ1ZSxcclxuICAgIGdseXBoTWFyZ2luOiB0cnVlLFxyXG4gICAgbGluZU51bWJlcnNNaW5DaGFyczogMyxcclxuICAgIC8vIHNjcm9sbFxyXG4gICAgc21vb3RoU2Nyb2xsaW5nOiB0cnVlLFxyXG4gICAgc2Nyb2xsYmFyOiB7XHJcbiAgICAgIHZlcnRpY2FsOiBcImF1dG9cIixcclxuICAgICAgaG9yaXpvbnRhbDogXCJhdXRvXCIsXHJcbiAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyU2l6ZTogOCxcclxuICAgICAgaG9yaXpvbnRhbFNjcm9sbGJhclNpemU6IDgsXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgZWRpdG9yU2V0dGluZ3M6IHtcclxuICAgIGlzTW9kYWxPcGVuOiBmYWxzZSxcclxuICAgIGlzQ29kZUZvcm1hdEVuYWJsZTogdHJ1ZSxcclxuICAgIGlzWm9vbWluZ0VuYWJsZTogdHJ1ZSxcclxuICAgIG1vZGFsU2NyZWVuU3RhdGU6IFwic2hvcnRjdXRzXCIsIC8vIHdpZGdldHNcclxuICB9LFxyXG59O1xyXG5cclxuY29uc3QgcmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XHJcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xyXG4gICAgLy8gZWRpdG9yIG9wdGlvbnNcclxuICAgIGNhc2UgXCJ1cGRhdGVFZGl0b3JTdGF0ZVwiOlxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIGlzTG9hZGluZzogYWN0aW9uLnBheWxvYWQubG9hZGluZyxcclxuICAgICAgfTtcclxuICAgIGNhc2UgXCJjaGFuZ2VFZGl0b3JcIjpcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBhY3RpdmVFZGl0b3I6IGFjdGlvbi5wYXlsb2FkLmVkaXRvcixcclxuICAgICAgfTtcclxuICAgIGNhc2UgXCJ1cGRhdGVFZGl0b3JSZXNpemVcIjpcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICByZXNpemVFZGl0b3I6XHJcbiAgICAgICAgICBzdGF0ZS5yZXNpemVFZGl0b3IgPT09IHJlc2l6ZUxpc3RbMF0gPyByZXNpemVMaXN0WzFdIDogcmVzaXplTGlzdFswXSxcclxuICAgICAgICBlZGl0b3JPcHRpb25zOiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZS5lZGl0b3JPcHRpb25zLFxyXG4gICAgICAgICAgbWluaW1hcDogeyBlbmFibGVkOiBzdGF0ZS5yZXNpemVFZGl0b3IgPT09IFwibWluXCIgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgY2FzZSBcInVwZGF0ZU1vbmFjb0VkaXRvclRoZW1lXCI6XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgbW9uYWNvRWRpdG9yVGhlbWU6IGFjdGlvbi5wYXlsb2FkLnRoZW1lLFxyXG4gICAgICB9O1xyXG5cclxuICAgIC8vIGVkaXRvciBzZXR0aW5nc1xyXG4gICAgY2FzZSBcInVkcGF0ZUVkaXRvclN0dGluZ3NXaWRnZXRzXCI6XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgZWRpdG9yU2V0dGluZ3M6IHtcclxuICAgICAgICAgIC4uLnN0YXRlLmVkaXRvclNldHRpbmdzLFxyXG4gICAgICAgICAgaXNDb2RlRm9ybWF0RW5hYmxlOiBhY3Rpb24ucGF5bG9hZC5pc0NvZGVGb3JtYXRFbmFibGUsXHJcbiAgICAgICAgICBpc1pvb21pbmdFbmFibGU6IGFjdGlvbi5wYXlsb2FkLmlzWm9vbWluZ0VuYWJsZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgY2FzZSBcImNoYW5nZVNldHRpbmdzTW9kYWxTdGF0ZVwiOlxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgIGVkaXRvclNldHRpbmdzOiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZS5lZGl0b3JTZXR0aW5ncyxcclxuICAgICAgICAgIGlzTW9kYWxPcGVuOiBhY3Rpb24ucGF5bG9hZC5pc01vZGFsT3BlbixcclxuICAgICAgICB9LFxyXG4gICAgICB9O1xyXG4gICAgY2FzZSBcImNoYW5nZU1vZGFsU2NyZWVuU3RhdGVcIjpcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBlZGl0b3JTZXR0aW5nczoge1xyXG4gICAgICAgICAgLi4uc3RhdGUuZWRpdG9yU2V0dGluZ3MsXHJcbiAgICAgICAgICBtb2RhbFNjcmVlblN0YXRlOiBhY3Rpb24ucGF5bG9hZC5zY3JlZW4sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIGNhc2UgXCJpc0NvZGVGb3JtYXRFbmFibGVcIjpcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBlZGl0b3JTZXR0aW5nczoge1xyXG4gICAgICAgICAgLi4uc3RhdGUuZWRpdG9yU2V0dGluZ3MsXHJcbiAgICAgICAgICBpc0NvZGVGb3JtYXRFbmFibGU6ICFzdGF0ZS5lZGl0b3JTZXR0aW5ncy5pc0NvZGVGb3JtYXRFbmFibGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIGNhc2UgXCJpc1pvb21pbmdFbmFibGVcIjpcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBlZGl0b3JTZXR0aW5nczoge1xyXG4gICAgICAgICAgLi4uc3RhdGUuZWRpdG9yU2V0dGluZ3MsXHJcbiAgICAgICAgICBpc1pvb21pbmdFbmFibGU6ICFzdGF0ZS5lZGl0b3JTZXR0aW5ncy5pc1pvb21pbmdFbmFibGUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVua25vd24gQWN0aW9uIHR5cGUhXCIpO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB1c2VFZGl0b3JSZXVkY2VyID0gKCkgPT4ge1xyXG4gIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gdXNlUmVkdWNlcihyZWR1Y2VyLCBlZGl0b3JJbml0aWFsU3RhdGUpO1xyXG5cclxuICByZXR1cm4gW3N0YXRlLCBkaXNwYXRjaF07XHJcbn07XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJlZGl0b3JJbml0aWFsU3RhdGUiLCJpc0xvYWRpbmciLCJtb25hY29FZGl0b3JUaGVtZSIsIm1vbmFjb0VkaXRvclRoZW1lTGlzdCIsInJlc2l6ZUVkaXRvciIsInJlc2l6ZUxpc3QiLCJlZGl0b3JPcHRpb25zIiwiZm9udFNpemUiLCJsaW5lTnVtYmVycyIsInJvdW5kZWRTZWxlY3Rpb24iLCJzY3JvbGxCZXlvbmRMYXN0TGluZSIsIndvcmRXcmFwIiwid29yZFdyYXBDb2x1bW4iLCJ3cmFwcGluZ0luZGVudCIsIm1pbmltYXAiLCJlbmFibGVkIiwiYXV0b21hdGljTGF5b3V0IiwidGFiU2l6ZSIsInJ1bGVycyIsInN1Z2dlc3RPblRyaWdnZXJDaGFyYWN0ZXJzIiwicXVpY2tTdWdnZXN0aW9ucyIsIndvcmRCYXNlZFN1Z2dlc3Rpb25zIiwiaG92ZXIiLCJnbHlwaE1hcmdpbiIsImxpbmVOdW1iZXJzTWluQ2hhcnMiLCJzbW9vdGhTY3JvbGxpbmciLCJzY3JvbGxiYXIiLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbFNjcm9sbGJhclNpemUiLCJob3Jpem9udGFsU2Nyb2xsYmFyU2l6ZSIsImVkaXRvclNldHRpbmdzIiwiaXNNb2RhbE9wZW4iLCJpc0NvZGVGb3JtYXRFbmFibGUiLCJpc1pvb21pbmdFbmFibGUiLCJtb2RhbFNjcmVlblN0YXRlIiwicmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwidHlwZSIsIl9vYmplY3RTcHJlYWQiLCJwYXlsb2FkIiwibG9hZGluZyIsImFjdGl2ZUVkaXRvciIsImVkaXRvciIsInRoZW1lIiwic2NyZWVuIiwiRXJyb3IiLCJ1c2VFZGl0b3JSZXVkY2VyIiwiX3VzZVJlZHVjZXIyIiwidXNlUmVkdWNlciIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJwcm9wcyIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8038.e967ed72.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8038.e967ed72.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8038.e967ed72.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8160.f121db9a.js b/react_frontend/static/react_frontend/js/8160.f121db9a.js new file mode 100644 index 000000000..a8eed510e --- /dev/null +++ b/react_frontend/static/react_frontend/js/8160.f121db9a.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8160],{4073:(r,t,n)=>{n.d(t,{A:()=>v});var e=n(8587),a=n(8168),o=n(6540),i=n(53),s=n(9599),c=n(5659),l=n(7577),p=n(4409),u=n(8466),h=n(8413),m=n(1609);function g(r){return(0,m.A)("MuiTypography",r)}(0,h.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);var d=n(4848);const f=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],A=(0,l.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(r,t)=>{const{ownerState:n}=r;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t[`align${(0,u.A)(n.align)}`],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})((({theme:r,ownerState:t})=>(0,a.A)({margin:0},t.variant&&r.typography[t.variant],"inherit"!==t.align&&{textAlign:t.align},t.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},t.gutterBottom&&{marginBottom:"0.35em"},t.paragraph&&{marginBottom:16}))),y={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},x={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},v=o.forwardRef((function(r,t){const n=(0,p.A)({props:r,name:"MuiTypography"}),o=(r=>x[r]||r)(n.color),l=(0,s.A)((0,a.A)({},n,{color:o})),{align:h="inherit",className:m,component:v,gutterBottom:b=!1,noWrap:j=!1,paragraph:w=!1,variant:S="body1",variantMapping:C=y}=l,E=(0,e.A)(l,f),M=(0,a.A)({},l,{align:h,color:o,className:m,component:v,gutterBottom:b,noWrap:j,paragraph:w,variant:S,variantMapping:C}),R=v||(w?"p":C[S]||y[S])||"span",F=(r=>{const{align:t,gutterBottom:n,noWrap:e,paragraph:a,variant:o,classes:i}=r,s={root:["root",o,"inherit"!==r.align&&`align${(0,u.A)(t)}`,n&&"gutterBottom",e&&"noWrap",a&&"paragraph"]};return(0,c.A)(s,g,i)})(M);return(0,d.jsx)(A,(0,a.A)({as:R,ref:t,ownerState:M,className:(0,i.A)(F.root,m)},E))}))},9599:(r,t,n)=>{n.d(t,{A:()=>l});var e=n(8168),a=n(8587),o=n(3272),i=n(4188);const s=["sx"],c=r=>{var t,n;const e={systemProps:{},otherProps:{}},a=null!=(t=null==r||null==(n=r.theme)?void 0:n.unstable_sxConfig)?t:i.A;return Object.keys(r).forEach((t=>{a[t]?e.systemProps[t]=r[t]:e.otherProps[t]=r[t]})),e};function l(r){const{sx:t}=r,n=(0,a.A)(r,s),{systemProps:i,otherProps:l}=c(n);let p;return p=Array.isArray(t)?[i,...t]:"function"==typeof t?(...r)=>{const n=t(...r);return(0,o.Q)(n)?(0,e.A)({},i,n):i}:(0,e.A)({},i,t),(0,e.A)({},l,{sx:p})}},8160:(r,t,n)=>{n.r(t),n.d(t,{Frequencies:()=>c,default:()=>l});var e=n(4073),a=n(6540),o=n(4848);function i(r,t){return function(r){if(Array.isArray(r))return r}(r)||function(r,t){var n=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=n){var e,a,o,i,s=[],c=!0,l=!1;try{if(o=(n=n.call(r)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(e=o.call(n)).done)&&(s.push(e.value),s.length!==t);c=!0);}catch(r){l=!0,a=r}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return s}}(r,t)||function(r,t){if(r){if("string"==typeof r)return s(r,t);var n={}.toString.call(r).slice(8,-1);return"Object"===n&&r.constructor&&(n=r.constructor.name),"Map"===n||"Set"===n?Array.from(r):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(r,t):void 0}}(r,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(r,t){(null==t||t>r.length)&&(t=r.length);for(var n=0,e=Array(t);n=0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.A,{children:"/"}),(0,o.jsx)(e.A,{children:"RTF:"}),(0,o.jsx)(e.A,{title:"RTF",children:n.rtf})]}),n.fps>=0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.A,{children:"/"}),(0,o.jsx)(e.A,{children:"FPS:"}),(0,o.jsx)(e.A,{title:"FPS",children:n.fps<10?0===n.fps?"0":"0".concat(n.fps):n.fps})]}),n.lat>=0&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.A,{children:"/"}),(0,o.jsx)(e.A,{children:"LATENCY:"}),(0,o.jsx)(e.A,{title:"LATENCY",children:n.lat>=1e3?"".concat((n.lat/1e3).toFixed(0)," s"):"".concat(n.lat," ms")})]}),l&&(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(e.A,{children:"/"}),(0,o.jsx)(e.A,{children:l[0]}),(0,o.jsx)(e.A,{children:l[1]})]}),(0,o.jsx)(e.A,{children:"/"}),(0,o.jsx)(e.A,{children:"GPU"}),(0,o.jsx)(e.A,{children:h})]})};const l=c}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QU1zQyxRQUFRLEdBQUUsU0FBQUUsT0FDbkN2QyxFQUFZRCxJQUFHLFlBSTNCSSxJQUNDNEIsRUFBQUEsRUFBQUEsTUFBQU8sRUFBQUEsU0FBQSxDQUFBTCxTQUFBLEVBQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLEVBQVUsQ0FBQUYsU0FBQyxPQUNaQyxFQUFBQSxFQUFBQSxLQUFDQyxFQUFBQSxFQUFVLENBQUFGLFNBQUU5QixFQUFXLE1BQ3hCK0IsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsRUFBVSxDQUFBRixTQUFFOUIsRUFBVyxTQUc1QitCLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLEVBQVUsQ0FBQUYsU0FBQyxPQUNaQyxFQUFBQSxFQUFBQSxLQUFDQyxFQUFBQSxFQUFVLENBQUFGLFNBQUMsU0FDWkMsRUFBQUEsRUFBQUEsS0FBQ0MsRUFBQUEsRUFBVSxDQUFBRixTQUFFM0IsTUFHbkIsRUFFQSxTIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UeXBvZ3JhcGh5L3R5cG9ncmFwaHlDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVHlwb2dyYXBoeS9UeXBvZ3JhcGh5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zdHlsZUZ1bmN0aW9uU3gvZXh0ZW5kU3hQcm9wLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsaXplcnMvRnJlcXVlbmNpZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFR5cG9ncmFwaHlVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVR5cG9ncmFwaHknLCBzbG90KTtcbn1cbmNvbnN0IHR5cG9ncmFwaHlDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVHlwb2dyYXBoeScsIFsncm9vdCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdzdWJ0aXRsZTEnLCAnc3VidGl0bGUyJywgJ2JvZHkxJywgJ2JvZHkyJywgJ2luaGVyaXQnLCAnYnV0dG9uJywgJ2NhcHRpb24nLCAnb3ZlcmxpbmUnLCAnYWxpZ25MZWZ0JywgJ2FsaWduUmlnaHQnLCAnYWxpZ25DZW50ZXInLCAnYWxpZ25KdXN0aWZ5JywgJ25vV3JhcCcsICdndXR0ZXJCb3R0b20nLCAncGFyYWdyYXBoJ10pO1xuZXhwb3J0IGRlZmF1bHQgdHlwb2dyYXBoeUNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWxpZ25cIiwgXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIiwgXCJndXR0ZXJCb3R0b21cIiwgXCJub1dyYXBcIiwgXCJwYXJhZ3JhcGhcIiwgXCJ2YXJpYW50XCIsIFwidmFyaWFudE1hcHBpbmdcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9leHRlbmRTeFByb3AgYXMgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHsgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vdHlwb2dyYXBoeUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbGlnbixcbiAgICBndXR0ZXJCb3R0b20sXG4gICAgbm9XcmFwLFxuICAgIHBhcmFncmFwaCxcbiAgICB2YXJpYW50LFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBgYWxpZ24ke2NhcGl0YWxpemUoYWxpZ24pfWAsIGd1dHRlckJvdHRvbSAmJiAnZ3V0dGVyQm90dG9tJywgbm9XcmFwICYmICdub1dyYXAnLCBwYXJhZ3JhcGggJiYgJ3BhcmFncmFwaCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuZXhwb3J0IGNvbnN0IFR5cG9ncmFwaHlSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpVHlwb2dyYXBoeScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUuYWxpZ24gIT09ICdpbmhlcml0JyAmJiBzdHlsZXNbYGFsaWduJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuYWxpZ24pfWBdLCBvd25lclN0YXRlLm5vV3JhcCAmJiBzdHlsZXMubm9XcmFwLCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiBzdHlsZXMuZ3V0dGVyQm90dG9tLCBvd25lclN0YXRlLnBhcmFncmFwaCAmJiBzdHlsZXMucGFyYWdyYXBoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgbWFyZ2luOiAwXG59LCBvd25lclN0YXRlLnZhcmlhbnQgJiYgdGhlbWUudHlwb2dyYXBoeVtvd25lclN0YXRlLnZhcmlhbnRdLCBvd25lclN0YXRlLmFsaWduICE9PSAnaW5oZXJpdCcgJiYge1xuICB0ZXh0QWxpZ246IG93bmVyU3RhdGUuYWxpZ25cbn0sIG93bmVyU3RhdGUubm9XcmFwICYmIHtcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnXG59LCBvd25lclN0YXRlLmd1dHRlckJvdHRvbSAmJiB7XG4gIG1hcmdpbkJvdHRvbTogJzAuMzVlbSdcbn0sIG93bmVyU3RhdGUucGFyYWdyYXBoICYmIHtcbiAgbWFyZ2luQm90dG9tOiAxNlxufSkpO1xuY29uc3QgZGVmYXVsdFZhcmlhbnRNYXBwaW5nID0ge1xuICBoMTogJ2gxJyxcbiAgaDI6ICdoMicsXG4gIGgzOiAnaDMnLFxuICBoNDogJ2g0JyxcbiAgaDU6ICdoNScsXG4gIGg2OiAnaDYnLFxuICBzdWJ0aXRsZTE6ICdoNicsXG4gIHN1YnRpdGxlMjogJ2g2JyxcbiAgYm9keTE6ICdwJyxcbiAgYm9keTI6ICdwJyxcbiAgaW5oZXJpdDogJ3AnXG59O1xuXG4vLyBUT0RPIHY2OiBkZXByZWNhdGUgdGhlc2UgY29sb3IgdmFsdWVzIGluIHY1LnggYW5kIHJlbW92ZSB0aGUgdHJhbnNmb3JtYXRpb24gaW4gdjZcbmNvbnN0IGNvbG9yVHJhbnNmb3JtYXRpb25zID0ge1xuICBwcmltYXJ5OiAncHJpbWFyeS5tYWluJyxcbiAgdGV4dFByaW1hcnk6ICd0ZXh0LnByaW1hcnknLFxuICBzZWNvbmRhcnk6ICdzZWNvbmRhcnkubWFpbicsXG4gIHRleHRTZWNvbmRhcnk6ICd0ZXh0LnNlY29uZGFyeScsXG4gIGVycm9yOiAnZXJyb3IubWFpbidcbn07XG5jb25zdCB0cmFuc2Zvcm1EZXByZWNhdGVkQ29sb3JzID0gY29sb3IgPT4ge1xuICByZXR1cm4gY29sb3JUcmFuc2Zvcm1hdGlvbnNbY29sb3JdIHx8IGNvbG9yO1xufTtcbmNvbnN0IFR5cG9ncmFwaHkgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUeXBvZ3JhcGh5KGluUHJvcHMsIHJlZikge1xuICBjb25zdCB0aGVtZVByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVR5cG9ncmFwaHknXG4gIH0pO1xuICBjb25zdCBjb2xvciA9IHRyYW5zZm9ybURlcHJlY2F0ZWRDb2xvcnModGhlbWVQcm9wcy5jb2xvcik7XG4gIGNvbnN0IHByb3BzID0gZXh0ZW5kU3hQcm9wKF9leHRlbmRzKHt9LCB0aGVtZVByb3BzLCB7XG4gICAgY29sb3JcbiAgfSkpO1xuICBjb25zdCB7XG4gICAgICBhbGlnbiA9ICdpbmhlcml0JyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCxcbiAgICAgIGd1dHRlckJvdHRvbSA9IGZhbHNlLFxuICAgICAgbm9XcmFwID0gZmFsc2UsXG4gICAgICBwYXJhZ3JhcGggPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAnYm9keTEnLFxuICAgICAgdmFyaWFudE1hcHBpbmcgPSBkZWZhdWx0VmFyaWFudE1hcHBpbmdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFsaWduLFxuICAgIGNvbG9yLFxuICAgIGNsYXNzTmFtZSxcbiAgICBjb21wb25lbnQsXG4gICAgZ3V0dGVyQm90dG9tLFxuICAgIG5vV3JhcCxcbiAgICBwYXJhZ3JhcGgsXG4gICAgdmFyaWFudCxcbiAgICB2YXJpYW50TWFwcGluZ1xuICB9KTtcbiAgY29uc3QgQ29tcG9uZW50ID0gY29tcG9uZW50IHx8IChwYXJhZ3JhcGggPyAncCcgOiB2YXJpYW50TWFwcGluZ1t2YXJpYW50XSB8fCBkZWZhdWx0VmFyaWFudE1hcHBpbmdbdmFyaWFudF0pIHx8ICdzcGFuJztcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHlwb2dyYXBoeVJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogQ29tcG9uZW50LFxuICAgIHJlZjogcmVmLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKVxuICB9LCBvdGhlcikpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUeXBvZ3JhcGh5LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFNldCB0aGUgdGV4dC1hbGlnbiBvbiB0aGUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCAnaW5oZXJpdCdcbiAgICovXG4gIGFsaWduOiBQcm9wVHlwZXMub25lT2YoWydjZW50ZXInLCAnaW5oZXJpdCcsICdqdXN0aWZ5JywgJ2xlZnQnLCAncmlnaHQnXSksXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgdGV4dCB3aWxsIGhhdmUgYSBib3R0b20gbWFyZ2luLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZ3V0dGVyQm90dG9tOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRleHQgd2lsbCBub3Qgd3JhcCwgYnV0IGluc3RlYWQgd2lsbCB0cnVuY2F0ZSB3aXRoIGEgdGV4dCBvdmVyZmxvdyBlbGxpcHNpcy5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRleHQgb3ZlcmZsb3cgY2FuIG9ubHkgaGFwcGVuIHdpdGggYmxvY2sgb3IgaW5saW5lLWJsb2NrIGxldmVsIGVsZW1lbnRzXG4gICAqICh0aGUgZWxlbWVudCBuZWVkcyB0byBoYXZlIGEgd2lkdGggaW4gb3JkZXIgdG8gb3ZlcmZsb3cpLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbm9XcmFwOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGVsZW1lbnQgd2lsbCBiZSBhIHBhcmFncmFwaCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcGFyYWdyYXBoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHRoZW1lIHR5cG9ncmFwaHkgc3R5bGVzLlxuICAgKiBAZGVmYXVsdCAnYm9keTEnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2JvZHkxJywgJ2JvZHkyJywgJ2J1dHRvbicsICdjYXB0aW9uJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2luaGVyaXQnLCAnb3ZlcmxpbmUnLCAnc3VidGl0bGUxJywgJ3N1YnRpdGxlMiddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCBtYXBzIHRoZSB2YXJpYW50IHByb3AgdG8gYSByYW5nZSBvZiBkaWZmZXJlbnQgSFRNTCBlbGVtZW50IHR5cGVzLlxuICAgKiBGb3IgaW5zdGFuY2UsIHN1YnRpdGxlMSB0byBgPGg2PmAuXG4gICAqIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGF0IG1hcHBpbmcsIHlvdSBjYW4gcHJvdmlkZSB5b3VyIG93bi5cbiAgICogQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGBjb21wb25lbnRgIHByb3AuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBoMTogJ2gxJyxcbiAgICogICBoMjogJ2gyJyxcbiAgICogICBoMzogJ2gzJyxcbiAgICogICBoNDogJ2g0JyxcbiAgICogICBoNTogJ2g1JyxcbiAgICogICBoNjogJ2g2JyxcbiAgICogICBzdWJ0aXRsZTE6ICdoNicsXG4gICAqICAgc3VidGl0bGUyOiAnaDYnLFxuICAgKiAgIGJvZHkxOiAncCcsXG4gICAqICAgYm9keTI6ICdwJyxcbiAgICogICBpbmhlcml0OiAncCcsXG4gICAqIH1cbiAgICovXG4gIHZhcmlhbnRNYXBwaW5nOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vYmplY3Rcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUeXBvZ3JhcGh5OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJzeFwiXTtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBkZWZhdWx0U3hDb25maWcgZnJvbSAnLi9kZWZhdWx0U3hDb25maWcnO1xuY29uc3Qgc3BsaXRQcm9wcyA9IHByb3BzID0+IHtcbiAgdmFyIF9wcm9wcyR0aGVtZSR1bnN0YWJsZSwgX3Byb3BzJHRoZW1lO1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgc3lzdGVtUHJvcHM6IHt9LFxuICAgIG90aGVyUHJvcHM6IHt9XG4gIH07XG4gIGNvbnN0IGNvbmZpZyA9IChfcHJvcHMkdGhlbWUkdW5zdGFibGUgPSBwcm9wcyA9PSBudWxsIHx8IChfcHJvcHMkdGhlbWUgPSBwcm9wcy50aGVtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wcm9wcyR0aGVtZS51bnN0YWJsZV9zeENvbmZpZykgIT0gbnVsbCA/IF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA6IGRlZmF1bHRTeENvbmZpZztcbiAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgaWYgKGNvbmZpZ1twcm9wXSkge1xuICAgICAgcmVzdWx0LnN5c3RlbVByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5vdGhlclByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlbmRTeFByb3AocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgICAgc3g6IGluU3hcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qge1xuICAgIHN5c3RlbVByb3BzLFxuICAgIG90aGVyUHJvcHNcbiAgfSA9IHNwbGl0UHJvcHMob3RoZXIpO1xuICBsZXQgZmluYWxTeDtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5TeCkpIHtcbiAgICBmaW5hbFN4ID0gW3N5c3RlbVByb3BzLCAuLi5pblN4XTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5TeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZpbmFsU3ggPSAoLi4uYXJncykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5TeCguLi5hcmdzKTtcbiAgICAgIGlmICghaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBzeXN0ZW1Qcm9wcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIHJlc3VsdCk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBmaW5hbFN4ID0gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCBpblN4KTtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICBzeDogZmluYWxTeFxuICB9KTtcbn0iLCJpbXBvcnQgeyBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4uLy4uL3N0eWxlcy92aXN1YWxpemVycy9GcmVxdWVuY2llcy5jc3NcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBGcmVxdWVuY2llcyA9IChwcm9wcykgPT4ge1xyXG4gIGNvbnN0IFtmcmVxdWVuY2llcywgc2V0RnJlcXVlbmNpZXNdID0gdXNlU3RhdGUoe1xyXG4gICAgYnJhaW46IDAsXHJcbiAgICBndWk6IDAsXHJcbiAgICBydGY6IC0xLFxyXG4gICAgZnBzOiAtMSxcclxuICAgIGxhdDogLTEsXHJcbiAgfSk7XHJcbiAgY29uc3QgW3Jvc1ZlcnNpb24sIHNldFJvc1ZlcnNpb25dID0gdXNlU3RhdGUobnVsbCk7XHJcbiAgY29uc3QgW2dwdVZlbmRvciwgc2V0Z3B1VmVuZG9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGUgPSBtZXNzYWdlLmRhdGEudXBkYXRlO1xyXG4gICAgICBpZiAodXBkYXRlLmJyYWluKSB7XHJcbiAgICAgICAgc2V0RnJlcXVlbmNpZXModXBkYXRlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBsZXQgdmVyc2lvbiA9IG1lc3NhZ2UuZGF0YS5yb3NfdmVyc2lvbi50cmltKCk7XHJcbiAgICAgIGlmICh2ZXJzaW9uKSB7XHJcbiAgICAgICAgc2V0Um9zVmVyc2lvbihbXHJcbiAgICAgICAgICBcIlJPUzJcIixcclxuICAgICAgICAgIHZlcnNpb24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB2ZXJzaW9uLnNsaWNlKDEpLFxyXG4gICAgICAgIF0pO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UuZGF0YS5ncHVfYXZhbGlhYmxlKTtcclxuICAgICAgc2V0Z3B1VmVuZG9yKG1lc3NhZ2UuZGF0YS5ncHVfYXZhbGlhYmxlKTtcclxuICAgIH07XHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1c2NyaWJyZU9uY2UoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5JTlRST1NQRUNUSU9OXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcbiAgfSwgW10pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9e3Byb3BzLnN0eWxlfT5cclxuICAgICAgPFR5cG9ncmFwaHk+QUY6PC9UeXBvZ3JhcGh5PlxyXG4gICAgICA8VHlwb2dyYXBoeSB0aXRsZT1cIkFGXCI+e2ZyZXF1ZW5jaWVzLmJyYWluLnRvRml4ZWQoMCl9PC9UeXBvZ3JhcGh5PlxyXG4gICAgICA8VHlwb2dyYXBoeT5IejwvVHlwb2dyYXBoeT5cclxuICAgICAge2ZyZXF1ZW5jaWVzLnJ0ZiA+PSAwICYmIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+LzwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5PlJURjo8L1R5cG9ncmFwaHk+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeSB0aXRsZT1cIlJURlwiPntmcmVxdWVuY2llcy5ydGZ9PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDwvPlxyXG4gICAgICApfVxyXG4gICAgICB7ZnJlcXVlbmNpZXMuZnBzID49IDAgJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT4vPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+RlBTOjwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHRpdGxlPVwiRlBTXCI+XHJcbiAgICAgICAgICAgIHtmcmVxdWVuY2llcy5mcHMgPCAxMFxyXG4gICAgICAgICAgICAgID8gZnJlcXVlbmNpZXMuZnBzID09PSAwXHJcbiAgICAgICAgICAgICAgICA/IGAwYFxyXG4gICAgICAgICAgICAgICAgOiBgMCR7ZnJlcXVlbmNpZXMuZnBzfWBcclxuICAgICAgICAgICAgICA6IGZyZXF1ZW5jaWVzLmZwc31cclxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICA8Lz5cclxuICAgICAgKX1cclxuICAgICAge2ZyZXF1ZW5jaWVzLmxhdCA+PSAwICYmIChcclxuICAgICAgICA8PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+LzwvVHlwb2dyYXBoeT5cclxuICAgICAgICAgIDxUeXBvZ3JhcGh5PkxBVEVOQ1k6PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHkgdGl0bGU9XCJMQVRFTkNZXCI+XHJcbiAgICAgICAgICAgIHtmcmVxdWVuY2llcy5sYXQgPj0gMTAwMFxyXG4gICAgICAgICAgICAgID8gYCR7KGZyZXF1ZW5jaWVzLmxhdCAvIDEwMDApLnRvRml4ZWQoMCl9IHNgXHJcbiAgICAgICAgICAgICAgOiBgJHtmcmVxdWVuY2llcy5sYXR9IG1zYH1cclxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cclxuICAgICAgICA8Lz5cclxuICAgICAgKX1cclxuICAgICAge3Jvc1ZlcnNpb24gJiYgKFxyXG4gICAgICAgIDw+XHJcbiAgICAgICAgICA8VHlwb2dyYXBoeT4vPC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+e3Jvc1ZlcnNpb25bMF19PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgICAgPFR5cG9ncmFwaHk+e3Jvc1ZlcnNpb25bMV19PC9UeXBvZ3JhcGh5PlxyXG4gICAgICAgIDwvPlxyXG4gICAgICApfVxyXG4gICAgICA8VHlwb2dyYXBoeT4vPC9UeXBvZ3JhcGh5PlxyXG4gICAgICA8VHlwb2dyYXBoeT5HUFU8L1R5cG9ncmFwaHk+XHJcbiAgICAgIDxUeXBvZ3JhcGh5PntncHVWZW5kb3J9PC9UeXBvZ3JhcGh5PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZyZXF1ZW5jaWVzO1xyXG4iXSwibmFtZXMiOlsiZ2V0VHlwb2dyYXBoeVV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJfZXhjbHVkZWQiLCJUeXBvZ3JhcGh5Um9vdCIsInN0eWxlZCIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwib3duZXJTdGF0ZSIsInJvb3QiLCJ2YXJpYW50IiwiYWxpZ24iLCJjYXBpdGFsaXplIiwibm9XcmFwIiwiZ3V0dGVyQm90dG9tIiwicGFyYWdyYXBoIiwidGhlbWUiLCJtYXJnaW4iLCJ0eXBvZ3JhcGh5IiwidGV4dEFsaWduIiwib3ZlcmZsb3ciLCJ0ZXh0T3ZlcmZsb3ciLCJ3aGl0ZVNwYWNlIiwibWFyZ2luQm90dG9tIiwiZGVmYXVsdFZhcmlhbnRNYXBwaW5nIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Iiwic3VidGl0bGUxIiwic3VidGl0bGUyIiwiYm9keTEiLCJib2R5MiIsImluaGVyaXQiLCJjb2xvclRyYW5zZm9ybWF0aW9ucyIsInByaW1hcnkiLCJ0ZXh0UHJpbWFyeSIsInNlY29uZGFyeSIsInRleHRTZWNvbmRhcnkiLCJlcnJvciIsImluUHJvcHMiLCJyZWYiLCJ0aGVtZVByb3BzIiwidXNlVGhlbWVQcm9wcyIsImNvbG9yIiwidHJhbnNmb3JtRGVwcmVjYXRlZENvbG9ycyIsImV4dGVuZFN4UHJvcCIsImNsYXNzTmFtZSIsImNvbXBvbmVudCIsInZhcmlhbnRNYXBwaW5nIiwib3RoZXIiLCJDb21wb25lbnQiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiYXMiLCJzcGxpdFByb3BzIiwiX3Byb3BzJHRoZW1lJHVuc3RhYmxlIiwiX3Byb3BzJHRoZW1lIiwicmVzdWx0Iiwic3lzdGVtUHJvcHMiLCJvdGhlclByb3BzIiwiY29uZmlnIiwidW5zdGFibGVfc3hDb25maWciLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsInByb3AiLCJzeCIsImluU3giLCJmaW5hbFN4IiwiQXJyYXkiLCJpc0FycmF5IiwiYXJncyIsIkZyZXF1ZW5jaWVzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwidXNlU3RhdGUiLCJicmFpbiIsImd1aSIsInJ0ZiIsImZwcyIsImxhdCIsImZyZXF1ZW5jaWVzIiwic2V0RnJlcXVlbmNpZXMiLCJfdXNlU3RhdGU0Iiwicm9zVmVyc2lvbiIsInNldFJvc1ZlcnNpb24iLCJfdXNlU3RhdGU2IiwiZ3B1VmVuZG9yIiwic2V0Z3B1VmVuZG9yIiwiUmVhY3QiLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJ1cGRhdGUiLCJkYXRhIiwid2luZG93IiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJ1bnN1YnNjcmliZSIsInN1c2NyaWJyZU9uY2UiLCJJTlRST1NQRUNUSU9OIiwidmVyc2lvbiIsInJvc192ZXJzaW9uIiwidHJpbSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJjb25zb2xlIiwibG9nIiwiZ3B1X2F2YWxpYWJsZSIsIl9qc3hzIiwic3R5bGUiLCJjaGlsZHJlbiIsIl9qc3giLCJUeXBvZ3JhcGh5IiwidGl0bGUiLCJ0b0ZpeGVkIiwiX0ZyYWdtZW50IiwiY29uY2F0Il0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8198.52b16bf6.js b/react_frontend/static/react_frontend/js/8198.52b16bf6.js new file mode 100644 index 000000000..ca14132a0 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8198.52b16bf6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8198],{8198:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8201.3c0ded6a.js b/react_frontend/static/react_frontend/js/8201.3c0ded6a.js new file mode 100644 index 000000000..9e9ac0c38 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8201.3c0ded6a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8201],{8201:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8256.cc033cf0.js b/react_frontend/static/react_frontend/js/8256.cc033cf0.js new file mode 100644 index 000000000..351492746 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8256.cc033cf0.js @@ -0,0 +1,3 @@ +/*! For license information please see 8256.cc033cf0.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8256],{5720:(e,t,n)=>{n.r(t),n.d(t,{default:()=>f});var o=n(6540);new Image;var r=function(e,t,n,o){for(var r="M ",s=0;s0&&t(r)},s=function(e,t,n){n.includes([e,t])||n.push([e,t])};const i=n.p+"c40fbd6953e072ad5339.svg",a=n.p+"c0453f604892db7d1b12.svg",c=n.p+"b978997e7f65a543a8bd.svg";var l=n(2597);const u=n.p+"a3dd51f21f0fe7b075fb.png";var d=n(4848);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,s,i,a=[],c=!0,l=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(o=s.call(n)).done)&&(a.push(o.value),a.length!==t);c=!0);}catch(e){l=!0,r=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n0?(r(T,_,p,d),s(f[1],f[0],T)):W+=1}if(l.noisy_pose){var m=l.noisy_pose.substring(1,l.noisy_pose.length-1).split(",").map((function(e){return parseFloat(e)}));D=m,y([m[1]*p,m[0]*d,-1.57-m[2]]),W>0&&(r(M,E,p,d),s(m[1],m[0],M))}if(l.estimate_pose){var h=l.estimate_pose.substring(1,l.estimate_pose.length-1).split(",").map((function(e){return parseFloat(e)}));L=h,x([h[1]*p,h[0]*d,-1.57-h[2]]),W>0&&(r(N,I,p,d),s(h[1],h[0],N))}l.image&&(t=l,o=document.getElementById("gui-canvas"),n=(i=JSON.parse(t.image)).image,a=decodeURIComponent(escape(n)),c=i.shape,""!=a&&c instanceof Array&&(o.src="data:image/jpeg;base64,"+a,o.width=c[1],o.height=c[0])),window.RoboticsExerciseComponents.commsManager.send("gui","ack")};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),U.observe(document.getElementById("exercise-img")),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}),[]),o.useEffect((function(){var e=function(e){if("tools_ready"===e.data.state)try{g(null),y(null),x(null),_(""),E(""),I(""),T=[],M=[],N=[];var t=document.getElementById("gui-canvas"),n=t.clientWidth/1012,o=t.clientHeight/1012;O(P.map((function(e){return{id:e.id,x:e.x*n,y:e.y*o,type:e.type}})))}catch(e){}W=0};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.STATE_CHANGED],e),function(){console.log("TestShowScreen unsubscribing from ['state-changed'] events"),window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.STATE_CHANGED],e)}}),[]),(0,d.jsxs)("div",{style:{display:"flex",width:"100%",height:"100%",position:"relative"},children:[(0,d.jsx)("img",{src:u,alt:"",className:"exercise-canvas",id:"exercise-img"}),(0,d.jsx)("img",{className:"image",id:"gui-canvas",style:{left:"50%"},src:l}),n&&(0,d.jsx)("div",{id:"real-pos",style:{rotate:"z "+n[2]+"rad",top:n[0]-10,left:n[1]-5},children:(0,d.jsx)("img",{src:a,id:"real-pos"})}),w&&(0,d.jsx)("svg",{height:"100%",width:"100%",xmlns:"http://www.w3.org/2000/svg",style:{zIndex:2,position:"absolute"},children:(0,d.jsx)("path",{xmlns:"http://www.w3.org/2000/svg",d:w,style:{strokeWidth:"1px",strokeLinejoin:"round",stroke:"green",fill:"none",opacity:"0.5"}})}),m&&(0,d.jsx)("div",{id:"noisy-pos",style:{rotate:"z "+m[2]+"rad",top:m[0]-10,left:m[1]-5},children:(0,d.jsx)("img",{src:c,id:"noisy-pos"})}),j&&(0,d.jsx)("svg",{height:"100%",width:"100%",xmlns:"http://www.w3.org/2000/svg",style:{zIndex:2,position:"absolute"},children:(0,d.jsx)("path",{xmlns:"http://www.w3.org/2000/svg",d:j,style:{strokeWidth:"1px",strokeLinejoin:"round",stroke:"blue",fill:"none",opacity:"0.5"}})}),v&&(0,d.jsx)("div",{id:"user-pos",style:{rotate:"z "+v[2]+"rad",top:v[0]-10,left:v[1]-5},children:(0,d.jsx)("img",{src:i,id:"user-pos"})}),C&&(0,d.jsx)("svg",{height:"100%",width:"100%",xmlns:"http://www.w3.org/2000/svg",style:{zIndex:2,position:"absolute"},children:(0,d.jsx)("path",{xmlns:"http://www.w3.org/2000/svg",d:C,style:{strokeWidth:"1px",strokeLinejoin:"round",stroke:"red",fill:"none",opacity:"0.5"}})}),Object.values(A).map((function(e){return(0,d.jsx)("div",{className:"beacon ".concat(e.type),style:{top:"".concat(e.y,"px"),left:"".concat(e.x,"px"),position:"absolute",border:"2px solid rgb(255, 255, 255)",cursor:"pointer",zIndex:"5",width:"".concat("vert"==e.type?0:20,"px"),height:"".concat("hor"==e.type?0:20,"px")},title:"ID: ".concat(e.id)},e.id)}))]})}},1020:(e,t,n)=>{var o=n(6540),r=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var o,s={},l=null,u=null;for(o in void 0!==n&&(l=""+n),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)i.call(t,o)&&!c.hasOwnProperty(o)&&(s[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps)void 0===s[o]&&(s[o]=t[o]);return{$$typeof:r,type:e,key:l,ref:u,props:s,_owner:a.current}}t.Fragment=s,t.jsx=l,t.jsxs=l},4848:(e,t,n)=>{e.exports=n(1020)},2597:(e,t,n)=>{e.exports=n.p+"fbd2a40c78e5112b66a9.png"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LGtCQy9PYSxJQUFJZ0YsRUFBRSxFQUFRLE1BQVNDLEVBQUVDLE9BQU9DLElBQUksaUJBQWlCQyxFQUFFRixPQUFPQyxJQUFJLGtCQUFrQkUsRUFBRVgsT0FBT1ksVUFBVUMsZUFBZUMsRUFBRVIsRUFBRVMsbURBQW1EQyxrQkFBa0JDLEVBQUUsQ0FBQ0MsS0FBSSxFQUFHQyxLQUFJLEVBQUdDLFFBQU8sRUFBR0MsVUFBUyxHQUNoUCxTQUFTQyxFQUFFQyxFQUFFQyxFQUFFQyxHQUFHLElBQUlDLEVBQUVsQyxFQUFFLENBQUMsRUFBRW1DLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJRixVQUFoRixJQUFTRCxJQUFJRSxFQUFFLEdBQUdGLFFBQUcsSUFBU0QsRUFBRU4sTUFBTVMsRUFBRSxHQUFHSCxFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1TLEVBQUVKLEVBQUVMLEtBQWNLLEVBQUViLEVBQUVrQixLQUFLTCxFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLbEMsRUFBRWtDLEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRU8sYUFBYSxJQUFJSixLQUFLRixFQUFFRCxFQUFFTyxrQkFBZSxJQUFTdEMsRUFBRWtDLEtBQUtsQyxFQUFFa0MsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNLLFNBQVN4QixFQUFFaEYsS0FBS2dHLEVBQUVMLElBQUlTLEVBQUVSLElBQUlTLEVBQUV2SSxNQUFNbUcsRUFBRXdDLE9BQU9sQixFQUFFbUIsUUFBUSxDQUFDQyxFQUFRQyxTQUFTekIsRUFBRXdCLEVBQVFFLElBQUlkLEVBQUVZLEVBQVFHLEtBQUtmLGtCQ1B4V2dCLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9tYXJrZXJfdmlzdWFsX2xvYy9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlVmlzdWFsLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL21hcmtlcl92aXN1YWxfbG9jL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNWaXN1YWxMb2MuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRvIGRlY29kZSB0aGUgaW1hZ2Ugc3RyaW5nIHdlIHdpbGwgcmVjZWl2ZSBmcm9tIHNlcnZlclxyXG5mdW5jdGlvbiBkZWNvZGVfdXRmOChzKSB7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpO1xyXG59XHJcblxyXG5sZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3SW1hZ2UoZGF0YSkge1xyXG4gIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aS1jYW52YXNcIik7XHJcblxyXG4gIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICBmdW5jdGlvbiBkZWNvZGVfdXRmOChzKSB7XHJcbiAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKVxyXG4gIH1cclxuXHJcbiAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZSksXHJcbiAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuXHJcbiAgaWYgKHNvdXJjZSAhPSBcIlwiICYmIHNoYXBlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgIGNhbnZhcy5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICBjYW52YXMud2lkdGggPSBzaGFwZVsxXTtcclxuICAgIGNhbnZhcy5oZWlnaHQgPSBzaGFwZVswXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB1cGRhdGVQYXRoID0gKHRyYWlsLCBzZXRQYXRoQ2FsbGJhY2ssIGhlaWdodCwgd2lkdGgpID0+IHtcclxuICB2YXIgbmV3UGF0aCA9IFwiTSBcIjtcclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRyYWlsLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRyYWlsW2luZGV4XTtcclxuICAgIHZhciB0b3AgID0gZWxlbWVudFswXSAqIGhlaWdodDtcclxuICAgIHZhciBsZWZ0ID0gZWxlbWVudFsxXSAqIHdpZHRoO1xyXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIG5ld1BhdGggKz0gbGVmdC50b1N0cmluZygpKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbmV3UGF0aCArPSBcIiBMIFwiICsgbGVmdC50b1N0cmluZygpICsgXCIsXCIgKyB0b3AudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGlmICh0cmFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICBzZXRQYXRoQ2FsbGJhY2sobmV3UGF0aClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhZGRUb1BhdGggPSAoeCwgeSwgdHJhaWwpID0+IHtcclxuICBpZiAoIXRyYWlsLmluY2x1ZGVzKFt4LCB5XSkpIHtcclxuICAgIHRyYWlsLnB1c2goW3gsIHldKTtcclxuICB9XHJcbn0iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQgeyBkcmF3SW1hZ2UsIHVwZGF0ZVBhdGgsIGFkZFRvUGF0aCB9IGZyb20gXCIuL2hlbHBlcnMvc2hvd0ltYWdlVmlzdWFsXCI7XHJcbmltcG9ydCBSb2JvdFJlZCBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy9yb2JvdF9yZWQuc3ZnXCI7XHJcbmltcG9ydCBSb2JvdEdyZWVuIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL3JvYm90X2dyZWVuLnN2Z1wiO1xyXG5pbXBvcnQgUm9ib3RCbHVlIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL3JvYm90X2JsdWUuc3ZnXCI7XHJcbmltcG9ydCBub0ltYWdlIGZyb20gXCIuLi8uLi9hc3NldHMvaW1nL25vSW1hZ2UucG5nXCI7XHJcblxyXG5pbXBvcnQgaG91c2UgZnJvbSBcIi4uL3Jlc291cmNlcy9pbWFnZXMvbWFwLnBuZ1wiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvR1VJQ2FudmFzLmNzc1wiO1xyXG5mdW5jdGlvbiBTcGVjaWZpY1Zpc3VhbExvYyhwcm9wcykge1xyXG4gIGNvbnN0IFtyZWFsUG9zZSwgc2V0UmVhbFBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbbm9pc3lQb3NlLCBzZXROb2lzeVBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbdXNlclBvc2UsIHNldFVzZXJQb3NlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXHJcbiAgY29uc3QgW3JlYWxQYXRoLCBzZXRSZWFsUGF0aF0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKVxyXG4gIGNvbnN0IFtub2lzeVBhdGgsIHNldE5vaXN5UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKVxyXG4gIGNvbnN0IFt1c2VyUGF0aCwgc2V0VXNlclBhdGhdID0gUmVhY3QudXNlU3RhdGUoXCJcIilcclxuICBjb25zdCBbcmVzaXplZEJlYWNvbnMsIHNldFJlc2l6ZWRCZWFjb25zXSA9IFJlYWN0LnVzZVN0YXRlKHt9KVxyXG4gIHZhciByZWFsVHJhaWwgPSBbXTtcclxuICB2YXIgbm9pc3lUcmFpbCA9IFtdO1xyXG4gIHZhciB1c2VyVHJhaWwgPSBbXTtcclxuICB2YXIgcmVhbExhc3RQb3NlID0gdW5kZWZpbmVkO1xyXG4gIHZhciBub2lzeUxhc3RQb3NlID0gdW5kZWZpbmVkO1xyXG4gIHZhciB1c2VyTGFzdFBvc2UgPSB1bmRlZmluZWQ7XHJcbiAgdmFyIHZhbHVlc1VudGlsVmFsaWQgPSAwO1xyXG5cclxuICBjb25zdCB0aW1lb3V0ID0gMDtcclxuXHJcbiAgY29uc3QgYmVhY29ucyA9IFtcclxuICAgIHsgaWQ6IFwidGFnXzBcIiwgeDogNTE4Ljc1LCB5OiAyNzAuMzI1LCB0eXBlOiBcImhvclwiIH0sXHJcbiAgICB7IGlkOiBcInRhZ18xXCIsIHg6IDQ4MS40LCB5OiA4MTAuNzc1LCB0eXBlOiBcImhvclwiIH0sXHJcbiAgICB7IGlkOiBcInRhZ18yXCIsIHg6IDE5Ni4zOTUsIHk6IDMzOS4xNSwgdHlwZTogXCJ2ZXJ0XCIgfSxcclxuICAgIHsgaWQ6IFwidGFnXzNcIiwgeDogNDAwLjg5LCB5OiA3OS45LCB0eXBlOiBcImhvclwiIH0sXHJcbiAgICB7IGlkOiBcInRhZ180XCIsIHg6IDg0NC45NCwgeTogNzEyLjMsIHR5cGU6IFwidmVydFwiIH0sXHJcbiAgICB7IGlkOiBcInRhZ181XCIsIHg6IDI5NS4wMywgeTogNDk5LjgsIHR5cGU6IFwidmVydFwiIH0sXHJcbiAgICB7IGlkOiBcInRhZ182XCIsIHg6IDczMC40LCB5OiAzNTAuNTUsIHR5cGU6IFwiaG9yXCIgfSxcclxuICAgIHsgaWQ6IFwidGFnXzdcIiwgeDogNDk5LjY2LCB5OiAxNDAuMjUsIHR5cGU6IFwidmVydFwiIH0sXHJcbiAgXTtcclxuXHJcbiAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgIHZhciBpbWcgPSBlbnRyaWVzWzBdLnRhcmdldDsgXHJcbiAgICAvL29yIGhvd2V2ZXIgeW91IGdldCBhIGhhbmRsZSB0byB0aGUgSU1HXHJcbiAgICB2YXIgd2lkdGggPSAoaW1nLmNsaWVudFdpZHRoIC8gMTAxMik7XHJcbiAgICB2YXIgaGVpZ2h0ID0gKGltZy5jbGllbnRIZWlnaHQgLyAxMDEyKTtcclxuXHJcbiAgICBzZXRSZXNpemVkQmVhY29ucyhiZWFjb25zLm1hcChiZWFjb24gPT4gKHtcclxuICAgICAgaWQ6IGJlYWNvbi5pZCxcclxuICAgICAgeDogYmVhY29uLnggKiB3aWR0aCxcclxuICAgICAgeTogYmVhY29uLnkgKiBoZWlnaHQsXHJcbiAgICAgIHR5cGU6IGJlYWNvbi50eXBlLFxyXG4gICAgfSkpKVxyXG5cclxuICAgIHVwZGF0ZVBhdGgocmVhbFRyYWlsLCBzZXRSZWFsUGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgICB1cGRhdGVQYXRoKG5vaXN5VHJhaWwsIHNldE5vaXN5UGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgICB1cGRhdGVQYXRoKHVzZXJUcmFpbCwgc2V0VXNlclBhdGgsIGhlaWdodCwgd2lkdGgpO1xyXG5cclxuICAgIGlmIChyZWFsTGFzdFBvc2UpIHtcclxuICAgICAgc2V0UmVhbFBvc2UoW3JlYWxMYXN0UG9zZVsxXSpoZWlnaHQscmVhbExhc3RQb3NlWzBdKndpZHRoLCAtMS41NyAtcmVhbExhc3RQb3NlWzJdXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG5vaXN5TGFzdFBvc2UpIHtcclxuICAgICAgc2V0Tm9pc3lQb3NlKFtub2lzeUxhc3RQb3NlWzFdKmhlaWdodCxub2lzeUxhc3RQb3NlWzBdKndpZHRoLCAtMS41NyAtbm9pc3lMYXN0UG9zZVsyXV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1c2VyTGFzdFBvc2UpIHtcclxuICAgICAgc2V0VXNlclBvc2UoW3VzZXJMYXN0UG9zZVsxXSpoZWlnaHQsdXNlckxhc3RQb3NlWzBdKndpZHRoLCAtMS41NyAtdXNlckxhc3RQb3NlWzJdXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsdWVzVW50aWxWYWxpZCA9IDA7XHJcbiAgfSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zdCB1cGRhdGVEYXRhID0gbWVzc2FnZS5kYXRhLnVwZGF0ZTtcclxuXHJcbiAgICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ3VpLWNhbnZhcycpOyBcclxuICAgICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgICB2YXIgd2lkdGggPSAoaW1nLmNsaWVudFdpZHRoIC8gMTAxMik7XHJcbiAgICAgIHZhciBoZWlnaHQgPSAoaW1nLmNsaWVudEhlaWdodCAvIDEwMTIpO1xyXG5cclxuICAgICAgaWYgKHVwZGF0ZURhdGEucmVhbF9wb3NlKSB7XHJcbiAgICAgICAgY29uc3QgcG9zZSA9IHVwZGF0ZURhdGEucmVhbF9wb3NlLnN1YnN0cmluZygxLCB1cGRhdGVEYXRhLnJlYWxfcG9zZS5sZW5ndGggLSAxKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gcG9zZS5zcGxpdChcIixcIikubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtKSk7XHJcbiAgICAgICAgcmVhbExhc3RQb3NlID0gY29udGVudFxyXG5cclxuICAgICAgICBzZXRSZWFsUG9zZShbY29udGVudFsxXSpoZWlnaHQsY29udGVudFswXSp3aWR0aCwgLTEuNTcgLWNvbnRlbnRbMl1dKTtcclxuICAgICAgICBpZiAodmFsdWVzVW50aWxWYWxpZCA+IHRpbWVvdXQpIHtcclxuICAgICAgICAgIHVwZGF0ZVBhdGgocmVhbFRyYWlsLCBzZXRSZWFsUGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgICAgICAgICBhZGRUb1BhdGgoY29udGVudFsxXSwgY29udGVudFswXSwgcmVhbFRyYWlsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWVzVW50aWxWYWxpZCA9IHZhbHVlc1VudGlsVmFsaWQgKyAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHVwZGF0ZURhdGEubm9pc3lfcG9zZSkge1xyXG4gICAgICAgIGNvbnN0IHBvc2UgPSB1cGRhdGVEYXRhLm5vaXN5X3Bvc2Uuc3Vic3RyaW5nKDEsIHVwZGF0ZURhdGEubm9pc3lfcG9zZS5sZW5ndGggLSAxKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gcG9zZS5zcGxpdChcIixcIikubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtKSk7XHJcbiAgICAgICAgbm9pc3lMYXN0UG9zZSA9IGNvbnRlbnRcclxuXHJcbiAgICAgICAgc2V0Tm9pc3lQb3NlKFtjb250ZW50WzFdKmhlaWdodCxjb250ZW50WzBdKndpZHRoLCAtMS41NyAtY29udGVudFsyXV0pO1xyXG4gICAgICAgIGlmICh2YWx1ZXNVbnRpbFZhbGlkID4gdGltZW91dCkge1xyXG4gICAgICAgICAgdXBkYXRlUGF0aChub2lzeVRyYWlsLCBzZXROb2lzeVBhdGgsIGhlaWdodCwgd2lkdGgpO1xyXG4gICAgICAgICAgYWRkVG9QYXRoKGNvbnRlbnRbMV0sIGNvbnRlbnRbMF0sIG5vaXN5VHJhaWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHVwZGF0ZURhdGEuZXN0aW1hdGVfcG9zZSkge1xyXG4gICAgICAgIGNvbnN0IHBvc2UgPSB1cGRhdGVEYXRhLmVzdGltYXRlX3Bvc2Uuc3Vic3RyaW5nKDEsIHVwZGF0ZURhdGEuZXN0aW1hdGVfcG9zZS5sZW5ndGggLSAxKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gcG9zZS5zcGxpdChcIixcIikubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtKSk7XHJcbiAgICAgICAgdXNlckxhc3RQb3NlID0gY29udGVudFxyXG5cclxuICAgICAgICBzZXRVc2VyUG9zZShbY29udGVudFsxXSpoZWlnaHQsY29udGVudFswXSp3aWR0aCwgLTEuNTcgLWNvbnRlbnRbMl1dKTtcclxuICAgICAgICBpZiAodmFsdWVzVW50aWxWYWxpZCA+IHRpbWVvdXQpIHtcclxuICAgICAgICAgIHVwZGF0ZVBhdGgodXNlclRyYWlsLCBzZXRVc2VyUGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcbiAgICAgICAgICBhZGRUb1BhdGgoY29udGVudFsxXSwgY29udGVudFswXSwgdXNlclRyYWlsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh1cGRhdGVEYXRhLmltYWdlKSB7XHJcbiAgICAgICAgZHJhd0ltYWdlKHVwZGF0ZURhdGEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZW5kIHRoZSBBQ0sgb2YgdGhlIG1zZ1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnNlbmQoXCJndWlcIiwgXCJhY2tcIik7XHJcbiAgICB9O1xyXG5cclxuICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuc3Vic2NyaWJlKFxyXG4gICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhlcmNpc2UtaW1nJykpO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiVGVzdFNob3dTY3JlZW4gdW5zdWJzY3JpYmluZyBmcm9tIFsnc3RhdGUtY2hhbmdlZCddIGV2ZW50c1wiKTtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuVVBEQVRFXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IChtZXNzYWdlKSA9PiB7XHJcbiAgICAgIGlmIChtZXNzYWdlLmRhdGEuc3RhdGUgPT09IFwidG9vbHNfcmVhZHlcIikge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBzZXRSZWFsUG9zZShudWxsKVxyXG4gICAgICAgICAgc2V0Tm9pc3lQb3NlKG51bGwpXHJcbiAgICAgICAgICBzZXRVc2VyUG9zZShudWxsKVxyXG4gICAgICAgICAgc2V0UmVhbFBhdGgoXCJcIilcclxuICAgICAgICAgIHNldE5vaXN5UGF0aChcIlwiKVxyXG4gICAgICAgICAgc2V0VXNlclBhdGgoXCJcIilcclxuICAgICAgICAgIHJlYWxUcmFpbD1bXVxyXG4gICAgICAgICAgbm9pc3lUcmFpbD1bXVxyXG4gICAgICAgICAgdXNlclRyYWlsPVtdXHJcblxyXG4gICAgICAgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdndWktY2FudmFzJyk7IFxyXG4gICAgICAgICAgLy9vciBob3dldmVyIHlvdSBnZXQgYSBoYW5kbGUgdG8gdGhlIElNR1xyXG4gICAgICAgICAgdmFyIHdpZHRoID0gKGltZy5jbGllbnRXaWR0aCAvIDEwMTIpO1xyXG4gICAgICAgICAgdmFyIGhlaWdodCA9IChpbWcuY2xpZW50SGVpZ2h0IC8gMTAxMik7XHJcbiAgICAgICAgICBzZXRSZXNpemVkQmVhY29ucyhiZWFjb25zLm1hcChiZWFjb24gPT4gKHtcclxuICAgICAgICAgICAgaWQ6IGJlYWNvbi5pZCxcclxuICAgICAgICAgICAgeDogYmVhY29uLnggKiB3aWR0aCxcclxuICAgICAgICAgICAgeTogYmVhY29uLnkgKiBoZWlnaHQsXHJcbiAgICAgICAgICAgIHR5cGU6IGJlYWNvbi50eXBlLFxyXG4gICAgICAgICAgfSkpKVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhbHVlc1VudGlsVmFsaWQgPSAwO1xyXG4gICAgfVxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSlcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fT5cclxuICAgICAgPGltZyBzcmM9e2hvdXNlfSBhbHQ9XCJcIiBjbGFzc05hbWU9XCJleGVyY2lzZS1jYW52YXNcIiBpZD1cImV4ZXJjaXNlLWltZ1wiLz5cclxuICAgICAgPGltZyBjbGFzc05hbWU9XCJpbWFnZVwiIGlkPVwiZ3VpLWNhbnZhc1wiIHN0eWxlPXt7bGVmdDogXCI1MCVcIn19XHJcbiAgICAgICAgc3JjPXtub0ltYWdlfS8+XHJcbiAgICAgIHtyZWFsUG9zZSAmJlxyXG4gICAgICAgIDxkaXYgaWQ9XCJyZWFsLXBvc1wiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIHJlYWxQb3NlWzJdK1wicmFkXCIsIHRvcDogcmVhbFBvc2VbMF0gLTEwICwgbGVmdDogcmVhbFBvc2VbMV0gLTV9fT5cclxuICAgICAgICAgIDxpbWcgc3JjPXtSb2JvdEdyZWVufSBpZD1cInJlYWwtcG9zXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIHtyZWFsUGF0aCAmJlxyXG4gICAgICAgIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHlsZT17e3pJbmRleDoyLCBwb3NpdGlvbjpcImFic29sdXRlXCJ9fT5cclxuICAgICAgICAgIDxwYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBkPXtyZWFsUGF0aH0gXHJcbiAgICAgICAgICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6IFwiMXB4XCIsIHN0cm9rZUxpbmVqb2luOlwicm91bmRcIiwgc3Ryb2tlOiBcImdyZWVuXCIsIGZpbGw6IFwibm9uZVwiLCBvcGFjaXR5OlwiMC41XCJ9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgfVxyXG4gICAgICB7bm9pc3lQb3NlICYmXHJcbiAgICAgICAgPGRpdiBpZD1cIm5vaXN5LXBvc1wiIHN0eWxlPXt7cm90YXRlOiBcInogXCIrIG5vaXN5UG9zZVsyXStcInJhZFwiLCB0b3A6IG5vaXN5UG9zZVswXSAtMTAgLCBsZWZ0OiBub2lzeVBvc2VbMV0gLTV9fT5cclxuICAgICAgICAgIDxpbWcgc3JjPXtSb2JvdEJsdWV9IGlkPVwibm9pc3ktcG9zXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIHtub2lzeVBhdGggJiZcclxuICAgICAgICA8c3ZnIGhlaWdodD1cIjEwMCVcIiB3aWR0aD1cIjEwMCVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgc3R5bGU9e3t6SW5kZXg6MiwgcG9zaXRpb246XCJhYnNvbHV0ZVwifX0+XHJcbiAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZD17bm9pc3lQYXRofSBcclxuICAgICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDogXCIxcHhcIiwgc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLCBzdHJva2U6IFwiYmx1ZVwiLCBmaWxsOiBcIm5vbmVcIiwgb3BhY2l0eTpcIjAuNVwifX1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIH1cclxuICAgICAge3VzZXJQb3NlICYmXHJcbiAgICAgICAgPGRpdiBpZD1cInVzZXItcG9zXCIgc3R5bGU9e3tyb3RhdGU6IFwieiBcIisgdXNlclBvc2VbMl0rXCJyYWRcIiwgdG9wOiB1c2VyUG9zZVswXSAtMTAgLCBsZWZ0OiB1c2VyUG9zZVsxXSAtNX19PlxyXG4gICAgICAgICAgPGltZyBzcmM9e1JvYm90UmVkfSBpZD1cInVzZXItcG9zXCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICAgIHt1c2VyUGF0aCAmJlxyXG4gICAgICAgIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBzdHlsZT17e3pJbmRleDoyLCBwb3NpdGlvbjpcImFic29sdXRlXCJ9fT5cclxuICAgICAgICAgIDxwYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBkPXt1c2VyUGF0aH0gXHJcbiAgICAgICAgICAgIHN0eWxlPXt7c3Ryb2tlV2lkdGg6IFwiMXB4XCIsIHN0cm9rZUxpbmVqb2luOlwicm91bmRcIiwgc3Ryb2tlOiBcInJlZFwiLCBmaWxsOiBcIm5vbmVcIiwgb3BhY2l0eTpcIjAuNVwifX1cclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIH1cclxuICAgICAge09iamVjdC52YWx1ZXMocmVzaXplZEJlYWNvbnMpLm1hcCgoYmVhY29uKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuKFxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGtleT17YmVhY29uLmlkfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtgYmVhY29uICR7YmVhY29uLnR5cGV9YH1cclxuICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgIHRvcDogYCR7YmVhY29uLnl9cHhgLFxyXG4gICAgICAgICAgICBsZWZ0OiBgJHtiZWFjb24ueH1weGAsXHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXHJcbiAgICAgICAgICAgIGJvcmRlcjogXCIycHggc29saWQgcmdiKDI1NSwgMjU1LCAyNTUpXCIsXHJcbiAgICAgICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgICAgIHpJbmRleDogXCI1XCIsXHJcbiAgICAgICAgICAgIHdpZHRoOiBgJHsoYmVhY29uLnR5cGUgPT0gXCJ2ZXJ0XCIpID8gMCA6IDIwfXB4YCxcclxuICAgICAgICAgICAgaGVpZ2h0OiBgJHsoYmVhY29uLnR5cGUgPT0gXCJob3JcIikgPyAwIDogMjB9cHhgLFxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHRpdGxlPXtgSUQ6ICR7YmVhY29uLmlkfWB9XHJcbiAgICAgICAgLz5cclxuICAgICAgKX0pfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNWaXN1YWxMb2M7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbIkltYWdlIiwidXBkYXRlUGF0aCIsInRyYWlsIiwic2V0UGF0aENhbGxiYWNrIiwiaGVpZ2h0Iiwid2lkdGgiLCJuZXdQYXRoIiwiaW5kZXgiLCJsZW5ndGgiLCJlbGVtZW50IiwidG9wIiwibGVmdCIsInRvU3RyaW5nIiwiYWRkVG9QYXRoIiwieCIsInkiLCJpbmNsdWRlcyIsInB1c2giLCJwcm9wcyIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0IiwicmVhbFBvc2UiLCJzZXRSZWFsUG9zZSIsIl9SZWFjdCR1c2VTdGF0ZTQiLCJub2lzeVBvc2UiLCJzZXROb2lzeVBvc2UiLCJfUmVhY3QkdXNlU3RhdGU2IiwidXNlclBvc2UiLCJzZXRVc2VyUG9zZSIsIl9SZWFjdCR1c2VTdGF0ZTgiLCJyZWFsUGF0aCIsInNldFJlYWxQYXRoIiwiX1JlYWN0JHVzZVN0YXRlMTAiLCJub2lzeVBhdGgiLCJzZXROb2lzeVBhdGgiLCJfUmVhY3QkdXNlU3RhdGUxMiIsInVzZXJQYXRoIiwic2V0VXNlclBhdGgiLCJfUmVhY3QkdXNlU3RhdGUxNCIsInJlc2l6ZWRCZWFjb25zIiwic2V0UmVzaXplZEJlYWNvbnMiLCJyZWFsVHJhaWwiLCJub2lzeVRyYWlsIiwidXNlclRyYWlsIiwicmVhbExhc3RQb3NlIiwidW5kZWZpbmVkIiwibm9pc3lMYXN0UG9zZSIsInVzZXJMYXN0UG9zZSIsInZhbHVlc1VudGlsVmFsaWQiLCJiZWFjb25zIiwiaWQiLCJ0eXBlIiwicmVzaXplT2JzZXJ2ZXIiLCJSZXNpemVPYnNlcnZlciIsImVudHJpZXMiLCJpbWciLCJ0YXJnZXQiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsIm1hcCIsImJlYWNvbiIsImNvbnNvbGUiLCJsb2ciLCJjYWxsYmFjayIsIm1lc3NhZ2UiLCJkYXRhIiwicyIsImNhbnZhcyIsImltYWdlX2RhdGEiLCJzb3VyY2UiLCJzaGFwZSIsInVwZGF0ZURhdGEiLCJ1cGRhdGUiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicmVhbF9wb3NlIiwiY29udGVudCIsInN1YnN0cmluZyIsInNwbGl0IiwiaXRlbSIsInBhcnNlRmxvYXQiLCJub2lzeV9wb3NlIiwiZXN0aW1hdGVfcG9zZSIsImltYWdlIiwiSlNPTiIsInBhcnNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwiQXJyYXkiLCJzcmMiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInNlbmQiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJvYnNlcnZlIiwidW5zdWJzY3JpYmUiLCJzdGF0ZSIsImVycm9yIiwiU1RBVEVfQ0hBTkdFRCIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJjaGlsZHJlbiIsIl9qc3giLCJob3VzZSIsImFsdCIsImNsYXNzTmFtZSIsIm5vSW1hZ2UiLCJyb3RhdGUiLCJSb2JvdEdyZWVuIiwieG1sbnMiLCJ6SW5kZXgiLCJkIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZSIsImZpbGwiLCJvcGFjaXR5IiwiUm9ib3RCbHVlIiwiUm9ib3RSZWQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJjb25jYXQiLCJib3JkZXIiLCJjdXJzb3IiLCJ0aXRsZSIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8256.cc033cf0.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8256.cc033cf0.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8256.cc033cf0.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8359.bd3f54be.js b/react_frontend/static/react_frontend/js/8359.bd3f54be.js new file mode 100644 index 000000000..07e5a95f1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8359.bd3f54be.js @@ -0,0 +1,3 @@ +/*! For license information please see 8359.bd3f54be.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8359],{8359:(e,r,t)=>{"use strict";t.r(r),t.d(r,{HomepageProvider:()=>f,default:()=>p});var n=t(6540),o=t(5556),a=t.n(o),i=t(4848);function u(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,o,a,i,u=[],c=!0,l=!1;try{if(a=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;c=!1}else for(;!(c=(n=a.call(t)).done)&&(u.push(n.value),u.length!==r);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=t.return&&(i=t.return(),Object(i)!==i))return}finally{if(l)throw o}}return u}}(e,r)||c(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,r){if(e){if("string"==typeof e)return l(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?l(e,r):void 0}}function l(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);t{"use strict";var n=t(6925);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,r,t,o,a,i){if(i!==n){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function r(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:r,element:e,elementType:e,instanceOf:r,node:e,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:a,resetWarningCache:o};return t.PropTypes=t,t}},5556:(e,r,t)=>{e.exports=t(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,r,t)=>{"use strict";var n=t(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,u=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function l(e,r,t){var n,a={},l=null,s=null;for(n in void 0!==t&&(l=""+t),void 0!==r.key&&(l=""+r.key),void 0!==r.ref&&(s=r.ref),r)i.call(r,n)&&!c.hasOwnProperty(n)&&(a[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===a[n]&&(a[n]=r[n]);return{$$typeof:o,type:e,key:l,ref:s,props:a,_owner:u.current}}r.Fragment=a,r.jsx=l,r.jsxs=l},4848:(e,r,t)=>{"use strict";e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTMUIsRUFBRTJCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUV4RCxNQUFNc0QsRUFBRU8sT0FBT3BCLEVBQUVxQixRQUFRLENBQUNoRSxFQUFRaUUsU0FBUzNCLEVBQUV0QyxFQUFRa0UsSUFBSWYsRUFBRW5ELEVBQVFtRSxLQUFLaEIsK0JDUHhXcEQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbnRleHRzL0hvbWVwYWdlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuY29uc3QgSG9tZXBhZ2VDb250ZXh0ID0gY3JlYXRlQ29udGV4dCgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEhvbWVwYWdlUHJvdmlkZXIoeyBjaGlsZHJlbiB9KSB7XHJcbiAgY29uc3QgW2lucHV0VGV4dCwgc2V0SW5wdXRUZXh0XSA9IHVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IFtmaWx0ZXJJdGVtc0xpc3QsIHNldEZpbHRlckl0ZW1zTGlzdF0gPSB1c2VTdGF0ZShbXCJuYW1lXCIsIFwidGFnc1wiXSk7XHJcblxyXG4gIGNvbnN0IGdldFNlYXJjaEJhclRleHQgPSAoKSA9PiBpbnB1dFRleHQ7XHJcblxyXG4gIGNvbnN0IHNldFNlYXJjaEJhclRleHQgPSAodGV4dCkgPT4ge1xyXG4gICAgc2V0SW5wdXRUZXh0KHRleHQpO1xyXG4gIH07XHJcbiAgY29uc3QgZ2V0RmlsdGVySXRlbXNMaXN0ID0gKCkgPT4gZmlsdGVySXRlbXNMaXN0O1xyXG4gIGNvbnN0IGFwcGVuZEZpbHRlckl0ZW0gPSAoaXRlbSkgPT4ge1xyXG4gICAgc2V0RmlsdGVySXRlbXNMaXN0KFxyXG4gICAgICBmaWx0ZXJJdGVtc0xpc3QuaW5jbHVkZXMoaXRlbSlcclxuICAgICAgICA/IGZpbHRlckl0ZW1zTGlzdC5maWx0ZXIoKGkpID0+IGkgIT09IGl0ZW0pXHJcbiAgICAgICAgOiBbLi4uZmlsdGVySXRlbXNMaXN0LCBpdGVtXVxyXG4gICAgKTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPEhvbWVwYWdlQ29udGV4dC5Qcm92aWRlclxyXG4gICAgICB2YWx1ZT17e1xyXG4gICAgICAgIGdldFNlYXJjaEJhclRleHQsXHJcbiAgICAgICAgc2V0U2VhcmNoQmFyVGV4dCxcclxuICAgICAgICBhcHBlbmRGaWx0ZXJJdGVtLFxyXG4gICAgICAgIGdldEZpbHRlckl0ZW1zTGlzdCxcclxuICAgICAgfX1cclxuICAgID5cclxuICAgICAge2NoaWxkcmVufVxyXG4gICAgPC9Ib21lcGFnZUNvbnRleHQuUHJvdmlkZXI+XHJcbiAgKTtcclxufVxyXG5cclxuSG9tZXBhZ2VQcm92aWRlci5wcm9wVHlwZXMgPSB7XHJcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5lbGVtZW50LFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgSG9tZXBhZ2VDb250ZXh0O1xyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJIb21lcGFnZUNvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiSG9tZXBhZ2VQcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInVzZVN0YXRlIiwiaW5wdXRUZXh0Iiwic2V0SW5wdXRUZXh0IiwiX3VzZVN0YXRlNCIsImZpbHRlckl0ZW1zTGlzdCIsInNldEZpbHRlckl0ZW1zTGlzdCIsIl9qc3giLCJQcm92aWRlciIsInZhbHVlIiwiZ2V0U2VhcmNoQmFyVGV4dCIsInNldFNlYXJjaEJhclRleHQiLCJ0ZXh0IiwiYXBwZW5kRmlsdGVySXRlbSIsIml0ZW0iLCJpbmNsdWRlcyIsImZpbHRlciIsImkiLCJjb25jYXQiLCJnZXRGaWx0ZXJJdGVtc0xpc3QiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BzIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJzaGFwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8359.bd3f54be.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8359.bd3f54be.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8359.bd3f54be.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8496.0d006ad5.js b/react_frontend/static/react_frontend/js/8496.0d006ad5.js new file mode 100644 index 000000000..747091a15 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8496.0d006ad5.js @@ -0,0 +1,3 @@ +/*! For license information please see 8496.0d006ad5.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8496],{8496:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvODQ5Ni5jYTk0MjRiNy5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnFCLFNBQUNBLEdBQ3BCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Zpc3VhbF9sYW5kZXJfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL1Zpc3VhbExhbmRlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiO1xyXG5cclxuaW1wb3J0IFwiLi9jc3MvVmlzdWFsTGFuZGVyLmNzc1wiO1xyXG5cclxuY29uc3QgVmlzdWFsTGFuZGVyID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IFZpc3VhbExhbmRlcjsiLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsicHJvcHMiLCJfanN4IiwiRnJhZ21lbnQiLCJjaGlsZHJlbiIsImYiLCJrIiwiU3ltYm9sIiwiZm9yIiwibCIsIm0iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm4iLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsIlJlYWN0Q3VycmVudE93bmVyIiwicCIsImtleSIsInJlZiIsIl9fc2VsZiIsIl9fc291cmNlIiwicSIsImMiLCJhIiwiZyIsImIiLCJkIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsImV4cG9ydHMiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8496.0d006ad5.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8496.0d006ad5.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8496.0d006ad5.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/855.5dd0595f.js b/react_frontend/static/react_frontend/js/855.5dd0595f.js new file mode 100644 index 000000000..8d131fa1c --- /dev/null +++ b/react_frontend/static/react_frontend/js/855.5dd0595f.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[855],{855:(e,n,r)=>{r.r(n),r.d(n,{extractClassesAndMembers:()=>s,extractPythonImports:()=>c,findClassNameByInstance:()=>i,getEditorFunctions:()=>a,getEditorVariables:()=>t});var t=function(e){var n=e.lines,r=e.monaco,t=e.range,a=new Set;return n.forEach((function(e){var n=e.match(/(\w+)\s*=/);n&&a.add(n[1])})),Array.from(a).map((function(e){return{label:e,kind:r.languages.CompletionItemKind.Variable,insertText:e,range:t}}))},a=function(e){var n=e.lines,r=e.monaco,t=e.range,a=new Set;return n.forEach((function(e){var n=e.match(/def\s+(\w+)\s*\(/);n&&a.add(n[1])})),Array.from(a).map((function(e){return{label:e,kind:r.languages.CompletionItemKind.Function,insertText:e,range:t}}))},s=function(e){var n=/class (\w+)\s*:/g,r=/def (\w+)\(/g,t=/(\w+)\s*=/,a={},s=null;return e.split("\n").forEach((function(e){var i=n.exec(e),c=e.match(/^\s*/)[0].length;if(i)s=i[1],a[s]={attributes:[],methods:[],spaceSize:c};else if(s){var u=r.exec(e);if(a[s].spaceSize{r.d(t,{A:()=>v});var o=r(8587),n=r(8168),a=r(6540),i=r(3272),l=r(5659),s=r(4215),d=r(7577),u=r(4409),p=r(6959),c=r(4848);const m=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],f=(0,d.Ay)(s.Sh,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[...(0,s.WC)(e,t),!r.disableUnderline&&t.underline]}})((({theme:e,ownerState:t})=>{var r;const o="light"===e.palette.mode,a=o?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",i=o?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",l=o?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",s=o?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return(0,n.A)({position:"relative",backgroundColor:e.vars?e.vars.palette.FilledInput.bg:i,borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),"&:hover":{backgroundColor:e.vars?e.vars.palette.FilledInput.hoverBg:l,"@media (hover: none)":{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:i}},[`&.${p.A.focused}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.bg:i},[`&.${p.A.disabled}`]:{backgroundColor:e.vars?e.vars.palette.FilledInput.disabledBg:s}},!t.disableUnderline&&{"&:after":{borderBottom:`2px solid ${null==(r=(e.vars||e).palette[t.color||"primary"])?void 0:r.main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${p.A.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${p.A.error}`]:{"&:before, &:after":{borderBottomColor:(e.vars||e).palette.error.main}},"&:before":{borderBottom:`1px solid ${e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / ${e.vars.opacity.inputUnderline})`:a}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${p.A.disabled}, .${p.A.error}):before`]:{borderBottom:`1px solid ${(e.vars||e).palette.text.primary}`},[`&.${p.A.disabled}:before`]:{borderBottomStyle:"dotted"}},t.startAdornment&&{paddingLeft:12},t.endAdornment&&{paddingRight:12},t.multiline&&(0,n.A)({padding:"25px 12px 8px"},"small"===t.size&&{paddingTop:21,paddingBottom:4},t.hiddenLabel&&{paddingTop:16,paddingBottom:17}))})),h=(0,d.Ay)(s.f3,{name:"MuiFilledInput",slot:"Input",overridesResolver:s.Oj})((({theme:e,ownerState:t})=>(0,n.A)({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!e.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},e.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[e.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===t.size&&{paddingTop:21,paddingBottom:4},t.hiddenLabel&&{paddingTop:16,paddingBottom:17},t.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0},t.startAdornment&&{paddingLeft:0},t.endAdornment&&{paddingRight:0},t.hiddenLabel&&"small"===t.size&&{paddingTop:8,paddingBottom:9}))),b=a.forwardRef((function(e,t){var r,a,d,b;const v=(0,u.A)({props:e,name:"MuiFilledInput"}),{components:A={},componentsProps:g,fullWidth:x=!1,inputComponent:y="input",multiline:S=!1,slotProps:w,slots:C={},type:R="text"}=v,k=(0,o.A)(v,m),I=(0,n.A)({},v,{fullWidth:x,inputComponent:y,multiline:S,type:R}),O=(e=>{const{classes:t,disableUnderline:r}=e,o={root:["root",!r&&"underline"],input:["input"]},a=(0,l.A)(o,p.N,t);return(0,n.A)({},t,a)})(v),W={root:{ownerState:I},input:{ownerState:I}},$=(null!=w?w:g)?(0,i.A)(null!=w?w:g,W):W,M=null!=(r=null!=(a=C.root)?a:A.Root)?r:f,F=null!=(d=null!=(b=C.input)?b:A.Input)?d:h;return(0,c.jsx)(s.Ay,(0,n.A)({slots:{root:M,input:F},componentsProps:$,fullWidth:x,inputComponent:y,multiline:S,ref:t,type:R},k,{classes:O}))}));b.muiName="Input";const v=b},6959:(e,t,r)=>{r.d(t,{A:()=>s,N:()=>l});var o=r(8168),n=r(8413),a=r(1609),i=r(1175);function l(e){return(0,a.A)("MuiFilledInput",e)}const s=(0,o.A)({},i.A,(0,n.A)("MuiFilledInput",["root","underline","input"]))},779:(e,t,r)=>{r.d(t,{A:()=>x});var o=r(8587),n=r(8168),a=r(6540),i=r(53),l=r(5659),s=r(4409),d=r(7577),u=r(2891),p=r(8466),c=r(5034),m=r(3800),f=r(8413),h=r(1609);function b(e){return(0,h.A)("MuiFormControl",e)}(0,f.A)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);var v=r(4848);const A=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],g=(0,d.Ay)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:({ownerState:e},t)=>(0,n.A)({},t.root,t[`margin${(0,p.A)(e.margin)}`],e.fullWidth&&t.fullWidth)})((({ownerState:e})=>(0,n.A)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===e.margin&&{marginTop:16,marginBottom:8},"dense"===e.margin&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:"100%"}))),x=a.forwardRef((function(e,t){const r=(0,s.A)({props:e,name:"MuiFormControl"}),{children:d,className:f,color:h="primary",component:x="div",disabled:y=!1,error:S=!1,focused:w,fullWidth:C=!1,hiddenLabel:R=!1,margin:k="none",required:I=!1,size:O="medium",variant:W="outlined"}=r,$=(0,o.A)(r,A),M=(0,n.A)({},r,{color:h,component:x,disabled:y,error:S,fullWidth:C,hiddenLabel:R,margin:k,required:I,size:O,variant:W}),F=(e=>{const{classes:t,margin:r,fullWidth:o}=e,n={root:["root","none"!==r&&`margin${(0,p.A)(r)}`,o&&"fullWidth"]};return(0,l.A)(n,b,t)})(M),[N,P]=a.useState((()=>{let e=!1;return d&&a.Children.forEach(d,(t=>{if(!(0,c.A)(t,["Input","Select"]))return;const r=(0,c.A)(t,["Select"])?t.props.input:t;r&&(0,u.gr)(r.props)&&(e=!0)})),e})),[B,L]=a.useState((()=>{let e=!1;return d&&a.Children.forEach(d,(t=>{(0,c.A)(t,["Input","Select"])&&((0,u.lq)(t.props,!0)||(0,u.lq)(t.props.inputProps,!0))&&(e=!0)})),e})),[j,E]=a.useState(!1);y&&j&&E(!1);const z=void 0===w||y?j:w;let q;const T=a.useMemo((()=>({adornedStart:N,setAdornedStart:P,color:h,disabled:y,error:S,filled:B,focused:z,fullWidth:C,hiddenLabel:R,size:O,onBlur:()=>{E(!1)},onEmpty:()=>{L(!1)},onFilled:()=>{L(!0)},onFocus:()=>{E(!0)},registerEffect:q,required:I,variant:W})),[N,h,y,S,B,z,C,R,q,I,O,W]);return(0,v.jsx)(m.A.Provider,{value:T,children:(0,v.jsx)(g,(0,n.A)({as:x,ownerState:M,className:(0,i.A)(F.root,f),ref:t},$,{children:d}))})}))},7623:(e,t,r)=>{r.d(t,{A:()=>v});var o=r(8587),n=r(8168),a=r(6540),i=r(5659),l=r(3272),s=r(4215),d=r(7577),u=r(4409),p=r(5571),c=r(4848);const m=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],f=(0,d.Ay)(s.Sh,{shouldForwardProp:e=>(0,d.ep)(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[...(0,s.WC)(e,t),!r.disableUnderline&&t.underline]}})((({theme:e,ownerState:t})=>{let r="light"===e.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return e.vars&&(r=`rgba(${e.vars.palette.common.onBackgroundChannel} / ${e.vars.opacity.inputUnderline})`),(0,n.A)({position:"relative"},t.formControl&&{"label + &":{marginTop:16}},!t.disableUnderline&&{"&:after":{borderBottom:`2px solid ${(e.vars||e).palette[t.color].main}`,left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:e.transitions.create("transform",{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut}),pointerEvents:"none"},[`&.${p.A.focused}:after`]:{transform:"scaleX(1) translateX(0)"},[`&.${p.A.error}`]:{"&:before, &:after":{borderBottomColor:(e.vars||e).palette.error.main}},"&:before":{borderBottom:`1px solid ${r}`,left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:e.transitions.create("border-bottom-color",{duration:e.transitions.duration.shorter}),pointerEvents:"none"},[`&:hover:not(.${p.A.disabled}, .${p.A.error}):before`]:{borderBottom:`2px solid ${(e.vars||e).palette.text.primary}`,"@media (hover: none)":{borderBottom:`1px solid ${r}`}},[`&.${p.A.disabled}:before`]:{borderBottomStyle:"dotted"}})})),h=(0,d.Ay)(s.f3,{name:"MuiInput",slot:"Input",overridesResolver:s.Oj})({}),b=a.forwardRef((function(e,t){var r,a,d,b;const v=(0,u.A)({props:e,name:"MuiInput"}),{disableUnderline:A,components:g={},componentsProps:x,fullWidth:y=!1,inputComponent:S="input",multiline:w=!1,slotProps:C,slots:R={},type:k="text"}=v,I=(0,o.A)(v,m),O=(e=>{const{classes:t,disableUnderline:r}=e,o={root:["root",!r&&"underline"],input:["input"]},a=(0,i.A)(o,p.B,t);return(0,n.A)({},t,a)})(v),W={root:{ownerState:{disableUnderline:A}}},$=(null!=C?C:x)?(0,l.A)(null!=C?C:x,W):W,M=null!=(r=null!=(a=R.root)?a:g.Root)?r:f,F=null!=(d=null!=(b=R.input)?b:g.Input)?d:h;return(0,c.jsx)(s.Ay,(0,n.A)({slots:{root:M,input:F},slotProps:$,fullWidth:y,inputComponent:S,multiline:w,ref:t,type:k},I,{classes:O}))}));b.muiName="Input";const v=b},5571:(e,t,r)=>{r.d(t,{A:()=>s,B:()=>l});var o=r(8168),n=r(8413),a=r(1609),i=r(1175);function l(e){return(0,a.A)("MuiInput",e)}const s=(0,o.A)({},i.A,(0,n.A)("MuiInput",["root","underline","input"]))},4433:(e,t,r)=>{r.d(t,{A:()=>R});var o=r(8587),n=r(8168),a=r(6540),i=r(5659),l=r(53),s=r(8086),d=r(9716),u=r(8466),p=r(4409),c=r(7577),m=r(8413),f=r(1609);function h(e){return(0,f.A)("MuiFormLabel",e)}const b=(0,m.A)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]);var v=r(4848);const A=["children","className","color","component","disabled","error","filled","focused","required"],g=(0,c.Ay)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:({ownerState:e},t)=>(0,n.A)({},t.root,"secondary"===e.color&&t.colorSecondary,e.filled&&t.filled)})((({theme:e,ownerState:t})=>(0,n.A)({color:(e.vars||e).palette.text.secondary},e.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",[`&.${b.focused}`]:{color:(e.vars||e).palette[t.color].main},[`&.${b.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${b.error}`]:{color:(e.vars||e).palette.error.main}}))),x=(0,c.Ay)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})((({theme:e})=>({[`&.${b.error}`]:{color:(e.vars||e).palette.error.main}}))),y=a.forwardRef((function(e,t){const r=(0,p.A)({props:e,name:"MuiFormLabel"}),{children:a,className:c,component:m="label"}=r,f=(0,o.A)(r,A),b=(0,d.A)(),y=(0,s.A)({props:r,muiFormControl:b,states:["color","required","focused","disabled","error","filled"]}),S=(0,n.A)({},r,{color:y.color||"primary",component:m,disabled:y.disabled,error:y.error,filled:y.filled,focused:y.focused,required:y.required}),w=(e=>{const{classes:t,color:r,focused:o,disabled:n,error:a,filled:l,required:s}=e,d={root:["root",`color${(0,u.A)(r)}`,n&&"disabled",a&&"error",l&&"filled",o&&"focused",s&&"required"],asterisk:["asterisk",a&&"error"]};return(0,i.A)(d,h,t)})(S);return(0,v.jsxs)(g,(0,n.A)({as:m,ownerState:S,className:(0,l.A)(w.root,c),ref:t},f,{children:[a,y.required&&(0,v.jsxs)(x,{ownerState:S,"aria-hidden":!0,className:w.asterisk,children:[" ","*"]})]}))}));function S(e){return(0,f.A)("MuiInputLabel",e)}(0,m.A)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const w=["disableAnimation","margin","shrink","variant","className"],C=(0,c.Ay)(y,{shouldForwardProp:e=>(0,c.ep)(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`& .${b.asterisk}`]:t.asterisk},t.root,r.formControl&&t.formControl,"small"===r.size&&t.sizeSmall,r.shrink&&t.shrink,!r.disableAnimation&&t.animated,t[r.variant]]}})((({theme:e,ownerState:t})=>(0,n.A)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},t.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===t.size&&{transform:"translate(0, 17px) scale(1)"},t.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!t.disableAnimation&&{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})},"filled"===t.variant&&(0,n.A)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(12px, 13px) scale(1)"},t.shrink&&(0,n.A)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===t.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===t.variant&&(0,n.A)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===t.size&&{transform:"translate(14px, 9px) scale(1)"},t.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"})))),R=a.forwardRef((function(e,t){const r=(0,p.A)({name:"MuiInputLabel",props:e}),{disableAnimation:a=!1,shrink:u,className:c}=r,m=(0,o.A)(r,w),f=(0,d.A)();let h=u;void 0===h&&f&&(h=f.filled||f.focused||f.adornedStart);const b=(0,s.A)({props:r,muiFormControl:f,states:["size","variant","required"]}),A=(0,n.A)({},r,{disableAnimation:a,formControl:f,shrink:h,size:b.size,variant:b.variant,required:b.required}),g=(e=>{const{classes:t,formControl:r,size:o,shrink:a,disableAnimation:l,variant:s,required:d}=e,u={root:["root",r&&"formControl",!l&&"animated",a&&"shrink","small"===o&&"sizeSmall",s],asterisk:[d&&"asterisk"]},p=(0,i.A)(u,S,t);return(0,n.A)({},t,p)})(A);return(0,v.jsx)(C,(0,n.A)({"data-shrink":h,ownerState:A,ref:t,className:(0,l.A)(g.root,c)},m,{classes:g}))}))},8641:(e,t,r)=>{r.d(t,{A:()=>w});var o,n=r(8587),a=r(8168),i=r(6540),l=r(5659),s=r(7577),d=r(4848);const u=["children","classes","className","label","notched"],p=(0,s.Ay)("fieldset")({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),c=(0,s.Ay)("legend")((({ownerState:e,theme:t})=>(0,a.A)({float:"unset",width:"auto",overflow:"hidden"},!e.withLabel&&{padding:0,lineHeight:"11px",transition:t.transitions.create("width",{duration:150,easing:t.transitions.easing.easeOut})},e.withLabel&&(0,a.A)({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:t.transitions.create("max-width",{duration:50,easing:t.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},e.notched&&{maxWidth:"100%",transition:t.transitions.create("max-width",{duration:100,easing:t.transitions.easing.easeOut,delay:50})}))));var m=r(9716),f=r(8086),h=r(1023),b=r(4215),v=r(4409);const A=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],g=(0,s.Ay)(b.Sh,{shouldForwardProp:e=>(0,s.ep)(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:b.WC})((({theme:e,ownerState:t})=>{const r="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return(0,a.A)({position:"relative",borderRadius:(e.vars||e).shape.borderRadius,[`&:hover .${h.A.notchedOutline}`]:{borderColor:(e.vars||e).palette.text.primary},"@media (hover: none)":{[`&:hover .${h.A.notchedOutline}`]:{borderColor:e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:r}},[`&.${h.A.focused} .${h.A.notchedOutline}`]:{borderColor:(e.vars||e).palette[t.color].main,borderWidth:2},[`&.${h.A.error} .${h.A.notchedOutline}`]:{borderColor:(e.vars||e).palette.error.main},[`&.${h.A.disabled} .${h.A.notchedOutline}`]:{borderColor:(e.vars||e).palette.action.disabled}},t.startAdornment&&{paddingLeft:14},t.endAdornment&&{paddingRight:14},t.multiline&&(0,a.A)({padding:"16.5px 14px"},"small"===t.size&&{padding:"8.5px 14px"}))})),x=(0,s.Ay)((function(e){const{className:t,label:r,notched:i}=e,l=(0,n.A)(e,u),s=null!=r&&""!==r,m=(0,a.A)({},e,{notched:i,withLabel:s});return(0,d.jsx)(p,(0,a.A)({"aria-hidden":!0,className:t,ownerState:m},l,{children:(0,d.jsx)(c,{ownerState:m,children:s?(0,d.jsx)("span",{children:r}):o||(o=(0,d.jsx)("span",{className:"notranslate",children:"​"}))})}))}),{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(e,t)=>t.notchedOutline})((({theme:e})=>{const t="light"===e.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:e.vars?`rgba(${e.vars.palette.common.onBackgroundChannel} / 0.23)`:t}})),y=(0,s.Ay)(b.f3,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:b.Oj})((({theme:e,ownerState:t})=>(0,a.A)({padding:"16.5px 14px"},!e.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===e.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===e.palette.mode?null:"#fff",caretColor:"light"===e.palette.mode?null:"#fff",borderRadius:"inherit"}},e.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[e.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===t.size&&{padding:"8.5px 14px"},t.multiline&&{padding:0},t.startAdornment&&{paddingLeft:0},t.endAdornment&&{paddingRight:0}))),S=i.forwardRef((function(e,t){var r,o,s,u,p;const c=(0,v.A)({props:e,name:"MuiOutlinedInput"}),{components:S={},fullWidth:w=!1,inputComponent:C="input",label:R,multiline:k=!1,notched:I,slots:O={},type:W="text"}=c,$=(0,n.A)(c,A),M=(e=>{const{classes:t}=e,r=(0,l.A)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},h.v,t);return(0,a.A)({},t,r)})(c),F=(0,m.A)(),N=(0,f.A)({props:c,muiFormControl:F,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),P=(0,a.A)({},c,{color:N.color||"primary",disabled:N.disabled,error:N.error,focused:N.focused,formControl:F,fullWidth:w,hiddenLabel:N.hiddenLabel,multiline:k,size:N.size,type:W}),B=null!=(r=null!=(o=O.root)?o:S.Root)?r:g,L=null!=(s=null!=(u=O.input)?u:S.Input)?s:y;return(0,d.jsx)(b.Ay,(0,a.A)({slots:{root:B,input:L},renderSuffix:e=>(0,d.jsx)(x,{ownerState:P,className:M.notchedOutline,label:null!=R&&""!==R&&N.required?p||(p=(0,d.jsxs)(i.Fragment,{children:[R," ","*"]})):R,notched:void 0!==I?I:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:w,inputComponent:C,multiline:k,ref:t,type:W},$,{classes:(0,a.A)({},M,{notchedOutline:null})}))}));S.muiName="Input";const w=S},1023:(e,t,r)=>{r.d(t,{A:()=>s,v:()=>l});var o=r(8168),n=r(8413),a=r(1609),i=r(1175);function l(e){return(0,a.A)("MuiOutlinedInput",e)}const s=(0,o.A)({},i.A,(0,n.A)("MuiOutlinedInput",["root","notchedOutline","input"]))},2071:(e,t,r)=>{r.d(t,{A:()=>Q});var o=r(8168),n=r(8587),a=r(6540),i=r(53),l=r(3272),s=r(2599),d=(r(4363),r(5659)),u=r(6248),p=r(8466),c=r(9741),m=r(8413),f=r(1609);function h(e){return(0,f.A)("MuiNativeSelect",e)}const b=(0,m.A)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);var v=r(7577),A=r(4848);const g=["className","disabled","error","IconComponent","inputRef","variant"],x=({ownerState:e,theme:t})=>(0,o.A)({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":(0,o.A)({},t.vars?{backgroundColor:`rgba(${t.vars.palette.common.onBackgroundChannel} / 0.05)`}:{backgroundColor:"light"===t.palette.mode?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},[`&.${b.disabled}`]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(t.vars||t).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},"filled"===e.variant&&{"&&&":{paddingRight:32}},"outlined"===e.variant&&{borderRadius:(t.vars||t).shape.borderRadius,"&:focus":{borderRadius:(t.vars||t).shape.borderRadius},"&&&":{paddingRight:32}}),y=(0,v.Ay)("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:v.ep,overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.select,t[r.variant],r.error&&t.error,{[`&.${b.multiple}`]:t.multiple}]}})(x),S=({ownerState:e,theme:t})=>(0,o.A)({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(t.vars||t).palette.action.active,[`&.${b.disabled}`]:{color:(t.vars||t).palette.action.disabled}},e.open&&{transform:"rotate(180deg)"},"filled"===e.variant&&{right:7},"outlined"===e.variant&&{right:7}),w=(0,v.Ay)("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.icon,r.variant&&t[`icon${(0,p.A)(r.variant)}`],r.open&&t.iconOpen]}})(S),C=a.forwardRef((function(e,t){const{className:r,disabled:l,error:s,IconComponent:u,inputRef:c,variant:m="standard"}=e,f=(0,n.A)(e,g),b=(0,o.A)({},e,{disabled:l,variant:m,error:s}),v=(e=>{const{classes:t,variant:r,disabled:o,multiple:n,open:a,error:i}=e,l={select:["select",r,o&&"disabled",n&&"multiple",i&&"error"],icon:["icon",`icon${(0,p.A)(r)}`,a&&"iconOpen",o&&"disabled"]};return(0,d.A)(l,h,t)})(b);return(0,A.jsxs)(a.Fragment,{children:[(0,A.jsx)(y,(0,o.A)({ownerState:b,className:(0,i.A)(v.select,r),disabled:l,ref:c||t},f)),e.multiple?null:(0,A.jsx)(w,{as:u,ownerState:b,className:v.icon})]})}));var R=r(2891),k=r(6852),I=r(1159);function O(e){return(0,f.A)("MuiSelect",e)}const W=(0,m.A)("MuiSelect",["select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);var $;const M=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],F=(0,v.Ay)("div",{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[{[`&.${W.select}`]:t.select},{[`&.${W.select}`]:t[r.variant]},{[`&.${W.error}`]:t.error},{[`&.${W.multiple}`]:t.multiple}]}})(x,{[`&.${W.select}`]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),N=(0,v.Ay)("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:r}=e;return[t.icon,r.variant&&t[`icon${(0,p.A)(r.variant)}`],r.open&&t.iconOpen]}})(S),P=(0,v.Ay)("input",{shouldForwardProp:e=>(0,v._n)(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput",overridesResolver:(e,t)=>t.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function B(e,t){return"object"==typeof t&&null!==t?e===t:String(e)===String(t)}function L(e){return null==e||"string"==typeof e&&!e.trim()}const j=a.forwardRef((function(e,t){const{"aria-describedby":r,"aria-label":l,autoFocus:m,autoWidth:f,children:h,className:b,defaultOpen:v,defaultValue:g,disabled:x,displayEmpty:y,error:S=!1,IconComponent:w,inputRef:C,labelId:W,MenuProps:j={},multiple:E,name:z,onBlur:q,onChange:T,onClose:U,onFocus:D,onOpen:V,open:X,readOnly:H,renderValue:K,SelectDisplayProps:_={},tabIndex:G,value:J,variant:Q="standard"}=e,Y=(0,n.A)(e,M),[Z,ee]=(0,I.A)({controlled:J,default:g,name:"Select"}),[te,re]=(0,I.A)({controlled:X,default:v,name:"Select"}),oe=a.useRef(null),ne=a.useRef(null),[ae,ie]=a.useState(null),{current:le}=a.useRef(null!=X),[se,de]=a.useState(),ue=(0,k.A)(t,C),pe=a.useCallback((e=>{ne.current=e,e&&ie(e)}),[]),ce=null==ae?void 0:ae.parentNode;a.useImperativeHandle(ue,(()=>({focus:()=>{ne.current.focus()},node:oe.current,value:Z})),[Z]),a.useEffect((()=>{v&&te&&ae&&!le&&(de(f?null:ce.clientWidth),ne.current.focus())}),[ae,f]),a.useEffect((()=>{m&&ne.current.focus()}),[m]),a.useEffect((()=>{if(!W)return;const e=(0,u.A)(ne.current).getElementById(W);if(e){const t=()=>{getSelection().isCollapsed&&ne.current.focus()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}}),[W]);const me=(e,t)=>{e?V&&V(t):U&&U(t),le||(de(f?null:ce.clientWidth),re(e))},fe=a.Children.toArray(h),he=e=>t=>{let r;if(t.currentTarget.hasAttribute("tabindex")){if(E){r=Array.isArray(Z)?Z.slice():[];const t=Z.indexOf(e.props.value);-1===t?r.push(e.props.value):r.splice(t,1)}else r=e.props.value;if(e.props.onClick&&e.props.onClick(t),Z!==r&&(ee(r),T)){const o=t.nativeEvent||t,n=new o.constructor(o.type,o);Object.defineProperty(n,"target",{writable:!0,value:{value:r,name:z}}),T(n,e)}E||me(!1,t)}},be=null!==ae&&te;let ve,Ae;delete Y["aria-invalid"];const ge=[];let xe=!1,ye=!1;((0,R.lq)({value:Z})||y)&&(K?ve=K(Z):xe=!0);const Se=fe.map((e=>{if(!a.isValidElement(e))return null;let t;if(E){if(!Array.isArray(Z))throw new Error((0,s.A)(2));t=Z.some((t=>B(t,e.props.value))),t&&xe&&ge.push(e.props.children)}else t=B(Z,e.props.value),t&&xe&&(Ae=e.props.children);return t&&(ye=!0),a.cloneElement(e,{"aria-selected":t?"true":"false",onClick:he(e),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})}));xe&&(ve=E?0===ge.length?null:ge.reduce(((e,t,r)=>(e.push(t),r{const{classes:t,variant:r,disabled:o,multiple:n,open:a,error:i}=e,l={select:["select",r,o&&"disabled",n&&"multiple",i&&"error"],icon:["icon",`icon${(0,p.A)(r)}`,a&&"iconOpen",o&&"disabled"],nativeInput:["nativeInput"]};return(0,d.A)(l,O,t)})(ke);return(0,A.jsxs)(a.Fragment,{children:[(0,A.jsx)(F,(0,o.A)({ref:pe,tabIndex:we,role:"button","aria-disabled":x?"true":void 0,"aria-expanded":be?"true":"false","aria-haspopup":"listbox","aria-label":l,"aria-labelledby":[W,Re].filter(Boolean).join(" ")||void 0,"aria-describedby":r,onKeyDown:e=>{H||-1!==[" ","ArrowUp","ArrowDown","Enter"].indexOf(e.key)&&(e.preventDefault(),me(!0,e))},onMouseDown:x||H?null:e=>{0===e.button&&(e.preventDefault(),ne.current.focus(),me(!0,e))},onBlur:e=>{!be&&q&&(Object.defineProperty(e,"target",{writable:!0,value:{value:Z,name:z}}),q(e))},onFocus:D},_,{ownerState:ke,className:(0,i.A)(_.className,Ie.select,b),id:Re,children:L(ve)?$||($=(0,A.jsx)("span",{className:"notranslate",children:"​"})):ve})),(0,A.jsx)(P,(0,o.A)({"aria-invalid":S,value:Array.isArray(Z)?Z.join(","):Z,name:z,ref:oe,"aria-hidden":!0,onChange:e=>{const t=fe.find((t=>t.props.value===e.target.value));void 0!==t&&(ee(t.props.value),T&&T(e,t))},tabIndex:-1,disabled:x,className:Ie.nativeInput,autoFocus:m,ownerState:ke},Y)),(0,A.jsx)(N,{as:w,className:Ie.icon,ownerState:ke}),(0,A.jsx)(c.A,(0,o.A)({id:`menu-${z||""}`,anchorEl:ce,open:be,onClose:e=>{me(!1,e)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},j,{MenuListProps:(0,o.A)({"aria-labelledby":W,role:"listbox",disableListWrap:!0},j.MenuListProps),PaperProps:(0,o.A)({},j.PaperProps,{style:(0,o.A)({minWidth:Ce},null!=j.PaperProps?j.PaperProps.style:null)}),children:Se}))]})}));var E=r(8086),z=r(9716),q=r(602),T=r(7623),U=r(1915),D=r(8641),V=r(4409);const X=["autoWidth","children","classes","className","defaultOpen","displayEmpty","IconComponent","id","input","inputProps","label","labelId","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"],H={name:"MuiSelect",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>(0,v.ep)(e)&&"variant"!==e,slot:"Root"},K=(0,v.Ay)(T.A,H)(""),_=(0,v.Ay)(D.A,H)(""),G=(0,v.Ay)(U.A,H)(""),J=a.forwardRef((function(e,t){const r=(0,V.A)({name:"MuiSelect",props:e}),{autoWidth:s=!1,children:d,classes:u={},className:p,defaultOpen:c=!1,displayEmpty:m=!1,IconComponent:f=q.A,id:h,input:b,inputProps:v,label:g,labelId:x,MenuProps:y,multiple:S=!1,native:w=!1,onClose:R,onOpen:I,open:O,renderValue:W,SelectDisplayProps:$,variant:M="outlined"}=r,F=(0,n.A)(r,X),N=w?C:j,P=(0,z.A)(),B=(0,E.A)({props:r,muiFormControl:P,states:["variant","error"]}),L=B.variant||M,T=(0,o.A)({},r,{variant:L,classes:u}),U=(e=>{const{classes:t}=e;return t})(T),D=b||{standard:(0,A.jsx)(K,{ownerState:T}),outlined:(0,A.jsx)(_,{label:g,ownerState:T}),filled:(0,A.jsx)(G,{ownerState:T})}[L],H=(0,k.A)(t,D.ref);return(0,A.jsx)(a.Fragment,{children:a.cloneElement(D,(0,o.A)({inputComponent:N,inputProps:(0,o.A)({children:d,error:B.error,IconComponent:f,variant:L,type:void 0,multiple:S},w?{id:h}:{autoWidth:s,defaultOpen:c,displayEmpty:m,labelId:x,MenuProps:y,onClose:R,onOpen:I,open:O,renderValue:W,SelectDisplayProps:(0,o.A)({id:h},$)},v,{classes:v?(0,l.A)(U,v.classes):U},b?b.props.inputProps:{})},S&&w&&"outlined"===L?{notched:!0}:{},{ref:H,className:(0,i.A)(D.props.className,p)},!b&&{variant:L},F))})}));J.muiName="Select";const Q=J},602:(e,t,r)=>{r.d(t,{A:()=>a}),r(6540);var o=r(5003),n=r(4848);const a=(0,o.A)((0,n.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown")}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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YXRlcmlhbC9GaWxsZWRJbnB1dC9GaWxsZWRJbnB1dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ZpbGxlZElucHV0L2ZpbGxlZElucHV0Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sL2Zvcm1Db250cm9sQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1Db250cm9sL0Zvcm1Db250cm9sLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvSW5wdXQvSW5wdXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9JbnB1dC9pbnB1dENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Gb3JtTGFiZWwvZm9ybUxhYmVsQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0Zvcm1MYWJlbC9Gb3JtTGFiZWwuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9JbnB1dExhYmVsL2lucHV0TGFiZWxDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvSW5wdXRMYWJlbC9JbnB1dExhYmVsLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvT3V0bGluZWRJbnB1dC9Ob3RjaGVkT3V0bGluZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL091dGxpbmVkSW5wdXQvT3V0bGluZWRJbnB1dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL091dGxpbmVkSW5wdXQvb3V0bGluZWRJbnB1dENsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9OYXRpdmVTZWxlY3QvbmF0aXZlU2VsZWN0Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL05hdGl2ZVNlbGVjdC9OYXRpdmVTZWxlY3RJbnB1dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1NlbGVjdC9zZWxlY3RDbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU2VsZWN0L1NlbGVjdElucHV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU2VsZWN0L1NlbGVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2ludGVybmFsL3N2Zy1pY29ucy9BcnJvd0Ryb3BEb3duLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImRpc2FibGVVbmRlcmxpbmVcIiwgXCJjb21wb25lbnRzXCIsIFwiY29tcG9uZW50c1Byb3BzXCIsIFwiZnVsbFdpZHRoXCIsIFwiaGlkZGVuTGFiZWxcIiwgXCJpbnB1dENvbXBvbmVudFwiLCBcIm11bHRpbGluZVwiLCBcInNsb3RQcm9wc1wiLCBcInNsb3RzXCIsIFwidHlwZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlZlR5cGUsIGRlZXBtZXJnZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSAnLi4vSW5wdXRCYXNlJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgZmlsbGVkSW5wdXRDbGFzc2VzLCB7IGdldEZpbGxlZElucHV0VXRpbGl0eUNsYXNzIH0gZnJvbSAnLi9maWxsZWRJbnB1dENsYXNzZXMnO1xuaW1wb3J0IHsgcm9vdE92ZXJyaWRlc1Jlc29sdmVyIGFzIGlucHV0QmFzZVJvb3RPdmVycmlkZXNSZXNvbHZlciwgaW5wdXRPdmVycmlkZXNSZXNvbHZlciBhcyBpbnB1dEJhc2VJbnB1dE92ZXJyaWRlc1Jlc29sdmVyLCBJbnB1dEJhc2VSb290LCBJbnB1dEJhc2VDb21wb25lbnQgYXMgSW5wdXRCYXNlSW5wdXQgfSBmcm9tICcuLi9JbnB1dEJhc2UvSW5wdXRCYXNlJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlVW5kZXJsaW5lXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCAhZGlzYWJsZVVuZGVybGluZSAmJiAndW5kZXJsaW5lJ10sXG4gICAgaW5wdXQ6IFsnaW5wdXQnXVxuICB9O1xuICBjb25zdCBjb21wb3NlZENsYXNzZXMgPSBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0RmlsbGVkSW5wdXRVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgRmlsbGVkSW5wdXRSb290ID0gc3R5bGVkKElucHV0QmFzZVJvb3QsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcm9vdFNob3VsZEZvcndhcmRQcm9wKHByb3ApIHx8IHByb3AgPT09ICdjbGFzc2VzJyxcbiAgbmFtZTogJ011aUZpbGxlZElucHV0JyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbLi4uaW5wdXRCYXNlUm9vdE92ZXJyaWRlc1Jlc29sdmVyKHByb3BzLCBzdHlsZXMpLCAhb3duZXJTdGF0ZS5kaXNhYmxlVW5kZXJsaW5lICYmIHN0eWxlcy51bmRlcmxpbmVdO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3BhbGV0dGU7XG4gIGNvbnN0IGxpZ2h0ID0gdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnO1xuICBjb25zdCBib3R0b21MaW5lQ29sb3IgPSBsaWdodCA/ICdyZ2JhKDAsIDAsIDAsIDAuNDIpJyA6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyknO1xuICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBsaWdodCA/ICdyZ2JhKDAsIDAsIDAsIDAuMDYpJyA6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDkpJztcbiAgY29uc3QgaG92ZXJCYWNrZ3JvdW5kID0gbGlnaHQgPyAncmdiYSgwLCAwLCAwLCAwLjA5KScgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEzKSc7XG4gIGNvbnN0IGRpc2FibGVkQmFja2dyb3VuZCA9IGxpZ2h0ID8gJ3JnYmEoMCwgMCwgMCwgMC4xMiknIDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMiknO1xuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5GaWxsZWRJbnB1dC5iZyA6IGJhY2tncm91bmRDb2xvcixcbiAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnYmFja2dyb3VuZC1jb2xvcicsIHtcbiAgICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLFxuICAgICAgZWFzaW5nOiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dFxuICAgIH0pLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkZpbGxlZElucHV0LmhvdmVyQmcgOiBob3ZlckJhY2tncm91bmQsXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuRmlsbGVkSW5wdXQuYmcgOiBiYWNrZ3JvdW5kQ29sb3JcbiAgICAgIH1cbiAgICB9LFxuICAgIFtgJi4ke2ZpbGxlZElucHV0Q2xhc3Nlcy5mb2N1c2VkfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuRmlsbGVkSW5wdXQuYmcgOiBiYWNrZ3JvdW5kQ29sb3JcbiAgICB9LFxuICAgIFtgJi4ke2ZpbGxlZElucHV0Q2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkZpbGxlZElucHV0LmRpc2FibGVkQmcgOiBkaXNhYmxlZEJhY2tncm91bmRcbiAgICB9XG4gIH0sICFvd25lclN0YXRlLmRpc2FibGVVbmRlcmxpbmUgJiYge1xuICAgICcmOmFmdGVyJzoge1xuICAgICAgYm9yZGVyQm90dG9tOiBgMnB4IHNvbGlkICR7KF9wYWxldHRlID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvciB8fCAncHJpbWFyeSddKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUubWFpbn1gLFxuICAgICAgbGVmdDogMCxcbiAgICAgIGJvdHRvbTogMCxcbiAgICAgIC8vIERvaW5nIHRoZSBvdGhlciB3YXkgYXJvdW5kIGNyYXNoIG9uIElFMTEgXCInJ1wiIGh0dHBzOi8vZ2l0aHViLmNvbS9jc3NpbmpzL2pzcy9pc3N1ZXMvMjQyXG4gICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHJpZ2h0OiAwLFxuICAgICAgdHJhbnNmb3JtOiAnc2NhbGVYKDApJyxcbiAgICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgndHJhbnNmb3JtJywge1xuICAgICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlcixcbiAgICAgICAgZWFzaW5nOiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dFxuICAgICAgfSksXG4gICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScgLy8gVHJhbnNwYXJlbnQgdG8gdGhlIGhvdmVyIHN0eWxlLlxuICAgIH0sXG5cbiAgICBbYCYuJHtmaWxsZWRJbnB1dENsYXNzZXMuZm9jdXNlZH06YWZ0ZXJgXToge1xuICAgICAgLy8gdHJhbnNsYXRlWCgwKSBpcyBhIHdvcmthcm91bmQgZm9yIFNhZmFyaSB0cmFuc2Zvcm0gc2NhbGUgYnVnXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvMzE3NjZcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgxKSB0cmFuc2xhdGVYKDApJ1xuICAgIH0sXG4gICAgW2AmLiR7ZmlsbGVkSW5wdXRDbGFzc2VzLmVycm9yfWBdOiB7XG4gICAgICAnJjpiZWZvcmUsICY6YWZ0ZXInOiB7XG4gICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5lcnJvci5tYWluXG4gICAgICB9XG4gICAgfSxcbiAgICAnJjpiZWZvcmUnOiB7XG4gICAgICBib3JkZXJCb3R0b206IGAxcHggc29saWQgJHt0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuY29tbW9uLm9uQmFja2dyb3VuZENoYW5uZWx9IC8gJHt0aGVtZS52YXJzLm9wYWNpdHkuaW5wdXRVbmRlcmxpbmV9KWAgOiBib3R0b21MaW5lQ29sb3J9YCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgICAvLyBEb2luZyB0aGUgb3RoZXIgd2F5IGFyb3VuZCBjcmFzaCBvbiBJRTExIFwiJydcIiBodHRwczovL2dpdGh1Yi5jb20vY3NzaW5qcy9qc3MvaXNzdWVzLzI0MlxuICAgICAgY29udGVudDogJ1wiXFxcXDAwYTBcIicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHJpZ2h0OiAwLFxuICAgICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdib3JkZXItYm90dG9tLWNvbG9yJywge1xuICAgICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlclxuICAgICAgfSksXG4gICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScgLy8gVHJhbnNwYXJlbnQgdG8gdGhlIGhvdmVyIHN0eWxlLlxuICAgIH0sXG5cbiAgICBbYCY6aG92ZXI6bm90KC4ke2ZpbGxlZElucHV0Q2xhc3Nlcy5kaXNhYmxlZH0sIC4ke2ZpbGxlZElucHV0Q2xhc3Nlcy5lcnJvcn0pOmJlZm9yZWBdOiB7XG4gICAgICBib3JkZXJCb3R0b206IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS50ZXh0LnByaW1hcnl9YFxuICAgIH0sXG4gICAgW2AmLiR7ZmlsbGVkSW5wdXRDbGFzc2VzLmRpc2FibGVkfTpiZWZvcmVgXToge1xuICAgICAgYm9yZGVyQm90dG9tU3R5bGU6ICdkb3R0ZWQnXG4gICAgfVxuICB9LCBvd25lclN0YXRlLnN0YXJ0QWRvcm5tZW50ICYmIHtcbiAgICBwYWRkaW5nTGVmdDogMTJcbiAgfSwgb3duZXJTdGF0ZS5lbmRBZG9ybm1lbnQgJiYge1xuICAgIHBhZGRpbmdSaWdodDogMTJcbiAgfSwgb3duZXJTdGF0ZS5tdWx0aWxpbmUgJiYgX2V4dGVuZHMoe1xuICAgIHBhZGRpbmc6ICcyNXB4IDEycHggOHB4J1xuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICAgIHBhZGRpbmdUb3A6IDIxLFxuICAgIHBhZGRpbmdCb3R0b206IDRcbiAgfSwgb3duZXJTdGF0ZS5oaWRkZW5MYWJlbCAmJiB7XG4gICAgcGFkZGluZ1RvcDogMTYsXG4gICAgcGFkZGluZ0JvdHRvbTogMTdcbiAgfSkpO1xufSk7XG5jb25zdCBGaWxsZWRJbnB1dElucHV0ID0gc3R5bGVkKElucHV0QmFzZUlucHV0LCB7XG4gIG5hbWU6ICdNdWlGaWxsZWRJbnB1dCcsXG4gIHNsb3Q6ICdJbnB1dCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiBpbnB1dEJhc2VJbnB1dE92ZXJyaWRlc1Jlc29sdmVyXG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBwYWRkaW5nVG9wOiAyNSxcbiAgcGFkZGluZ1JpZ2h0OiAxMixcbiAgcGFkZGluZ0JvdHRvbTogOCxcbiAgcGFkZGluZ0xlZnQ6IDEyXG59LCAhdGhlbWUudmFycyAmJiB7XG4gICcmOi13ZWJraXQtYXV0b2ZpbGwnOiB7XG4gICAgV2Via2l0Qm94U2hhZG93OiB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyBudWxsIDogJzAgMCAwIDEwMHB4ICMyNjY3OTggaW5zZXQnLFxuICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IG51bGwgOiAnI2ZmZicsXG4gICAgY2FyZXRDb2xvcjogdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gbnVsbCA6ICcjZmZmJyxcbiAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAnaW5oZXJpdCcsXG4gICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6ICdpbmhlcml0J1xuICB9XG59LCB0aGVtZS52YXJzICYmIHtcbiAgJyY6LXdlYmtpdC1hdXRvZmlsbCc6IHtcbiAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAnaW5oZXJpdCcsXG4gICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6ICdpbmhlcml0J1xuICB9LFxuICBbdGhlbWUuZ2V0Q29sb3JTY2hlbWVTZWxlY3RvcignZGFyaycpXToge1xuICAgICcmOi13ZWJraXQtYXV0b2ZpbGwnOiB7XG4gICAgICBXZWJraXRCb3hTaGFkb3c6ICcwIDAgMCAxMDBweCAjMjY2Nzk4IGluc2V0JyxcbiAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6ICcjZmZmJyxcbiAgICAgIGNhcmV0Q29sb3I6ICcjZmZmJ1xuICAgIH1cbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgcGFkZGluZ1RvcDogMjEsXG4gIHBhZGRpbmdCb3R0b206IDRcbn0sIG93bmVyU3RhdGUuaGlkZGVuTGFiZWwgJiYge1xuICBwYWRkaW5nVG9wOiAxNixcbiAgcGFkZGluZ0JvdHRvbTogMTdcbn0sIG93bmVyU3RhdGUubXVsdGlsaW5lICYmIHtcbiAgcGFkZGluZ1RvcDogMCxcbiAgcGFkZGluZ0JvdHRvbTogMCxcbiAgcGFkZGluZ0xlZnQ6IDAsXG4gIHBhZGRpbmdSaWdodDogMFxufSwgb3duZXJTdGF0ZS5zdGFydEFkb3JubWVudCAmJiB7XG4gIHBhZGRpbmdMZWZ0OiAwXG59LCBvd25lclN0YXRlLmVuZEFkb3JubWVudCAmJiB7XG4gIHBhZGRpbmdSaWdodDogMFxufSwgb3duZXJTdGF0ZS5oaWRkZW5MYWJlbCAmJiBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICBwYWRkaW5nVG9wOiA4LFxuICBwYWRkaW5nQm90dG9tOiA5XG59KSk7XG5jb25zdCBGaWxsZWRJbnB1dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZpbGxlZElucHV0KGluUHJvcHMsIHJlZikge1xuICB2YXIgX3JlZiwgX3Nsb3RzJHJvb3QsIF9yZWYyLCBfc2xvdHMkaW5wdXQ7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUZpbGxlZElucHV0J1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY29tcG9uZW50cyA9IHt9LFxuICAgICAgY29tcG9uZW50c1Byb3BzOiBjb21wb25lbnRzUHJvcHNQcm9wLFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICAvLyBkZWNsYXJlIGhlcmUgdG8gcHJldmVudCBzcHJlYWRpbmcgdG8gRE9NXG4gICAgICBpbnB1dENvbXBvbmVudCA9ICdpbnB1dCcsXG4gICAgICBtdWx0aWxpbmUgPSBmYWxzZSxcbiAgICAgIHNsb3RQcm9wcyxcbiAgICAgIHNsb3RzID0ge30sXG4gICAgICB0eXBlID0gJ3RleHQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBmdWxsV2lkdGgsXG4gICAgaW5wdXRDb21wb25lbnQsXG4gICAgbXVsdGlsaW5lLFxuICAgIHR5cGVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhwcm9wcyk7XG4gIGNvbnN0IGZpbGxlZElucHV0Q29tcG9uZW50c1Byb3BzID0ge1xuICAgIHJvb3Q6IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9LFxuICAgIGlucHV0OiB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfVxuICB9O1xuICBjb25zdCBjb21wb25lbnRzUHJvcHMgPSAoc2xvdFByb3BzICE9IG51bGwgPyBzbG90UHJvcHMgOiBjb21wb25lbnRzUHJvcHNQcm9wKSA/IGRlZXBtZXJnZShzbG90UHJvcHMgIT0gbnVsbCA/IHNsb3RQcm9wcyA6IGNvbXBvbmVudHNQcm9wc1Byb3AsIGZpbGxlZElucHV0Q29tcG9uZW50c1Byb3BzKSA6IGZpbGxlZElucHV0Q29tcG9uZW50c1Byb3BzO1xuICBjb25zdCBSb290U2xvdCA9IChfcmVmID0gKF9zbG90cyRyb290ID0gc2xvdHMucm9vdCkgIT0gbnVsbCA/IF9zbG90cyRyb290IDogY29tcG9uZW50cy5Sb290KSAhPSBudWxsID8gX3JlZiA6IEZpbGxlZElucHV0Um9vdDtcbiAgY29uc3QgSW5wdXRTbG90ID0gKF9yZWYyID0gKF9zbG90cyRpbnB1dCA9IHNsb3RzLmlucHV0KSAhPSBudWxsID8gX3Nsb3RzJGlucHV0IDogY29tcG9uZW50cy5JbnB1dCkgIT0gbnVsbCA/IF9yZWYyIDogRmlsbGVkSW5wdXRJbnB1dDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KElucHV0QmFzZSwgX2V4dGVuZHMoe1xuICAgIHNsb3RzOiB7XG4gICAgICByb290OiBSb290U2xvdCxcbiAgICAgIGlucHV0OiBJbnB1dFNsb3RcbiAgICB9LFxuICAgIGNvbXBvbmVudHNQcm9wczogY29tcG9uZW50c1Byb3BzLFxuICAgIGZ1bGxXaWR0aDogZnVsbFdpZHRoLFxuICAgIGlucHV0Q29tcG9uZW50OiBpbnB1dENvbXBvbmVudCxcbiAgICBtdWx0aWxpbmU6IG11bHRpbGluZSxcbiAgICByZWY6IHJlZixcbiAgICB0eXBlOiB0eXBlXG4gIH0sIG90aGVyLCB7XG4gICAgY2xhc3NlczogY2xhc3Nlc1xuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEZpbGxlZElucHV0LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBoZWxwcyB1c2VycyB0byBmaWxsIGZvcm1zIGZhc3RlciwgZXNwZWNpYWxseSBvbiBtb2JpbGUgZGV2aWNlcy5cbiAgICogVGhlIG5hbWUgY2FuIGJlIGNvbmZ1c2luZywgYXMgaXQncyBtb3JlIGxpa2UgYW4gYXV0b2ZpbGwuXG4gICAqIFlvdSBjYW4gbGVhcm4gbW9yZSBhYm91dCBpdCBbZm9sbG93aW5nIHRoZSBzcGVjaWZpY2F0aW9uXShodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9mb3JtLWNvbnRyb2wtaW5mcmFzdHJ1Y3R1cmUuaHRtbCNhdXRvZmlsbCkuXG4gICAqL1xuICBhdXRvQ29tcGxldGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIGVsZW1lbnQgaXMgZm9jdXNlZCBkdXJpbmcgdGhlIGZpcnN0IG1vdW50LlxuICAgKi9cbiAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogVGhlIHByb3AgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIChgJ3ByaW1hcnknYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydwcmltYXJ5JywgJ3NlY29uZGFyeSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYHNsb3RzYCBwcm9wLlxuICAgKiBJdCdzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUgYHNsb3RzYCBwcm9wIGluc3RlYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIElucHV0OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgUm9vdDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogVGhlIGV4dHJhIHByb3BzIGZvciB0aGUgc2xvdCBjb21wb25lbnRzLlxuICAgKiBZb3UgY2FuIG92ZXJyaWRlIHRoZSBleGlzdGluZyBwcm9wcyBvciBhZGQgbmV3IG9uZXMuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBzbG90UHJvcHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdFByb3BzYCBwcm9wIGluc3RlYWQsIGFzIGBjb21wb25lbnRzUHJvcHNgIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY29tcG9uZW50c1Byb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlucHV0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHJvb3Q6IFByb3BUeXBlcy5vYmplY3RcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZS4gVXNlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgY29udHJvbGxlZC5cbiAgICovXG4gIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogVGhlIHByb3AgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIChgZmFsc2VgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGlucHV0IHdpbGwgbm90IGhhdmUgYW4gdW5kZXJsaW5lLlxuICAgKi9cbiAgZGlzYWJsZVVuZGVybGluZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBFbmQgYElucHV0QWRvcm5tZW50YCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBlbmRBZG9ybm1lbnQ6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCB3aWxsIGluZGljYXRlIGFuIGVycm9yLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGBmYWxzZWApIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgY29tcG9uZW50LlxuICAgKi9cbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCB3aWxsIHRha2UgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsYWJlbCBpcyBoaWRkZW4uXG4gICAqIFRoaXMgaXMgdXNlZCB0byBpbmNyZWFzZSBkZW5zaXR5IGZvciBhIGBGaWxsZWRJbnB1dGAuXG4gICAqIEJlIHN1cmUgdG8gYWRkIGBhcmlhLWxhYmVsYCB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGlkZGVuTGFiZWw6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ2lucHV0J1xuICAgKi9cbiAgaW5wdXRDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFtBdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjQXR0cmlidXRlcykgYXBwbGllZCB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFBhc3MgYSByZWYgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIGlucHV0UmVmOiByZWZUeXBlLFxuICAvKipcbiAgICogSWYgYGRlbnNlYCwgd2lsbCBhZGp1c3QgdmVydGljYWwgc3BhY2luZy4gVGhpcyBpcyBub3JtYWxseSBvYnRhaW5lZCB2aWEgY29udGV4dCBmcm9tXG4gICAqIEZvcm1Db250cm9sLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGAnbm9uZSdgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIG1hcmdpbjogUHJvcFR5cGVzLm9uZU9mKFsnZGVuc2UnLCAnbm9uZSddKSxcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSB3aGVuIG11bHRpbGluZSBvcHRpb24gaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBtYXhSb3dzOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aWxpbmUgb3B0aW9uIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgbWluUm93czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBhIFtUZXh0YXJlYUF1dG9zaXplXSgvbWF0ZXJpYWwtdWkvcmVhY3QtdGV4dGFyZWEtYXV0b3NpemUvKSBlbGVtZW50IGlzIHJlbmRlcmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbXVsdGlsaW5lOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE5hbWUgYXR0cmlidXRlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgSFRNTElucHV0RWxlbWVudD59IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKiBZb3UgY2FuIHB1bGwgb3V0IHRoZSBuZXcgdmFsdWUgYnkgYWNjZXNzaW5nIGBldmVudC50YXJnZXQudmFsdWVgIChzdHJpbmcpLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHNob3J0IGhpbnQgZGlzcGxheWVkIGluIHRoZSBgaW5wdXRgIGJlZm9yZSB0aGUgdXNlciBlbnRlcnMgYSB2YWx1ZS5cbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSXQgcHJldmVudHMgdGhlIHVzZXIgZnJvbSBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkXG4gICAqIChub3QgZnJvbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWVsZCkuXG4gICAqL1xuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIGVsZW1lbnQgaXMgcmVxdWlyZWQuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSAoYGZhbHNlYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cyB0byBkaXNwbGF5IHdoZW4gbXVsdGlsaW5lIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIHJvd3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBleHRyYSBwcm9wcyBmb3IgdGhlIHNsb3QgY29tcG9uZW50cy5cbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcHJvcHMgb3IgYWRkIG5ldyBvbmVzLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgY29tcG9uZW50c1Byb3BzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpbnB1dDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByb290OiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYGNvbXBvbmVudHNgIHByb3AsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaW5wdXQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICByb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBTdGFydCBgSW5wdXRBZG9ybm1lbnRgIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC4gSXQgc2hvdWxkIGJlIFthIHZhbGlkIEhUTUw1IGlucHV0IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNGb3JtXyUzQ2lucHV0JTNFX3R5cGVzKS5cbiAgICogQGRlZmF1bHQgJ3RleHQnXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQsIHJlcXVpcmVkIGZvciBhIGNvbnRyb2xsZWQgY29tcG9uZW50LlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnlcbn0gOiB2b2lkIDA7XG5GaWxsZWRJbnB1dC5tdWlOYW1lID0gJ0lucHV0JztcbmV4cG9ydCBkZWZhdWx0IEZpbGxlZElucHV0OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuaW1wb3J0IHsgaW5wdXRCYXNlQ2xhc3NlcyB9IGZyb20gJy4uL0lucHV0QmFzZSc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsbGVkSW5wdXRVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUZpbGxlZElucHV0Jywgc2xvdCk7XG59XG5jb25zdCBmaWxsZWRJbnB1dENsYXNzZXMgPSBfZXh0ZW5kcyh7fSwgaW5wdXRCYXNlQ2xhc3NlcywgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpRmlsbGVkSW5wdXQnLCBbJ3Jvb3QnLCAndW5kZXJsaW5lJywgJ2lucHV0J10pKTtcbmV4cG9ydCBkZWZhdWx0IGZpbGxlZElucHV0Q2xhc3NlczsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUNvbnRyb2xVdGlsaXR5Q2xhc3NlcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpRm9ybUNvbnRyb2wnLCBzbG90KTtcbn1cbmNvbnN0IGZvcm1Db250cm9sQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUZvcm1Db250cm9sJywgWydyb290JywgJ21hcmdpbk5vbmUnLCAnbWFyZ2luTm9ybWFsJywgJ21hcmdpbkRlbnNlJywgJ2Z1bGxXaWR0aCcsICdkaXNhYmxlZCddKTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1Db250cm9sQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiZGlzYWJsZWRcIiwgXCJlcnJvclwiLCBcImZvY3VzZWRcIiwgXCJmdWxsV2lkdGhcIiwgXCJoaWRkZW5MYWJlbFwiLCBcIm1hcmdpblwiLCBcInJlcXVpcmVkXCIsIFwic2l6ZVwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgaXNGaWxsZWQsIGlzQWRvcm5lZFN0YXJ0IH0gZnJvbSAnLi4vSW5wdXRCYXNlL3V0aWxzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IGlzTXVpRWxlbWVudCBmcm9tICcuLi91dGlscy9pc011aUVsZW1lbnQnO1xuaW1wb3J0IEZvcm1Db250cm9sQ29udGV4dCBmcm9tICcuL0Zvcm1Db250cm9sQ29udGV4dCc7XG5pbXBvcnQgeyBnZXRGb3JtQ29udHJvbFV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnLi9mb3JtQ29udHJvbENsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIG1hcmdpbixcbiAgICBmdWxsV2lkdGhcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIG1hcmdpbiAhPT0gJ25vbmUnICYmIGBtYXJnaW4ke2NhcGl0YWxpemUobWFyZ2luKX1gLCBmdWxsV2lkdGggJiYgJ2Z1bGxXaWR0aCddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0Rm9ybUNvbnRyb2xVdGlsaXR5Q2xhc3NlcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgRm9ybUNvbnRyb2xSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlGb3JtQ29udHJvbCcsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6ICh7XG4gICAgb3duZXJTdGF0ZVxuICB9LCBzdHlsZXMpID0+IHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0eWxlcy5yb290LCBzdHlsZXNbYG1hcmdpbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLm1hcmdpbil9YF0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGgpO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgLy8gUmVzZXQgZmllbGRzZXQgZGVmYXVsdCBzdHlsZS5cbiAgbWluV2lkdGg6IDAsXG4gIHBhZGRpbmc6IDAsXG4gIG1hcmdpbjogMCxcbiAgYm9yZGVyOiAwLFxuICB2ZXJ0aWNhbEFsaWduOiAndG9wJ1xufSwgb3duZXJTdGF0ZS5tYXJnaW4gPT09ICdub3JtYWwnICYmIHtcbiAgbWFyZ2luVG9wOiAxNixcbiAgbWFyZ2luQm90dG9tOiA4XG59LCBvd25lclN0YXRlLm1hcmdpbiA9PT0gJ2RlbnNlJyAmJiB7XG4gIG1hcmdpblRvcDogOCxcbiAgbWFyZ2luQm90dG9tOiA0XG59LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gIHdpZHRoOiAnMTAwJSdcbn0pKTtcblxuLyoqXG4gKiBQcm92aWRlcyBjb250ZXh0IHN1Y2ggYXMgZmlsbGVkL2ZvY3VzZWQvZXJyb3IvcmVxdWlyZWQgZm9yIGZvcm0gaW5wdXRzLlxuICogUmVseWluZyBvbiB0aGUgY29udGV4dCBwcm92aWRlcyBoaWdoIGZsZXhpYmlsaXR5IGFuZCBlbnN1cmVzIHRoYXQgdGhlIHN0YXRlIGFsd2F5cyBzdGF5c1xuICogY29uc2lzdGVudCBhY3Jvc3MgdGhlIGNoaWxkcmVuIG9mIHRoZSBgRm9ybUNvbnRyb2xgLlxuICogVGhpcyBjb250ZXh0IGlzIHVzZWQgYnkgdGhlIGZvbGxvd2luZyBjb21wb25lbnRzOlxuICpcbiAqICAtIEZvcm1MYWJlbFxuICogIC0gRm9ybUhlbHBlclRleHRcbiAqICAtIElucHV0XG4gKiAgLSBJbnB1dExhYmVsXG4gKlxuICogWW91IGNhbiBmaW5kIG9uZSBjb21wb3NpdGlvbiBleGFtcGxlIGJlbG93IGFuZCBtb3JlIGdvaW5nIHRvIFt0aGUgZGVtb3NdKC9tYXRlcmlhbC11aS9yZWFjdC10ZXh0LWZpZWxkLyNjb21wb25lbnRzKS5cbiAqXG4gKiBgYGBqc3hcbiAqIDxGb3JtQ29udHJvbD5cbiAqICAgPElucHV0TGFiZWwgaHRtbEZvcj1cIm15LWlucHV0XCI+RW1haWwgYWRkcmVzczwvSW5wdXRMYWJlbD5cbiAqICAgPElucHV0IGlkPVwibXktaW5wdXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwibXktaGVscGVyLXRleHRcIiAvPlxuICogICA8Rm9ybUhlbHBlclRleHQgaWQ9XCJteS1oZWxwZXItdGV4dFwiPldlJ2xsIG5ldmVyIHNoYXJlIHlvdXIgZW1haWwuPC9Gb3JtSGVscGVyVGV4dD5cbiAqIDwvRm9ybUNvbnRyb2w+XG4gKiBgYGBcbiAqXG4gKiDimqDvuI8gT25seSBvbmUgYElucHV0QmFzZWAgY2FuIGJlIHVzZWQgd2l0aGluIGEgRm9ybUNvbnRyb2wgYmVjYXVzZSBpdCBjcmVhdGVzIHZpc3VhbCBpbmNvbnNpc3RlbmNpZXMuXG4gKiBGb3IgaW5zdGFuY2UsIG9ubHkgb25lIGlucHV0IGNhbiBiZSBmb2N1c2VkIGF0IHRoZSBzYW1lIHRpbWUsIHRoZSBzdGF0ZSBzaG91bGRuJ3QgYmUgc2hhcmVkLlxuICovXG5jb25zdCBGb3JtQ29udHJvbCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEZvcm1Db250cm9sKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlGb3JtQ29udHJvbCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBjb21wb25lbnQgPSAnZGl2JyxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBlcnJvciA9IGZhbHNlLFxuICAgICAgZm9jdXNlZDogdmlzdWFsbHlGb2N1c2VkLFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICBoaWRkZW5MYWJlbCA9IGZhbHNlLFxuICAgICAgbWFyZ2luID0gJ25vbmUnLFxuICAgICAgcmVxdWlyZWQgPSBmYWxzZSxcbiAgICAgIHNpemUgPSAnbWVkaXVtJyxcbiAgICAgIHZhcmlhbnQgPSAnb3V0bGluZWQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZGlzYWJsZWQsXG4gICAgZXJyb3IsXG4gICAgZnVsbFdpZHRoLFxuICAgIGhpZGRlbkxhYmVsLFxuICAgIG1hcmdpbixcbiAgICByZXF1aXJlZCxcbiAgICBzaXplLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgW2Fkb3JuZWRTdGFydCwgc2V0QWRvcm5lZFN0YXJ0XSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICAvLyBXZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hpbGRyZW4gYW5kIGZpbmQgdGhlIElucHV0IGluIG9yZGVyXG4gICAgLy8gdG8gZnVsbHkgc3VwcG9ydCBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgbGV0IGluaXRpYWxBZG9ybmVkU3RhcnQgPSBmYWxzZTtcbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgICAgaWYgKCFpc011aUVsZW1lbnQoY2hpbGQsIFsnSW5wdXQnLCAnU2VsZWN0J10pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaXNNdWlFbGVtZW50KGNoaWxkLCBbJ1NlbGVjdCddKSA/IGNoaWxkLnByb3BzLmlucHV0IDogY2hpbGQ7XG4gICAgICAgIGlmIChpbnB1dCAmJiBpc0Fkb3JuZWRTdGFydChpbnB1dC5wcm9wcykpIHtcbiAgICAgICAgICBpbml0aWFsQWRvcm5lZFN0YXJ0ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsQWRvcm5lZFN0YXJ0O1xuICB9KTtcbiAgY29uc3QgW2ZpbGxlZCwgc2V0RmlsbGVkXSA9IFJlYWN0LnVzZVN0YXRlKCgpID0+IHtcbiAgICAvLyBXZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hpbGRyZW4gYW5kIGZpbmQgdGhlIElucHV0IGluIG9yZGVyXG4gICAgLy8gdG8gZnVsbHkgc3VwcG9ydCBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgbGV0IGluaXRpYWxGaWxsZWQgPSBmYWxzZTtcbiAgICBpZiAoY2hpbGRyZW4pIHtcbiAgICAgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGNoaWxkID0+IHtcbiAgICAgICAgaWYgKCFpc011aUVsZW1lbnQoY2hpbGQsIFsnSW5wdXQnLCAnU2VsZWN0J10pKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0ZpbGxlZChjaGlsZC5wcm9wcywgdHJ1ZSkgfHwgaXNGaWxsZWQoY2hpbGQucHJvcHMuaW5wdXRQcm9wcywgdHJ1ZSkpIHtcbiAgICAgICAgICBpbml0aWFsRmlsbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsRmlsbGVkO1xuICB9KTtcbiAgY29uc3QgW2ZvY3VzZWRTdGF0ZSwgc2V0Rm9jdXNlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGlmIChkaXNhYmxlZCAmJiBmb2N1c2VkU3RhdGUpIHtcbiAgICBzZXRGb2N1c2VkKGZhbHNlKTtcbiAgfVxuICBjb25zdCBmb2N1c2VkID0gdmlzdWFsbHlGb2N1c2VkICE9PSB1bmRlZmluZWQgJiYgIWRpc2FibGVkID8gdmlzdWFsbHlGb2N1c2VkIDogZm9jdXNlZFN0YXRlO1xuICBsZXQgcmVnaXN0ZXJFZmZlY3Q7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgY29uc3QgcmVnaXN0ZXJlZElucHV0ID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICByZWdpc3RlckVmZmVjdCA9ICgpID0+IHtcbiAgICAgIGlmIChyZWdpc3RlcmVkSW5wdXQuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBUaGVyZSBhcmUgbXVsdGlwbGUgYElucHV0QmFzZWAgY29tcG9uZW50cyBpbnNpZGUgYSBGb3JtQ29udHJvbC4nLCAnVGhpcyBjcmVhdGVzIHZpc3VhbCBpbmNvbnNpc3RlbmNpZXMsIG9ubHkgdXNlIG9uZSBgSW5wdXRCYXNlYC4nXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgICByZWdpc3RlcmVkSW5wdXQuY3VycmVudCA9IHRydWU7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICByZWdpc3RlcmVkSW5wdXQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfTtcbiAgICB9O1xuICB9XG4gIGNvbnN0IGNoaWxkQ29udGV4dCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhZG9ybmVkU3RhcnQsXG4gICAgICBzZXRBZG9ybmVkU3RhcnQsXG4gICAgICBjb2xvcixcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZXJyb3IsXG4gICAgICBmaWxsZWQsXG4gICAgICBmb2N1c2VkLFxuICAgICAgZnVsbFdpZHRoLFxuICAgICAgaGlkZGVuTGFiZWwsXG4gICAgICBzaXplLFxuICAgICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICAgIHNldEZvY3VzZWQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIG9uRW1wdHk6ICgpID0+IHtcbiAgICAgICAgc2V0RmlsbGVkKGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBvbkZpbGxlZDogKCkgPT4ge1xuICAgICAgICBzZXRGaWxsZWQodHJ1ZSk7XG4gICAgICB9LFxuICAgICAgb25Gb2N1czogKCkgPT4ge1xuICAgICAgICBzZXRGb2N1c2VkKHRydWUpO1xuICAgICAgfSxcbiAgICAgIHJlZ2lzdGVyRWZmZWN0LFxuICAgICAgcmVxdWlyZWQsXG4gICAgICB2YXJpYW50XG4gICAgfTtcbiAgfSwgW2Fkb3JuZWRTdGFydCwgY29sb3IsIGRpc2FibGVkLCBlcnJvciwgZmlsbGVkLCBmb2N1c2VkLCBmdWxsV2lkdGgsIGhpZGRlbkxhYmVsLCByZWdpc3RlckVmZmVjdCwgcmVxdWlyZWQsIHNpemUsIHZhcmlhbnRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEZvcm1Db250cm9sQ29udGV4dC5Qcm92aWRlciwge1xuICAgIHZhbHVlOiBjaGlsZENvbnRleHQsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEZvcm1Db250cm9sUm9vdCwgX2V4dGVuZHMoe1xuICAgICAgYXM6IGNvbXBvbmVudCxcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBvdGhlciwge1xuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgfSkpXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBGb3JtQ29udHJvbC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxhYmVsLCBpbnB1dCBhbmQgaGVscGVyIHRleHQgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBhIGRpc2FibGVkIHN0YXRlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbGFiZWwgaXMgZGlzcGxheWVkIGluIGFuIGVycm9yIHN0YXRlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc3BsYXllZCBpbiBmb2N1c2VkIHN0YXRlLlxuICAgKi9cbiAgZm9jdXNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgd2lsbCB0YWtlIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmdWxsV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgbGFiZWwgaXMgaGlkZGVuLlxuICAgKiBUaGlzIGlzIHVzZWQgdG8gaW5jcmVhc2UgZGVuc2l0eSBmb3IgYSBgRmlsbGVkSW5wdXRgLlxuICAgKiBCZSBzdXJlIHRvIGFkZCBgYXJpYS1sYWJlbGAgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhpZGRlbkxhYmVsOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGBkZW5zZWAgb3IgYG5vcm1hbGAsIHdpbGwgYWRqdXN0IHZlcnRpY2FsIHNwYWNpbmcgb2YgdGhpcyBhbmQgY29udGFpbmVkIGNvbXBvbmVudHMuXG4gICAqIEBkZWZhdWx0ICdub25lJ1xuICAgKi9cbiAgbWFyZ2luOiBQcm9wVHlwZXMub25lT2YoWydkZW5zZScsICdub25lJywgJ25vcm1hbCddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxhYmVsIHdpbGwgaW5kaWNhdGUgdGhhdCB0aGUgYGlucHV0YCBpcyByZXF1aXJlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ21lZGl1bScsICdzbWFsbCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAnb3V0bGluZWQnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydmaWxsZWQnLCAnb3V0bGluZWQnLCAnc3RhbmRhcmQnXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBGb3JtQ29udHJvbDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJkaXNhYmxlVW5kZXJsaW5lXCIsIFwiY29tcG9uZW50c1wiLCBcImNvbXBvbmVudHNQcm9wc1wiLCBcImZ1bGxXaWR0aFwiLCBcImlucHV0Q29tcG9uZW50XCIsIFwibXVsdGlsaW5lXCIsIFwic2xvdFByb3BzXCIsIFwic2xvdHNcIiwgXCJ0eXBlXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IHJlZlR5cGUsIGRlZXBtZXJnZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tICcuLi9JbnB1dEJhc2UnO1xuaW1wb3J0IHN0eWxlZCwgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBpbnB1dENsYXNzZXMsIHsgZ2V0SW5wdXRVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2lucHV0Q2xhc3Nlcyc7XG5pbXBvcnQgeyByb290T3ZlcnJpZGVzUmVzb2x2ZXIgYXMgaW5wdXRCYXNlUm9vdE92ZXJyaWRlc1Jlc29sdmVyLCBpbnB1dE92ZXJyaWRlc1Jlc29sdmVyIGFzIGlucHV0QmFzZUlucHV0T3ZlcnJpZGVzUmVzb2x2ZXIsIElucHV0QmFzZVJvb3QsIElucHV0QmFzZUNvbXBvbmVudCBhcyBJbnB1dEJhc2VJbnB1dCB9IGZyb20gJy4uL0lucHV0QmFzZS9JbnB1dEJhc2UnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIGRpc2FibGVVbmRlcmxpbmVcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsICFkaXNhYmxlVW5kZXJsaW5lICYmICd1bmRlcmxpbmUnXSxcbiAgICBpbnB1dDogWydpbnB1dCddXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRJbnB1dFV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBJbnB1dFJvb3QgPSBzdHlsZWQoSW5wdXRCYXNlUm9vdCwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpSW5wdXQnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFsuLi5pbnB1dEJhc2VSb290T3ZlcnJpZGVzUmVzb2x2ZXIocHJvcHMsIHN0eWxlcyksICFvd25lclN0YXRlLmRpc2FibGVVbmRlcmxpbmUgJiYgc3R5bGVzLnVuZGVybGluZV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIGNvbnN0IGxpZ2h0ID0gdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnO1xuICBsZXQgYm90dG9tTGluZUNvbG9yID0gbGlnaHQgPyAncmdiYSgwLCAwLCAwLCAwLjQyKScgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpJztcbiAgaWYgKHRoZW1lLnZhcnMpIHtcbiAgICBib3R0b21MaW5lQ29sb3IgPSBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5jb21tb24ub25CYWNrZ3JvdW5kQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMub3BhY2l0eS5pbnB1dFVuZGVybGluZX0pYDtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH0sIG93bmVyU3RhdGUuZm9ybUNvbnRyb2wgJiYge1xuICAgICdsYWJlbCArICYnOiB7XG4gICAgICBtYXJnaW5Ub3A6IDE2XG4gICAgfVxuICB9LCAhb3duZXJTdGF0ZS5kaXNhYmxlVW5kZXJsaW5lICYmIHtcbiAgICAnJjphZnRlcic6IHtcbiAgICAgIGJvcmRlckJvdHRvbTogYDJweCBzb2xpZCAkeyh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW59YCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICBib3R0b206IDAsXG4gICAgICAvLyBEb2luZyB0aGUgb3RoZXIgd2F5IGFyb3VuZCBjcmFzaCBvbiBJRTExIFwiJydcIiBodHRwczovL2dpdGh1Yi5jb20vY3NzaW5qcy9qc3MvaXNzdWVzLzI0MlxuICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICByaWdodDogMCxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgwKScsXG4gICAgICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ3RyYW5zZm9ybScsIHtcbiAgICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXIsXG4gICAgICAgIGVhc2luZzogdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXRcbiAgICAgIH0pLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnIC8vIFRyYW5zcGFyZW50IHRvIHRoZSBob3ZlciBzdHlsZS5cbiAgICB9LFxuXG4gICAgW2AmLiR7aW5wdXRDbGFzc2VzLmZvY3VzZWR9OmFmdGVyYF06IHtcbiAgICAgIC8vIHRyYW5zbGF0ZVgoMCkgaXMgYSB3b3JrYXJvdW5kIGZvciBTYWZhcmkgdHJhbnNmb3JtIHNjYWxlIGJ1Z1xuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzMxNzY2XG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMSkgdHJhbnNsYXRlWCgwKSdcbiAgICB9LFxuICAgIFtgJi4ke2lucHV0Q2xhc3Nlcy5lcnJvcn1gXToge1xuICAgICAgJyY6YmVmb3JlLCAmOmFmdGVyJzoge1xuICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZXJyb3IubWFpblxuICAgICAgfVxuICAgIH0sXG4gICAgJyY6YmVmb3JlJzoge1xuICAgICAgYm9yZGVyQm90dG9tOiBgMXB4IHNvbGlkICR7Ym90dG9tTGluZUNvbG9yfWAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgYm90dG9tOiAwLFxuICAgICAgLy8gRG9pbmcgdGhlIG90aGVyIHdheSBhcm91bmQgY3Jhc2ggb24gSUUxMSBcIicnXCIgaHR0cHM6Ly9naXRodWIuY29tL2Nzc2luanMvanNzL2lzc3Vlcy8yNDJcbiAgICAgIGNvbnRlbnQ6ICdcIlxcXFwwMGEwXCInLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICByaWdodDogMCxcbiAgICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnYm9yZGVyLWJvdHRvbS1jb2xvcicsIHtcbiAgICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0ZXJcbiAgICAgIH0pLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnIC8vIFRyYW5zcGFyZW50IHRvIHRoZSBob3ZlciBzdHlsZS5cbiAgICB9LFxuXG4gICAgW2AmOmhvdmVyOm5vdCguJHtpbnB1dENsYXNzZXMuZGlzYWJsZWR9LCAuJHtpbnB1dENsYXNzZXMuZXJyb3J9KTpiZWZvcmVgXToge1xuICAgICAgYm9yZGVyQm90dG9tOiBgMnB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5wcmltYXJ5fWAsXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBib3JkZXJCb3R0b206IGAxcHggc29saWQgJHtib3R0b21MaW5lQ29sb3J9YFxuICAgICAgfVxuICAgIH0sXG4gICAgW2AmLiR7aW5wdXRDbGFzc2VzLmRpc2FibGVkfTpiZWZvcmVgXToge1xuICAgICAgYm9yZGVyQm90dG9tU3R5bGU6ICdkb3R0ZWQnXG4gICAgfVxuICB9KTtcbn0pO1xuY29uc3QgSW5wdXRJbnB1dCA9IHN0eWxlZChJbnB1dEJhc2VJbnB1dCwge1xuICBuYW1lOiAnTXVpSW5wdXQnLFxuICBzbG90OiAnSW5wdXQnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogaW5wdXRCYXNlSW5wdXRPdmVycmlkZXNSZXNvbHZlclxufSkoe30pO1xuY29uc3QgSW5wdXQgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBJbnB1dChpblByb3BzLCByZWYpIHtcbiAgdmFyIF9yZWYsIF9zbG90cyRyb290LCBfcmVmMiwgX3Nsb3RzJGlucHV0O1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlJbnB1dCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGRpc2FibGVVbmRlcmxpbmUsXG4gICAgICBjb21wb25lbnRzID0ge30sXG4gICAgICBjb21wb25lbnRzUHJvcHM6IGNvbXBvbmVudHNQcm9wc1Byb3AsXG4gICAgICBmdWxsV2lkdGggPSBmYWxzZSxcbiAgICAgIGlucHV0Q29tcG9uZW50ID0gJ2lucHV0JyxcbiAgICAgIG11bHRpbGluZSA9IGZhbHNlLFxuICAgICAgc2xvdFByb3BzLFxuICAgICAgc2xvdHMgPSB7fSxcbiAgICAgIHR5cGUgPSAndGV4dCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKHByb3BzKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IHtcbiAgICBkaXNhYmxlVW5kZXJsaW5lXG4gIH07XG4gIGNvbnN0IGlucHV0Q29tcG9uZW50c1Byb3BzID0ge1xuICAgIHJvb3Q6IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNvbXBvbmVudHNQcm9wcyA9IChzbG90UHJvcHMgIT0gbnVsbCA/IHNsb3RQcm9wcyA6IGNvbXBvbmVudHNQcm9wc1Byb3ApID8gZGVlcG1lcmdlKHNsb3RQcm9wcyAhPSBudWxsID8gc2xvdFByb3BzIDogY29tcG9uZW50c1Byb3BzUHJvcCwgaW5wdXRDb21wb25lbnRzUHJvcHMpIDogaW5wdXRDb21wb25lbnRzUHJvcHM7XG4gIGNvbnN0IFJvb3RTbG90ID0gKF9yZWYgPSAoX3Nsb3RzJHJvb3QgPSBzbG90cy5yb290KSAhPSBudWxsID8gX3Nsb3RzJHJvb3QgOiBjb21wb25lbnRzLlJvb3QpICE9IG51bGwgPyBfcmVmIDogSW5wdXRSb290O1xuICBjb25zdCBJbnB1dFNsb3QgPSAoX3JlZjIgPSAoX3Nsb3RzJGlucHV0ID0gc2xvdHMuaW5wdXQpICE9IG51bGwgPyBfc2xvdHMkaW5wdXQgOiBjb21wb25lbnRzLklucHV0KSAhPSBudWxsID8gX3JlZjIgOiBJbnB1dElucHV0O1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goSW5wdXRCYXNlLCBfZXh0ZW5kcyh7XG4gICAgc2xvdHM6IHtcbiAgICAgIHJvb3Q6IFJvb3RTbG90LFxuICAgICAgaW5wdXQ6IElucHV0U2xvdFxuICAgIH0sXG4gICAgc2xvdFByb3BzOiBjb21wb25lbnRzUHJvcHMsXG4gICAgZnVsbFdpZHRoOiBmdWxsV2lkdGgsXG4gICAgaW5wdXRDb21wb25lbnQ6IGlucHV0Q29tcG9uZW50LFxuICAgIG11bHRpbGluZTogbXVsdGlsaW5lLFxuICAgIHJlZjogcmVmLFxuICAgIHR5cGU6IHR5cGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gSW5wdXQucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhpcyBwcm9wIGhlbHBzIHVzZXJzIHRvIGZpbGwgZm9ybXMgZmFzdGVyLCBlc3BlY2lhbGx5IG9uIG1vYmlsZSBkZXZpY2VzLlxuICAgKiBUaGUgbmFtZSBjYW4gYmUgY29uZnVzaW5nLCBhcyBpdCdzIG1vcmUgbGlrZSBhbiBhdXRvZmlsbC5cbiAgICogWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IGl0IFtmb2xsb3dpbmcgdGhlIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI2F1dG9maWxsKS5cbiAgICovXG4gIGF1dG9Db21wbGV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgZWxlbWVudCBpcyBmb2N1c2VkIGR1cmluZyB0aGUgZmlyc3QgbW91bnQuXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGAncHJpbWFyeSdgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgc2xvdHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdHNgIHByb3AgaW5zdGVhZC5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgSW5wdXQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBSb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYHNsb3RQcm9wc2AgcHJvcC5cbiAgICogSXQncyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGBzbG90UHJvcHNgIHByb3AgaW5zdGVhZCwgYXMgYGNvbXBvbmVudHNQcm9wc2Agd2lsbCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBjb21wb25lbnRzUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaW5wdXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcm9vdDogUHJvcFR5cGVzLm9iamVjdFxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlLiBVc2Ugd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBjb250cm9sbGVkLlxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMuYW55LFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGBmYWxzZWApIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgRm9ybUNvbnRyb2wgY29tcG9uZW50LlxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYGlucHV0YCB3aWxsIG5vdCBoYXZlIGFuIHVuZGVybGluZS5cbiAgICovXG4gIGRpc2FibGVVbmRlcmxpbmU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRW5kIGBJbnB1dEFkb3JubWVudGAgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgKi9cbiAgZW5kQWRvcm5tZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgd2lsbCBpbmRpY2F0ZSBhbiBlcnJvci5cbiAgICogVGhlIHByb3AgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIChgZmFsc2VgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgd2lsbCB0YWtlIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmdWxsV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGlkIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICogQGRlZmF1bHQgJ2lucHV0J1xuICAgKi9cbiAgaW5wdXRDb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIFtBdHRyaWJ1dGVzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjQXR0cmlidXRlcykgYXBwbGllZCB0byB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFBhc3MgYSByZWYgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICovXG4gIGlucHV0UmVmOiByZWZUeXBlLFxuICAvKipcbiAgICogSWYgYGRlbnNlYCwgd2lsbCBhZGp1c3QgdmVydGljYWwgc3BhY2luZy4gVGhpcyBpcyBub3JtYWxseSBvYnRhaW5lZCB2aWEgY29udGV4dCBmcm9tXG4gICAqIEZvcm1Db250cm9sLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGAnbm9uZSdgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIG1hcmdpbjogUHJvcFR5cGVzLm9uZU9mKFsnZGVuc2UnLCAnbm9uZSddKSxcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSB3aGVuIG11bHRpbGluZSBvcHRpb24gaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBtYXhSb3dzOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aWxpbmUgb3B0aW9uIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgbWluUm93czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBhIFtUZXh0YXJlYUF1dG9zaXplXSgvbWF0ZXJpYWwtdWkvcmVhY3QtdGV4dGFyZWEtYXV0b3NpemUvKSBlbGVtZW50IGlzIHJlbmRlcmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbXVsdGlsaW5lOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE5hbWUgYXR0cmlidXRlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgSFRNTElucHV0RWxlbWVudD59IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKiBZb3UgY2FuIHB1bGwgb3V0IHRoZSBuZXcgdmFsdWUgYnkgYWNjZXNzaW5nIGBldmVudC50YXJnZXQudmFsdWVgIChzdHJpbmcpLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHNob3J0IGhpbnQgZGlzcGxheWVkIGluIHRoZSBgaW5wdXRgIGJlZm9yZSB0aGUgdXNlciBlbnRlcnMgYSB2YWx1ZS5cbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSXQgcHJldmVudHMgdGhlIHVzZXIgZnJvbSBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkXG4gICAqIChub3QgZnJvbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWVsZCkuXG4gICAqL1xuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIGVsZW1lbnQgaXMgcmVxdWlyZWQuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSAoYGZhbHNlYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cyB0byBkaXNwbGF5IHdoZW4gbXVsdGlsaW5lIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIHJvd3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBleHRyYSBwcm9wcyBmb3IgdGhlIHNsb3QgY29tcG9uZW50cy5cbiAgICogWW91IGNhbiBvdmVycmlkZSB0aGUgZXhpc3RpbmcgcHJvcHMgb3IgYWRkIG5ldyBvbmVzLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgY29tcG9uZW50c1Byb3BzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpbnB1dDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICByb290OiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudHMgdXNlZCBmb3IgZWFjaCBzbG90IGluc2lkZS5cbiAgICpcbiAgICogVGhpcyBwcm9wIGlzIGFuIGFsaWFzIGZvciB0aGUgYGNvbXBvbmVudHNgIHByb3AsIHdoaWNoIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgc2xvdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaW5wdXQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICByb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBTdGFydCBgSW5wdXRBZG9ybm1lbnRgIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHN0YXJ0QWRvcm5tZW50OiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIGBpbnB1dGAgZWxlbWVudC4gSXQgc2hvdWxkIGJlIFthIHZhbGlkIEhUTUw1IGlucHV0IHR5cGVdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dCNGb3JtXyUzQ2lucHV0JTNFX3R5cGVzKS5cbiAgICogQGRlZmF1bHQgJ3RleHQnXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQsIHJlcXVpcmVkIGZvciBhIGNvbnRyb2xsZWQgY29tcG9uZW50LlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnlcbn0gOiB2b2lkIDA7XG5JbnB1dC5tdWlOYW1lID0gJ0lucHV0JztcbmV4cG9ydCBkZWZhdWx0IElucHV0OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuaW1wb3J0IHsgaW5wdXRCYXNlQ2xhc3NlcyB9IGZyb20gJy4uL0lucHV0QmFzZSc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXRVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUlucHV0Jywgc2xvdCk7XG59XG5jb25zdCBpbnB1dENsYXNzZXMgPSBfZXh0ZW5kcyh7fSwgaW5wdXRCYXNlQ2xhc3NlcywgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpSW5wdXQnLCBbJ3Jvb3QnLCAndW5kZXJsaW5lJywgJ2lucHV0J10pKTtcbmV4cG9ydCBkZWZhdWx0IGlucHV0Q2xhc3NlczsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybUxhYmVsVXRpbGl0eUNsYXNzZXMoc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUZvcm1MYWJlbCcsIHNsb3QpO1xufVxuY29uc3QgZm9ybUxhYmVsQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUZvcm1MYWJlbCcsIFsncm9vdCcsICdjb2xvclNlY29uZGFyeScsICdmb2N1c2VkJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2ZpbGxlZCcsICdyZXF1aXJlZCcsICdhc3RlcmlzayddKTtcbmV4cG9ydCBkZWZhdWx0IGZvcm1MYWJlbENsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb2xvclwiLCBcImNvbXBvbmVudFwiLCBcImRpc2FibGVkXCIsIFwiZXJyb3JcIiwgXCJmaWxsZWRcIiwgXCJmb2N1c2VkXCIsIFwicmVxdWlyZWRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgZm9ybUNvbnRyb2xTdGF0ZSBmcm9tICcuLi9Gb3JtQ29udHJvbC9mb3JtQ29udHJvbFN0YXRlJztcbmltcG9ydCB1c2VGb3JtQ29udHJvbCBmcm9tICcuLi9Gb3JtQ29udHJvbC91c2VGb3JtQ29udHJvbCc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgZm9ybUxhYmVsQ2xhc3NlcywgeyBnZXRGb3JtTGFiZWxVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJy4vZm9ybUxhYmVsQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBjb2xvcixcbiAgICBmb2N1c2VkLFxuICAgIGRpc2FibGVkLFxuICAgIGVycm9yLFxuICAgIGZpbGxlZCxcbiAgICByZXF1aXJlZFxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgYGNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBlcnJvciAmJiAnZXJyb3InLCBmaWxsZWQgJiYgJ2ZpbGxlZCcsIGZvY3VzZWQgJiYgJ2ZvY3VzZWQnLCByZXF1aXJlZCAmJiAncmVxdWlyZWQnXSxcbiAgICBhc3RlcmlzazogWydhc3RlcmlzaycsIGVycm9yICYmICdlcnJvciddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0Rm9ybUxhYmVsVXRpbGl0eUNsYXNzZXMsIGNsYXNzZXMpO1xufTtcbmV4cG9ydCBjb25zdCBGb3JtTGFiZWxSb290ID0gc3R5bGVkKCdsYWJlbCcsIHtcbiAgbmFtZTogJ011aUZvcm1MYWJlbCcsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6ICh7XG4gICAgb3duZXJTdGF0ZVxuICB9LCBzdHlsZXMpID0+IHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yID09PSAnc2Vjb25kYXJ5JyAmJiBzdHlsZXMuY29sb3JTZWNvbmRhcnksIG93bmVyU3RhdGUuZmlsbGVkICYmIHN0eWxlcy5maWxsZWQpO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5zZWNvbmRhcnlcbn0sIHRoZW1lLnR5cG9ncmFwaHkuYm9keTEsIHtcbiAgbGluZUhlaWdodDogJzEuNDM3NWVtJyxcbiAgcGFkZGluZzogMCxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIFtgJi4ke2Zvcm1MYWJlbENsYXNzZXMuZm9jdXNlZH1gXToge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sXG4gIFtgJi4ke2Zvcm1MYWJlbENsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5kaXNhYmxlZFxuICB9LFxuICBbYCYuJHtmb3JtTGFiZWxDbGFzc2VzLmVycm9yfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmVycm9yLm1haW5cbiAgfVxufSkpO1xuY29uc3QgQXN0ZXJpc2tDb21wb25lbnQgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlGb3JtTGFiZWwnLFxuICBzbG90OiAnQXN0ZXJpc2snLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5hc3Rlcmlza1xufSkoKHtcbiAgdGhlbWVcbn0pID0+ICh7XG4gIFtgJi4ke2Zvcm1MYWJlbENsYXNzZXMuZXJyb3J9YF06IHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZXJyb3IubWFpblxuICB9XG59KSk7XG5jb25zdCBGb3JtTGFiZWwgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBGb3JtTGFiZWwoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUZvcm1MYWJlbCdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ2xhYmVsJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBtdWlGb3JtQ29udHJvbCA9IHVzZUZvcm1Db250cm9sKCk7XG4gIGNvbnN0IGZjcyA9IGZvcm1Db250cm9sU3RhdGUoe1xuICAgIHByb3BzLFxuICAgIG11aUZvcm1Db250cm9sLFxuICAgIHN0YXRlczogWydjb2xvcicsICdyZXF1aXJlZCcsICdmb2N1c2VkJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2ZpbGxlZCddXG4gIH0pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3I6IGZjcy5jb2xvciB8fCAncHJpbWFyeScsXG4gICAgY29tcG9uZW50LFxuICAgIGRpc2FibGVkOiBmY3MuZGlzYWJsZWQsXG4gICAgZXJyb3I6IGZjcy5lcnJvcixcbiAgICBmaWxsZWQ6IGZjcy5maWxsZWQsXG4gICAgZm9jdXNlZDogZmNzLmZvY3VzZWQsXG4gICAgcmVxdWlyZWQ6IGZjcy5yZXF1aXJlZFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKEZvcm1MYWJlbFJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogY29tcG9uZW50LFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZlxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4sIGZjcy5yZXF1aXJlZCAmJiAvKiNfX1BVUkVfXyovX2pzeHMoQXN0ZXJpc2tDb21wb25lbnQsIHtcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuYXN0ZXJpc2ssXG4gICAgICBjaGlsZHJlbjogW1wiXFx1MjAwOVwiLCAnKiddXG4gICAgfSldXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gRm9ybUxhYmVsLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydlcnJvcicsICdpbmZvJywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsYWJlbCBzaG91bGQgYmUgZGlzcGxheWVkIGluIGEgZGlzYWJsZWQgc3RhdGUuXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsYWJlbCBpcyBkaXNwbGF5ZWQgaW4gYW4gZXJyb3Igc3RhdGUuXG4gICAqL1xuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsYWJlbCBzaG91bGQgdXNlIGZpbGxlZCBjbGFzc2VzIGtleS5cbiAgICovXG4gIGZpbGxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBpbnB1dCBvZiB0aGlzIGxhYmVsIGlzIGZvY3VzZWQgKHVzZWQgYnkgYEZvcm1Hcm91cGAgY29tcG9uZW50cykuXG4gICAqL1xuICBmb2N1c2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxhYmVsIHdpbGwgaW5kaWNhdGUgdGhhdCB0aGUgYGlucHV0YCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEZvcm1MYWJlbDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5wdXRMYWJlbFV0aWxpdHlDbGFzc2VzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlJbnB1dExhYmVsJywgc2xvdCk7XG59XG5jb25zdCBpbnB1dExhYmVsQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUlucHV0TGFiZWwnLCBbJ3Jvb3QnLCAnZm9jdXNlZCcsICdkaXNhYmxlZCcsICdlcnJvcicsICdyZXF1aXJlZCcsICdhc3RlcmlzaycsICdmb3JtQ29udHJvbCcsICdzaXplU21hbGwnLCAnc2hyaW5rJywgJ2FuaW1hdGVkJywgJ3N0YW5kYXJkJywgJ2ZpbGxlZCcsICdvdXRsaW5lZCddKTtcbmV4cG9ydCBkZWZhdWx0IGlucHV0TGFiZWxDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImRpc2FibGVBbmltYXRpb25cIiwgXCJtYXJnaW5cIiwgXCJzaHJpbmtcIiwgXCJ2YXJpYW50XCIsIFwiY2xhc3NOYW1lXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IGZvcm1Db250cm9sU3RhdGUgZnJvbSAnLi4vRm9ybUNvbnRyb2wvZm9ybUNvbnRyb2xTdGF0ZSc7XG5pbXBvcnQgdXNlRm9ybUNvbnRyb2wgZnJvbSAnLi4vRm9ybUNvbnRyb2wvdXNlRm9ybUNvbnRyb2wnO1xuaW1wb3J0IEZvcm1MYWJlbCwgeyBmb3JtTGFiZWxDbGFzc2VzIH0gZnJvbSAnLi4vRm9ybUxhYmVsJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBnZXRJbnB1dExhYmVsVXRpbGl0eUNsYXNzZXMgfSBmcm9tICcuL2lucHV0TGFiZWxDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBmb3JtQ29udHJvbCxcbiAgICBzaXplLFxuICAgIHNocmluayxcbiAgICBkaXNhYmxlQW5pbWF0aW9uLFxuICAgIHZhcmlhbnQsXG4gICAgcmVxdWlyZWRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGZvcm1Db250cm9sICYmICdmb3JtQ29udHJvbCcsICFkaXNhYmxlQW5pbWF0aW9uICYmICdhbmltYXRlZCcsIHNocmluayAmJiAnc2hyaW5rJywgc2l6ZSA9PT0gJ3NtYWxsJyAmJiAnc2l6ZVNtYWxsJywgdmFyaWFudF0sXG4gICAgYXN0ZXJpc2s6IFtyZXF1aXJlZCAmJiAnYXN0ZXJpc2snXVxuICB9O1xuICBjb25zdCBjb21wb3NlZENsYXNzZXMgPSBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0SW5wdXRMYWJlbFV0aWxpdHlDbGFzc2VzLCBjbGFzc2VzKTtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBjbGFzc2VzLCBjb21wb3NlZENsYXNzZXMpO1xufTtcbmNvbnN0IElucHV0TGFiZWxSb290ID0gc3R5bGVkKEZvcm1MYWJlbCwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpSW5wdXRMYWJlbCcsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3tcbiAgICAgIFtgJiAuJHtmb3JtTGFiZWxDbGFzc2VzLmFzdGVyaXNrfWBdOiBzdHlsZXMuYXN0ZXJpc2tcbiAgICB9LCBzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS5mb3JtQ29udHJvbCAmJiBzdHlsZXMuZm9ybUNvbnRyb2wsIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBzdHlsZXMuc2l6ZVNtYWxsLCBvd25lclN0YXRlLnNocmluayAmJiBzdHlsZXMuc2hyaW5rLCAhb3duZXJTdGF0ZS5kaXNhYmxlQW5pbWF0aW9uICYmIHN0eWxlcy5hbmltYXRlZCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF1dO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnYmxvY2snLFxuICB0cmFuc2Zvcm1PcmlnaW46ICd0b3AgbGVmdCcsXG4gIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgbWF4V2lkdGg6ICcxMDAlJ1xufSwgb3duZXJTdGF0ZS5mb3JtQ29udHJvbCAmJiB7XG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICBsZWZ0OiAwLFxuICB0b3A6IDAsXG4gIC8vIHNsaWdodCBhbHRlcmF0aW9uIHRvIHNwZWMgc3BhY2luZyB0byBtYXRjaCB2aXN1YWwgc3BlYyByZXN1bHRcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIDIwcHgpIHNjYWxlKDEpJ1xufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgLy8gQ29tcGVuc2F0aW9uIGZvciB0aGUgYElucHV0LmlucHV0U2l6ZVNtYWxsYCBzdHlsZS5cbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDAsIDE3cHgpIHNjYWxlKDEpJ1xufSwgb3duZXJTdGF0ZS5zaHJpbmsgJiYge1xuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMCwgLTEuNXB4KSBzY2FsZSgwLjc1KScsXG4gIHRyYW5zZm9ybU9yaWdpbjogJ3RvcCBsZWZ0JyxcbiAgbWF4V2lkdGg6ICcxMzMlJ1xufSwgIW93bmVyU3RhdGUuZGlzYWJsZUFuaW1hdGlvbiAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ2NvbG9yJywgJ3RyYW5zZm9ybScsICdtYXgtd2lkdGgnXSwge1xuICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLFxuICAgIGVhc2luZzogdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXRcbiAgfSlcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2ZpbGxlZCcgJiYgX2V4dGVuZHMoe1xuICAvLyBDaHJvbWUncyBhdXRvZmlsbCBmZWF0dXJlIGdpdmVzIHRoZSBpbnB1dCBmaWVsZCBhIHllbGxvdyBiYWNrZ3JvdW5kLlxuICAvLyBTaW5jZSB0aGUgaW5wdXQgZmllbGQgaXMgYmVoaW5kIHRoZSBsYWJlbCBpbiB0aGUgSFRNTCB0cmVlLFxuICAvLyB0aGUgaW5wdXQgZmllbGQgaXMgZHJhd24gbGFzdCBhbmQgaGlkZXMgdGhlIGxhYmVsIHdpdGggYW4gb3BhcXVlIGJhY2tncm91bmQgY29sb3IuXG4gIC8vIHpJbmRleDogMSB3aWxsIHJhaXNlIHRoZSBsYWJlbCBhYm92ZSBvcGFxdWUgYmFja2dyb3VuZC1jb2xvcnMgb2YgaW5wdXQuXG4gIHpJbmRleDogMSxcbiAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMTJweCwgMTZweCkgc2NhbGUoMSknLFxuICBtYXhXaWR0aDogJ2NhbGMoMTAwJSAtIDI0cHgpJ1xufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEycHgsIDEzcHgpIHNjYWxlKDEpJ1xufSwgb3duZXJTdGF0ZS5zaHJpbmsgJiYgX2V4dGVuZHMoe1xuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIHBvaW50ZXJFdmVudHM6ICdhdXRvJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEycHgsIDdweCkgc2NhbGUoMC43NSknLFxuICBtYXhXaWR0aDogJ2NhbGMoMTMzJSAtIDI0cHgpJ1xufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEycHgsIDRweCkgc2NhbGUoMC43NSknXG59KSksIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBfZXh0ZW5kcyh7XG4gIC8vIHNlZSBjb21tZW50IGFib3ZlIG9uIGZpbGxlZC56SW5kZXhcbiAgekluZGV4OiAxLFxuICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgxNHB4LCAxNnB4KSBzY2FsZSgxKScsXG4gIG1heFdpZHRoOiAnY2FsYygxMDAlIC0gMjRweCknXG59LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoMTRweCwgOXB4KSBzY2FsZSgxKSdcbn0sIG93bmVyU3RhdGUuc2hyaW5rICYmIHtcbiAgdXNlclNlbGVjdDogJ25vbmUnLFxuICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gIC8vIFRoZW9yZXRpY2FsbHksIHdlIHNob3VsZCBoYXZlICg4KzUpKjIvMC43NSA9IDM0cHhcbiAgLy8gYnV0IGl0IGZlZWxzIGEgYmV0dGVyIHdoZW4gaXQgYmxlZWRzIGEgYml0IG9uIHRoZSBsZWZ0LCBzbyAzMnB4LlxuICBtYXhXaWR0aDogJ2NhbGMoMTMzJSAtIDMycHgpJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDE0cHgsIC05cHgpIHNjYWxlKDAuNzUpJ1xufSkpKTtcbmNvbnN0IElucHV0TGFiZWwgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBJbnB1dExhYmVsKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIG5hbWU6ICdNdWlJbnB1dExhYmVsJyxcbiAgICBwcm9wczogaW5Qcm9wc1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlLFxuICAgICAgc2hyaW5rOiBzaHJpbmtQcm9wLFxuICAgICAgY2xhc3NOYW1lXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG11aUZvcm1Db250cm9sID0gdXNlRm9ybUNvbnRyb2woKTtcbiAgbGV0IHNocmluayA9IHNocmlua1Byb3A7XG4gIGlmICh0eXBlb2Ygc2hyaW5rID09PSAndW5kZWZpbmVkJyAmJiBtdWlGb3JtQ29udHJvbCkge1xuICAgIHNocmluayA9IG11aUZvcm1Db250cm9sLmZpbGxlZCB8fCBtdWlGb3JtQ29udHJvbC5mb2N1c2VkIHx8IG11aUZvcm1Db250cm9sLmFkb3JuZWRTdGFydDtcbiAgfVxuICBjb25zdCBmY3MgPSBmb3JtQ29udHJvbFN0YXRlKHtcbiAgICBwcm9wcyxcbiAgICBtdWlGb3JtQ29udHJvbCxcbiAgICBzdGF0ZXM6IFsnc2l6ZScsICd2YXJpYW50JywgJ3JlcXVpcmVkJ11cbiAgfSk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBkaXNhYmxlQW5pbWF0aW9uLFxuICAgIGZvcm1Db250cm9sOiBtdWlGb3JtQ29udHJvbCxcbiAgICBzaHJpbmssXG4gICAgc2l6ZTogZmNzLnNpemUsXG4gICAgdmFyaWFudDogZmNzLnZhcmlhbnQsXG4gICAgcmVxdWlyZWQ6IGZjcy5yZXF1aXJlZFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goSW5wdXRMYWJlbFJvb3QsIF9leHRlbmRzKHtcbiAgICBcImRhdGEtc2hyaW5rXCI6IHNocmluayxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIHJlZjogcmVmLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSlcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gSW5wdXRMYWJlbC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZXJyb3InLCAnaW5mbycsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRyYW5zaXRpb24gYW5pbWF0aW9uIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUFuaW1hdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsYWJlbCBpcyBkaXNwbGF5ZWQgaW4gYW4gZXJyb3Igc3RhdGUuXG4gICAqL1xuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIG9mIHRoaXMgbGFiZWwgaXMgZm9jdXNlZC5cbiAgICovXG4gIGZvY3VzZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYGRlbnNlYCwgd2lsbCBhZGp1c3QgdmVydGljYWwgc3BhY2luZy4gVGhpcyBpcyBub3JtYWxseSBvYnRhaW5lZCB2aWEgY29udGV4dCBmcm9tXG4gICAqIEZvcm1Db250cm9sLlxuICAgKi9cbiAgbWFyZ2luOiBQcm9wVHlwZXMub25lT2YoWydkZW5zZSddKSxcbiAgLyoqXG4gICAqIGlmIGB0cnVlYCwgdGhlIGxhYmVsIHdpbGwgaW5kaWNhdGUgdGhhdCB0aGUgYGlucHV0YCBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGxhYmVsIGlzIHNocnVuay5cbiAgICovXG4gIHNocmluazogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCAnbm9ybWFsJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydub3JtYWwnLCAnc21hbGwnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcy5vbmVPZihbJ2ZpbGxlZCcsICdvdXRsaW5lZCcsICdzdGFuZGFyZCddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IElucHV0TGFiZWw7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xudmFyIF9zcGFuO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2hpbGRyZW5cIiwgXCJjbGFzc2VzXCIsIFwiY2xhc3NOYW1lXCIsIFwibGFiZWxcIiwgXCJub3RjaGVkXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgTm90Y2hlZE91dGxpbmVSb290ID0gc3R5bGVkKCdmaWVsZHNldCcpKHtcbiAgdGV4dEFsaWduOiAnbGVmdCcsXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICBib3R0b206IDAsXG4gIHJpZ2h0OiAwLFxuICB0b3A6IC01LFxuICBsZWZ0OiAwLFxuICBtYXJnaW46IDAsXG4gIHBhZGRpbmc6ICcwIDhweCcsXG4gIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgYm9yZGVyUmFkaXVzOiAnaW5oZXJpdCcsXG4gIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICBib3JkZXJXaWR0aDogMSxcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBtaW5XaWR0aDogJzAlJ1xufSk7XG5jb25zdCBOb3RjaGVkT3V0bGluZUxlZ2VuZCA9IHN0eWxlZCgnbGVnZW5kJykoKHtcbiAgb3duZXJTdGF0ZSxcbiAgdGhlbWVcbn0pID0+IF9leHRlbmRzKHtcbiAgZmxvYXQ6ICd1bnNldCcsXG4gIC8vIEZpeCBjb25mbGljdCB3aXRoIGJvb3RzdHJhcFxuICB3aWR0aDogJ2F1dG8nLFxuICAvLyBGaXggY29uZmxpY3Qgd2l0aCBib290c3RyYXBcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nXG59LCAhb3duZXJTdGF0ZS53aXRoTGFiZWwgJiYge1xuICBwYWRkaW5nOiAwLFxuICBsaW5lSGVpZ2h0OiAnMTFweCcsXG4gIC8vIHN5bmMgd2l0aCBgaGVpZ2h0YCBpbiBgbGVnZW5kYCBzdHlsZXNcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCd3aWR0aCcsIHtcbiAgICBkdXJhdGlvbjogMTUwLFxuICAgIGVhc2luZzogdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VPdXRcbiAgfSlcbn0sIG93bmVyU3RhdGUud2l0aExhYmVsICYmIF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgLy8gRml4IGNvbmZsaWN0IHdpdGggbm9ybWFsaXplLmNzcyBhbmQgc2FuaXRpemUuY3NzXG4gIHBhZGRpbmc6IDAsXG4gIGhlaWdodDogMTEsXG4gIC8vIHN5bmMgd2l0aCBgbGluZUhlaWdodGAgaW4gYGxlZ2VuZGAgc3R5bGVzXG4gIGZvbnRTaXplOiAnMC43NWVtJyxcbiAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gIG1heFdpZHRoOiAwLjAxLFxuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ21heC13aWR0aCcsIHtcbiAgICBkdXJhdGlvbjogNTAsXG4gICAgZWFzaW5nOiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZU91dFxuICB9KSxcbiAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICcmID4gc3Bhbic6IHtcbiAgICBwYWRkaW5nTGVmdDogNSxcbiAgICBwYWRkaW5nUmlnaHQ6IDUsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgb3BhY2l0eTogMCxcbiAgICB2aXNpYmlsaXR5OiAndmlzaWJsZSdcbiAgfVxufSwgb3duZXJTdGF0ZS5ub3RjaGVkICYmIHtcbiAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdtYXgtd2lkdGgnLCB7XG4gICAgZHVyYXRpb246IDEwMCxcbiAgICBlYXNpbmc6IHRoZW1lLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlT3V0LFxuICAgIGRlbGF5OiA1MFxuICB9KVxufSkpKTtcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOb3RjaGVkT3V0bGluZShwcm9wcykge1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBsYWJlbCxcbiAgICAgIG5vdGNoZWRcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgd2l0aExhYmVsID0gbGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPT0gJyc7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBub3RjaGVkLFxuICAgIHdpdGhMYWJlbFxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KE5vdGNoZWRPdXRsaW5lUm9vdCwgX2V4dGVuZHMoe1xuICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZSxcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KE5vdGNoZWRPdXRsaW5lTGVnZW5kLCB7XG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2hpbGRyZW46IHdpdGhMYWJlbCA/IC8qI19fUFVSRV9fKi9fanN4KFwic3BhblwiLCB7XG4gICAgICAgIGNoaWxkcmVuOiBsYWJlbFxuICAgICAgfSkgOiAvLyBub3RyYW5zbGF0ZSBuZWVkZWQgd2hpbGUgR29vZ2xlIFRyYW5zbGF0ZSB3aWxsIG5vdCBmaXggemVyby13aWR0aCBzcGFjZSBpc3N1ZVxuICAgICAgX3NwYW4gfHwgKF9zcGFuID0gLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBcIm5vdHJhbnNsYXRlXCIsXG4gICAgICAgIGNoaWxkcmVuOiBcIlxcdTIwMEJcIlxuICAgICAgfSkpXG4gICAgfSlcbiAgfSkpO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gTm90Y2hlZE91dGxpbmUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogU2VlIFtDU1MgQVBJXSgjY3NzKSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBsYWJlbC5cbiAgICovXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIG91dGxpbmUgaXMgbm90Y2hlZCB0byBhY2NvbW1vZGF0ZSB0aGUgbGFiZWwuXG4gICAqL1xuICBub3RjaGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3Rcbn0gOiB2b2lkIDA7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY29tcG9uZW50c1wiLCBcImZ1bGxXaWR0aFwiLCBcImlucHV0Q29tcG9uZW50XCIsIFwibGFiZWxcIiwgXCJtdWx0aWxpbmVcIiwgXCJub3RjaGVkXCIsIFwic2xvdHNcIiwgXCJ0eXBlXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IHJlZlR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBOb3RjaGVkT3V0bGluZSBmcm9tICcuL05vdGNoZWRPdXRsaW5lJztcbmltcG9ydCB1c2VGb3JtQ29udHJvbCBmcm9tICcuLi9Gb3JtQ29udHJvbC91c2VGb3JtQ29udHJvbCc7XG5pbXBvcnQgZm9ybUNvbnRyb2xTdGF0ZSBmcm9tICcuLi9Gb3JtQ29udHJvbC9mb3JtQ29udHJvbFN0YXRlJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgb3V0bGluZWRJbnB1dENsYXNzZXMsIHsgZ2V0T3V0bGluZWRJbnB1dFV0aWxpdHlDbGFzcyB9IGZyb20gJy4vb3V0bGluZWRJbnB1dENsYXNzZXMnO1xuaW1wb3J0IElucHV0QmFzZSwgeyByb290T3ZlcnJpZGVzUmVzb2x2ZXIgYXMgaW5wdXRCYXNlUm9vdE92ZXJyaWRlc1Jlc29sdmVyLCBpbnB1dE92ZXJyaWRlc1Jlc29sdmVyIGFzIGlucHV0QmFzZUlucHV0T3ZlcnJpZGVzUmVzb2x2ZXIsIElucHV0QmFzZVJvb3QsIElucHV0QmFzZUNvbXBvbmVudCBhcyBJbnB1dEJhc2VJbnB1dCB9IGZyb20gJy4uL0lucHV0QmFzZS9JbnB1dEJhc2UnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnXSxcbiAgICBub3RjaGVkT3V0bGluZTogWydub3RjaGVkT3V0bGluZSddLFxuICAgIGlucHV0OiBbJ2lucHV0J11cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldE91dGxpbmVkSW5wdXRVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgT3V0bGluZWRJbnB1dFJvb3QgPSBzdHlsZWQoSW5wdXRCYXNlUm9vdCwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpT3V0bGluZWRJbnB1dCcsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IGlucHV0QmFzZVJvb3RPdmVycmlkZXNSZXNvbHZlclxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgY29uc3QgYm9yZGVyQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyAncmdiYSgwLCAwLCAwLCAwLjIzKScgOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzKSc7XG4gIHJldHVybiBfZXh0ZW5kcyh7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIFtgJjpob3ZlciAuJHtvdXRsaW5lZElucHV0Q2xhc3Nlcy5ub3RjaGVkT3V0bGluZX1gXToge1xuICAgICAgYm9yZGVyQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQucHJpbWFyeVxuICAgIH0sXG4gICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICBbYCY6aG92ZXIgLiR7b3V0bGluZWRJbnB1dENsYXNzZXMubm90Y2hlZE91dGxpbmV9YF06IHtcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5jb21tb24ub25CYWNrZ3JvdW5kQ2hhbm5lbH0gLyAwLjIzKWAgOiBib3JkZXJDb2xvclxuICAgICAgfVxuICAgIH0sXG4gICAgW2AmLiR7b3V0bGluZWRJbnB1dENsYXNzZXMuZm9jdXNlZH0gLiR7b3V0bGluZWRJbnB1dENsYXNzZXMubm90Y2hlZE91dGxpbmV9YF06IHtcbiAgICAgIGJvcmRlckNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLFxuICAgICAgYm9yZGVyV2lkdGg6IDJcbiAgICB9LFxuICAgIFtgJi4ke291dGxpbmVkSW5wdXRDbGFzc2VzLmVycm9yfSAuJHtvdXRsaW5lZElucHV0Q2xhc3Nlcy5ub3RjaGVkT3V0bGluZX1gXToge1xuICAgICAgYm9yZGVyQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmVycm9yLm1haW5cbiAgICB9LFxuICAgIFtgJi4ke291dGxpbmVkSW5wdXRDbGFzc2VzLmRpc2FibGVkfSAuJHtvdXRsaW5lZElucHV0Q2xhc3Nlcy5ub3RjaGVkT3V0bGluZX1gXToge1xuICAgICAgYm9yZGVyQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH1cbiAgfSwgb3duZXJTdGF0ZS5zdGFydEFkb3JubWVudCAmJiB7XG4gICAgcGFkZGluZ0xlZnQ6IDE0XG4gIH0sIG93bmVyU3RhdGUuZW5kQWRvcm5tZW50ICYmIHtcbiAgICBwYWRkaW5nUmlnaHQ6IDE0XG4gIH0sIG93bmVyU3RhdGUubXVsdGlsaW5lICYmIF9leHRlbmRzKHtcbiAgICBwYWRkaW5nOiAnMTYuNXB4IDE0cHgnXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICAgcGFkZGluZzogJzguNXB4IDE0cHgnXG4gIH0pKTtcbn0pO1xuY29uc3QgTm90Y2hlZE91dGxpbmVSb290ID0gc3R5bGVkKE5vdGNoZWRPdXRsaW5lLCB7XG4gIG5hbWU6ICdNdWlPdXRsaW5lZElucHV0JyxcbiAgc2xvdDogJ05vdGNoZWRPdXRsaW5lJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMubm90Y2hlZE91dGxpbmVcbn0pKCh7XG4gIHRoZW1lXG59KSA9PiB7XG4gIGNvbnN0IGJvcmRlckNvbG9yID0gdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gJ3JnYmEoMCwgMCwgMCwgMC4yMyknIDogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC4yMyknO1xuICByZXR1cm4ge1xuICAgIGJvcmRlckNvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUuY29tbW9uLm9uQmFja2dyb3VuZENoYW5uZWx9IC8gMC4yMylgIDogYm9yZGVyQ29sb3JcbiAgfTtcbn0pO1xuY29uc3QgT3V0bGluZWRJbnB1dElucHV0ID0gc3R5bGVkKElucHV0QmFzZUlucHV0LCB7XG4gIG5hbWU6ICdNdWlPdXRsaW5lZElucHV0JyxcbiAgc2xvdDogJ0lucHV0JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IGlucHV0QmFzZUlucHV0T3ZlcnJpZGVzUmVzb2x2ZXJcbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHBhZGRpbmc6ICcxNi41cHggMTRweCdcbn0sICF0aGVtZS52YXJzICYmIHtcbiAgJyY6LXdlYmtpdC1hdXRvZmlsbCc6IHtcbiAgICBXZWJraXRCb3hTaGFkb3c6IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IG51bGwgOiAnMCAwIDAgMTAwcHggIzI2Njc5OCBpbnNldCcsXG4gICAgV2Via2l0VGV4dEZpbGxDb2xvcjogdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnbGlnaHQnID8gbnVsbCA6ICcjZmZmJyxcbiAgICBjYXJldENvbG9yOiB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyBudWxsIDogJyNmZmYnLFxuICAgIGJvcmRlclJhZGl1czogJ2luaGVyaXQnXG4gIH1cbn0sIHRoZW1lLnZhcnMgJiYge1xuICAnJjotd2Via2l0LWF1dG9maWxsJzoge1xuICAgIGJvcmRlclJhZGl1czogJ2luaGVyaXQnXG4gIH0sXG4gIFt0aGVtZS5nZXRDb2xvclNjaGVtZVNlbGVjdG9yKCdkYXJrJyldOiB7XG4gICAgJyY6LXdlYmtpdC1hdXRvZmlsbCc6IHtcbiAgICAgIFdlYmtpdEJveFNoYWRvdzogJzAgMCAwIDEwMHB4ICMyNjY3OTggaW5zZXQnLFxuICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogJyNmZmYnLFxuICAgICAgY2FyZXRDb2xvcjogJyNmZmYnXG4gICAgfVxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYge1xuICBwYWRkaW5nOiAnOC41cHggMTRweCdcbn0sIG93bmVyU3RhdGUubXVsdGlsaW5lICYmIHtcbiAgcGFkZGluZzogMFxufSwgb3duZXJTdGF0ZS5zdGFydEFkb3JubWVudCAmJiB7XG4gIHBhZGRpbmdMZWZ0OiAwXG59LCBvd25lclN0YXRlLmVuZEFkb3JubWVudCAmJiB7XG4gIHBhZGRpbmdSaWdodDogMFxufSkpO1xuY29uc3QgT3V0bGluZWRJbnB1dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIE91dGxpbmVkSW5wdXQoaW5Qcm9wcywgcmVmKSB7XG4gIHZhciBfcmVmLCBfc2xvdHMkcm9vdCwgX3JlZjIsIF9zbG90cyRpbnB1dCwgX1JlYWN0JEZyYWdtZW50O1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlPdXRsaW5lZElucHV0J1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY29tcG9uZW50cyA9IHt9LFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICBpbnB1dENvbXBvbmVudCA9ICdpbnB1dCcsXG4gICAgICBsYWJlbCxcbiAgICAgIG11bHRpbGluZSA9IGZhbHNlLFxuICAgICAgbm90Y2hlZCxcbiAgICAgIHNsb3RzID0ge30sXG4gICAgICB0eXBlID0gJ3RleHQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhwcm9wcyk7XG4gIGNvbnN0IG11aUZvcm1Db250cm9sID0gdXNlRm9ybUNvbnRyb2woKTtcbiAgY29uc3QgZmNzID0gZm9ybUNvbnRyb2xTdGF0ZSh7XG4gICAgcHJvcHMsXG4gICAgbXVpRm9ybUNvbnRyb2wsXG4gICAgc3RhdGVzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2ZvY3VzZWQnLCAnaGlkZGVuTGFiZWwnLCAnc2l6ZScsICdyZXF1aXJlZCddXG4gIH0pO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3I6IGZjcy5jb2xvciB8fCAncHJpbWFyeScsXG4gICAgZGlzYWJsZWQ6IGZjcy5kaXNhYmxlZCxcbiAgICBlcnJvcjogZmNzLmVycm9yLFxuICAgIGZvY3VzZWQ6IGZjcy5mb2N1c2VkLFxuICAgIGZvcm1Db250cm9sOiBtdWlGb3JtQ29udHJvbCxcbiAgICBmdWxsV2lkdGgsXG4gICAgaGlkZGVuTGFiZWw6IGZjcy5oaWRkZW5MYWJlbCxcbiAgICBtdWx0aWxpbmUsXG4gICAgc2l6ZTogZmNzLnNpemUsXG4gICAgdHlwZVxuICB9KTtcbiAgY29uc3QgUm9vdFNsb3QgPSAoX3JlZiA9IChfc2xvdHMkcm9vdCA9IHNsb3RzLnJvb3QpICE9IG51bGwgPyBfc2xvdHMkcm9vdCA6IGNvbXBvbmVudHMuUm9vdCkgIT0gbnVsbCA/IF9yZWYgOiBPdXRsaW5lZElucHV0Um9vdDtcbiAgY29uc3QgSW5wdXRTbG90ID0gKF9yZWYyID0gKF9zbG90cyRpbnB1dCA9IHNsb3RzLmlucHV0KSAhPSBudWxsID8gX3Nsb3RzJGlucHV0IDogY29tcG9uZW50cy5JbnB1dCkgIT0gbnVsbCA/IF9yZWYyIDogT3V0bGluZWRJbnB1dElucHV0O1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goSW5wdXRCYXNlLCBfZXh0ZW5kcyh7XG4gICAgc2xvdHM6IHtcbiAgICAgIHJvb3Q6IFJvb3RTbG90LFxuICAgICAgaW5wdXQ6IElucHV0U2xvdFxuICAgIH0sXG4gICAgcmVuZGVyU3VmZml4OiBzdGF0ZSA9PiAvKiNfX1BVUkVfXyovX2pzeChOb3RjaGVkT3V0bGluZVJvb3QsIHtcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMubm90Y2hlZE91dGxpbmUsXG4gICAgICBsYWJlbDogbGFiZWwgIT0gbnVsbCAmJiBsYWJlbCAhPT0gJycgJiYgZmNzLnJlcXVpcmVkID8gX1JlYWN0JEZyYWdtZW50IHx8IChfUmVhY3QkRnJhZ21lbnQgPSAvKiNfX1BVUkVfXyovX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICAgICAgY2hpbGRyZW46IFtsYWJlbCwgXCJcXHUyMDA5XCIsICcqJ11cbiAgICAgIH0pKSA6IGxhYmVsLFxuICAgICAgbm90Y2hlZDogdHlwZW9mIG5vdGNoZWQgIT09ICd1bmRlZmluZWQnID8gbm90Y2hlZCA6IEJvb2xlYW4oc3RhdGUuc3RhcnRBZG9ybm1lbnQgfHwgc3RhdGUuZmlsbGVkIHx8IHN0YXRlLmZvY3VzZWQpXG4gICAgfSksXG4gICAgZnVsbFdpZHRoOiBmdWxsV2lkdGgsXG4gICAgaW5wdXRDb21wb25lbnQ6IGlucHV0Q29tcG9uZW50LFxuICAgIG11bHRpbGluZTogbXVsdGlsaW5lLFxuICAgIHJlZjogcmVmLFxuICAgIHR5cGU6IHR5cGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBfZXh0ZW5kcyh7fSwgY2xhc3Nlcywge1xuICAgICAgbm90Y2hlZE91dGxpbmU6IG51bGxcbiAgICB9KVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IE91dGxpbmVkSW5wdXQucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhpcyBwcm9wIGhlbHBzIHVzZXJzIHRvIGZpbGwgZm9ybXMgZmFzdGVyLCBlc3BlY2lhbGx5IG9uIG1vYmlsZSBkZXZpY2VzLlxuICAgKiBUaGUgbmFtZSBjYW4gYmUgY29uZnVzaW5nLCBhcyBpdCdzIG1vcmUgbGlrZSBhbiBhdXRvZmlsbC5cbiAgICogWW91IGNhbiBsZWFybiBtb3JlIGFib3V0IGl0IFtmb2xsb3dpbmcgdGhlIHNwZWNpZmljYXRpb25dKGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm0tY29udHJvbC1pbmZyYXN0cnVjdHVyZS5odG1sI2F1dG9maWxsKS5cbiAgICovXG4gIGF1dG9Db21wbGV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGBpbnB1dGAgZWxlbWVudCBpcyBmb2N1c2VkIGR1cmluZyB0aGUgZmlyc3QgbW91bnQuXG4gICAqL1xuICBhdXRvRm9jdXM6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGAncHJpbWFyeSdgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50cyB1c2VkIGZvciBlYWNoIHNsb3QgaW5zaWRlLlxuICAgKlxuICAgKiBUaGlzIHByb3AgaXMgYW4gYWxpYXMgZm9yIHRoZSBgc2xvdHNgIHByb3AuXG4gICAqIEl0J3MgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBgc2xvdHNgIHByb3AgaW5zdGVhZC5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGNvbXBvbmVudHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgSW5wdXQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBSb290OiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZS4gVXNlIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgY29udHJvbGxlZC5cbiAgICovXG4gIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogVGhlIHByb3AgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIChgZmFsc2VgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEVuZCBgSW5wdXRBZG9ybm1lbnRgIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIGVuZEFkb3JubWVudDogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIHdpbGwgaW5kaWNhdGUgYW4gZXJyb3IuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSAoYGZhbHNlYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIHdpbGwgdGFrZSB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZnVsbFdpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0ICdpbnB1dCdcbiAgICovXG4gIGlucHV0Q29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBbQXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0F0dHJpYnV0ZXMpIGFwcGxpZWQgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBQYXNzIGEgcmVmIHRvIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBpbnB1dFJlZjogcmVmVHlwZSxcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBvZiB0aGUgYGlucHV0YC4gSXQgaXMgb25seSB1c2VkIGZvciBsYXlvdXQuIFRoZSBhY3R1YWwgbGFiZWxsaW5nXG4gICAqIGlzIGhhbmRsZWQgYnkgYElucHV0TGFiZWxgLlxuICAgKi9cbiAgbGFiZWw6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogSWYgYGRlbnNlYCwgd2lsbCBhZGp1c3QgdmVydGljYWwgc3BhY2luZy4gVGhpcyBpcyBub3JtYWxseSBvYnRhaW5lZCB2aWEgY29udGV4dCBmcm9tXG4gICAqIEZvcm1Db250cm9sLlxuICAgKiBUaGUgcHJvcCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgKGAnbm9uZSdgKSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50IEZvcm1Db250cm9sIGNvbXBvbmVudC5cbiAgICovXG4gIG1hcmdpbjogUHJvcFR5cGVzLm9uZU9mKFsnZGVuc2UnLCAnbm9uZSddKSxcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgdG8gZGlzcGxheSB3aGVuIG11bHRpbGluZSBvcHRpb24gaXMgc2V0IHRvIHRydWUuXG4gICAqL1xuICBtYXhSb3dzOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBNaW5pbXVtIG51bWJlciBvZiByb3dzIHRvIGRpc3BsYXkgd2hlbiBtdWx0aWxpbmUgb3B0aW9uIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgbWluUm93czogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBhIFtUZXh0YXJlYUF1dG9zaXplXSgvbWF0ZXJpYWwtdWkvcmVhY3QtdGV4dGFyZWEtYXV0b3NpemUvKSBlbGVtZW50IGlzIHJlbmRlcmVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgbXVsdGlsaW5lOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE5hbWUgYXR0cmlidXRlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgb3V0bGluZSBpcyBub3RjaGVkIHRvIGFjY29tbW9kYXRlIHRoZSBsYWJlbC5cbiAgICovXG4gIG5vdGNoZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgdmFsdWUgaXMgY2hhbmdlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50IHwgSFRNTElucHV0RWxlbWVudD59IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKiBZb3UgY2FuIHB1bGwgb3V0IHRoZSBuZXcgdmFsdWUgYnkgYWNjZXNzaW5nIGBldmVudC50YXJnZXQudmFsdWVgIChzdHJpbmcpLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHNob3J0IGhpbnQgZGlzcGxheWVkIGluIHRoZSBgaW5wdXRgIGJlZm9yZSB0aGUgdXNlciBlbnRlcnMgYSB2YWx1ZS5cbiAgICovXG4gIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSXQgcHJldmVudHMgdGhlIHVzZXIgZnJvbSBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkXG4gICAqIChub3QgZnJvbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBmaWVsZCkuXG4gICAqL1xuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgaW5wdXRgIGVsZW1lbnQgaXMgcmVxdWlyZWQuXG4gICAqIFRoZSBwcm9wIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSAoYGZhbHNlYCkgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBGb3JtQ29udHJvbCBjb21wb25lbnQuXG4gICAqL1xuICByZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cyB0byBkaXNwbGF5IHdoZW4gbXVsdGlsaW5lIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS5cbiAgICovXG4gIHJvd3M6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqXG4gICAqIFRoaXMgcHJvcCBpcyBhbiBhbGlhcyBmb3IgdGhlIGBjb21wb25lbnRzYCBwcm9wLCB3aGljaCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlucHV0OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgcm9vdDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlXG4gIH0pLFxuICAvKipcbiAgICogU3RhcnQgYElucHV0QWRvcm5tZW50YCBmb3IgdGhpcyBjb21wb25lbnQuXG4gICAqL1xuICBzdGFydEFkb3JubWVudDogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUeXBlIG9mIHRoZSBgaW5wdXRgIGVsZW1lbnQuIEl0IHNob3VsZCBiZSBbYSB2YWxpZCBIVE1MNSBpbnB1dCB0eXBlXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0VsZW1lbnQvaW5wdXQjRm9ybV8lM0NpbnB1dCUzRV90eXBlcykuXG4gICAqIEBkZWZhdWx0ICd0ZXh0J1xuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYGlucHV0YCBlbGVtZW50LCByZXF1aXJlZCBmb3IgYSBjb250cm9sbGVkIGNvbXBvbmVudC5cbiAgICovXG4gIHZhbHVlOiBQcm9wVHlwZXMuYW55XG59IDogdm9pZCAwO1xuT3V0bGluZWRJbnB1dC5tdWlOYW1lID0gJ0lucHV0JztcbmV4cG9ydCBkZWZhdWx0IE91dGxpbmVkSW5wdXQ7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5pbXBvcnQgeyBpbnB1dEJhc2VDbGFzc2VzIH0gZnJvbSAnLi4vSW5wdXRCYXNlJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRPdXRsaW5lZElucHV0VXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlPdXRsaW5lZElucHV0Jywgc2xvdCk7XG59XG5jb25zdCBvdXRsaW5lZElucHV0Q2xhc3NlcyA9IF9leHRlbmRzKHt9LCBpbnB1dEJhc2VDbGFzc2VzLCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlPdXRsaW5lZElucHV0JywgWydyb290JywgJ25vdGNoZWRPdXRsaW5lJywgJ2lucHV0J10pKTtcbmV4cG9ydCBkZWZhdWx0IG91dGxpbmVkSW5wdXRDbGFzc2VzOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXROYXRpdmVTZWxlY3RVdGlsaXR5Q2xhc3NlcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpTmF0aXZlU2VsZWN0Jywgc2xvdCk7XG59XG5jb25zdCBuYXRpdmVTZWxlY3RDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpTmF0aXZlU2VsZWN0JywgWydyb290JywgJ3NlbGVjdCcsICdtdWx0aXBsZScsICdmaWxsZWQnLCAnb3V0bGluZWQnLCAnc3RhbmRhcmQnLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uT3BlbicsICdpY29uRmlsbGVkJywgJ2ljb25PdXRsaW5lZCcsICdpY29uU3RhbmRhcmQnLCAnbmF0aXZlSW5wdXQnLCAnZXJyb3InXSk7XG5leHBvcnQgZGVmYXVsdCBuYXRpdmVTZWxlY3RDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImRpc2FibGVkXCIsIFwiZXJyb3JcIiwgXCJJY29uQ29tcG9uZW50XCIsIFwiaW5wdXRSZWZcIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgbmF0aXZlU2VsZWN0Q2xhc3NlcywgeyBnZXROYXRpdmVTZWxlY3RVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJy4vbmF0aXZlU2VsZWN0Q2xhc3Nlcyc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc2VzLFxuICAgIHZhcmlhbnQsXG4gICAgZGlzYWJsZWQsXG4gICAgbXVsdGlwbGUsXG4gICAgb3BlbixcbiAgICBlcnJvclxuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgc2VsZWN0OiBbJ3NlbGVjdCcsIHZhcmlhbnQsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIG11bHRpcGxlICYmICdtdWx0aXBsZScsIGVycm9yICYmICdlcnJvciddLFxuICAgIGljb246IFsnaWNvbicsIGBpY29uJHtjYXBpdGFsaXplKHZhcmlhbnQpfWAsIG9wZW4gJiYgJ2ljb25PcGVuJywgZGlzYWJsZWQgJiYgJ2Rpc2FibGVkJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXROYXRpdmVTZWxlY3RVdGlsaXR5Q2xhc3NlcywgY2xhc3Nlcyk7XG59O1xuZXhwb3J0IGNvbnN0IG5hdGl2ZVNlbGVjdFNlbGVjdFN0eWxlcyA9ICh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIE1vekFwcGVhcmFuY2U6ICdub25lJyxcbiAgLy8gUmVzZXRcbiAgV2Via2l0QXBwZWFyYW5jZTogJ25vbmUnLFxuICAvLyBSZXNldFxuICAvLyBXaGVuIGludGVyYWN0aW5nIHF1aWNrbHksIHRoZSB0ZXh0IGNhbiBlbmQgdXAgc2VsZWN0ZWQuXG4gIC8vIE5hdGl2ZSBzZWxlY3QgY2FuJ3QgYmUgc2VsZWN0ZWQgZWl0aGVyLlxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIGJvcmRlclJhZGl1czogMCxcbiAgLy8gUmVzZXRcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gICcmOmZvY3VzJzogX2V4dGVuZHMoe30sIHRoZW1lLnZhcnMgPyB7XG4gICAgYmFja2dyb3VuZENvbG9yOiBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS5jb21tb24ub25CYWNrZ3JvdW5kQ2hhbm5lbH0gLyAwLjA1KWBcbiAgfSA6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/ICdyZ2JhKDAsIDAsIDAsIDAuMDUpJyA6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpJ1xuICB9LCB7XG4gICAgYm9yZGVyUmFkaXVzOiAwIC8vIFJlc2V0IENocm9tZSBzdHlsZVxuICB9KSxcblxuICAvLyBSZW1vdmUgSUUxMSBhcnJvd1xuICAnJjo6LW1zLWV4cGFuZCc6IHtcbiAgICBkaXNwbGF5OiAnbm9uZSdcbiAgfSxcbiAgW2AmLiR7bmF0aXZlU2VsZWN0Q2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgIGN1cnNvcjogJ2RlZmF1bHQnXG4gIH0sXG4gICcmW211bHRpcGxlXSc6IHtcbiAgICBoZWlnaHQ6ICdhdXRvJ1xuICB9LFxuICAnJjpub3QoW211bHRpcGxlXSkgb3B0aW9uLCAmOm5vdChbbXVsdGlwbGVdKSBvcHRncm91cCc6IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmJhY2tncm91bmQucGFwZXJcbiAgfSxcbiAgLy8gQnVtcCBzcGVjaWZpY2l0eSB0byBhbGxvdyBleHRlbmRpbmcgY3VzdG9tIGlucHV0c1xuICAnJiYmJzoge1xuICAgIHBhZGRpbmdSaWdodDogMjQsXG4gICAgbWluV2lkdGg6IDE2IC8vIFNvIGl0IGRvZXNuJ3QgY29sbGFwc2UuXG4gIH1cbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2ZpbGxlZCcgJiYge1xuICAnJiYmJzoge1xuICAgIHBhZGRpbmdSaWdodDogMzJcbiAgfVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAnJjpmb2N1cyc6IHtcbiAgICBib3JkZXJSYWRpdXM6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFwZS5ib3JkZXJSYWRpdXMgLy8gUmVzZXQgdGhlIHJlc2V0IGZvciBDaHJvbWUgc3R5bGVcbiAgfSxcblxuICAnJiYmJzoge1xuICAgIHBhZGRpbmdSaWdodDogMzJcbiAgfVxufSk7XG5jb25zdCBOYXRpdmVTZWxlY3RTZWxlY3QgPSBzdHlsZWQoJ3NlbGVjdCcsIHtcbiAgbmFtZTogJ011aU5hdGl2ZVNlbGVjdCcsXG4gIHNsb3Q6ICdTZWxlY3QnLFxuICBzaG91bGRGb3J3YXJkUHJvcDogcm9vdFNob3VsZEZvcndhcmRQcm9wLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnNlbGVjdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIG93bmVyU3RhdGUuZXJyb3IgJiYgc3R5bGVzLmVycm9yLCB7XG4gICAgICBbYCYuJHtuYXRpdmVTZWxlY3RDbGFzc2VzLm11bHRpcGxlfWBdOiBzdHlsZXMubXVsdGlwbGVcbiAgICB9XTtcbiAgfVxufSkobmF0aXZlU2VsZWN0U2VsZWN0U3R5bGVzKTtcbmV4cG9ydCBjb25zdCBuYXRpdmVTZWxlY3RJY29uU3R5bGVzID0gKHtcbiAgb3duZXJTdGF0ZSxcbiAgdGhlbWVcbn0pID0+IF9leHRlbmRzKHtcbiAgLy8gV2UgdXNlIGEgcG9zaXRpb24gYWJzb2x1dGUgb3ZlciBhIGZsZXhib3ggaW4gb3JkZXIgdG8gZm9yd2FyZCB0aGUgcG9pbnRlciBldmVudHNcbiAgLy8gdG8gdGhlIGlucHV0IGFuZCB0byBzdXBwb3J0IHdyYXBwaW5nIHRhZ3MuLlxuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgcmlnaHQ6IDAsXG4gIHRvcDogJ2NhbGMoNTAlIC0gLjVlbSknLFxuICAvLyBDZW50ZXIgdmVydGljYWxseSwgaGVpZ2h0IGlzIDFlbVxuICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIC8vIERvbid0IGJsb2NrIHBvaW50ZXIgZXZlbnRzIG9uIHRoZSBzZWxlY3QgdW5kZXIgdGhlIGljb24uXG4gIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uYWN0aXZlLFxuICBbYCYuJHtuYXRpdmVTZWxlY3RDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICB9XG59LCBvd25lclN0YXRlLm9wZW4gJiYge1xuICB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKSdcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2ZpbGxlZCcgJiYge1xuICByaWdodDogN1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgcmlnaHQ6IDdcbn0pO1xuY29uc3QgTmF0aXZlU2VsZWN0SWNvbiA9IHN0eWxlZCgnc3ZnJywge1xuICBuYW1lOiAnTXVpTmF0aXZlU2VsZWN0JyxcbiAgc2xvdDogJ0ljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmljb24sIG93bmVyU3RhdGUudmFyaWFudCAmJiBzdHlsZXNbYGljb24ke2NhcGl0YWxpemUob3duZXJTdGF0ZS52YXJpYW50KX1gXSwgb3duZXJTdGF0ZS5vcGVuICYmIHN0eWxlcy5pY29uT3Blbl07XG4gIH1cbn0pKG5hdGl2ZVNlbGVjdEljb25TdHlsZXMpO1xuXG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IE5hdGl2ZVNlbGVjdElucHV0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gTmF0aXZlU2VsZWN0SW5wdXQocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCxcbiAgICAgIGVycm9yLFxuICAgICAgSWNvbkNvbXBvbmVudCxcbiAgICAgIGlucHV0UmVmLFxuICAgICAgdmFyaWFudCA9ICdzdGFuZGFyZCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGRpc2FibGVkLFxuICAgIHZhcmlhbnQsXG4gICAgZXJyb3JcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhSZWFjdC5GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBbLyojX19QVVJFX18qL19qc3goTmF0aXZlU2VsZWN0U2VsZWN0LCBfZXh0ZW5kcyh7XG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuc2VsZWN0LCBjbGFzc05hbWUpLFxuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgcmVmOiBpbnB1dFJlZiB8fCByZWZcbiAgICB9LCBvdGhlcikpLCBwcm9wcy5tdWx0aXBsZSA/IG51bGwgOiAvKiNfX1BVUkVfXyovX2pzeChOYXRpdmVTZWxlY3RJY29uLCB7XG4gICAgICBhczogSWNvbkNvbXBvbmVudCxcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuaWNvblxuICAgIH0pXVxuICB9KTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gTmF0aXZlU2VsZWN0SW5wdXQucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogVGhlIG9wdGlvbiBlbGVtZW50cyB0byBwb3B1bGF0ZSB0aGUgc2VsZWN0IHdpdGguXG4gICAqIENhbiBiZSBzb21lIGA8b3B0aW9uPmAgZWxlbWVudHMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIFNlZSBbQ1NTIEFQSV0oI2NzcykgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWUgb2YgdGhlIHNlbGVjdCBlbGVtZW50LlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgc2VsZWN0IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYHNlbGVjdCBpbnB1dGAgd2lsbCBpbmRpY2F0ZSBhbiBlcnJvci5cbiAgICovXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRoYXQgZGlzcGxheXMgdGhlIGFycm93LlxuICAgKi9cbiAgSWNvbkNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBVc2UgdGhhdCBwcm9wIHRvIHBhc3MgYSByZWYgdG8gdGhlIG5hdGl2ZSBzZWxlY3QgZWxlbWVudC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIGlucHV0UmVmOiByZWZUeXBlLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogTmFtZSBhdHRyaWJ1dGUgb2YgdGhlIGBzZWxlY3RgIG9yIGhpZGRlbiBgaW5wdXRgIGVsZW1lbnQuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIG1lbnUgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IFRoZSBldmVudCBzb3VyY2Ugb2YgdGhlIGNhbGxiYWNrLlxuICAgKiBZb3UgY2FuIHB1bGwgb3V0IHRoZSBuZXcgdmFsdWUgYnkgYWNjZXNzaW5nIGBldmVudC50YXJnZXQudmFsdWVgIChzdHJpbmcpLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydzdGFuZGFyZCcsICdvdXRsaW5lZCcsICdmaWxsZWQnXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBOYXRpdmVTZWxlY3RJbnB1dDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0VXRpbGl0eUNsYXNzZXMoc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVNlbGVjdCcsIHNsb3QpO1xufVxuY29uc3Qgc2VsZWN0Q2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVNlbGVjdCcsIFsnc2VsZWN0JywgJ211bHRpcGxlJywgJ2ZpbGxlZCcsICdvdXRsaW5lZCcsICdzdGFuZGFyZCcsICdkaXNhYmxlZCcsICdmb2N1c2VkJywgJ2ljb24nLCAnaWNvbk9wZW4nLCAnaWNvbkZpbGxlZCcsICdpY29uT3V0bGluZWQnLCAnaWNvblN0YW5kYXJkJywgJ25hdGl2ZUlucHV0JywgJ2Vycm9yJ10pO1xuZXhwb3J0IGRlZmF1bHQgc2VsZWN0Q2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgeyBmb3JtYXRNdWlFcnJvck1lc3NhZ2UgYXMgX2Zvcm1hdE11aUVycm9yTWVzc2FnZSB9IGZyb20gXCJAbXVpL3V0aWxzXCI7XG52YXIgX3NwYW47XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhcmlhLWRlc2NyaWJlZGJ5XCIsIFwiYXJpYS1sYWJlbFwiLCBcImF1dG9Gb2N1c1wiLCBcImF1dG9XaWR0aFwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiZGVmYXVsdE9wZW5cIiwgXCJkZWZhdWx0VmFsdWVcIiwgXCJkaXNhYmxlZFwiLCBcImRpc3BsYXlFbXB0eVwiLCBcImVycm9yXCIsIFwiSWNvbkNvbXBvbmVudFwiLCBcImlucHV0UmVmXCIsIFwibGFiZWxJZFwiLCBcIk1lbnVQcm9wc1wiLCBcIm11bHRpcGxlXCIsIFwibmFtZVwiLCBcIm9uQmx1clwiLCBcIm9uQ2hhbmdlXCIsIFwib25DbG9zZVwiLCBcIm9uRm9jdXNcIiwgXCJvbk9wZW5cIiwgXCJvcGVuXCIsIFwicmVhZE9ubHlcIiwgXCJyZW5kZXJWYWx1ZVwiLCBcIlNlbGVjdERpc3BsYXlQcm9wc1wiLCBcInRhYkluZGV4XCIsIFwidHlwZVwiLCBcInZhbHVlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGlzRnJhZ21lbnQgfSBmcm9tICdyZWFjdC1pcyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyByZWZUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgb3duZXJEb2N1bWVudCBmcm9tICcuLi91dGlscy9vd25lckRvY3VtZW50JztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IE1lbnUgZnJvbSAnLi4vTWVudS9NZW51JztcbmltcG9ydCB7IG5hdGl2ZVNlbGVjdFNlbGVjdFN0eWxlcywgbmF0aXZlU2VsZWN0SWNvblN0eWxlcyB9IGZyb20gJy4uL05hdGl2ZVNlbGVjdC9OYXRpdmVTZWxlY3RJbnB1dCc7XG5pbXBvcnQgeyBpc0ZpbGxlZCB9IGZyb20gJy4uL0lucHV0QmFzZS91dGlscyc7XG5pbXBvcnQgc3R5bGVkLCB7IHNsb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgdXNlQ29udHJvbGxlZCBmcm9tICcuLi91dGlscy91c2VDb250cm9sbGVkJztcbmltcG9ydCBzZWxlY3RDbGFzc2VzLCB7IGdldFNlbGVjdFV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnLi9zZWxlY3RDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBTZWxlY3RTZWxlY3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aVNlbGVjdCcsXG4gIHNsb3Q6ICdTZWxlY3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbXG4gICAgLy8gV2luIHNwZWNpZmljaXR5IG92ZXIgdGhlIGlucHV0IGJhc2VcbiAgICB7XG4gICAgICBbYCYuJHtzZWxlY3RDbGFzc2VzLnNlbGVjdH1gXTogc3R5bGVzLnNlbGVjdFxuICAgIH0sIHtcbiAgICAgIFtgJi4ke3NlbGVjdENsYXNzZXMuc2VsZWN0fWBdOiBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XVxuICAgIH0sIHtcbiAgICAgIFtgJi4ke3NlbGVjdENsYXNzZXMuZXJyb3J9YF06IHN0eWxlcy5lcnJvclxuICAgIH0sIHtcbiAgICAgIFtgJi4ke3NlbGVjdENsYXNzZXMubXVsdGlwbGV9YF06IHN0eWxlcy5tdWx0aXBsZVxuICAgIH1dO1xuICB9XG59KShuYXRpdmVTZWxlY3RTZWxlY3RTdHlsZXMsIHtcbiAgLy8gV2luIHNwZWNpZmljaXR5IG92ZXIgdGhlIGlucHV0IGJhc2VcbiAgW2AmLiR7c2VsZWN0Q2xhc3Nlcy5zZWxlY3R9YF06IHtcbiAgICBoZWlnaHQ6ICdhdXRvJyxcbiAgICAvLyBSZXNldHMgZm9yIG11bHRpcGxlIHNlbGVjdCB3aXRoIGNoaXBzXG4gICAgbWluSGVpZ2h0OiAnMS40Mzc1ZW0nLFxuICAgIC8vIFJlcXVpcmVkIGZvciBzZWxlY3RcXHRleHQtZmllbGQgaGVpZ2h0IGNvbnNpc3RlbmN5XG4gICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJ1xuICB9XG59KTtcbmNvbnN0IFNlbGVjdEljb24gPSBzdHlsZWQoJ3N2ZycsIHtcbiAgbmFtZTogJ011aVNlbGVjdCcsXG4gIHNsb3Q6ICdJY29uJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5pY29uLCBvd25lclN0YXRlLnZhcmlhbnQgJiYgc3R5bGVzW2BpY29uJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9YF0sIG93bmVyU3RhdGUub3BlbiAmJiBzdHlsZXMuaWNvbk9wZW5dO1xuICB9XG59KShuYXRpdmVTZWxlY3RJY29uU3R5bGVzKTtcbmNvbnN0IFNlbGVjdE5hdGl2ZUlucHV0ID0gc3R5bGVkKCdpbnB1dCcsIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gc2xvdFNob3VsZEZvcndhcmRQcm9wKHByb3ApICYmIHByb3AgIT09ICdjbGFzc2VzJyxcbiAgbmFtZTogJ011aVNlbGVjdCcsXG4gIHNsb3Q6ICdOYXRpdmVJbnB1dCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLm5hdGl2ZUlucHV0XG59KSh7XG4gIGJvdHRvbTogMCxcbiAgbGVmdDogMCxcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIG9wYWNpdHk6IDAsXG4gIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdcbn0pO1xuZnVuY3Rpb24gYXJlRXF1YWxWYWx1ZXMoYSwgYikge1xuICBpZiAodHlwZW9mIGIgPT09ICdvYmplY3QnICYmIGIgIT09IG51bGwpIHtcbiAgICByZXR1cm4gYSA9PT0gYjtcbiAgfVxuXG4gIC8vIFRoZSB2YWx1ZSBjb3VsZCBiZSBhIG51bWJlciwgdGhlIERPTSB3aWxsIHN0cmluZ2lmeSBpdCBhbnl3YXkuXG4gIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKTtcbn1cbmZ1bmN0aW9uIGlzRW1wdHkoZGlzcGxheSkge1xuICByZXR1cm4gZGlzcGxheSA9PSBudWxsIHx8IHR5cGVvZiBkaXNwbGF5ID09PSAnc3RyaW5nJyAmJiAhZGlzcGxheS50cmltKCk7XG59XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICB2YXJpYW50LFxuICAgIGRpc2FibGVkLFxuICAgIG11bHRpcGxlLFxuICAgIG9wZW4sXG4gICAgZXJyb3JcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHNlbGVjdDogWydzZWxlY3QnLCB2YXJpYW50LCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBtdWx0aXBsZSAmJiAnbXVsdGlwbGUnLCBlcnJvciAmJiAnZXJyb3InXSxcbiAgICBpY29uOiBbJ2ljb24nLCBgaWNvbiR7Y2FwaXRhbGl6ZSh2YXJpYW50KX1gLCBvcGVuICYmICdpY29uT3BlbicsIGRpc2FibGVkICYmICdkaXNhYmxlZCddLFxuICAgIG5hdGl2ZUlucHV0OiBbJ25hdGl2ZUlucHV0J11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRTZWxlY3RVdGlsaXR5Q2xhc3NlcywgY2xhc3Nlcyk7XG59O1xuXG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IFNlbGVjdElucHV0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gU2VsZWN0SW5wdXQocHJvcHMsIHJlZikge1xuICBjb25zdCB7XG4gICAgICAnYXJpYS1kZXNjcmliZWRieSc6IGFyaWFEZXNjcmliZWRieSxcbiAgICAgICdhcmlhLWxhYmVsJzogYXJpYUxhYmVsLFxuICAgICAgYXV0b0ZvY3VzLFxuICAgICAgYXV0b1dpZHRoLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkZWZhdWx0T3BlbixcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZGlzcGxheUVtcHR5LFxuICAgICAgZXJyb3IgPSBmYWxzZSxcbiAgICAgIEljb25Db21wb25lbnQsXG4gICAgICBpbnB1dFJlZjogaW5wdXRSZWZQcm9wLFxuICAgICAgbGFiZWxJZCxcbiAgICAgIE1lbnVQcm9wcyA9IHt9LFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBuYW1lLFxuICAgICAgb25CbHVyLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbkNsb3NlLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIG9uT3BlbixcbiAgICAgIG9wZW46IG9wZW5Qcm9wLFxuICAgICAgcmVhZE9ubHksXG4gICAgICByZW5kZXJWYWx1ZSxcbiAgICAgIFNlbGVjdERpc3BsYXlQcm9wcyA9IHt9LFxuICAgICAgdGFiSW5kZXg6IHRhYkluZGV4UHJvcFxuICAgICAgLy8gY2F0Y2hpbmcgYHR5cGVgIGZyb20gSW5wdXQgd2hpY2ggbWFrZXMgbm8gc2Vuc2UgZm9yIFNlbGVjdElucHV0XG4gICAgICAsXG5cbiAgICAgIHZhbHVlOiB2YWx1ZVByb3AsXG4gICAgICB2YXJpYW50ID0gJ3N0YW5kYXJkJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlU3RhdGVdID0gdXNlQ29udHJvbGxlZCh7XG4gICAgY29udHJvbGxlZDogdmFsdWVQcm9wLFxuICAgIGRlZmF1bHQ6IGRlZmF1bHRWYWx1ZSxcbiAgICBuYW1lOiAnU2VsZWN0J1xuICB9KTtcbiAgY29uc3QgW29wZW5TdGF0ZSwgc2V0T3BlblN0YXRlXSA9IHVzZUNvbnRyb2xsZWQoe1xuICAgIGNvbnRyb2xsZWQ6IG9wZW5Qcm9wLFxuICAgIGRlZmF1bHQ6IGRlZmF1bHRPcGVuLFxuICAgIG5hbWU6ICdTZWxlY3QnXG4gIH0pO1xuICBjb25zdCBpbnB1dFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZGlzcGxheVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgW2Rpc3BsYXlOb2RlLCBzZXREaXNwbGF5Tm9kZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGN1cnJlbnQ6IGlzT3BlbkNvbnRyb2xsZWRcbiAgfSA9IFJlYWN0LnVzZVJlZihvcGVuUHJvcCAhPSBudWxsKTtcbiAgY29uc3QgW21lbnVNaW5XaWR0aFN0YXRlLCBzZXRNZW51TWluV2lkdGhTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZSgpO1xuICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKHJlZiwgaW5wdXRSZWZQcm9wKTtcbiAgY29uc3QgaGFuZGxlRGlzcGxheVJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGRpc3BsYXlSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgaWYgKG5vZGUpIHtcbiAgICAgIHNldERpc3BsYXlOb2RlKG5vZGUpO1xuICAgIH1cbiAgfSwgW10pO1xuICBjb25zdCBhbmNob3JFbGVtZW50ID0gZGlzcGxheU5vZGUgPT0gbnVsbCA/IHZvaWQgMCA6IGRpc3BsYXlOb2RlLnBhcmVudE5vZGU7XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoaGFuZGxlUmVmLCAoKSA9PiAoe1xuICAgIGZvY3VzOiAoKSA9PiB7XG4gICAgICBkaXNwbGF5UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9LFxuICAgIG5vZGU6IGlucHV0UmVmLmN1cnJlbnQsXG4gICAgdmFsdWVcbiAgfSksIFt2YWx1ZV0pO1xuXG4gIC8vIFJlc2l6ZSBtZW51IG9uIGBkZWZhdWx0T3BlbmAgYXV0b21hdGljIHRvZ2dsZS5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdE9wZW4gJiYgb3BlblN0YXRlICYmIGRpc3BsYXlOb2RlICYmICFpc09wZW5Db250cm9sbGVkKSB7XG4gICAgICBzZXRNZW51TWluV2lkdGhTdGF0ZShhdXRvV2lkdGggPyBudWxsIDogYW5jaG9yRWxlbWVudC5jbGllbnRXaWR0aCk7XG4gICAgICBkaXNwbGF5UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbZGlzcGxheU5vZGUsIGF1dG9XaWR0aF0pO1xuICAvLyBgaXNPcGVuQ29udHJvbGxlZGAgaXMgaWdub3JlZCBiZWNhdXNlIHRoZSBjb21wb25lbnQgc2hvdWxkIG5ldmVyIHN3aXRjaCBiZXR3ZWVuIGNvbnRyb2xsZWQgYW5kIHVuY29udHJvbGxlZCBtb2Rlcy5cbiAgLy8gYGRlZmF1bHRPcGVuYCBhbmQgYG9wZW5TdGF0ZWAgYXJlIGlnbm9yZWQgdG8gYXZvaWQgdW5uZWNlc3NhcnkgY2FsbGJhY2tzLlxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhdXRvRm9jdXMpIHtcbiAgICAgIGRpc3BsYXlSZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSwgW2F1dG9Gb2N1c10pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbGFiZWxJZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgbGFiZWwgPSBvd25lckRvY3VtZW50KGRpc3BsYXlSZWYuY3VycmVudCkuZ2V0RWxlbWVudEJ5SWQobGFiZWxJZCk7XG4gICAgaWYgKGxhYmVsKSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4ge1xuICAgICAgICBpZiAoZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICBkaXNwbGF5UmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcik7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBsYWJlbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW2xhYmVsSWRdKTtcbiAgY29uc3QgdXBkYXRlID0gKG9wZW4sIGV2ZW50KSA9PiB7XG4gICAgaWYgKG9wZW4pIHtcbiAgICAgIGlmIChvbk9wZW4pIHtcbiAgICAgICAgb25PcGVuKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9uQ2xvc2UpIHtcbiAgICAgIG9uQ2xvc2UoZXZlbnQpO1xuICAgIH1cbiAgICBpZiAoIWlzT3BlbkNvbnRyb2xsZWQpIHtcbiAgICAgIHNldE1lbnVNaW5XaWR0aFN0YXRlKGF1dG9XaWR0aCA/IG51bGwgOiBhbmNob3JFbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICAgIHNldE9wZW5TdGF0ZShvcGVuKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IGV2ZW50ID0+IHtcbiAgICAvLyBJZ25vcmUgZXZlcnl0aGluZyBidXQgbGVmdC1jbGlja1xuICAgIGlmIChldmVudC5idXR0b24gIT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gSGlqYWNrIHRoZSBkZWZhdWx0IGZvY3VzIGJlaGF2aW9yLlxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZGlzcGxheVJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgdXBkYXRlKHRydWUsIGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSBldmVudCA9PiB7XG4gICAgdXBkYXRlKGZhbHNlLCBldmVudCk7XG4gIH07XG4gIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSBSZWFjdC5DaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcblxuICAvLyBTdXBwb3J0IGF1dG9maWxsLlxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSBldmVudCA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBjaGlsZHJlbkFycmF5LmZpbmQoY2hpbGRJdGVtID0+IGNoaWxkSXRlbS5wcm9wcy52YWx1ZSA9PT0gZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICBpZiAoY2hpbGQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzZXRWYWx1ZVN0YXRlKGNoaWxkLnByb3BzLnZhbHVlKTtcbiAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgIG9uQ2hhbmdlKGV2ZW50LCBjaGlsZCk7XG4gICAgfVxuICB9O1xuICBjb25zdCBoYW5kbGVJdGVtQ2xpY2sgPSBjaGlsZCA9PiBldmVudCA9PiB7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgLy8gV2UgdXNlIHRoZSB0YWJpbmRleCBhdHRyaWJ1dGUgdG8gc2lnbmFsIHRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAgICBpZiAoIWV2ZW50LmN1cnJlbnRUYXJnZXQuaGFzQXR0cmlidXRlKCd0YWJpbmRleCcpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgbmV3VmFsdWUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNsaWNlKCkgOiBbXTtcbiAgICAgIGNvbnN0IGl0ZW1JbmRleCA9IHZhbHVlLmluZGV4T2YoY2hpbGQucHJvcHMudmFsdWUpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA9PT0gLTEpIHtcbiAgICAgICAgbmV3VmFsdWUucHVzaChjaGlsZC5wcm9wcy52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdWYWx1ZS5zcGxpY2UoaXRlbUluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjaGlsZC5wcm9wcy52YWx1ZTtcbiAgICB9XG4gICAgaWYgKGNoaWxkLnByb3BzLm9uQ2xpY2spIHtcbiAgICAgIGNoaWxkLnByb3BzLm9uQ2xpY2soZXZlbnQpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICBzZXRWYWx1ZVN0YXRlKG5ld1ZhbHVlKTtcbiAgICAgIGlmIChvbkNoYW5nZSkge1xuICAgICAgICAvLyBSZWRlZmluZSB0YXJnZXQgdG8gYWxsb3cgbmFtZSBhbmQgdmFsdWUgdG8gYmUgcmVhZC5cbiAgICAgICAgLy8gVGhpcyBhbGxvd3Mgc2VhbWxlc3MgaW50ZWdyYXRpb24gd2l0aCB0aGUgbW9zdCBwb3B1bGFyIGZvcm0gbGlicmFyaWVzLlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8xMzQ4NSNpc3N1ZWNvbW1lbnQtNjc2MDQ4NDkyXG4gICAgICAgIC8vIENsb25lIHRoZSBldmVudCB0byBub3Qgb3ZlcnJpZGUgYHRhcmdldGAgb2YgdGhlIG9yaWdpbmFsIGV2ZW50LlxuICAgICAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50IHx8IGV2ZW50O1xuICAgICAgICBjb25zdCBjbG9uZWRFdmVudCA9IG5ldyBuYXRpdmVFdmVudC5jb25zdHJ1Y3RvcihuYXRpdmVFdmVudC50eXBlLCBuYXRpdmVFdmVudCk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjbG9uZWRFdmVudCwgJ3RhcmdldCcsIHtcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlLFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIG9uQ2hhbmdlKGNsb25lZEV2ZW50LCBjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbXVsdGlwbGUpIHtcbiAgICAgIHVwZGF0ZShmYWxzZSwgZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IGV2ZW50ID0+IHtcbiAgICBpZiAoIXJlYWRPbmx5KSB7XG4gICAgICBjb25zdCB2YWxpZEtleXMgPSBbJyAnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nLFxuICAgICAgLy8gVGhlIG5hdGl2ZSBzZWxlY3QgZG9lc24ndCByZXNwb25kIHRvIGVudGVyIG9uIG1hY09TLCBidXQgaXQncyByZWNvbW1lbmRlZCBieVxuICAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1dBSS9BUklBL2FwZy9wYXR0ZXJucy9jb21ib2JveC9leGFtcGxlcy9jb21ib2JveC1zZWxlY3Qtb25seS9cbiAgICAgICdFbnRlciddO1xuICAgICAgaWYgKHZhbGlkS2V5cy5pbmRleE9mKGV2ZW50LmtleSkgIT09IC0xKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHVwZGF0ZSh0cnVlLCBldmVudCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBjb25zdCBvcGVuID0gZGlzcGxheU5vZGUgIT09IG51bGwgJiYgb3BlblN0YXRlO1xuICBjb25zdCBoYW5kbGVCbHVyID0gZXZlbnQgPT4ge1xuICAgIC8vIGlmIG9wZW4gZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uXG4gICAgaWYgKCFvcGVuICYmIG9uQmx1cikge1xuICAgICAgLy8gUHJlYWN0IHN1cHBvcnQsIHRhcmdldCBpcyByZWFkIG9ubHkgcHJvcGVydHkgb24gYSBuYXRpdmUgZXZlbnQuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICd0YXJnZXQnLCB7XG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBvbkJsdXIoZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgZGVsZXRlIG90aGVyWydhcmlhLWludmFsaWQnXTtcbiAgbGV0IGRpc3BsYXk7XG4gIGxldCBkaXNwbGF5U2luZ2xlO1xuICBjb25zdCBkaXNwbGF5TXVsdGlwbGUgPSBbXTtcbiAgbGV0IGNvbXB1dGVEaXNwbGF5ID0gZmFsc2U7XG4gIGxldCBmb3VuZE1hdGNoID0gZmFsc2U7XG5cbiAgLy8gTm8gbmVlZCB0byBkaXNwbGF5IGFueSB2YWx1ZSBpZiB0aGUgZmllbGQgaXMgZW1wdHkuXG4gIGlmIChpc0ZpbGxlZCh7XG4gICAgdmFsdWVcbiAgfSkgfHwgZGlzcGxheUVtcHR5KSB7XG4gICAgaWYgKHJlbmRlclZhbHVlKSB7XG4gICAgICBkaXNwbGF5ID0gcmVuZGVyVmFsdWUodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wdXRlRGlzcGxheSA9IHRydWU7XG4gICAgfVxuICB9XG4gIGNvbnN0IGl0ZW1zID0gY2hpbGRyZW5BcnJheS5tYXAoY2hpbGQgPT4ge1xuICAgIGlmICghIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGlzRnJhZ21lbnQoY2hpbGQpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoW1wiTVVJOiBUaGUgU2VsZWN0IGNvbXBvbmVudCBkb2Vzbid0IGFjY2VwdCBhIEZyYWdtZW50IGFzIGEgY2hpbGQuXCIsICdDb25zaWRlciBwcm92aWRpbmcgYW4gYXJyYXkgaW5zdGVhZC4nXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBzZWxlY3RlZDtcbiAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGBNVUk6IFRoZSBcXGB2YWx1ZVxcYCBwcm9wIG11c3QgYmUgYW4gYXJyYXkgd2hlbiB1c2luZyB0aGUgXFxgU2VsZWN0XFxgIGNvbXBvbmVudCB3aXRoIFxcYG11bHRpcGxlXFxgLmAgOiBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlKDIpKTtcbiAgICAgIH1cbiAgICAgIHNlbGVjdGVkID0gdmFsdWUuc29tZSh2ID0+IGFyZUVxdWFsVmFsdWVzKHYsIGNoaWxkLnByb3BzLnZhbHVlKSk7XG4gICAgICBpZiAoc2VsZWN0ZWQgJiYgY29tcHV0ZURpc3BsYXkpIHtcbiAgICAgICAgZGlzcGxheU11bHRpcGxlLnB1c2goY2hpbGQucHJvcHMuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZCA9IGFyZUVxdWFsVmFsdWVzKHZhbHVlLCBjaGlsZC5wcm9wcy52YWx1ZSk7XG4gICAgICBpZiAoc2VsZWN0ZWQgJiYgY29tcHV0ZURpc3BsYXkpIHtcbiAgICAgICAgZGlzcGxheVNpbmdsZSA9IGNoaWxkLnByb3BzLmNoaWxkcmVuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgIGZvdW5kTWF0Y2ggPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiBzZWxlY3RlZCA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICBvbkNsaWNrOiBoYW5kbGVJdGVtQ2xpY2soY2hpbGQpLFxuICAgICAgb25LZXlVcDogZXZlbnQgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgICAgICAvLyBvdGhlcndpc2Ugb3VyIE1lbnVJdGVtcyBkaXNwYXRjaGVzIGEgY2xpY2sgZXZlbnRcbiAgICAgICAgICAvLyBpdCdzIG5vdCBiZWhhdmlvciBvZiB0aGUgbmF0aXZlIDxvcHRpb24+IGFuZCBjYXVzZXNcbiAgICAgICAgICAvLyB0aGUgc2VsZWN0IHRvIGNsb3NlIGltbWVkaWF0ZWx5IHNpbmNlIHdlIG9wZW4gb24gc3BhY2Uga2V5ZG93blxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkLnByb3BzLm9uS2V5VXApIHtcbiAgICAgICAgICBjaGlsZC5wcm9wcy5vbktleVVwKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJvbGU6ICdvcHRpb24nLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgLy8gVGhlIHZhbHVlIGlzIG1vc3QgbGlrZWx5IG5vdCBhIHZhbGlkIEhUTUwgYXR0cmlidXRlLlxuICAgICAgJ2RhdGEtdmFsdWUnOiBjaGlsZC5wcm9wcy52YWx1ZSAvLyBJbnN0ZWFkLCB3ZSBwcm92aWRlIGl0IGFzIGEgZGF0YSBhdHRyaWJ1dGUuXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghZm91bmRNYXRjaCAmJiAhbXVsdGlwbGUgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IGNoaWxkcmVuQXJyYXkubWFwKGNoaWxkID0+IGNoaWxkLnByb3BzLnZhbHVlKTtcbiAgICAgICAgY29uc29sZS53YXJuKFtgTVVJOiBZb3UgaGF2ZSBwcm92aWRlZCBhbiBvdXQtb2YtcmFuZ2UgdmFsdWUgXFxgJHt2YWx1ZX1cXGAgZm9yIHRoZSBzZWxlY3QgJHtuYW1lID8gYChuYW1lPVwiJHtuYW1lfVwiKSBgIDogJyd9Y29tcG9uZW50LmAsIFwiQ29uc2lkZXIgcHJvdmlkaW5nIGEgdmFsdWUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgb3IgJycuXCIsIGBUaGUgYXZhaWxhYmxlIHZhbHVlcyBhcmUgJHt2YWx1ZXMuZmlsdGVyKHggPT4geCAhPSBudWxsKS5tYXAoeCA9PiBgXFxgJHt4fVxcYGApLmpvaW4oJywgJykgfHwgJ1wiXCInfS5gXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfSwgW2ZvdW5kTWF0Y2gsIGNoaWxkcmVuQXJyYXksIG11bHRpcGxlLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG4gIGlmIChjb21wdXRlRGlzcGxheSkge1xuICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgaWYgKGRpc3BsYXlNdWx0aXBsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGlzcGxheSA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXNwbGF5ID0gZGlzcGxheU11bHRpcGxlLnJlZHVjZSgob3V0cHV0LCBjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBvdXRwdXQucHVzaChjaGlsZCk7XG4gICAgICAgICAgaWYgKGluZGV4IDwgZGlzcGxheU11bHRpcGxlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG91dHB1dC5wdXNoKCcsICcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9LCBbXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BsYXkgPSBkaXNwbGF5U2luZ2xlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEF2b2lkIHBlcmZvcm1pbmcgYSBsYXlvdXQgY29tcHV0YXRpb24gaW4gdGhlIHJlbmRlciBtZXRob2QuXG4gIGxldCBtZW51TWluV2lkdGggPSBtZW51TWluV2lkdGhTdGF0ZTtcbiAgaWYgKCFhdXRvV2lkdGggJiYgaXNPcGVuQ29udHJvbGxlZCAmJiBkaXNwbGF5Tm9kZSkge1xuICAgIG1lbnVNaW5XaWR0aCA9IGFuY2hvckVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIH1cbiAgbGV0IHRhYkluZGV4O1xuICBpZiAodHlwZW9mIHRhYkluZGV4UHJvcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0YWJJbmRleCA9IHRhYkluZGV4UHJvcDtcbiAgfSBlbHNlIHtcbiAgICB0YWJJbmRleCA9IGRpc2FibGVkID8gbnVsbCA6IDA7XG4gIH1cbiAgY29uc3QgYnV0dG9uSWQgPSBTZWxlY3REaXNwbGF5UHJvcHMuaWQgfHwgKG5hbWUgPyBgbXVpLWNvbXBvbmVudC1zZWxlY3QtJHtuYW1lfWAgOiB1bmRlZmluZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgdmFyaWFudCxcbiAgICB2YWx1ZSxcbiAgICBvcGVuLFxuICAgIGVycm9yXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogWy8qI19fUFVSRV9fKi9fanN4KFNlbGVjdFNlbGVjdCwgX2V4dGVuZHMoe1xuICAgICAgcmVmOiBoYW5kbGVEaXNwbGF5UmVmLFxuICAgICAgdGFiSW5kZXg6IHRhYkluZGV4LFxuICAgICAgcm9sZTogXCJidXR0b25cIixcbiAgICAgIFwiYXJpYS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICd0cnVlJyA6IHVuZGVmaW5lZCxcbiAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBvcGVuID8gJ3RydWUnIDogJ2ZhbHNlJyxcbiAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImxpc3Rib3hcIixcbiAgICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBbbGFiZWxJZCwgYnV0dG9uSWRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcgJykgfHwgdW5kZWZpbmVkLFxuICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGFyaWFEZXNjcmliZWRieSxcbiAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgIG9uTW91c2VEb3duOiBkaXNhYmxlZCB8fCByZWFkT25seSA/IG51bGwgOiBoYW5kbGVNb3VzZURvd24sXG4gICAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgICBvbkZvY3VzOiBvbkZvY3VzXG4gICAgfSwgU2VsZWN0RGlzcGxheVByb3BzLCB7XG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KFNlbGVjdERpc3BsYXlQcm9wcy5jbGFzc05hbWUsIGNsYXNzZXMuc2VsZWN0LCBjbGFzc05hbWUpXG4gICAgICAvLyBUaGUgaWQgaXMgcmVxdWlyZWQgZm9yIHByb3BlciBhMTF5XG4gICAgICAsXG4gICAgICBpZDogYnV0dG9uSWQsXG4gICAgICBjaGlsZHJlbjogaXNFbXB0eShkaXNwbGF5KSA/IC8vIG5vdHJhbnNsYXRlIG5lZWRlZCB3aGlsZSBHb29nbGUgVHJhbnNsYXRlIHdpbGwgbm90IGZpeCB6ZXJvLXdpZHRoIHNwYWNlIGlzc3VlXG4gICAgICBfc3BhbiB8fCAoX3NwYW4gPSAvKiNfX1BVUkVfXyovX2pzeChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwibm90cmFuc2xhdGVcIixcbiAgICAgICAgY2hpbGRyZW46IFwiXFx1MjAwQlwiXG4gICAgICB9KSkgOiBkaXNwbGF5XG4gICAgfSkpLCAvKiNfX1BVUkVfXyovX2pzeChTZWxlY3ROYXRpdmVJbnB1dCwgX2V4dGVuZHMoe1xuICAgICAgXCJhcmlhLWludmFsaWRcIjogZXJyb3IsXG4gICAgICB2YWx1ZTogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5qb2luKCcsJykgOiB2YWx1ZSxcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICByZWY6IGlucHV0UmVmLFxuICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgb25DaGFuZ2U6IGhhbmRsZUNoYW5nZSxcbiAgICAgIHRhYkluZGV4OiAtMSxcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5uYXRpdmVJbnB1dCxcbiAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZVxuICAgIH0sIG90aGVyKSksIC8qI19fUFVSRV9fKi9fanN4KFNlbGVjdEljb24sIHtcbiAgICAgIGFzOiBJY29uQ29tcG9uZW50LFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmljb24sXG4gICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gICAgfSksIC8qI19fUFVSRV9fKi9fanN4KE1lbnUsIF9leHRlbmRzKHtcbiAgICAgIGlkOiBgbWVudS0ke25hbWUgfHwgJyd9YCxcbiAgICAgIGFuY2hvckVsOiBhbmNob3JFbGVtZW50LFxuICAgICAgb3Blbjogb3BlbixcbiAgICAgIG9uQ2xvc2U6IGhhbmRsZUNsb3NlLFxuICAgICAgYW5jaG9yT3JpZ2luOiB7XG4gICAgICAgIHZlcnRpY2FsOiAnYm90dG9tJyxcbiAgICAgICAgaG9yaXpvbnRhbDogJ2NlbnRlcidcbiAgICAgIH0sXG4gICAgICB0cmFuc2Zvcm1PcmlnaW46IHtcbiAgICAgICAgdmVydGljYWw6ICd0b3AnLFxuICAgICAgICBob3Jpem9udGFsOiAnY2VudGVyJ1xuICAgICAgfVxuICAgIH0sIE1lbnVQcm9wcywge1xuICAgICAgTWVudUxpc3RQcm9wczogX2V4dGVuZHMoe1xuICAgICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogbGFiZWxJZCxcbiAgICAgICAgcm9sZTogJ2xpc3Rib3gnLFxuICAgICAgICBkaXNhYmxlTGlzdFdyYXA6IHRydWVcbiAgICAgIH0sIE1lbnVQcm9wcy5NZW51TGlzdFByb3BzKSxcbiAgICAgIFBhcGVyUHJvcHM6IF9leHRlbmRzKHt9LCBNZW51UHJvcHMuUGFwZXJQcm9wcywge1xuICAgICAgICBzdHlsZTogX2V4dGVuZHMoe1xuICAgICAgICAgIG1pbldpZHRoOiBtZW51TWluV2lkdGhcbiAgICAgICAgfSwgTWVudVByb3BzLlBhcGVyUHJvcHMgIT0gbnVsbCA/IE1lbnVQcm9wcy5QYXBlclByb3BzLnN0eWxlIDogbnVsbClcbiAgICAgIH0pLFxuICAgICAgY2hpbGRyZW46IGl0ZW1zXG4gICAgfSkpXVxuICB9KTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gU2VsZWN0SW5wdXQucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgJ2FyaWEtZGVzY3JpYmVkYnknOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgJ2FyaWEtbGFiZWwnOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgYXV0b0ZvY3VzOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHdpZHRoIG9mIHRoZSBwb3BvdmVyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBpdGVtcyBpbnNpZGUgdGhlXG4gICAqIG1lbnUsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGF0IGxlYXN0IHRoZSB3aWR0aCBvZiB0aGUgc2VsZWN0IGlucHV0LlxuICAgKi9cbiAgYXV0b1dpZHRoOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBvcHRpb24gZWxlbWVudHMgdG8gcG9wdWxhdGUgdGhlIHNlbGVjdCB3aXRoLlxuICAgKiBDYW4gYmUgc29tZSBgPE1lbnVJdGVtPmAgZWxlbWVudHMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIFNlZSBbQ1NTIEFQSV0oI2NzcykgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWUgb2YgdGhlIHNlbGVjdCBlbGVtZW50LlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIHRvZ2dsZWQgb24gbW91bnQuIFVzZSB3aGVuIHRoZSBjb21wb25lbnQgb3BlbiBzdGF0ZSBpcyBub3QgY29udHJvbGxlZC5cbiAgICogWW91IGNhbiBvbmx5IHVzZSBpdCB3aGVuIHRoZSBgbmF0aXZlYCBwcm9wIGlzIGBmYWxzZWAgKGRlZmF1bHQpLlxuICAgKi9cbiAgZGVmYXVsdE9wZW46IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUuIFVzZSB3aGVuIHRoZSBjb21wb25lbnQgaXMgbm90IGNvbnRyb2xsZWQuXG4gICAqL1xuICBkZWZhdWx0VmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzZWxlY3QgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzZWxlY3RlZCBpdGVtIGlzIGRpc3BsYXllZCBldmVuIGlmIGl0cyB2YWx1ZSBpcyBlbXB0eS5cbiAgICovXG4gIGRpc3BsYXlFbXB0eTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBgc2VsZWN0IGlucHV0YCB3aWxsIGluZGljYXRlIGFuIGVycm9yLlxuICAgKi9cbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGljb24gdGhhdCBkaXNwbGF5cyB0aGUgYXJyb3cuXG4gICAqL1xuICBJY29uQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIEltcGVyYXRpdmUgaGFuZGxlIGltcGxlbWVudGluZyBgeyB2YWx1ZTogVCwgbm9kZTogSFRNTEVsZW1lbnQsIGZvY3VzKCk6IHZvaWQgfWBcbiAgICogRXF1aXZhbGVudCB0byBgcmVmYFxuICAgKi9cbiAgaW5wdXRSZWY6IHJlZlR5cGUsXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgYW4gZWxlbWVudCB0aGF0IGFjdHMgYXMgYW4gYWRkaXRpb25hbCBsYWJlbC4gVGhlIFNlbGVjdCB3aWxsXG4gICAqIGJlIGxhYmVsbGVkIGJ5IHRoZSBhZGRpdGlvbmFsIGxhYmVsIGFuZCB0aGUgc2VsZWN0ZWQgdmFsdWUuXG4gICAqL1xuICBsYWJlbElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgW2BNZW51YF0oL21hdGVyaWFsLXVpL2FwaS9tZW51LykgZWxlbWVudC5cbiAgICovXG4gIE1lbnVQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYHZhbHVlYCBtdXN0IGJlIGFuIGFycmF5IGFuZCB0aGUgbWVudSB3aWxsIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy5cbiAgICovXG4gIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIE5hbWUgYXR0cmlidXRlIG9mIHRoZSBgc2VsZWN0YCBvciBoaWRkZW4gYGlucHV0YCBlbGVtZW50LlxuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQmx1cjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIGEgbWVudSBpdGVtIGlzIHNlbGVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqIFlvdSBjYW4gcHVsbCBvdXQgdGhlIG5ldyB2YWx1ZSBieSBhY2Nlc3NpbmcgYGV2ZW50LnRhcmdldC52YWx1ZWAgKGFueSkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbY2hpbGRdIFRoZSByZWFjdCBlbGVtZW50IHRoYXQgd2FzIHNlbGVjdGVkLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IHJlcXVlc3RzIHRvIGJlIGNsb3NlZC5cbiAgICogVXNlIGluIGNvbnRyb2xsZWQgbW9kZSAoc2VlIG9wZW4pLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqL1xuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IHJlcXVlc3RzIHRvIGJlIG9wZW5lZC5cbiAgICogVXNlIGluIGNvbnRyb2xsZWQgbW9kZSAoc2VlIG9wZW4pLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqL1xuICBvbk9wZW46IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIHNob3duLlxuICAgKi9cbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlIHNlbGVjdGVkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgVGhlIGB2YWx1ZWAgcHJvdmlkZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMge1JlYWN0Tm9kZX1cbiAgICovXG4gIHJlbmRlclZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIGNsaWNrYWJsZSBkaXYgZWxlbWVudC5cbiAgICovXG4gIFNlbGVjdERpc3BsYXlQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMuYW55LFxuICAvKipcbiAgICogVGhlIGlucHV0IHZhbHVlLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydzdGFuZGFyZCcsICdvdXRsaW5lZCcsICdmaWxsZWQnXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBTZWxlY3RJbnB1dDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhdXRvV2lkdGhcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzZXNcIiwgXCJjbGFzc05hbWVcIiwgXCJkZWZhdWx0T3BlblwiLCBcImRpc3BsYXlFbXB0eVwiLCBcIkljb25Db21wb25lbnRcIiwgXCJpZFwiLCBcImlucHV0XCIsIFwiaW5wdXRQcm9wc1wiLCBcImxhYmVsXCIsIFwibGFiZWxJZFwiLCBcIk1lbnVQcm9wc1wiLCBcIm11bHRpcGxlXCIsIFwibmF0aXZlXCIsIFwib25DbG9zZVwiLCBcIm9uT3BlblwiLCBcIm9wZW5cIiwgXCJyZW5kZXJWYWx1ZVwiLCBcIlNlbGVjdERpc3BsYXlQcm9wc1wiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBTZWxlY3RJbnB1dCBmcm9tICcuL1NlbGVjdElucHV0JztcbmltcG9ydCBmb3JtQ29udHJvbFN0YXRlIGZyb20gJy4uL0Zvcm1Db250cm9sL2Zvcm1Db250cm9sU3RhdGUnO1xuaW1wb3J0IHVzZUZvcm1Db250cm9sIGZyb20gJy4uL0Zvcm1Db250cm9sL3VzZUZvcm1Db250cm9sJztcbmltcG9ydCBBcnJvd0Ryb3BEb3duSWNvbiBmcm9tICcuLi9pbnRlcm5hbC9zdmctaWNvbnMvQXJyb3dEcm9wRG93bic7XG5pbXBvcnQgSW5wdXQgZnJvbSAnLi4vSW5wdXQnO1xuaW1wb3J0IE5hdGl2ZVNlbGVjdElucHV0IGZyb20gJy4uL05hdGl2ZVNlbGVjdC9OYXRpdmVTZWxlY3RJbnB1dCc7XG5pbXBvcnQgRmlsbGVkSW5wdXQgZnJvbSAnLi4vRmlsbGVkSW5wdXQnO1xuaW1wb3J0IE91dGxpbmVkSW5wdXQgZnJvbSAnLi4vT3V0bGluZWRJbnB1dCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCBzdHlsZWQsIHsgcm9vdFNob3VsZEZvcndhcmRQcm9wIH0gZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIHJldHVybiBjbGFzc2VzO1xufTtcbmNvbnN0IHN0eWxlZFJvb3RDb25maWcgPSB7XG4gIG5hbWU6ICdNdWlTZWxlY3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlcy5yb290LFxuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgJiYgcHJvcCAhPT0gJ3ZhcmlhbnQnLFxuICBzbG90OiAnUm9vdCdcbn07XG5jb25zdCBTdHlsZWRJbnB1dCA9IHN0eWxlZChJbnB1dCwgc3R5bGVkUm9vdENvbmZpZykoJycpO1xuY29uc3QgU3R5bGVkT3V0bGluZWRJbnB1dCA9IHN0eWxlZChPdXRsaW5lZElucHV0LCBzdHlsZWRSb290Q29uZmlnKSgnJyk7XG5jb25zdCBTdHlsZWRGaWxsZWRJbnB1dCA9IHN0eWxlZChGaWxsZWRJbnB1dCwgc3R5bGVkUm9vdENvbmZpZykoJycpO1xuY29uc3QgU2VsZWN0ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gU2VsZWN0KGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIG5hbWU6ICdNdWlTZWxlY3QnLFxuICAgIHByb3BzOiBpblByb3BzXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBhdXRvV2lkdGggPSBmYWxzZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NlczogY2xhc3Nlc1Byb3AgPSB7fSxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRlZmF1bHRPcGVuID0gZmFsc2UsXG4gICAgICBkaXNwbGF5RW1wdHkgPSBmYWxzZSxcbiAgICAgIEljb25Db21wb25lbnQgPSBBcnJvd0Ryb3BEb3duSWNvbixcbiAgICAgIGlkLFxuICAgICAgaW5wdXQsXG4gICAgICBpbnB1dFByb3BzLFxuICAgICAgbGFiZWwsXG4gICAgICBsYWJlbElkLFxuICAgICAgTWVudVByb3BzLFxuICAgICAgbXVsdGlwbGUgPSBmYWxzZSxcbiAgICAgIG5hdGl2ZSA9IGZhbHNlLFxuICAgICAgb25DbG9zZSxcbiAgICAgIG9uT3BlbixcbiAgICAgIG9wZW4sXG4gICAgICByZW5kZXJWYWx1ZSxcbiAgICAgIFNlbGVjdERpc3BsYXlQcm9wcyxcbiAgICAgIHZhcmlhbnQ6IHZhcmlhbnRQcm9wID0gJ291dGxpbmVkJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBpbnB1dENvbXBvbmVudCA9IG5hdGl2ZSA/IE5hdGl2ZVNlbGVjdElucHV0IDogU2VsZWN0SW5wdXQ7XG4gIGNvbnN0IG11aUZvcm1Db250cm9sID0gdXNlRm9ybUNvbnRyb2woKTtcbiAgY29uc3QgZmNzID0gZm9ybUNvbnRyb2xTdGF0ZSh7XG4gICAgcHJvcHMsXG4gICAgbXVpRm9ybUNvbnRyb2wsXG4gICAgc3RhdGVzOiBbJ3ZhcmlhbnQnLCAnZXJyb3InXVxuICB9KTtcbiAgY29uc3QgdmFyaWFudCA9IGZjcy52YXJpYW50IHx8IHZhcmlhbnRQcm9wO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzOiBjbGFzc2VzUHJvcFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBJbnB1dENvbXBvbmVudCA9IGlucHV0IHx8IHtcbiAgICBzdGFuZGFyZDogLyojX19QVVJFX18qL19qc3goU3R5bGVkSW5wdXQsIHtcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgICB9KSxcbiAgICBvdXRsaW5lZDogLyojX19QVVJFX18qL19qc3goU3R5bGVkT3V0bGluZWRJbnB1dCwge1xuICAgICAgbGFiZWw6IGxhYmVsLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZVxuICAgIH0pLFxuICAgIGZpbGxlZDogLyojX19QVVJFX18qL19qc3goU3R5bGVkRmlsbGVkSW5wdXQsIHtcbiAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGVcbiAgICB9KVxuICB9W3ZhcmlhbnRdO1xuICBjb25zdCBpbnB1dENvbXBvbmVudFJlZiA9IHVzZUZvcmtSZWYocmVmLCBJbnB1dENvbXBvbmVudC5yZWYpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUmVhY3QuRnJhZ21lbnQsIHtcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChJbnB1dENvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgICAgLy8gTW9zdCBvZiB0aGUgbG9naWMgaXMgaW1wbGVtZW50ZWQgaW4gYFNlbGVjdElucHV0YC5cbiAgICAgIC8vIFRoZSBgU2VsZWN0YCBjb21wb25lbnQgaXMgYSBzaW1wbGUgQVBJIHdyYXBwZXIgdG8gZXhwb3NlIHNvbWV0aGluZyBiZXR0ZXIgdG8gcGxheSB3aXRoLlxuICAgICAgaW5wdXRDb21wb25lbnQsXG4gICAgICBpbnB1dFByb3BzOiBfZXh0ZW5kcyh7XG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBlcnJvcjogZmNzLmVycm9yLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICB0eXBlOiB1bmRlZmluZWQsXG4gICAgICAgIC8vIFdlIHJlbmRlciBhIHNlbGVjdC4gV2UgY2FuIGlnbm9yZSB0aGUgdHlwZSBwcm92aWRlZCBieSB0aGUgYElucHV0YC5cbiAgICAgICAgbXVsdGlwbGVcbiAgICAgIH0sIG5hdGl2ZSA/IHtcbiAgICAgICAgaWRcbiAgICAgIH0gOiB7XG4gICAgICAgIGF1dG9XaWR0aCxcbiAgICAgICAgZGVmYXVsdE9wZW4sXG4gICAgICAgIGRpc3BsYXlFbXB0eSxcbiAgICAgICAgbGFiZWxJZCxcbiAgICAgICAgTWVudVByb3BzLFxuICAgICAgICBvbkNsb3NlLFxuICAgICAgICBvbk9wZW4sXG4gICAgICAgIG9wZW4sXG4gICAgICAgIHJlbmRlclZhbHVlLFxuICAgICAgICBTZWxlY3REaXNwbGF5UHJvcHM6IF9leHRlbmRzKHtcbiAgICAgICAgICBpZFxuICAgICAgICB9LCBTZWxlY3REaXNwbGF5UHJvcHMpXG4gICAgICB9LCBpbnB1dFByb3BzLCB7XG4gICAgICAgIGNsYXNzZXM6IGlucHV0UHJvcHMgPyBkZWVwbWVyZ2UoY2xhc3NlcywgaW5wdXRQcm9wcy5jbGFzc2VzKSA6IGNsYXNzZXNcbiAgICAgIH0sIGlucHV0ID8gaW5wdXQucHJvcHMuaW5wdXRQcm9wcyA6IHt9KVxuICAgIH0sIG11bHRpcGxlICYmIG5hdGl2ZSAmJiB2YXJpYW50ID09PSAnb3V0bGluZWQnID8ge1xuICAgICAgbm90Y2hlZDogdHJ1ZVxuICAgIH0gOiB7fSwge1xuICAgICAgcmVmOiBpbnB1dENvbXBvbmVudFJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xzeChJbnB1dENvbXBvbmVudC5wcm9wcy5jbGFzc05hbWUsIGNsYXNzTmFtZSlcbiAgICB9LCAhaW5wdXQgJiYge1xuICAgICAgdmFyaWFudFxuICAgIH0sIG90aGVyKSlcbiAgfSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFNlbGVjdC5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB3aWR0aCBvZiB0aGUgcG9wb3ZlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgaXRlbXMgaW5zaWRlIHRoZVxuICAgKiBtZW51LCBvdGhlcndpc2UgaXQgd2lsbCBiZSBhdCBsZWFzdCB0aGUgd2lkdGggb2YgdGhlIHNlbGVjdCBpbnB1dC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGF1dG9XaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uIGVsZW1lbnRzIHRvIHBvcHVsYXRlIHRoZSBzZWxlY3Qgd2l0aC5cbiAgICogQ2FuIGJlIHNvbWUgYE1lbnVJdGVtYCB3aGVuIGBuYXRpdmVgIGlzIGZhbHNlIGFuZCBgb3B0aW9uYCB3aGVuIGBuYXRpdmVgIGlzIHRydWUuXG4gICAqXG4gICAqIOKaoO+4j1RoZSBgTWVudUl0ZW1gIGVsZW1lbnRzICoqbXVzdCoqIGJlIGRpcmVjdCBkZXNjZW5kYW50cyB3aGVuIGBuYXRpdmVgIGlzIGZhbHNlLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgb3Blbi4gVXNlIHdoZW4gdGhlIGNvbXBvbmVudCBvcGVuIHN0YXRlIGlzIG5vdCBjb250cm9sbGVkIChpLmUuIHRoZSBgb3BlbmAgcHJvcCBpcyBub3QgZGVmaW5lZCkuXG4gICAqIFlvdSBjYW4gb25seSB1c2UgaXQgd2hlbiB0aGUgYG5hdGl2ZWAgcHJvcCBpcyBgZmFsc2VgIChkZWZhdWx0KS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRlZmF1bHRPcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlLiBVc2Ugd2hlbiB0aGUgY29tcG9uZW50IGlzIG5vdCBjb250cm9sbGVkLlxuICAgKi9cbiAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMuYW55LFxuICAvKipcbiAgICogSWYgYHRydWVgLCBhIHZhbHVlIGlzIGRpc3BsYXllZCBldmVuIGlmIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZC5cbiAgICpcbiAgICogSW4gb3JkZXIgdG8gZGlzcGxheSBhIG1lYW5pbmdmdWwgdmFsdWUsIGEgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCB0byB0aGUgYHJlbmRlclZhbHVlYCBwcm9wIHdoaWNoXG4gICAqIHJldHVybnMgdGhlIHZhbHVlIHRvIGJlIGRpc3BsYXllZCB3aGVuIG5vIGl0ZW1zIGFyZSBzZWxlY3RlZC5cbiAgICpcbiAgICog4pqg77iPIFdoZW4gdXNpbmcgdGhpcyBwcm9wLCBtYWtlIHN1cmUgdGhlIGxhYmVsIGRvZXNuJ3Qgb3ZlcmxhcCB3aXRoIHRoZSBlbXB0eSBkaXNwbGF5ZWQgdmFsdWUuXG4gICAqIFRoZSBsYWJlbCBzaG91bGQgZWl0aGVyIGJlIGhpZGRlbiBvciBmb3JjZWQgdG8gYSBzaHJ1bmsgc3RhdGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNwbGF5RW1wdHk6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGljb24gdGhhdCBkaXNwbGF5cyB0aGUgYXJyb3cuXG4gICAqIEBkZWZhdWx0IEFycm93RHJvcERvd25JY29uXG4gICAqL1xuICBJY29uQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgYGlkYCBvZiB0aGUgd3JhcHBlciBlbGVtZW50IG9yIHRoZSBgc2VsZWN0YCBlbGVtZW50IHdoZW4gYG5hdGl2ZWAuXG4gICAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIEFuIGBJbnB1dGAgZWxlbWVudDsgZG9lcyBub3QgaGF2ZSB0byBiZSBhIG1hdGVyaWFsLXVpIHNwZWNpZmljIGBJbnB1dGAuXG4gICAqL1xuICBpbnB1dDogUHJvcFR5cGVzLmVsZW1lbnQsXG4gIC8qKlxuICAgKiBbQXR0cmlidXRlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0I0F0dHJpYnV0ZXMpIGFwcGxpZWQgdG8gdGhlIGBpbnB1dGAgZWxlbWVudC5cbiAgICogV2hlbiBgbmF0aXZlYCBpcyBgdHJ1ZWAsIHRoZSBhdHRyaWJ1dGVzIGFyZSBhcHBsaWVkIG9uIHRoZSBgc2VsZWN0YCBlbGVtZW50LlxuICAgKi9cbiAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFNlZSBbT3V0bGluZWRJbnB1dCNsYWJlbF0oL21hdGVyaWFsLXVpL2FwaS9vdXRsaW5lZC1pbnB1dC8jcHJvcHMpXG4gICAqL1xuICBsYWJlbDogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgYW4gZWxlbWVudCB0aGF0IGFjdHMgYXMgYW4gYWRkaXRpb25hbCBsYWJlbC4gVGhlIFNlbGVjdCB3aWxsXG4gICAqIGJlIGxhYmVsbGVkIGJ5IHRoZSBhZGRpdGlvbmFsIGxhYmVsIGFuZCB0aGUgc2VsZWN0ZWQgdmFsdWUuXG4gICAqL1xuICBsYWJlbElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgW2BNZW51YF0oL21hdGVyaWFsLXVpL2FwaS9tZW51LykgZWxlbWVudC5cbiAgICovXG4gIE1lbnVQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYHZhbHVlYCBtdXN0IGJlIGFuIGFycmF5IGFuZCB0aGUgbWVudSB3aWxsIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCB1c2VzIGEgbmF0aXZlIGBzZWxlY3RgIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBuYXRpdmU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiBhIG1lbnUgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICpcbiAgICogQHBhcmFtIHtTZWxlY3RDaGFuZ2VFdmVudDxUPn0gZXZlbnQgVGhlIGV2ZW50IHNvdXJjZSBvZiB0aGUgY2FsbGJhY2suXG4gICAqIFlvdSBjYW4gcHVsbCBvdXQgdGhlIG5ldyB2YWx1ZSBieSBhY2Nlc3NpbmcgYGV2ZW50LnRhcmdldC52YWx1ZWAgKGFueSkuXG4gICAqICoqV2FybmluZyoqOiBUaGlzIGlzIGEgZ2VuZXJpYyBldmVudCwgbm90IGEgY2hhbmdlIGV2ZW50LCB1bmxlc3MgdGhlIGNoYW5nZSBldmVudCBpcyBjYXVzZWQgYnkgYnJvd3NlciBhdXRvZmlsbC5cbiAgICogQHBhcmFtIHtvYmplY3R9IFtjaGlsZF0gVGhlIHJlYWN0IGVsZW1lbnQgdGhhdCB3YXMgc2VsZWN0ZWQgd2hlbiBgbmF0aXZlYCBpcyBgZmFsc2VgIChkZWZhdWx0KS5cbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGNvbXBvbmVudCByZXF1ZXN0cyB0byBiZSBjbG9zZWQuXG4gICAqIFVzZSBpdCBpbiBlaXRoZXIgY29udHJvbGxlZCAoc2VlIHRoZSBgb3BlbmAgcHJvcCksIG9yIHVuY29udHJvbGxlZCBtb2RlICh0byBkZXRlY3Qgd2hlbiB0aGUgU2VsZWN0IGNvbGxhcHNlcykuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IHJlcXVlc3RzIHRvIGJlIG9wZW5lZC5cbiAgICogVXNlIGl0IGluIGVpdGhlciBjb250cm9sbGVkIChzZWUgdGhlIGBvcGVuYCBwcm9wKSwgb3IgdW5jb250cm9sbGVkIG1vZGUgKHRvIGRldGVjdCB3aGVuIHRoZSBTZWxlY3QgZXhwYW5kcykuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay5cbiAgICovXG4gIG9uT3BlbjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgc2hvd24uXG4gICAqIFlvdSBjYW4gb25seSB1c2UgaXQgd2hlbiB0aGUgYG5hdGl2ZWAgcHJvcCBpcyBgZmFsc2VgIChkZWZhdWx0KS5cbiAgICovXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogUmVuZGVyIHRoZSBzZWxlY3RlZCB2YWx1ZS5cbiAgICogWW91IGNhbiBvbmx5IHVzZSBpdCB3aGVuIHRoZSBgbmF0aXZlYCBwcm9wIGlzIGBmYWxzZWAgKGRlZmF1bHQpLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gdmFsdWUgVGhlIGB2YWx1ZWAgcHJvdmlkZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogQHJldHVybnMge1JlYWN0Tm9kZX1cbiAgICovXG4gIHJlbmRlclZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFByb3BzIGFwcGxpZWQgdG8gdGhlIGNsaWNrYWJsZSBkaXYgZWxlbWVudC5cbiAgICovXG4gIFNlbGVjdERpc3BsYXlQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSBgaW5wdXRgIHZhbHVlLiBQcm92aWRpbmcgYW4gZW1wdHkgc3RyaW5nIHdpbGwgc2VsZWN0IG5vIG9wdGlvbnMuXG4gICAqIFNldCB0byBhbiBlbXB0eSBzdHJpbmcgYCcnYCBpZiB5b3UgZG9uJ3Qgd2FudCBhbnkgb2YgdGhlIGF2YWlsYWJsZSBvcHRpb25zIHRvIGJlIHNlbGVjdGVkLlxuICAgKlxuICAgKiBJZiB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IGl0IG11c3QgaGF2ZSByZWZlcmVuY2UgZXF1YWxpdHkgd2l0aCB0aGUgb3B0aW9uIGluIG9yZGVyIHRvIGJlIHNlbGVjdGVkLlxuICAgKiBJZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9iamVjdCwgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBtdXN0IG1hdGNoIHdpdGggdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3B0aW9uIGluIG9yZGVyIHRvIGJlIHNlbGVjdGVkLlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJyddKSwgUHJvcFR5cGVzLmFueV0pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAnb3V0bGluZWQnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMub25lT2YoWydmaWxsZWQnLCAnb3V0bGluZWQnLCAnc3RhbmRhcmQnXSlcbn0gOiB2b2lkIDA7XG5TZWxlY3QubXVpTmFtZSA9ICdTZWxlY3QnO1xuZXhwb3J0IGRlZmF1bHQgU2VsZWN0OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN2Z0ljb24oIC8qI19fUFVSRV9fKi9fanN4KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTcgMTBsNSA1IDUtNXpcIlxufSksICdBcnJvd0Ryb3BEb3duJyk7Il0sIm5hbWVzIjpbIl9leGNsdWRlZCIsIkZpbGxlZElucHV0Um9vdCIsInNob3VsZEZvcndhcmRQcm9wIiwicHJvcCIsIm5hbWUiLCJzbG90Iiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsIm93bmVyU3RhdGUiLCJkaXNhYmxlVW5kZXJsaW5lIiwidW5kZXJsaW5lIiwidGhlbWUiLCJfcGFsZXR0ZSIsImxpZ2h0IiwicGFsZXR0ZSIsIm1vZGUiLCJib3R0b21MaW5lQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJob3ZlckJhY2tncm91bmQiLCJkaXNhYmxlZEJhY2tncm91bmQiLCJwb3NpdGlvbiIsInZhcnMiLCJGaWxsZWRJbnB1dCIsImJnIiwiYm9yZGVyVG9wTGVmdFJhZGl1cyIsInNoYXBlIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyVG9wUmlnaHRSYWRpdXMiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0ZXIiLCJlYXNpbmciLCJlYXNlT3V0IiwiaG92ZXJCZyIsImZvY3VzZWQiLCJkaXNhYmxlZCIsImRpc2FibGVkQmciLCJib3JkZXJCb3R0b20iLCJjb2xvciIsIm1haW4iLCJsZWZ0IiwiYm90dG9tIiwiY29udGVudCIsInJpZ2h0IiwidHJhbnNmb3JtIiwicG9pbnRlckV2ZW50cyIsImVycm9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJjb21tb24iLCJvbkJhY2tncm91bmRDaGFubmVsIiwib3BhY2l0eSIsImlucHV0VW5kZXJsaW5lIiwidGV4dCIsInByaW1hcnkiLCJib3JkZXJCb3R0b21TdHlsZSIsInN0YXJ0QWRvcm5tZW50IiwicGFkZGluZ0xlZnQiLCJlbmRBZG9ybm1lbnQiLCJwYWRkaW5nUmlnaHQiLCJtdWx0aWxpbmUiLCJwYWRkaW5nIiwic2l6ZSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiaGlkZGVuTGFiZWwiLCJGaWxsZWRJbnB1dElucHV0IiwiV2Via2l0Qm94U2hhZG93IiwiV2Via2l0VGV4dEZpbGxDb2xvciIsImNhcmV0Q29sb3IiLCJnZXRDb2xvclNjaGVtZVNlbGVjdG9yIiwiaW5Qcm9wcyIsInJlZiIsIl9yZWYiLCJfc2xvdHMkcm9vdCIsIl9yZWYyIiwiX3Nsb3RzJGlucHV0IiwiY29tcG9uZW50cyIsImNvbXBvbmVudHNQcm9wcyIsImNvbXBvbmVudHNQcm9wc1Byb3AiLCJmdWxsV2lkdGgiLCJpbnB1dENvbXBvbmVudCIsInNsb3RQcm9wcyIsInNsb3RzIiwidHlwZSIsIm90aGVyIiwiY2xhc3NlcyIsInJvb3QiLCJpbnB1dCIsImNvbXBvc2VkQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwiZmlsbGVkSW5wdXRDb21wb25lbnRzUHJvcHMiLCJSb290U2xvdCIsIlJvb3QiLCJJbnB1dFNsb3QiLCJJbnB1dCIsIm11aU5hbWUiLCJnZXRGaWxsZWRJbnB1dFV0aWxpdHlDbGFzcyIsImdldEZvcm1Db250cm9sVXRpbGl0eUNsYXNzZXMiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsImdlbmVyYXRlVXRpbGl0eUNsYXNzZXMiLCJGb3JtQ29udHJvbFJvb3QiLCJzdHlsZWQiLCJjYXBpdGFsaXplIiwibWFyZ2luIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJtaW5XaWR0aCIsImJvcmRlciIsInZlcnRpY2FsQWxpZ24iLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJ3aWR0aCIsInVzZVRoZW1lUHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsImNvbXBvbmVudCIsInZpc3VhbGx5Rm9jdXNlZCIsInJlcXVpcmVkIiwidmFyaWFudCIsImNvbXBvc2VDbGFzc2VzIiwiYWRvcm5lZFN0YXJ0Iiwic2V0QWRvcm5lZFN0YXJ0IiwiaW5pdGlhbEFkb3JuZWRTdGFydCIsImZvckVhY2giLCJjaGlsZCIsImlzTXVpRWxlbWVudCIsImZpbGxlZCIsInNldEZpbGxlZCIsImluaXRpYWxGaWxsZWQiLCJpbnB1dFByb3BzIiwiZm9jdXNlZFN0YXRlIiwic2V0Rm9jdXNlZCIsInVuZGVmaW5lZCIsInJlZ2lzdGVyRWZmZWN0IiwiY2hpbGRDb250ZXh0Iiwib25CbHVyIiwib25FbXB0eSIsIm9uRmlsbGVkIiwib25Gb2N1cyIsIkZvcm1Db250cm9sQ29udGV4dCIsIlByb3ZpZGVyIiwidmFsdWUiLCJhcyIsIklucHV0Um9vdCIsImZvcm1Db250cm9sIiwiSW5wdXRJbnB1dCIsImlucHV0Q29tcG9uZW50c1Byb3BzIiwiZ2V0SW5wdXRVdGlsaXR5Q2xhc3MiLCJnZXRGb3JtTGFiZWxVdGlsaXR5Q2xhc3NlcyIsIkZvcm1MYWJlbFJvb3QiLCJjb2xvclNlY29uZGFyeSIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImxpbmVIZWlnaHQiLCJBc3Rlcmlza0NvbXBvbmVudCIsImFzdGVyaXNrIiwibXVpRm9ybUNvbnRyb2wiLCJ1c2VGb3JtQ29udHJvbCIsImZjcyIsImZvcm1Db250cm9sU3RhdGUiLCJzdGF0ZXMiLCJnZXRJbnB1dExhYmVsVXRpbGl0eUNsYXNzZXMiLCJJbnB1dExhYmVsUm9vdCIsInNpemVTbWFsbCIsInNocmluayIsImRpc2FibGVBbmltYXRpb24iLCJhbmltYXRlZCIsInRyYW5zZm9ybU9yaWdpbiIsIndoaXRlU3BhY2UiLCJvdmVyZmxvdyIsInRleHRPdmVyZmxvdyIsIm1heFdpZHRoIiwidG9wIiwiekluZGV4IiwidXNlclNlbGVjdCIsInNocmlua1Byb3AiLCJfc3BhbiIsIk5vdGNoZWRPdXRsaW5lUm9vdCIsInRleHRBbGlnbiIsImJvcmRlclN0eWxlIiwiYm9yZGVyV2lkdGgiLCJOb3RjaGVkT3V0bGluZUxlZ2VuZCIsImZsb2F0Iiwid2l0aExhYmVsIiwiaGVpZ2h0IiwiZm9udFNpemUiLCJ2aXNpYmlsaXR5Iiwibm90Y2hlZCIsImRlbGF5IiwiT3V0bGluZWRJbnB1dFJvb3QiLCJJbnB1dEJhc2UiLCJib3JkZXJDb2xvciIsIm91dGxpbmVkSW5wdXRDbGFzc2VzIiwibm90Y2hlZE91dGxpbmUiLCJhY3Rpb24iLCJsYWJlbCIsIk91dGxpbmVkSW5wdXRJbnB1dCIsIk91dGxpbmVkSW5wdXQiLCJfUmVhY3QkRnJhZ21lbnQiLCJyZW5kZXJTdWZmaXgiLCJzdGF0ZSIsIkJvb2xlYW4iLCJnZXRPdXRsaW5lZElucHV0VXRpbGl0eUNsYXNzIiwiZ2V0TmF0aXZlU2VsZWN0VXRpbGl0eUNsYXNzZXMiLCJuYXRpdmVTZWxlY3RTZWxlY3RTdHlsZXMiLCJNb3pBcHBlYXJhbmNlIiwiV2Via2l0QXBwZWFyYW5jZSIsImN1cnNvciIsImJhY2tncm91bmQiLCJwYXBlciIsIk5hdGl2ZVNlbGVjdFNlbGVjdCIsInNlbGVjdCIsIm11bHRpcGxlIiwibmF0aXZlU2VsZWN0SWNvblN0eWxlcyIsImFjdGl2ZSIsIm9wZW4iLCJOYXRpdmVTZWxlY3RJY29uIiwiaWNvbiIsImljb25PcGVuIiwiSWNvbkNvbXBvbmVudCIsImlucHV0UmVmIiwiZ2V0U2VsZWN0VXRpbGl0eUNsYXNzZXMiLCJTZWxlY3RTZWxlY3QiLCJtaW5IZWlnaHQiLCJTZWxlY3RJY29uIiwiU2VsZWN0TmF0aXZlSW5wdXQiLCJuYXRpdmVJbnB1dCIsImJveFNpemluZyIsImFyZUVxdWFsVmFsdWVzIiwiYSIsImIiLCJTdHJpbmciLCJpc0VtcHR5IiwidHJpbSIsImFyaWFEZXNjcmliZWRieSIsImFyaWFMYWJlbCIsImF1dG9Gb2N1cyIsImF1dG9XaWR0aCIsImRlZmF1bHRPcGVuIiwiZGVmYXVsdFZhbHVlIiwiZGlzcGxheUVtcHR5IiwiaW5wdXRSZWZQcm9wIiwibGFiZWxJZCIsIk1lbnVQcm9wcyIsIm9uQ2hhbmdlIiwib25DbG9zZSIsIm9uT3BlbiIsIm9wZW5Qcm9wIiwicmVhZE9ubHkiLCJyZW5kZXJWYWx1ZSIsIlNlbGVjdERpc3BsYXlQcm9wcyIsInRhYkluZGV4IiwidGFiSW5kZXhQcm9wIiwidmFsdWVQcm9wIiwic2V0VmFsdWVTdGF0ZSIsInVzZUNvbnRyb2xsZWQiLCJjb250cm9sbGVkIiwiZGVmYXVsdCIsIm9wZW5TdGF0ZSIsInNldE9wZW5TdGF0ZSIsImRpc3BsYXlSZWYiLCJkaXNwbGF5Tm9kZSIsInNldERpc3BsYXlOb2RlIiwiY3VycmVudCIsImlzT3BlbkNvbnRyb2xsZWQiLCJtZW51TWluV2lkdGhTdGF0ZSIsInNldE1lbnVNaW5XaWR0aFN0YXRlIiwiaGFuZGxlUmVmIiwidXNlRm9ya1JlZiIsImhhbmRsZURpc3BsYXlSZWYiLCJub2RlIiwiYW5jaG9yRWxlbWVudCIsInBhcmVudE5vZGUiLCJmb2N1cyIsImNsaWVudFdpZHRoIiwib3duZXJEb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaGFuZGxlciIsImdldFNlbGVjdGlvbiIsImlzQ29sbGFwc2VkIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ1cGRhdGUiLCJldmVudCIsImNoaWxkcmVuQXJyYXkiLCJ0b0FycmF5IiwiaGFuZGxlSXRlbUNsaWNrIiwibmV3VmFsdWUiLCJjdXJyZW50VGFyZ2V0IiwiaGFzQXR0cmlidXRlIiwiQXJyYXkiLCJpc0FycmF5Iiwic2xpY2UiLCJpdGVtSW5kZXgiLCJpbmRleE9mIiwicHVzaCIsInNwbGljZSIsIm9uQ2xpY2siLCJuYXRpdmVFdmVudCIsImNsb25lZEV2ZW50IiwiY29uc3RydWN0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIndyaXRhYmxlIiwiZGlzcGxheVNpbmdsZSIsImRpc3BsYXlNdWx0aXBsZSIsImNvbXB1dGVEaXNwbGF5IiwiZm91bmRNYXRjaCIsIml0ZW1zIiwibWFwIiwic2VsZWN0ZWQiLCJFcnJvciIsInNvbWUiLCJ2Iiwib25LZXlVcCIsImtleSIsInByZXZlbnREZWZhdWx0Iiwicm9sZSIsImxlbmd0aCIsInJlZHVjZSIsIm91dHB1dCIsImluZGV4IiwibWVudU1pbldpZHRoIiwiYnV0dG9uSWQiLCJpZCIsImZpbHRlciIsImpvaW4iLCJvbktleURvd24iLCJvbk1vdXNlRG93biIsImJ1dHRvbiIsImZpbmQiLCJjaGlsZEl0ZW0iLCJ0YXJnZXQiLCJNZW51IiwiYW5jaG9yRWwiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJNZW51TGlzdFByb3BzIiwiZGlzYWJsZUxpc3RXcmFwIiwiUGFwZXJQcm9wcyIsInN0eWxlIiwic3R5bGVkUm9vdENvbmZpZyIsIlN0eWxlZElucHV0IiwiU3R5bGVkT3V0bGluZWRJbnB1dCIsIlN0eWxlZEZpbGxlZElucHV0IiwiU2VsZWN0IiwiY2xhc3Nlc1Byb3AiLCJBcnJvd0Ryb3BEb3duIiwiQSIsIm5hdGl2ZSIsInZhcmlhbnRQcm9wIiwiSW5wdXRDb21wb25lbnQiLCJzdGFuZGFyZCIsIm91dGxpbmVkIiwiaW5wdXRDb21wb25lbnRSZWYiLCJkZWVwbWVyZ2UiLCJkIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8590.f8ab7c05.js b/react_frontend/static/react_frontend/js/8590.f8ab7c05.js new file mode 100644 index 000000000..02600f29d --- /dev/null +++ b/react_frontend/static/react_frontend/js/8590.f8ab7c05.js @@ -0,0 +1,3 @@ +/*! For license information please see 8590.f8ab7c05.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8590],{8590:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvODU5MC45YWIwNmMzMC5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnFCLFNBQUNBLEdBQ3BCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2xhc2VyX21hcHBpbmcvcmVhY3QtY29tcG9uZW50cy9MYXNlck1hcHBpbmcuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQge0ZyYWdtZW50fSBmcm9tIFwicmVhY3RcIjtcclxuXHJcbmltcG9ydCBcIi4vY3NzL0xhc2VyTWFwcGluZy5jc3NcIjtcclxuXHJcbmNvbnN0IExhc2VyTWFwcGluZyA9IChwcm9wcykgPT4ge1xyXG4gIHJldHVybiAoXHJcbiAgICA8RnJhZ21lbnQ+XHJcbiAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICA8L0ZyYWdtZW50PlxyXG4gICk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBMYXNlck1hcHBpbmc7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBmPXJlcXVpcmUoXCJyZWFjdFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxuPWYuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQuUmVhY3RDdXJyZW50T3duZXIscD17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O1xuZnVuY3Rpb24gcShjLGEsZyl7dmFyIGIsZD17fSxlPW51bGwsaD1udWxsO3ZvaWQgMCE9PWcmJihlPVwiXCIrZyk7dm9pZCAwIT09YS5rZXkmJihlPVwiXCIrYS5rZXkpO3ZvaWQgMCE9PWEucmVmJiYoaD1hLnJlZik7Zm9yKGIgaW4gYSltLmNhbGwoYSxiKSYmIXAuaGFzT3duUHJvcGVydHkoYikmJihkW2JdPWFbYl0pO2lmKGMmJmMuZGVmYXVsdFByb3BzKWZvcihiIGluIGE9Yy5kZWZhdWx0UHJvcHMsYSl2b2lkIDA9PT1kW2JdJiYoZFtiXT1hW2JdKTtyZXR1cm57JCR0eXBlb2Y6ayx0eXBlOmMsa2V5OmUscmVmOmgscHJvcHM6ZCxfb3duZXI6bi5jdXJyZW50fX1leHBvcnRzLkZyYWdtZW50PWw7ZXhwb3J0cy5qc3g9cTtleHBvcnRzLmpzeHM9cTtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIl0sIm5hbWVzIjpbInByb3BzIiwiX2pzeCIsIkZyYWdtZW50IiwiY2hpbGRyZW4iLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZCIsImUiLCJoIiwiY2FsbCIsImRlZmF1bHRQcm9wcyIsIiQkdHlwZW9mIiwidHlwZSIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwianN4IiwianN4cyIsIm1vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8590.f8ab7c05.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8590.f8ab7c05.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8590.f8ab7c05.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8591.7a0cb90e.js b/react_frontend/static/react_frontend/js/8591.7a0cb90e.js new file mode 100644 index 000000000..3b3004b26 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8591.7a0cb90e.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8591,5923],{9132:(e,t,r)=>{var n=r(4994);t.A=void 0;var o=n(r(2032)),i=r(4848),a=(0,o.default)([(0,i.jsx)("path",{d:"M15.22 4.75 7.87 7.79l4.96 11.96 7.35-3.05-4.96-11.95zM11 10c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z",opacity:".3"},"0"),(0,i.jsx)("path",{d:"m3.87 11.18-2.43 5.86c-.41 1.02.08 2.19 1.09 2.61l1.34.56v-9.03zm18.16 4.77L17.07 3.98c-.31-.75-1.04-1.21-1.81-1.23-.26 0-.53.04-.79.15L7.1 5.95c-.75.31-1.21 1.03-1.23 1.8-.01.27.04.54.15.8l4.96 11.97c.31.76 1.05 1.22 1.83 1.23.26 0 .52-.05.77-.15l7.36-3.05c1.02-.42 1.51-1.59 1.09-2.6zm-9.2 3.8L7.87 7.79l7.35-3.04h.01l4.95 11.95-7.35 3.05z"},"1"),(0,i.jsx)("circle",{cx:"11",cy:"9",r:"1"},"2"),(0,i.jsx)("path",{d:"m9.33 21.75-3.45-8.34v6.34c0 1.1.9 2 2 2h1.45z"},"3")],"StyleTwoTone");t.A=a},5793:(e,t,r)=>{r.d(t,{A:()=>x});var n=r(8168),o=r(8587),i=r(6540);const a=i.createContext(null);function s(){return i.useContext(a)}const c="function"==typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";var l=r(4848);const u=function(e){const{children:t,theme:r}=e,o=s(),u=i.useMemo((()=>{const e=null===o?r:function(e,t){return"function"==typeof t?t(e):(0,n.A)({},e,t)}(o,r);return null!=e&&(e[c]=null!==o),e}),[r,o]);return(0,l.jsx)(a.Provider,{value:u,children:t})};var d=r(5684),f=r(3951);const m={};function h(e,t,r,o=!1){return i.useMemo((()=>{const i=e&&t[e]||t;if("function"==typeof r){const a=r(i),s=e?(0,n.A)({},t,{[e]:a}):a;return o?()=>s:s}return e?(0,n.A)({},t,{[e]:r}):(0,n.A)({},t,r)}),[e,t,r,o])}const p=function(e){const{children:t,theme:r,themeId:n}=e,o=(0,f.A)(m),i=s()||m,a=h(n,o,r),c=h(n,i,r,!0);return(0,l.jsx)(u,{theme:c,children:(0,l.jsx)(d.T.Provider,{value:a,children:t})})};var y=r(8312);const v=["theme"];function x(e){let{theme:t}=e,r=(0,o.A)(e,v);const i=t[y.A];return(0,l.jsx)(p,(0,n.A)({},r,{themeId:i?y.A:void 0,theme:i||t}))}},4731:(e,t,r)=>{r.r(t),r.d(t,{default:()=>u});var n=r(4464),o=r(5923),i=(r(6540),r(6544)),a=r(5793),s=r(8359),c=r(4848),l=(0,i.A)({palette:{type:"light",primary:{main:"#ffac15"},secondary:{main:"#147aff"}}});const u=function(){return(0,c.jsx)(s.HomepageProvider,{children:(0,c.jsxs)(a.A,{theme:l,children:[(0,c.jsx)(o.default,{}),(0,c.jsx)(n.default,{})]})})}},5923:(e,t,r)=>{r.r(t),r.d(t,{default:()=>b});var n=r(6540),o=r(9828),i=r(4719),a=r(1543),s=r(8620),c=r(1641),l=r(9799),u=r(2969),d=r(2274),f=r(8532),m=r(4073),h=r(1224),p=r(7620),y=r(4337),v=r(4848);function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{ExerciseCard:()=>w});var n=r(6540);const o=JSON.parse('{"H":{"K":{"n":{"type":"image","url":"/static/exercises/assets/img/${exerciseid}_teaser.png"},"r":"/exercises/exercises/${exerciseid}"}}}');var i=r(2022),a=r(8587),s=r(8168),c=r(53),l=r(5659),u=r(4409),d=r(7577),f=r(8413),m=r(1609);function h(e){return(0,m.A)("MuiCardMedia",e)}(0,f.A)("MuiCardMedia",["root","media","img"]);var p=r(4848);const y=["children","className","component","image","src","style"],v=(0,d.Ay)("div",{name:"MuiCardMedia",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:r}=e,{isMediaComponent:n,isImageComponent:o}=r;return[t.root,n&&t.media,o&&t.img]}})((({ownerState:e})=>(0,s.A)({display:"block",backgroundSize:"cover",backgroundRepeat:"no-repeat",backgroundPosition:"center"},e.isMediaComponent&&{width:"100%"},e.isImageComponent&&{objectFit:"cover"}))),x=["video","audio","picture","iframe","img"],g=["picture","img"],b=n.forwardRef((function(e,t){const r=(0,u.A)({props:e,name:"MuiCardMedia"}),{children:n,className:o,component:i="div",image:d,src:f,style:m}=r,b=(0,a.A)(r,y),A=-1!==x.indexOf(i),j=!A&&d?(0,s.A)({backgroundImage:`url("${d}")`},m):m,S=(0,s.A)({},r,{component:i,isMediaComponent:A,isImageComponent:-1!==g.indexOf(i)}),w=(e=>{const{classes:t,isMediaComponent:r,isImageComponent:n}=e,o={root:["root",r&&"media",n&&"img"]};return(0,l.A)(o,h,t)})(S);return(0,p.jsx)(v,(0,s.A)({className:(0,c.A)(w.root,o),as:i,role:!A&&d?"img":void 0,ref:t,style:j,ownerState:S,src:A?d||f:void 0},b,{children:n}))}));var A=r(4073),j=r(9132);const S=r.p+"4c3c9ff3e5e41de1a959.svg";var w=function(e){var t=e.id,r=e.name,n=e.description,i=e.tags,a=e.status,s="".concat(o.H.K.r),c=o.H.K.n,l=JSON.parse(i).tags;return(0,p.jsx)("div",{className:"exercise-card",style:{borderColor:"ACTIVE"===a?"green":"INACTIVE"===a?"red":"orange"},children:(0,p.jsxs)("div",{style:{flexGrow:1,display:"flex",flexDirection:"column",alignItems:"flex-start"},onClick:function(){window.location.href=s.interpolate({exerciseid:t})},children:[(0,p.jsx)(b,{component:"img",height:"auto",style:{flexGrow:1},image:c.url.interpolate({exerciseid:t}),onError:function(e){return e.target.src=S}}),(0,p.jsxs)("div",{className:"exercise-info-container",children:[(0,p.jsx)(A.A,{gutterBottom:!0,variant:"h6",component:"div",color:"white",sx:{wordBreak:"break-word"},style:{alignSelf:"center",pointerEvents:"none"},children:r}),(0,p.jsx)(A.A,{id:"exercise-info",gutterBottom:!0,variant:"h7",component:"div",color:"white",style:{pointerEvents:"none"},children:n}),(0,p.jsx)(C,{tagList:l})]})]})})},C=function(e){var t=e.tagList;Array.isArray(t)||(t=t.split(","));var r=t.map((function(e){return(0,p.jsx)(i.A,{sx:{m:.5},icon:(0,p.jsx)(j.A,{}),color:"success",label:e},e)}));return(0,p.jsx)("div",{className:"exercise-tag-list",children:r})}},4464:(e,t,r)=>{r.r(t),r.d(t,{default:()=>u});var n=r(6540),o=r(6965),i=r(8359),a=r(4848);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{default:()=>S});var n=r(6540),o=r(7577),i=r(4279),a=r(4745),s=r(2183),c=r(4215),l=r(1641),u=r(9741),d=r(6554),f=r(4389),m=r(4719),h=r(8359),p=r(4848);function y(e){return y="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},y(e)}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(t),r.d(t,{HomepageProvider:()=>d,default:()=>f});var n=r(6540),o=r(5556),i=r.n(o),a=r(4848);function s(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,s=[],c=!0,l=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){l=!0,o=e}finally{try{if(!c&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(l)throw o}}return s}}(e,t)||c(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e,t){if(e){if("string"==typeof e)return l(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8725.585c887e.js b/react_frontend/static/react_frontend/js/8725.585c887e.js new file mode 100644 index 000000000..63c95f0b4 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8725.585c887e.js @@ -0,0 +1,3 @@ +/*! For license information please see 8725.585c887e.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8725,7823],{5073:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>d});var r=n(6540),o=n(5556),s=n.n(o),i=n(7823);n.p;const a=n.p+"3eeb5833a38a58e883f3.png",c=n.p+"b5c6f9dd7b4e71f2532b.svg";var u=n(4848);function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,s,i,a=[],c=!0,u=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=s.call(n)).done)&&(a.push(r.value),a.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(u)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{"use strict";n.r(t),n.d(t,{addToPath:()=>o,updatePath:()=>r});var r=function(e,t,n,r){for(var o="M ",s=0;s0&&t(o)},o=function(e,t,n){n.includes([e,t])||n.push([e,t])}},2694:(e,t,n)=>{"use strict";var r=n(6925);function o(){}function s(){}s.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,s,i){if(i!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:o};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,n)=>{"use strict";var r=n(6540),o=Symbol.for("react.element"),s=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,s={},u=null,l=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,r)&&!c.hasOwnProperty(r)&&(s[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===s[r]&&(s[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:l,props:s,_owner:a.current}}t.Fragment=s,t.jsx=u,t.jsxs=u},4848:(e,t,n)=>{"use strict";e.exports=n(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQWpCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvdmFjdXVtX2NsZWFuZXJfbG9jL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNMb2NWYWN1dW1DbGVhbmVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3ZhY3V1bV9jbGVhbmVyX2xvYy9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvVmFjdXVtQ2xlYW5lckhlbHBlci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xyXG5pbXBvcnQge3VwZGF0ZVBhdGgsIGFkZFRvUGF0aH0gZnJvbSBcIi4vaGVscGVycy9WYWN1dW1DbGVhbmVySGVscGVyXCI7XHJcbmltcG9ydCBob3VzZU1hcENsZWFuIGZyb20gXCIuLi9yZXNvdXJjZXMvaW1hZ2VzL21hcGdyYW5ueWFubmllX2NsZWFuLnBuZ1wiO1xyXG5pbXBvcnQgaG91c2VNYXBEaXJ0eSBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy9tYXBncmFubnlhbm5pZV9kaXJ0eS5wbmdcIjtcclxuaW1wb3J0IFZhY3V1bSBmcm9tIFwiLi4vcmVzb3VyY2VzL2ltYWdlcy92YWN1dW0uc3ZnXCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9HVUlDYW52YXMuY3NzXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTcGVjaWZpY0xvY1ZhY3V1bUNsZWFuZXIoKSB7XHJcbiAgY29uc3QgW3ZhY3V1bVBvc2UsIHNldFZhY3V1bVBvc2VdID0gUmVhY3QudXNlU3RhdGUobnVsbClcclxuICBjb25zdCBbcGF0aCwgc2V0UGF0aF0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKVxyXG4gIHZhciB0cmFpbCA9IFtdO1xyXG4gIHZhciBsYXN0UG9zZSA9IHVuZGVmaW5lZDtcclxuXHJcbiAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHtcclxuICAgIHZhciBpbWcgPSBlbnRyaWVzWzBdLnRhcmdldDsgXHJcbiAgICAvL29yIGhvd2V2ZXIgeW91IGdldCBhIGhhbmRsZSB0byB0aGUgSU1HXHJcbiAgICB2YXIgd2lkdGggPSAoMTAxMiAvIDMwMCkgLyAoMTAxMiAvaW1nLmNsaWVudFdpZHRoKTtcclxuICAgIHZhciBoZWlnaHQgPSAoMTAxMiAvIDE1MCkgLyAoMTAxMiAvaW1nLmNsaWVudEhlaWdodCk7XHJcblxyXG4gICAgdXBkYXRlUGF0aCh0cmFpbCwgc2V0UGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcblxyXG4gICAgaWYgKGxhc3RQb3NlKSB7XHJcbiAgICAgIHNldFZhY3V1bVBvc2UoW2xhc3RQb3NlWzFdKmhlaWdodCxsYXN0UG9zZVswXSp3aWR0aCwgLWxhc3RQb3NlWzJdXSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG5cclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc3QgdXBkYXRlRGF0YSA9IG1lc3NhZ2UuZGF0YS51cGRhdGU7XHJcbiAgICAgIC8vIEzDs2dpY2EgcGFyYSBtYW5lamFyIGVsIG1hcGFcclxuICAgICAgaWYgKHVwZGF0ZURhdGEubWFwKSB7XHJcbiAgICAgICAgY29uc3QgcG9zZSA9IHVwZGF0ZURhdGEubWFwLnN1YnN0cmluZygxLCB1cGRhdGVEYXRhLm1hcC5sZW5ndGggLSAxKTtcclxuICAgICAgICBjb25zdCBjb250ZW50ID0gcG9zZS5zcGxpdChcIixcIikubWFwKGl0ZW0gPT4gcGFyc2VGbG9hdChpdGVtKSk7XHJcbiAgICAgICAgbGFzdFBvc2UgPSBjb250ZW50O1xyXG5cclxuICAgICAgICB2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4ZXJjaXNlLWltZycpOyBcclxuICAgICAgICAvL29yIGhvd2V2ZXIgeW91IGdldCBhIGhhbmRsZSB0byB0aGUgSU1HXHJcbiAgICAgICAgdmFyIHdpZHRoID0gKDEwMTMgLyAzMDApIC8gKDEwMTMgL2ltZy5jbGllbnRXaWR0aCk7XHJcbiAgICAgICAgdmFyIGhlaWdodCA9ICgxMDEyIC8gMTUwKSAvICgxMDEyIC9pbWcuY2xpZW50SGVpZ2h0KTtcclxuXHJcbiAgICAgICAgdXBkYXRlUGF0aCh0cmFpbCwgc2V0UGF0aCwgaGVpZ2h0LCB3aWR0aCk7XHJcblxyXG4gICAgICAgIHNldFZhY3V1bVBvc2UoW2NvbnRlbnRbMV0qaGVpZ2h0LGNvbnRlbnRbMF0qd2lkdGgsIC1jb250ZW50WzJdXSk7XHJcbiAgICAgICAgYWRkVG9QYXRoKGNvbnRlbnRbMV0sIGNvbnRlbnRbMF0sIHRyYWlsKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYodXBkYXRlRGF0YS5pbWFnZSkge1xyXG4gICAgICAgIGxldCBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aS1jYW52YXMtbnVtcHlcIik7XHJcbiAgICAgICAgICAvL1BhcnNlIGVuY29kZWQgaW1hZ2UgZGF0YSBhbmQgZGVjb2RlIGl0XHJcbiAgICAgICAgZnVuY3Rpb24gZGVjb2RlX3V0Zjgocykge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKHVwZGF0ZURhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuXHJcbiAgICAgICAgaWYoc291cmNlICE9PSBcIlwiKXtcclxuICAgICAgICAgIGNhbnZhcy5zcmMgPSBcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2VuZCB0aGUgQUNLIG9mIHRoZSBtc2dcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zZW5kKFwiZ3VpXCIsIFwiYWNrXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnN1YnNjcmliZShcclxuICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgIGNhbGxiYWNrXHJcbiAgICApO1xyXG5cclxuICAgIHJlc2l6ZU9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4ZXJjaXNlLWltZycpKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHNldFBhdGgoXCJcIilcclxuICAgICAgICAgIHRyYWlsID0gW11cclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJUZXN0U2hvd1NjcmVlbiB1bnN1YnNjcmliaW5nIGZyb20gWydzdGF0ZS1jaGFuZ2VkJ10gZXZlbnRzXCIpO1xyXG4gICAgICB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnVuc3Vic2NyaWJlKFxyXG4gICAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgICBjYWxsYmFja1xyXG4gICAgICApO1xyXG4gICAgfTtcclxuICB9LCBbXSlcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgc3R5bGU9e3tkaXNwbGF5OiBcImZsZXhcIiwgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiLCBwb3NpdGlvbjpcInJlbGF0aXZlXCJ9fT5cclxuICAgICAgPGltZyBzcmM9e2hvdXNlTWFwRGlydHl9IGFsdD1cIlwiIGNsYXNzTmFtZT1cImV4ZXJjaXNlLWNhbnZhc1wiIGlkPVwiZXhlcmNpc2UtaW1nXCIvPlxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJsYXlcIiBpZD1cIm1hcC1jb250YWluZXJcIj5cclxuICAgICAgICB7dmFjdXVtUG9zZSAmJlxyXG4gICAgICAgICAgPGRpdiBpZD1cInZhY3V1bS1wb3NcIiBzdHlsZT17e3JvdGF0ZTogXCJ6IFwiKyB2YWN1dW1Qb3NlWzJdK1wicmFkXCIsIHRvcDogdmFjdXVtUG9zZVswXSAtMTAgLCBsZWZ0OiB2YWN1dW1Qb3NlWzFdIC0xMH19PlxyXG4gICAgICAgICAgICA8aW1nIHNyYz17VmFjdXVtfSBpZD1cInZhY3V1bS1wb3NcIi8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYXJyb3dcIi8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgey8qIDxzdmcgaGVpZ2h0PVwiMTAwJVwiIHdpZHRoPVwiMTAwJVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgIDxtYXNrIGlkPVwic3ZnLWRyYXdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgIHtwYXRoID8gKFxyXG4gICAgICAgICAgICAgIDxwYXRoIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBkPXtwYXRofSBzdHlsZT17e3N0cm9rZVdpZHRoOiBcIjIwcHhcIiwgc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLCBzdHJva2U6IFwid2hpdGVcIiwgZmlsbDogXCJub25lXCJ9fS8+XHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPHBhdGggeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjwvcGF0aD5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgIDwvbWFzaz5cclxuICAgICAgICAgIDxpbWFnZSBocmVmPXtob3VzZU1hcENsZWFufSBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9XCIxMDAlXCIgbWFzaz1cInVybCgjc3ZnLWRyYXcpXCIgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj48L2ltYWdlPlxyXG4gICAgICAgIDwvc3ZnPiAqL31cclxuICAgICAgICB7cGF0aCAmJlxyXG4gICAgICAgICAgPHN2ZyBoZWlnaHQ9XCIxMDAlXCIgd2lkdGg9XCIxMDAlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0eWxlPXt7ekluZGV4OjIsIHBvc2l0aW9uOlwiYWJzb2x1dGVcIn19PlxyXG4gICAgICAgICAgICA8cGF0aCB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZD17cGF0aH0gXHJcbiAgICAgICAgICAgICAgc3R5bGU9e3tzdHJva2VXaWR0aDogXCIyMHB4XCIsIHN0cm9rZUxpbmVqb2luOlwicm91bmRcIiwgc3Ryb2tlOiBcIndoaXRlXCIsIGZpbGw6IFwibm9uZVwifX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxpbWcgaWQ9XCJndWktY2FudmFzLW51bXB5XCIgd2lkdGg9XCI0MDBcIiBoZWlnaHQ9XCI0MDBcIiBzdHlsZT17e1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxyXG4gICAgICAgICAgICBsZWZ0OiBcIjUwJVwiLFxyXG4gICAgICAgICAgICB3aWR0aDogXCI1MCVcIixcclxuICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcclxuICAgICAgfX0+PC9pbWc+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5TcGVjaWZpY0xvY1ZhY3V1bUNsZWFuZXIucHJvcFR5cGVzID0ge1xyXG4gIGNpcmN1aXQ6IFByb3BUeXBlcy5zdHJpbmcsXHJcbn07XHJcbiIsImV4cG9ydCBjb25zdCB1cGRhdGVQYXRoID0gKHRyYWlsLCBzZXRQYXRoQ2FsbGJhY2ssIGhlaWdodCwgd2lkdGgpID0+IHtcclxuICB2YXIgbmV3UGF0aCA9IFwiTSBcIjtcclxuXHJcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRyYWlsLmxlbmd0aDsgaW5kZXgrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IHRyYWlsW2luZGV4XTtcclxuICAgIHZhciB0b3AgID0gZWxlbWVudFswXSAqIGhlaWdodDtcclxuICAgIHZhciBsZWZ0ID0gZWxlbWVudFsxXSAqIHdpZHRoO1xyXG4gICAgaWYgKGluZGV4ID09PSAwKSB7XHJcbiAgICAgIG5ld1BhdGggKz0gbGVmdC50b1N0cmluZygpKyBcIixcIiArIHRvcC50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgbmV3UGF0aCArPSBcIiBMIFwiICsgbGVmdC50b1N0cmluZygpICsgXCIsXCIgKyB0b3AudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIGlmICh0cmFpbC5sZW5ndGggPiAwKSB7XHJcbiAgICBzZXRQYXRoQ2FsbGJhY2sobmV3UGF0aClcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBhZGRUb1BhdGggPSAoeCwgeSwgdHJhaWwpID0+IHtcclxuICBpZiAoIXRyYWlsLmluY2x1ZGVzKFt4LCB5XSkpIHtcclxuICAgIHRyYWlsLnB1c2goW3gsIHldKTtcclxuICB9XHJcbn0iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY0xvY1ZhY3V1bUNsZWFuZXIiLCJfUmVhY3QkdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJSZWFjdCIsInZhY3V1bVBvc2UiLCJzZXRWYWN1dW1Qb3NlIiwiX1JlYWN0JHVzZVN0YXRlNCIsInBhdGgiLCJzZXRQYXRoIiwidHJhaWwiLCJsYXN0UG9zZSIsInVuZGVmaW5lZCIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiaW1nIiwidGFyZ2V0Iiwid2lkdGgiLCJjbGllbnRXaWR0aCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsInVwZGF0ZVBhdGgiLCJjb25zb2xlIiwibG9nIiwiY2FsbGJhY2siLCJtZXNzYWdlIiwicyIsInVwZGF0ZURhdGEiLCJkYXRhIiwidXBkYXRlIiwibWFwIiwiY29udGVudCIsInN1YnN0cmluZyIsImxlbmd0aCIsInNwbGl0IiwiaXRlbSIsInBhcnNlRmxvYXQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiYWRkVG9QYXRoIiwiaW1hZ2UiLCJjYW52YXMiLCJpbWFnZV9kYXRhIiwiSlNPTiIsInBhcnNlIiwic291cmNlIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZXNjYXBlIiwic2hhcGUiLCJzcmMiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInNlbmQiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJVUERBVEUiLCJvYnNlcnZlIiwidW5zdWJzY3JpYmUiLCJzdGF0ZSIsImVycm9yIiwiU1RBVEVfQ0hBTkdFRCIsIl9qc3hzIiwic3R5bGUiLCJkaXNwbGF5IiwicG9zaXRpb24iLCJjaGlsZHJlbiIsIl9qc3giLCJob3VzZU1hcERpcnR5IiwiYWx0IiwiY2xhc3NOYW1lIiwiaWQiLCJyb3RhdGUiLCJ0b3AiLCJsZWZ0IiwiVmFjdXVtIiwieG1sbnMiLCJ6SW5kZXgiLCJkIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZSIsImZpbGwiLCJwcm9wVHlwZXMiLCJjaXJjdWl0IiwiUHJvcFR5cGVzIiwic2V0UGF0aENhbGxiYWNrIiwibmV3UGF0aCIsImluZGV4IiwiZWxlbWVudCIsInRvU3RyaW5nIiwieCIsInkiLCJpbmNsdWRlcyIsInB1c2giLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJtb2R1bGUiLCJleHBvcnRzIiwic2hpbSIsInByb3BzIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsImV4YWN0IiwiY2hlY2tQcm9wVHlwZXMiLCJmIiwiayIsIlN5bWJvbCIsImZvciIsImwiLCJtIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJSZWFjdEN1cnJlbnRPd25lciIsInAiLCJrZXkiLCJyZWYiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInEiLCJjIiwiYSIsImciLCJiIiwiZSIsImgiLCJjYWxsIiwiZGVmYXVsdFByb3BzIiwiJCR0eXBlb2YiLCJ0eXBlIiwiX293bmVyIiwiY3VycmVudCIsIkZyYWdtZW50IiwianN4IiwianN4cyJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8725.585c887e.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8725.585c887e.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8725.585c887e.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8732.22af5ac7.js b/react_frontend/static/react_frontend/js/8732.22af5ac7.js new file mode 100644 index 000000000..430ce7e92 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8732.22af5ac7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8732],{8732:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/879.3e9e021f.js b/react_frontend/static/react_frontend/js/879.3e9e021f.js new file mode 100644 index 000000000..445fb1a01 --- /dev/null +++ b/react_frontend/static/react_frontend/js/879.3e9e021f.js @@ -0,0 +1,3 @@ +/*! For license information please see 879.3e9e021f.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[879],{41:(e,t,r)=>{function a(e,t,r){var a="";return r.split(" ").forEach((function(r){void 0!==e[r]?t.push(e[r]+";"):a+=r+" "})),a}r.d(t,{Rk:()=>a,SF:()=>n,sk:()=>o});var n=function(e,t,r){var a=e.key+"-"+t.name;!1===r&&void 0===e.registered[a]&&(e.registered[a]=t.styles)},o=function(e,t,r){n(e,t,r);var a=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+a:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},9359:(e,t,r)=>{r.d(t,{Ay:()=>v,q_:()=>b});var a=r(8168),n=r(6540),o=r(6289),i=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,s=(0,o.A)((function(e){return i.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),c=r(5684),l=r(41),u=r(6899),d=r(1287),p=s,m=function(e){return"theme"!==e},f=function(e){return"string"==typeof e&&e.charCodeAt(0)>96?p:m},y=function(e,t,r){var a;if(t){var n=t.shouldForwardProp;a=e.__emotion_forwardProp&&n?function(t){return e.__emotion_forwardProp(t)&&n(t)}:n}return"function"!=typeof a&&r&&(a=e.__emotion_forwardProp),a},h=function(e){var t=e.cache,r=e.serialized,a=e.isStringTag;return(0,l.SF)(t,r,a),(0,d.s)((function(){return(0,l.sk)(t,r,a)})),null},g=function e(t,r){var o,i,s=t.__emotion_real===t,d=s&&t.__emotion_base||t;void 0!==r&&(o=r.label,i=r.target);var p=y(t,r,s),m=p||f(d),g=!m("as");return function(){var v=arguments,b=s&&void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==o&&b.push("label:"+o+";"),null==v[0]||void 0===v[0].raw)b.push.apply(b,v);else{b.push(v[0][0]);for(var w=v.length,x=1;x{Array.isArray(e.__emotion_styles)&&(e.__emotion_styles=t(e.__emotion_styles))}},5687:(e,t,r)=>{r.d(t,{A:()=>a});const a=(0,r(7413).A)()},7413:(e,t,r)=>{r.d(t,{A:()=>m});var a=r(8168),n=r(8587),o=r(6540),i=r(53),s=r(9359),c=r(3571),l=r(9599),u=r(2858),d=r(4848);const p=["className","component"];function m(e={}){const{themeId:t,defaultTheme:r,defaultClassName:m="MuiBox-root",generateClassName:f}=e,y=(0,s.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(c.A);return o.forwardRef((function(e,o){const s=(0,u.A)(r),c=(0,l.A)(e),{className:h,component:g="div"}=c,v=(0,n.A)(c,p);return(0,d.jsx)(y,(0,a.A)({as:g,ref:o,className:(0,i.A)(h,f?f(m):m),theme:t&&s[t]||s},v))}))}},9599:(e,t,r)=>{r.d(t,{A:()=>l});var a=r(8168),n=r(8587),o=r(3272),i=r(4188);const s=["sx"],c=e=>{var t,r;const a={systemProps:{},otherProps:{}},n=null!=(t=null==e||null==(r=e.theme)?void 0:r.unstable_sxConfig)?t:i.A;return Object.keys(e).forEach((t=>{n[t]?a.systemProps[t]=e[t]:a.otherProps[t]=e[t]})),a};function l(e){const{sx:t}=e,r=(0,n.A)(e,s),{systemProps:i,otherProps:l}=c(r);let u;return u=Array.isArray(t)?[i,...t]:"function"==typeof t?(...e)=>{const r=t(...e);return(0,o.Q)(r)?(0,a.A)({},i,r):i}:(0,a.A)({},i,t),(0,a.A)({},l,{sx:u})}},2858:(e,t,r)=>{r.d(t,{A:()=>i});var a=r(3221),n=r(3951);const o=(0,a.A)(),i=function(e=o){return(0,n.A)(e)}},879:(e,t,r)=>{r.r(t),r.d(t,{default:()=>h});var a=r(6540);var n=r(302),o=r(5687),i=r(4848);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a,n,o,i,s=[],c=!0,l=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(a=o.call(r)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){l=!0,n=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(l)throw n}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=Array(t);r=1e3){var i=Math.ceil(g/(o/1e3)).toFixed(0);window.RoboticsExerciseComponents.commsManager.send("gui","introspection:".concat(i,"/").concat(n.toFixed(0))),w({type:"updateCountFrames",payload:{countFrames:0}}),w({type:"udpateStartTime",payload:{startTime:a}})}}};return window.RoboticsExerciseComponents.commsManager.subscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e),function(){window.RoboticsExerciseComponents.commsManager.unsubscribe([window.RoboticsExerciseComponents.commsManager.events.UPDATE],e)}}}),[p,h,d,v,g]),(0,i.jsxs)(o.A,{sx:{display:"flex",justifyContent:"center",alignItems:"center",maxHeight:"100%",width:"100%",height:"100%",textAlign:"center"},children:[!d&&(0,i.jsxs)("div",{className:"IqOZ1MXzdQIrWo13sFXJ",children:[(0,i.jsx)(n.CameraNotFoundIcon,{}),b.length>0&&(0,i.jsx)("h3",{className:"RwSvwiXRkbzR7Qcc3yBE",children:b})]}),(0,i.jsx)("video",{ref:t,autoPlay:!0,className:"AlTeRtfBHAEatLH85NDV"})]})}},302:(e,t,r)=>{r.r(t),r.d(t,{CameraMonitorIcon:()=>n,CameraNotFoundIcon:()=>o});var a=r(4848),n=function(e){return e.cssClass,(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 -960 960 960",width:"24px",fill:"#525252",children:(0,a.jsx)("path",{d:"M80-600v-160q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v160h-80v-160H160v160H80Zm80 360q-33 0-56.5-23.5T80-320v-200h80v200h640v-200h80v200q0 33-23.5 56.5T800-240H160ZM40-120v-80h880v80H40Zm440-420ZM80-520v-80h240q11 0 21 6t15 16l47 93 123-215q5-9 14-14.5t20-5.5q11 0 21 5.5t15 16.5l49 98h235v80H620q-11 0-21-5.5T584-542l-26-53-123 215q-5 10-15 15t-21 5q-11 0-20.5-6T364-382l-69-138H80Z"})})},o=function(e){return e.cssClass,(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",height:"80px",viewBox:"0 -960 960 960",width:"80px",fill:"#aaa",children:(0,a.jsx)("path",{d:"M880-275 720-435v111l-60-60v-356H304l-60-60h416q24 0 42 18t18 42v215l160-160v410ZM848-27 39-836l42-42L890-69l-42 42ZM484-560Zm-87 82ZM159-800l60 60h-79v520h520v-79l60 60v19q0 24-18 42t-42 18H140q-24 0-42-18t-18-42v-520q0-24 18-42t42-18h19Z"})})}},53:(e,t,r)=>{function a(e){var t,r,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tn});const n=function(){for(var e,t,r=0,n="";r{t.r(e),t.d(e,{default:()=>l});var n=t(6540),o=t(4848);function a(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=Array(e);t{var n=t(6540),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),l=Object.prototype.hasOwnProperty,u=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};function f(r,e,t){var n,a={},f=null,c=null;for(n in void 0!==t&&(f=""+t),void 0!==e.key&&(f=""+e.key),void 0!==e.ref&&(c=e.ref),e)l.call(e,n)&&!i.hasOwnProperty(n)&&(a[n]=e[n]);if(r&&r.defaultProps)for(n in e=r.defaultProps)void 0===a[n]&&(a[n]=e[n]);return{$$typeof:o,type:r,key:f,ref:c,props:a,_owner:u.current}}e.Fragment=a,e.jsx=f,e.jsxs=f},4848:(r,e,t)=>{r.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvODc5My42ZDU0ODNkNy5qcyIsIm1hcHBpbmdzIjoiOzRRQTBCQSxRQXhCQSxXQUNFLFFBQU1BLEVBQVdDLEVBQUFBLE9BQWEsTUFDa0NDLEtBQXhCRCxFQUFBQSxTQUFlLFlBQVMsczRCQUF6REUsRUFBWUQsRUFBQSxHQUFFRSxFQUFlRixFQUFBLEdBTXBDLE9BQ0VHLEVBQUFBLEVBQUFBLEtBQUEsVUFDRUMsSUFBSywrQkFDTEMsR0FBRyxhQUNIQyxNQUFPLE9BQ1BDLElBQUtULEVBQ0xVLE9BQVFQLEVBQ1JRLE9BWnFCLFdBQ3ZCUCxFQUNFSixFQUFTWSxRQUFRQyxjQUFjQyxTQUFTQyxLQUFLQyxhQUFlLEtBRWhFLEVBU0lDLE1BQU8sQ0FDTFQsTUFBTyxPQUNQVSxTQUFVLFNBSWxCLGtCQ2ZhLElBQUlDLEVBQUUsRUFBUSxNQUFTQyxFQUFFQyxPQUFPQyxJQUFJLGlCQUFpQkMsRUFBRUYsT0FBT0MsSUFBSSxrQkFBa0JFLEVBQUVDLE9BQU9DLFVBQVVDLGVBQWVDLEVBQUVULEVBQUVVLG1EQUFtREMsa0JBQWtCQyxFQUFFLENBQUNDLEtBQUksRUFBR3ZCLEtBQUksRUFBR3dCLFFBQU8sRUFBR0MsVUFBUyxHQUNoUCxTQUFTQyxFQUFFQyxFQUFFQyxFQUFFQyxHQUFHLElBQUlDLEVBQUVDLEVBQUUsQ0FBQyxFQUFFQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUgsVUFBaEYsSUFBU0QsSUFBSUcsRUFBRSxHQUFHSCxRQUFHLElBQVNELEVBQUVMLE1BQU1TLEVBQUUsR0FBR0osRUFBRUwsVUFBSyxJQUFTSyxFQUFFNUIsTUFBTWlDLEVBQUVMLEVBQUU1QixLQUFjNEIsRUFBRWIsRUFBRW1CLEtBQUtOLEVBQUVFLEtBQUtSLEVBQUVKLGVBQWVZLEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksR0FBR0gsR0FBR0EsRUFBRVEsYUFBYSxJQUFJTCxLQUFLRixFQUFFRCxFQUFFUSxrQkFBZSxJQUFTSixFQUFFRCxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLE1BQU0sQ0FBQ00sU0FBU3pCLEVBQUUwQixLQUFLVixFQUFFSixJQUFJUyxFQUFFaEMsSUFBSWlDLEVBQUVLLE1BQU1QLEVBQUVRLE9BQU9wQixFQUFFaEIsUUFBUSxDQUFDcUMsRUFBUUMsU0FBUzNCLEVBQUUwQixFQUFRRSxJQUFJaEIsRUFBRWMsRUFBUUcsS0FBS2pCLGtCQ1B4V2tCLEVBQU9KLFFBQVUsRUFBakIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL3ZpZXdzL0ZvcnVtVmlldy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcblxyXG5mdW5jdGlvbiBGb3J1bVZpZXcoKSB7XHJcbiAgY29uc3QgZm9ydW1SZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XHJcbiAgY29uc3QgW2lGcmFtZUhlaWdodCwgc2V0SWZyYW1lSGVpZ2h0XSA9IFJlYWN0LnVzZVN0YXRlKFwiMTAwMHB4XCIpO1xyXG4gIGNvbnN0IGxvYWRJZnJhbWVIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBzZXRJZnJhbWVIZWlnaHQoXHJcbiAgICAgIGZvcnVtUmVmLmN1cnJlbnQuY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCArIFwicHhcIlxyXG4gICAgKTtcclxuICB9O1xyXG4gIHJldHVybiAoXHJcbiAgICA8aWZyYW1lXHJcbiAgICAgIHNyYz17XCJodHRwczovL2ZvcnVtLnVuaWJvdGljcy5vcmcvXCJ9XHJcbiAgICAgIGlkPVwiZm9ydW0tdmlld1wiXHJcbiAgICAgIHdpZHRoPXtcIjEwMCVcIn1cclxuICAgICAgcmVmPXtmb3J1bVJlZn1cclxuICAgICAgaGVpZ2h0PXtpRnJhbWVIZWlnaHR9XHJcbiAgICAgIG9uTG9hZD17bG9hZElmcmFtZUhlaWdodH1cclxuICAgICAgc3R5bGU9e3tcclxuICAgICAgICB3aWR0aDogXCIxMDAlXCIsXHJcbiAgICAgICAgb3ZlcmZsb3c6IFwiYXV0b1wiLFxyXG4gICAgICB9fVxyXG4gICAgLz5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3J1bVZpZXc7XHJcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJmb3J1bVJlZiIsIlJlYWN0IiwiX1JlYWN0JHVzZVN0YXRlMiIsImlGcmFtZUhlaWdodCIsInNldElmcmFtZUhlaWdodCIsIl9qc3giLCJzcmMiLCJpZCIsIndpZHRoIiwicmVmIiwiaGVpZ2h0Iiwib25Mb2FkIiwiY3VycmVudCIsImNvbnRlbnRXaW5kb3ciLCJkb2N1bWVudCIsImJvZHkiLCJzY3JvbGxIZWlnaHQiLCJzdHlsZSIsIm92ZXJmbG93IiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJwcm9wcyIsIl9vd25lciIsImV4cG9ydHMiLCJGcmFnbWVudCIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/8793.dd5e3f75.js.LICENSE.txt b/react_frontend/static/react_frontend/js/8793.dd5e3f75.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/8793.dd5e3f75.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/8832.bbf99698.js b/react_frontend/static/react_frontend/js/8832.bbf99698.js new file mode 100644 index 000000000..81e97323c --- /dev/null +++ b/react_frontend/static/react_frontend/js/8832.bbf99698.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[8832],{8832:(e,a,t)=>{function n(e){return decodeURIComponent(escape(e))}t.r(a),t.d(a,{drawImage:()=>o,drawLeftImage:()=>d});var i=new Image,r=new Image;function o(e){var a=document.getElementById("gui_canvas_right"),t=a.getContext("2d");function r(){window.requestAnimationFrame(r),t.drawImage(i,0,0)}i.onload=function(){r()};var o=JSON.parse(e.image),d=n(o.image),g=o.shape;""!=d&&(i.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}function d(e){var a=document.getElementById("gui_canvas_left"),t=a.getContext("2d");function i(){window.requestAnimationFrame(i),t.drawImage(r,0,0)}r.onload=function(){i()};var o=JSON.parse(e.image_left),d=n(o.image_left),g=o.shape;""!=d&&(r.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvODgzMi5jNjA5NjA5ZS5qcyIsIm1hcHBpbmdzIjoiZ0hBQ0EsU0FBU0EsRUFBWUMsR0FDakIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNyQyxDLG9EQUVBLElBQUlHLEVBQVEsSUFBSUMsTUFDWkMsRUFBYSxJQUFJRCxNQUVkLFNBQVNFLEVBQVdDLEdBQ3ZCLElBQUlDLEVBQVNDLFNBQVNDLGVBQWUsb0JBQ3JDQyxFQUFVSCxFQUFPSSxXQUFXLE1BUTVCLFNBQVNDLElBQ0xDLE9BQU9DLHNCQUFzQkYsR0FDN0JGLEVBQVFMLFVBQVVILEVBQU8sRUFBRyxFQUNoQyxDQVJBQSxFQUFNYSxPQUFTLFdBQ1hILEdBQ0osRUFTQSxJQUFJSSxFQUFhQyxLQUFLQyxNQUFNWixFQUFLSixPQUM3QmlCLEVBQVNyQixFQUFZa0IsRUFBV2QsT0FDaENrQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NqQixFQUFNbUIsSUFBTSwwQkFBNEJGLEVBQ3hDWixFQUFPZSxNQUFRRixFQUFNLEdBQ3JCYixFQUFPZ0IsT0FBU0gsRUFBTSxHQUU5QixDQUVPLFNBQVNJLEVBQWVsQixHQUMzQixJQUFJbUIsRUFBY2pCLFNBQVNDLGVBQWUsbUJBQzFDaUIsRUFBZUQsRUFBWWQsV0FBVyxNQVF0QyxTQUFTZ0IsSUFDTGQsT0FBT0Msc0JBQXNCYSxHQUM3QkQsRUFBYXJCLFVBQVVELEVBQVksRUFBRyxFQUMxQyxDQVJBQSxFQUFXVyxPQUFTLFdBQ2hCWSxHQUNKLEVBU0EsSUFBSVgsRUFBYUMsS0FBS0MsTUFBTVosRUFBS0YsWUFDN0JlLEVBQVNyQixFQUFZa0IsRUFBV1osWUFDaENnQixFQUFRSixFQUFXSSxNQUVWLElBQVZELElBQ0NmLEVBQVdpQixJQUFNLDBCQUE0QkYsRUFDN0NNLEVBQVlILE1BQVFGLEVBQU0sR0FDMUJLLEVBQVlGLE9BQVNILEVBQU0sR0FFbkMsQyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Bvd2VyX3Rvd2VyX2luc3BlY3Rpb25fbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc1Bvd2VyVG93ZXJJbnNwZWN0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRvIGRlY29kZSB0aGUgaW1hZ2Ugc3RyaW5nIHdlIHdpbGwgcmVjZWl2ZSBmcm9tIHNlcnZlclxyXG5mdW5jdGlvbiBkZWNvZGVfdXRmOChzKXtcclxuICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHMpKVxyXG59XHJcblxyXG5sZXQgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcclxubGV0IGltYWdlX2xlZnQgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3SW1hZ2UgKGRhdGEpe1xyXG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19yaWdodFwiKSxcclxuICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2ltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgZnVuY3Rpb24gdXBkYXRlX2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2UpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuICAgIFxyXG4gICAgaWYoc291cmNlICE9IFwiXCIpe1xyXG4gICAgICAgIGltYWdlLnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXMud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXMuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICB9ICAgXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBkcmF3TGVmdEltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXNfbGVmdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZ3VpX2NhbnZhc19sZWZ0XCIpLFxyXG4gICAgY29udGV4dF9sZWZ0ID0gY2FudmFzX2xlZnQuZ2V0Q29udGV4dCgnMmQnKVxyXG5cclxuICAgIC8vIEZvciBpbWFnZSBvYmplY3RcclxuICAgIGltYWdlX2xlZnQub25sb2FkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICB1cGRhdGVfbGVmdF9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9sZWZ0X2ltYWdlKCl7XHJcbiAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGVfbGVmdF9pbWFnZSk7XHJcbiAgICAgICAgY29udGV4dF9sZWZ0LmRyYXdJbWFnZShpbWFnZV9sZWZ0LCAwLCAwKTtcclxuICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAvLyBQYXJzZSB0aGUgSW1hZ2UgRGF0YVxyXG4gICAgdmFyIGltYWdlX2RhdGEgPSBKU09OLnBhcnNlKGRhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZV9sZWZ0LnNyYyA9IFwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCxcIiArIHNvdXJjZTtcclxuICAgICAgICBjYW52YXNfbGVmdC53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgIGNhbnZhc19sZWZ0LmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcbiJdLCJuYW1lcyI6WyJkZWNvZGVfdXRmOCIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJpbWFnZSIsIkltYWdlIiwiaW1hZ2VfbGVmdCIsImRyYXdJbWFnZSIsImRhdGEiLCJjYW52YXMiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY29udGV4dCIsImdldENvbnRleHQiLCJ1cGRhdGVfaW1hZ2UiLCJ3aW5kb3ciLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJvbmxvYWQiLCJpbWFnZV9kYXRhIiwiSlNPTiIsInBhcnNlIiwic291cmNlIiwic2hhcGUiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCIsImRyYXdMZWZ0SW1hZ2UiLCJjYW52YXNfbGVmdCIsImNvbnRleHRfbGVmdCIsInVwZGF0ZV9sZWZ0X2ltYWdlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9011.768beba0.js b/react_frontend/static/react_frontend/js/9011.768beba0.js new file mode 100644 index 000000000..0deb18677 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9011.768beba0.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9011,7144],{2032:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n.createSvgIcon}});var n=o(8826)},1224:(e,t,o)=>{"use strict";o.d(t,{A:()=>w});var n=o(8587),a=o(8168),r=o(6540),i=o(53),l=o(3726),s=o(5659),d=o(4279),c=o(7577),u=o(4409),p=o(6606),h=o(8466),v=o(8413),m=o(1609);function f(e){return(0,m.A)("MuiButton",e)}const b=(0,v.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var g=o(1848),y=o(4848);const x=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],S=e=>(0,a.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),A=(0,c.Ay)(p.A,{shouldForwardProp:e=>(0,c.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,h.A)(o.color)}`],t[`size${(0,h.A)(o.size)}`],t[`${o.variant}Size${(0,h.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const r="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,a.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,a.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${b.focusVisible}`]:(0,a.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${b.disabled}`]:(0,a.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,d.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:r,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${b.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${b.disabled}`]:{boxShadow:"none"}})),z=(0,c.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,h.A)(o.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},S(e)))),C=(0,c.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,h.A)(o.size)}`]]}})((({ownerState:e})=>(0,a.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},S(e)))),w=r.forwardRef((function(e,t){const o=r.useContext(g.A),d=(0,l.A)(o,e),c=(0,u.A)({props:d,name:"MuiButton"}),{children:p,color:v="primary",component:m="button",className:b,disabled:S=!1,disableElevation:w=!1,disableFocusRipple:I=!1,endIcon:R,focusVisibleClassName:$,fullWidth:k=!1,size:E="medium",startIcon:W,type:M,variant:_="text"}=c,B=(0,n.A)(c,x),F=(0,a.A)({},c,{color:v,component:m,disabled:S,disableElevation:w,disableFocusRipple:I,fullWidth:k,size:E,type:M,variant:_}),j=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:r,variant:i,classes:l}=e,d={root:["root",i,`${i}${(0,h.A)(t)}`,`size${(0,h.A)(r)}`,`${i}Size${(0,h.A)(r)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,h.A)(r)}`],endIcon:["endIcon",`iconSize${(0,h.A)(r)}`]},c=(0,s.A)(d,f,l);return(0,a.A)({},l,c)})(F),L=W&&(0,y.jsx)(z,{className:j.startIcon,ownerState:F,children:W}),T=R&&(0,y.jsx)(C,{className:j.endIcon,ownerState:F,children:R});return(0,y.jsxs)(A,(0,a.A)({ownerState:F,className:(0,i.A)(o.className,j.root,b),component:m,disabled:S,focusRipple:!I,focusVisibleClassName:(0,i.A)(j.focusVisible,$),ref:t,type:M},B,{classes:j,children:[L,p,T]}))}))},1848:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(6540).createContext({})},8826:(e,t,o)=>{"use strict";o.r(t),o.d(t,{capitalize:()=>a.A,createChainedFunction:()=>r,createSvgIcon:()=>i.A,debounce:()=>l.A,deprecatedPropType:()=>s,isMuiElement:()=>d.A,ownerDocument:()=>c.A,ownerWindow:()=>u.A,requirePropFactory:()=>p,setRef:()=>h,unstable_ClassNameGenerator:()=>S,unstable_useEnhancedEffect:()=>v.A,unstable_useId:()=>m.A,unsupportedProp:()=>f,useControlled:()=>b.A,useEventCallback:()=>g.A,useForkRef:()=>y.A,useIsFocusVisible:()=>x.A});var n=o(9071),a=o(8466);const r=o(1210).A;var i=o(5003),l=o(1935);const s=function(e,t){return()=>null};var d=o(5034),c=o(6248),u=o(3749);o(8168);const p=function(e,t){return()=>null},h=o(989).A;var v=o(2778),m=o(1668);const f=function(e,t,o,n,a){return null};var b=o(1159),g=o(3034),y=o(6852),x=o(1544);const S={configure:e=>{n.A.configure(e)}}},1668:(e,t,o)=>{"use strict";o.d(t,{A:()=>n});const n=o(4661).A},4661:(e,t,o)=>{"use strict";var n;o.d(t,{A:()=>l});var a=o(6540);let r=0;const i=(n||(n=o.t(a,2)))["useId".toString()];function l(e){if(void 0!==i){const t=i();return null!=e?e:t}return function(e){const[t,o]=a.useState(e),n=e||t;return a.useEffect((()=>{null==t&&(r+=1,o(`mui-${r}`))}),[t]),n}(e)}},8729:(e,t,o)=>{"use strict";o.r(t),o.d(t,{default:()=>v});var n=o(6540),a=o(8984),r=o(4719),i=o(1224),l=o(2471),s=o(7144),d=o(5556),c=o.n(d),u=o(4848);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var o=0,n=Array(t);o{"use strict";o.r(t),o.d(t,{decode_utf8:()=>l,get_inner_size:()=>n,get_novnc_size:()=>r,get_novnc_size_react:()=>a,saveCode:()=>i});var n=function(e){var t=getComputedStyle(e),o=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),n=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),a=parseFloat(t.borderLeftWidth)+parseFloat(t.borderRightWidth),r=parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),i=e.offsetWidth-o-a,l=e.offsetHeight-n-r;return{width:Math.floor(i),height:Math.floor(l)}},a=function(){var e=getComputedStyle(document.getElementById("iframe")).width,t=getComputedStyle(document.getElementById("iframe")).height;return{width:parseInt(e,10),height:parseInt(t,10)}},r=function(){var e=n(document.getElementById("iframe"));return{width:e.width||document.body.clientWidth,height:Math.floor(.5*e.height)||document.body.clientHeight}},i=function(e,t){var o=new Blob([t],{type:"text/plain; charset=utf-8"}),n=document.createElement("a"),a=URL.createObjectURL(o);n.href=a,n.download=e+".py",document.body.appendChild(n),n.click(),setTimeout((function(){document.body.removeChild(n),window.URL.revokeObjectURL(a)}),0)},l=function(e){return decodeURIComponent(escape(e))}},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TSxTQUFXN0QsRUFBVyxNQUN4QjRDLFNBQVNLLEtBQUthLFlBQVlQLEdBQzFCQSxFQUFFUSxRQUNGQyxZQUFXLFdBQ1RwQixTQUFTSyxLQUFLZ0IsWUFBWVYsR0FDMUJXLE9BQU9SLElBQUlTLGdCQUFnQlYsRUFDN0IsR0FBRyxFQUNMLEVBRWFXLEVBQWMsU0FBQ0MsR0FDMUIsT0FBT0MsbUJBQW1CQyxPQUFPRixHQUNuQyxDLFdDMUNBRyxFQUFPN00sUUFMUCxTQUFnQ3FKLEdBQzlCLE9BQU9BLEdBQUtBLEVBQUV5RCxXQUFhekQsRUFBSSxDQUM3QixRQUFXQSxFQUVmLEVBQ3lDd0QsRUFBTzdNLFFBQVE4TSxZQUFhLEVBQU1ELEVBQU83TSxRQUFpQixRQUFJNk0sRUFBTzdNLE8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2ljb25zLW1hdGVyaWFsL3V0aWxzL2NyZWF0ZVN2Z0ljb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b24vYnV0dG9uQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9CdXR0b24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9kZXByZWNhdGVkUHJvcFR5cGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvcmVxdWlyZVByb3BGYWN0b3J5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3Vuc3VwcG9ydGVkUHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3VzZUlkL3VzZUlkLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvYnV0dG9ucy9TYXZlQnV0dG9uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2hlbHBlcnMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4ndXNlIGNsaWVudCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJkZWZhdWx0XCIsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF91dGlscy5jcmVhdGVTdmdJY29uO1xuICB9XG59KTtcbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91dGlsc1wiKTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlCdXR0b24nLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCdXR0b24nLCBbJ3Jvb3QnLCAndGV4dCcsICd0ZXh0SW5oZXJpdCcsICd0ZXh0UHJpbWFyeScsICd0ZXh0U2Vjb25kYXJ5JywgJ3RleHRTdWNjZXNzJywgJ3RleHRFcnJvcicsICd0ZXh0SW5mbycsICd0ZXh0V2FybmluZycsICdvdXRsaW5lZCcsICdvdXRsaW5lZEluaGVyaXQnLCAnb3V0bGluZWRQcmltYXJ5JywgJ291dGxpbmVkU2Vjb25kYXJ5JywgJ291dGxpbmVkU3VjY2VzcycsICdvdXRsaW5lZEVycm9yJywgJ291dGxpbmVkSW5mbycsICdvdXRsaW5lZFdhcm5pbmcnLCAnY29udGFpbmVkJywgJ2NvbnRhaW5lZEluaGVyaXQnLCAnY29udGFpbmVkUHJpbWFyeScsICdjb250YWluZWRTZWNvbmRhcnknLCAnY29udGFpbmVkU3VjY2VzcycsICdjb250YWluZWRFcnJvcicsICdjb250YWluZWRJbmZvJywgJ2NvbnRhaW5lZFdhcm5pbmcnLCAnZGlzYWJsZUVsZXZhdGlvbicsICdmb2N1c1Zpc2libGUnLCAnZGlzYWJsZWQnLCAnY29sb3JJbmhlcml0JywgJ3RleHRTaXplU21hbGwnLCAndGV4dFNpemVNZWRpdW0nLCAndGV4dFNpemVMYXJnZScsICdvdXRsaW5lZFNpemVTbWFsbCcsICdvdXRsaW5lZFNpemVNZWRpdW0nLCAnb3V0bGluZWRTaXplTGFyZ2UnLCAnY29udGFpbmVkU2l6ZVNtYWxsJywgJ2NvbnRhaW5lZFNpemVNZWRpdW0nLCAnY29udGFpbmVkU2l6ZUxhcmdlJywgJ3NpemVNZWRpdW0nLCAnc2l6ZVNtYWxsJywgJ3NpemVMYXJnZScsICdmdWxsV2lkdGgnLCAnc3RhcnRJY29uJywgJ2VuZEljb24nLCAnaWNvblNpemVTbWFsbCcsICdpY29uU2l6ZU1lZGl1bScsICdpY29uU2l6ZUxhcmdlJ10pO1xuZXhwb3J0IGRlZmF1bHQgYnV0dG9uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiY2xhc3NOYW1lXCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlRWxldmF0aW9uXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwiZW5kSWNvblwiLCBcImZvY3VzVmlzaWJsZUNsYXNzTmFtZVwiLCBcImZ1bGxXaWR0aFwiLCBcInNpemVcIiwgXCJzdGFydEljb25cIiwgXCJ0eXBlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGludGVybmFsX3Jlc29sdmVQcm9wcyBhcyByZXNvbHZlUHJvcHMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCwgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJy4uL0J1dHRvbkJhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgYnV0dG9uQ2xhc3NlcywgeyBnZXRCdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2J1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IEJ1dHRvbkdyb3VwQ29udGV4dCBmcm9tICcuLi9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgYCR7dmFyaWFudH0ke2NhcGl0YWxpemUoY29sb3IpfWAsIGBzaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGAke3ZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gLCBjb2xvciA9PT0gJ2luaGVyaXQnICYmICdjb2xvckluaGVyaXQnLCBkaXNhYmxlRWxldmF0aW9uICYmICdkaXNhYmxlRWxldmF0aW9uJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnXSxcbiAgICBsYWJlbDogWydsYWJlbCddLFxuICAgIHN0YXJ0SWNvbjogWydzdGFydEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF0sXG4gICAgZW5kSWNvbjogWydlbmRJY29uJywgYGljb25TaXplJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRCdXR0b25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgY29tbW9uSWNvblN0eWxlcyA9IG93bmVyU3RhdGUgPT4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMThcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbWVkaXVtJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMjBcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMlxuICB9XG59KTtcbmNvbnN0IEJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBzdHlsZXNbYCR7b3duZXJTdGF0ZS52YXJpYW50fSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2BzaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdLCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYgc3R5bGVzLmNvbG9ySW5oZXJpdCwgb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHN0eWxlcy5kaXNhYmxlRWxldmF0aW9uLCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiBzdHlsZXMuZnVsbFdpZHRoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSRwYWxldHRlJGdldENvbiwgX3RoZW1lJHBhbGV0dGU7XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSA6IHRoZW1lLnBhbGV0dGUuZ3JleVs4MDBdO1xuICBjb25zdCBpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXkuQTEwMCA6IHRoZW1lLnBhbGV0dGUuZ3JleVs3MDBdO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYnV0dG9uLCB7XG4gICAgbWluV2lkdGg6IDY0LFxuICAgIHBhZGRpbmc6ICc2cHggMTZweCcsXG4gICAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ2JhY2tncm91bmQtY29sb3InLCAnYm94LXNoYWRvdycsICdib3JkZXItY29sb3InLCAnY29sb3InXSwge1xuICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0XG4gICAgfSksXG4gICAgJyY6aG92ZXInOiBfZXh0ZW5kcyh7XG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5Q2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbn1gLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkSG92ZXJCZyA6IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbNF0sXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmdyZXlbMzAwXVxuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uZGFyayxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICAgICAgfVxuICAgIH0pLFxuICAgICcmOmFjdGl2ZSc6IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbOF1cbiAgICB9KSxcbiAgICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXTogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s2XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IF9leHRlbmRzKHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZH1gXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1swXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZFxuICAgIH0pXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNnB4IDhweCdcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc1cHggMTVweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkIGN1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sXG4gICAgYm9yZGVyOiB0aGVtZS52YXJzID8gYDFweCBzb2xpZCByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvIDAuNSlgIDogYDFweCBzb2xpZCAke2FscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgMC41KX1gXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIGNvbG9yOiB0aGVtZS52YXJzID9cbiAgICAvLyB0aGlzIGlzIHNhZmUgYmVjYXVzZSBncmV5IGRvZXMgbm90IGNoYW5nZSBiZXR3ZWVuIGRlZmF1bHQgbGlnaHQvZGFyayBtb2RlXG4gICAgdGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeSA6IChfdGhlbWUkcGFsZXR0ZSRnZXRDb24gPSAoX3RoZW1lJHBhbGV0dGUgPSB0aGVtZS5wYWxldHRlKS5nZXRDb250cmFzdFRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkcGFsZXR0ZSRnZXRDb24uY2FsbChfdGhlbWUkcGFsZXR0ZSwgdGhlbWUucGFsZXR0ZS5ncmV5WzMwMF0pLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5CdXR0b24uaW5oZXJpdENvbnRhaW5lZEJnIDogaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvcixcbiAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uY29udHJhc3RUZXh0LFxuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgYm9yZGVyQ29sb3I6ICdjdXJyZW50Q29sb3InXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzRweCA1cHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAxMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnM3B4IDlweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzdweCAyMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzRweCAxMHB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAyMnB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9KTtcbn0sICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUuZGlzYWJsZUVsZXZhdGlvbiAmJiB7XG4gIGJveFNoYWRvdzogJ25vbmUnLFxuICAnJjpob3Zlcic6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gICcmOmFjdGl2ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfVxufSk7XG5jb25zdCBCdXR0b25TdGFydEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnU3RhcnRJY29uJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5zdGFydEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogOCxcbiAgbWFyZ2luTGVmdDogLTRcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpbkxlZnQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b25FbmRJY29uID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ0VuZEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmVuZEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogLTQsXG4gIG1hcmdpbkxlZnQ6IDhcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpblJpZ2h0OiAtMlxufSwgY29tbW9uSWNvblN0eWxlcyhvd25lclN0YXRlKSkpO1xuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICAvLyBwcm9wcyBwcmlvcml0eTogYGluUHJvcHNgID4gYGNvbnRleHRQcm9wc2AgPiBgdGhlbWVEZWZhdWx0UHJvcHNgXG4gIGNvbnN0IGNvbnRleHRQcm9wcyA9IFJlYWN0LnVzZUNvbnRleHQoQnV0dG9uR3JvdXBDb250ZXh0KTtcbiAgY29uc3QgcmVzb2x2ZWRQcm9wcyA9IHJlc29sdmVQcm9wcyhjb250ZXh0UHJvcHMsIGluUHJvcHMpO1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiByZXNvbHZlZFByb3BzLFxuICAgIG5hbWU6ICdNdWlCdXR0b24nXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIGNvbG9yID0gJ3ByaW1hcnknLFxuICAgICAgY29tcG9uZW50ID0gJ2J1dHRvbicsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUVsZXZhdGlvbiA9IGZhbHNlLFxuICAgICAgZGlzYWJsZUZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBlbmRJY29uOiBlbmRJY29uUHJvcCxcbiAgICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSxcbiAgICAgIGZ1bGxXaWR0aCA9IGZhbHNlLFxuICAgICAgc2l6ZSA9ICdtZWRpdW0nLFxuICAgICAgc3RhcnRJY29uOiBzdGFydEljb25Qcm9wLFxuICAgICAgdHlwZSxcbiAgICAgIHZhcmlhbnQgPSAndGV4dCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmdWxsV2lkdGgsXG4gICAgc2l6ZSxcbiAgICB0eXBlLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3Qgc3RhcnRJY29uID0gc3RhcnRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25TdGFydEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3RhcnRJY29uLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IHN0YXJ0SWNvblByb3BcbiAgfSk7XG4gIGNvbnN0IGVuZEljb24gPSBlbmRJY29uUHJvcCAmJiAvKiNfX1BVUkVfXyovX2pzeChCdXR0b25FbmRJY29uLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLmVuZEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogZW5kSWNvblByb3BcbiAgfSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNvbnRleHRQcm9wcy5jbGFzc05hbWUsIGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICBjb21wb25lbnQ6IGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgZm9jdXNSaXBwbGU6ICFkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuZm9jdXNWaXNpYmxlLCBmb2N1c1Zpc2libGVDbGFzc05hbWUpLFxuICAgIHJlZjogcmVmLFxuICAgIHR5cGU6IHR5cGVcbiAgfSwgb3RoZXIsIHtcbiAgICBjbGFzc2VzOiBjbGFzc2VzLFxuICAgIGNoaWxkcmVuOiBbc3RhcnRJY29uLCBjaGlsZHJlbiwgZW5kSWNvbl1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCdXR0b24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29sb3Igb2YgdGhlIGNvbXBvbmVudC5cbiAgICogSXQgc3VwcG9ydHMgYm90aCBkZWZhdWx0IGFuZCBjdXN0b20gdGhlbWUgY29sb3JzLCB3aGljaCBjYW4gYmUgYWRkZWQgYXMgc2hvd24gaW4gdGhlXG4gICAqIFtwYWxldHRlIGN1c3RvbWl6YXRpb24gZ3VpZGVdKGh0dHBzOi8vbXVpLmNvbS9tYXRlcmlhbC11aS9jdXN0b21pemF0aW9uL3BhbGV0dGUvI2FkZGluZy1uZXctY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3N1Y2Nlc3MnLCAnZXJyb3InLCAnaW5mbycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCBubyBlbGV2YXRpb24gaXMgdXNlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVFbGV2YXRpb246IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgIGtleWJvYXJkIGZvY3VzIHJpcHBsZSBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVGb2N1c1JpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgZWZmZWN0IGlzIGRpc2FibGVkLlxuICAgKlxuICAgKiDimqDvuI8gV2l0aG91dCBhIHJpcHBsZSB0aGVyZSBpcyBubyBzdHlsaW5nIGZvciA6Zm9jdXMtdmlzaWJsZSBieSBkZWZhdWx0LiBCZSBzdXJlXG4gICAqIHRvIGhpZ2hsaWdodCB0aGUgZWxlbWVudCBieSBhcHBseWluZyBzZXBhcmF0ZSBzdHlsZXMgd2l0aCB0aGUgYC5NdWktZm9jdXNWaXNpYmxlYCBjbGFzcy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYWZ0ZXIgdGhlIGNoaWxkcmVuLlxuICAgKi9cbiAgZW5kSWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBidXR0b24gd2lsbCB0YWtlIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBmdWxsV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIFVSTCB0byBsaW5rIHRvIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuICAgKiBJZiBkZWZpbmVkLCBhbiBgYWAgZWxlbWVudCB3aWxsIGJlIHVzZWQgYXMgdGhlIHJvb3Qgbm9kZS5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBgc21hbGxgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRlbnNlIGJ1dHRvbiBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEVsZW1lbnQgcGxhY2VkIGJlZm9yZSB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBzdGFydEljb246IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHZhcmlhbnQgdG8gdXNlLlxuICAgKiBAZGVmYXVsdCAndGV4dCdcbiAgICovXG4gIHZhcmlhbnQ6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnY29udGFpbmVkJywgJ291dGxpbmVkJywgJ3RleHQnXSksIFByb3BUeXBlcy5zdHJpbmddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IEJ1dHRvbkdyb3VwQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHt9KTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIEJ1dHRvbkdyb3VwQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdCdXR0b25Hcm91cENvbnRleHQnO1xufVxuZXhwb3J0IGRlZmF1bHQgQnV0dG9uR3JvdXBDb250ZXh0OyIsImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZUNoYWluZWRGdW5jdGlvbiBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9kZXByZWNhdGVkUHJvcFR5cGUgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZXByZWNhdGVkUHJvcFR5cGU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVwcmVjYXRlZFByb3BUeXBlKHZhbGlkYXRvciwgcmVhc29uKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cbiAgcmV0dXJuIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgJHtsb2NhdGlvbn0gXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZVNhZmV9XFxgIGlzIGRlcHJlY2F0ZWQuICR7cmVhc29ufWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9yZXF1aXJlUHJvcEZhY3RvcnkgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCByZXF1aXJlUHJvcEZhY3Rvcnk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlUHJvcEZhY3RvcnkoY29tcG9uZW50TmFtZUluRXJyb3IsIENvbXBvbmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2ZvcmJpZC1mb3JlaWduLXByb3AtdHlwZXNcbiAgY29uc3QgcHJldlByb3BUeXBlcyA9IENvbXBvbmVudCA/IF9leHRlbmRzKHt9LCBDb21wb25lbnQucHJvcFR5cGVzKSA6IG51bGw7XG4gIGNvbnN0IHJlcXVpcmVQcm9wID0gcmVxdWlyZWRQcm9wID0+IChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQ2hlY2tlciA9IHByZXZQcm9wVHlwZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZQcm9wVHlwZXNbcHJvcEZ1bGxOYW1lU2FmZV07XG4gICAgaWYgKGRlZmF1bHRUeXBlQ2hlY2tlcikge1xuICAgICAgY29uc3QgdHlwZUNoZWNrZXJSZXN1bHQgPSBkZWZhdWx0VHlwZUNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICh0eXBlQ2hlY2tlclJlc3VsdCkge1xuICAgICAgICByZXR1cm4gdHlwZUNoZWNrZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJyAmJiAhcHJvcHNbcmVxdWlyZWRQcm9wXSkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZUluRXJyb3J9XFxgIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgXFxgJHtyZXF1aXJlZFByb3B9XFxgIHByb3AuYCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICByZXR1cm4gcmVxdWlyZVByb3A7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgc2V0UmVmOyIsImltcG9ydCB7IHVuc3RhYmxlX3Vuc3VwcG9ydGVkUHJvcCBhcyB1bnN1cHBvcnRlZFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVuc3VwcG9ydGVkUHJvcDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnN1cHBvcnRlZFByb3AocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVtb3ZlIGl0LmApO1xuICB9XG4gIHJldHVybiBudWxsO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvYmFzZS9jbGFzc05hbWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYXBpdGFsaXplIH0gZnJvbSAnLi9jYXBpdGFsaXplJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVTdmdJY29uIH0gZnJvbSAnLi9jcmVhdGVTdmdJY29uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnLi9kZXByZWNhdGVkUHJvcFR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICcuL2lzTXVpRWxlbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lcldpbmRvdyB9IGZyb20gJy4vb3duZXJXaW5kb3cnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXF1aXJlUHJvcEZhY3RvcnkgfSBmcm9tICcuL3JlcXVpcmVQcm9wRmFjdG9yeSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFJlZiB9IGZyb20gJy4vc2V0UmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICcuL3VzZUVuaGFuY2VkRWZmZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlSWQgfSBmcm9tICcuL3VzZUlkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnLi91bnN1cHBvcnRlZFByb3AnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VDb250cm9sbGVkIH0gZnJvbSAnLi91c2VDb250cm9sbGVkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZvcmtSZWYgfSBmcm9tICcuL3VzZUZvcmtSZWYnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJy4vdXNlSXNGb2N1c1Zpc2libGUnO1xuLy8gVE9ETzogcmVtb3ZlIHRoaXMgZXhwb3J0IG9uY2UgQ2xhc3NOYW1lR2VuZXJhdG9yIGlzIHN0YWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciA9IHtcbiAgY29uZmlndXJlOiBnZW5lcmF0b3IgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydNVUk6IGBDbGFzc05hbWVHZW5lcmF0b3JgIGltcG9ydCBmcm9tIGBAbXVpL21hdGVyaWFsL3V0aWxzYCBpcyBvdXRkYXRlZCBhbmQgbWlnaHQgY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMuJywgJycsIFwiWW91IHNob3VsZCB1c2UgYGltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvY2xhc3NOYW1lJ2AgaW5zdGVhZFwiLCAnJywgJ1RoZSBkZXRhaWwgb2YgdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8zMDAxMSNpc3N1ZWNvbW1lbnQtMTAyNDk5MzQwMScsICcnLCAnVGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9tdWkuY29tL2d1aWRlcy9jbGFzc25hbWUtZ2VuZXJhdG9yLyddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgQ2xhc3NOYW1lR2VuZXJhdG9yLmNvbmZpZ3VyZShnZW5lcmF0b3IpO1xuICB9XG59OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfdXNlSWQgYXMgdXNlSWQgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUlkOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xubGV0IGdsb2JhbElkID0gMDtcbmZ1bmN0aW9uIHVzZUdsb2JhbElkKGlkT3ZlcnJpZGUpIHtcbiAgY29uc3QgW2RlZmF1bHRJZCwgc2V0RGVmYXVsdElkXSA9IFJlYWN0LnVzZVN0YXRlKGlkT3ZlcnJpZGUpO1xuICBjb25zdCBpZCA9IGlkT3ZlcnJpZGUgfHwgZGVmYXVsdElkO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChkZWZhdWx0SWQgPT0gbnVsbCkge1xuICAgICAgLy8gRmFsbGJhY2sgdG8gdGhpcyBkZWZhdWx0IGlkIHdoZW4gcG9zc2libGUuXG4gICAgICAvLyBVc2UgdGhlIGluY3JlbWVudGluZyB2YWx1ZSBmb3IgY2xpZW50LXNpZGUgcmVuZGVyaW5nIG9ubHkuXG4gICAgICAvLyBXZSBjYW4ndCB1c2UgaXQgc2VydmVyLXNpZGUuXG4gICAgICAvLyBJZiB5b3Ugd2FudCB0byB1c2UgcmFuZG9tIHZhbHVlcyBwbGVhc2UgY29uc2lkZXIgdGhlIEJpcnRoZGF5IFByb2JsZW06IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpcnRoZGF5X3Byb2JsZW1cbiAgICAgIGdsb2JhbElkICs9IDE7XG4gICAgICBzZXREZWZhdWx0SWQoYG11aS0ke2dsb2JhbElkfWApO1xuICAgIH1cbiAgfSwgW2RlZmF1bHRJZF0pO1xuICByZXR1cm4gaWQ7XG59XG5cbi8vIGRvd25zdHJlYW0gYnVuZGxlcnMgbWF5IHJlbW92ZSB1bm5lY2Vzc2FyeSBjb25jYXRlbmF0aW9uLCBidXQgd29uJ3QgcmVtb3ZlIHRvU3RyaW5nIGNhbGwgLS0gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay9pc3N1ZXMvMTQ4MTRcbmNvbnN0IG1heWJlUmVhY3RVc2VJZCA9IFJlYWN0Wyd1c2VJZCcudG9TdHJpbmcoKV07XG4vKipcbiAqXG4gKiBAZXhhbXBsZSA8ZGl2IGlkPXt1c2VJZCgpfSAvPlxuICogQHBhcmFtIGlkT3ZlcnJpZGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUlkKGlkT3ZlcnJpZGUpIHtcbiAgaWYgKG1heWJlUmVhY3RVc2VJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcmVhY3RJZCA9IG1heWJlUmVhY3RVc2VJZCgpO1xuICAgIHJldHVybiBpZE92ZXJyaWRlICE9IG51bGwgPyBpZE92ZXJyaWRlIDogcmVhY3RJZDtcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3MgLS0gYFJlYWN0LnVzZUlkYCBpcyBpbnZhcmlhbnQgYXQgcnVudGltZS5cbiAgcmV0dXJuIHVzZUdsb2JhbElkKGlkT3ZlcnJpZGUpO1xufSIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgU2F2ZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2F2ZVwiO1xyXG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IHsgc2F2ZUNvZGUgfSBmcm9tIFwiLi4vLi4vaGVscGVycy91dGlsc1wiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcblxyXG5jb25zdCBTYXZlRmlsZUJ1dHRvbiA9IChwcm9wcykgPT4ge1xyXG4gIGNvbnN0IFtmaWxlTmFtZSwgc2V0RmlsZU5hbWVdID0gUmVhY3QudXNlU3RhdGUoXCJteUNvZGVcIik7XHJcbiAgY29uc3Qgc2F2ZUZpbGUgPSAoKSA9PiB7XHJcbiAgICBsZXQgdXNlckNvZGUgPSBcIlwiO1xyXG4gICAgdXNlckNvZGUgPSBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5Db2RlRWRpdG9yLmdldENvZGUoKTtcclxuICAgIHNhdmVDb2RlKGZpbGVOYW1lLCB1c2VyQ29kZSk7XHJcbiAgfTtcclxuICByZXR1cm4gKFxyXG4gICAgPEJveCBzeD17eyBkaXNwbGF5OiBcImZsZXhcIiB9fT5cclxuICAgICAgPEJ1dHRvblxyXG4gICAgICAgIGlkPXtcInNhdmVcIn1cclxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcclxuICAgICAgICBjb2xvcj17XCJzZWNvbmRhcnlcIn1cclxuICAgICAgICBzdGFydEljb249ezxTYXZlSWNvbiAvPn1cclxuICAgICAgICBzeD17eyBtOiAxIH19XHJcbiAgICAgICAgb25DbGljaz17c2F2ZUZpbGV9XHJcbiAgICAgID5cclxuICAgICAgICBTYXZlIGZpbGVcclxuICAgICAgPC9CdXR0b24+XHJcbiAgICAgIDxUZXh0RmllbGRcclxuICAgICAgICBzeD17eyBtOiAxIH19XHJcbiAgICAgICAgc2l6ZT17XCJzbWFsbFwifVxyXG4gICAgICAgIGlkPVwiZmlsZW5hbWVcIlxyXG4gICAgICAgIGxhYmVsPVwiRmlsZW5hbWVcIlxyXG4gICAgICAgIGNvbG9yPXtcInNlY29uZGFyeVwifVxyXG4gICAgICAgIHZhbHVlPXtmaWxlTmFtZX1cclxuICAgICAgICBvbkNoYW5nZT17KGUpID0+IHtcclxuICAgICAgICAgIHNldEZpbGVOYW1lKGUudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICB9fVxyXG4gICAgICAvPlxyXG4gICAgPC9Cb3g+XHJcbiAgKTtcclxufTtcclxuXHJcblNhdmVGaWxlQnV0dG9uLnByb3BUeXBlcyA9IHtcclxuICBjb250ZXh0OiBQcm9wVHlwZXMuYW55LFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2F2ZUZpbGVCdXR0b247XHJcbiIsImV4cG9ydCBjb25zdCBnZXRfaW5uZXJfc2l6ZSA9IChlbGVtZW50KSA9PiB7XHJcbiAgY29uc3QgY3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xyXG4gIGNvbnN0IHBhZGRpbmdfeCA9IHBhcnNlRmxvYXQoY3MucGFkZGluZ0xlZnQpICsgcGFyc2VGbG9hdChjcy5wYWRkaW5nUmlnaHQpO1xyXG4gIGNvbnN0IHBhZGRpbmdfeSA9IHBhcnNlRmxvYXQoY3MucGFkZGluZ1RvcCkgKyBwYXJzZUZsb2F0KGNzLnBhZGRpbmdCb3R0b20pO1xyXG5cclxuICBjb25zdCBib3JkZXJfeCA9XHJcbiAgICBwYXJzZUZsb2F0KGNzLmJvcmRlckxlZnRXaWR0aCkgKyBwYXJzZUZsb2F0KGNzLmJvcmRlclJpZ2h0V2lkdGgpO1xyXG4gIGNvbnN0IGJvcmRlcl95ID1cclxuICAgIHBhcnNlRmxvYXQoY3MuYm9yZGVyVG9wV2lkdGgpICsgcGFyc2VGbG9hdChjcy5ib3JkZXJCb3R0b21XaWR0aCk7XHJcblxyXG4gIC8vIEVsZW1lbnQgd2lkdGggYW5kIGhlaWdodCBtaW51cyBwYWRkaW5nIGFuZCBib3JkZXJcclxuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGggLSBwYWRkaW5nX3ggLSBib3JkZXJfeDtcclxuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodCAtIHBhZGRpbmdfeSAtIGJvcmRlcl95O1xyXG5cclxuICByZXR1cm4geyB3aWR0aDogTWF0aC5mbG9vcih3aWR0aCksIGhlaWdodDogTWF0aC5mbG9vcihoZWlnaHQpIH07XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0X25vdm5jX3NpemVfcmVhY3QgPSAoKSA9PiB7XHJcbiAgY29uc3Qgd2lkdGggPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWZyYW1lXCIpKS53aWR0aDtcclxuICBjb25zdCBoZWlnaHQgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaWZyYW1lXCIpKS5oZWlnaHQ7XHJcbiAgcmV0dXJuIHsgd2lkdGg6IHBhcnNlSW50KHdpZHRoLCAxMCksIGhlaWdodDogcGFyc2VJbnQoaGVpZ2h0LCAxMCkgfTtcclxufTtcclxuZXhwb3J0IGNvbnN0IGdldF9ub3ZuY19zaXplID0gKCkgPT4ge1xyXG4gIGNvbnN0IGlubmVyX3NpemUgPSBnZXRfaW5uZXJfc2l6ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImlmcmFtZVwiKSk7XHJcbiAgY29uc3Qgd2lkdGggPSBpbm5lcl9zaXplLndpZHRoIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XHJcbiAgLy8gU2luY2Ugb25seSA1MCUgb2YgaGVpZ2h0IGlzIHVzZWQgZm9yIGdhemVibyBpZnJhbWVcclxuICBjb25zdCBoZWlnaHQgPVxyXG4gICAgTWF0aC5mbG9vcigwLjUgKiBpbm5lcl9zaXplLmhlaWdodCkgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XHJcbiAgcmV0dXJuIHsgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHNhdmVDb2RlID0gKGZpbGVOYW1lLCBweXRob25fY29kZSkgPT4ge1xyXG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcHl0aG9uX2NvZGVdLCB7IHR5cGU6IFwidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOFwiIH0pO1xyXG4gIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKSxcclxuICAgIHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgYS5ocmVmID0gdXJsO1xyXG4gIGEuZG93bmxvYWQgPSBmaWxlTmFtZSArIFwiLnB5XCI7XHJcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICBhLmNsaWNrKCk7XHJcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICB9LCAwKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWNvZGVfdXRmOCA9IChzKSA9PiB7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpO1xyXG59O1xyXG4iLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KGUpIHtcbiAgcmV0dXJuIGUgJiYgZS5fX2VzTW9kdWxlID8gZSA6IHtcbiAgICBcImRlZmF1bHRcIjogZVxuICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7Il0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsIl91dGlscyIsImNyZWF0ZVN2Z0ljb24iLCJnZXRCdXR0b25VdGlsaXR5Q2xhc3MiLCJzbG90IiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiX2V4Y2x1ZGVkIiwiY29tbW9uSWNvblN0eWxlcyIsIm93bmVyU3RhdGUiLCJzaXplIiwiZm9udFNpemUiLCJCdXR0b25Sb290Iiwic3R5bGVkIiwiQnV0dG9uQmFzZSIsInNob3VsZEZvcndhcmRQcm9wIiwicHJvcCIsIm5hbWUiLCJvdmVycmlkZXNSZXNvbHZlciIsInByb3BzIiwic3R5bGVzIiwicm9vdCIsInZhcmlhbnQiLCJjYXBpdGFsaXplIiwiY29sb3IiLCJjb2xvckluaGVyaXQiLCJkaXNhYmxlRWxldmF0aW9uIiwiZnVsbFdpZHRoIiwidGhlbWUiLCJfdGhlbWUkcGFsZXR0ZSRnZXRDb24iLCJfdGhlbWUkcGFsZXR0ZSIsImluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IiLCJwYWxldHRlIiwibW9kZSIsImdyZXkiLCJpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJBMTAwIiwidHlwb2dyYXBoeSIsImJ1dHRvbiIsIm1pbldpZHRoIiwicGFkZGluZyIsImJvcmRlclJhZGl1cyIsInZhcnMiLCJzaGFwZSIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImR1cmF0aW9uIiwic2hvcnQiLCJ0ZXh0RGVjb3JhdGlvbiIsImJhY2tncm91bmRDb2xvciIsInRleHQiLCJwcmltYXJ5Q2hhbm5lbCIsImFjdGlvbiIsImhvdmVyT3BhY2l0eSIsInByaW1hcnkiLCJtYWluQ2hhbm5lbCIsIm1haW4iLCJib3JkZXIiLCJCdXR0b24iLCJpbmhlcml0Q29udGFpbmVkSG92ZXJCZyIsImJveFNoYWRvdyIsInNoYWRvd3MiLCJkYXJrIiwiZm9jdXNWaXNpYmxlIiwiZGlzYWJsZWQiLCJkaXNhYmxlZEJhY2tncm91bmQiLCJnZXRDb250cmFzdFRleHQiLCJjYWxsIiwiaW5oZXJpdENvbnRhaW5lZEJnIiwiY29udHJhc3RUZXh0IiwiYm9yZGVyQ29sb3IiLCJweFRvUmVtIiwid2lkdGgiLCJCdXR0b25TdGFydEljb24iLCJzdGFydEljb24iLCJkaXNwbGF5IiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiQnV0dG9uRW5kSWNvbiIsImVuZEljb24iLCJpblByb3BzIiwicmVmIiwiY29udGV4dFByb3BzIiwiQnV0dG9uR3JvdXBDb250ZXh0IiwicmVzb2x2ZWRQcm9wcyIsInJlc29sdmVQcm9wcyIsInVzZVRoZW1lUHJvcHMiLCJjaGlsZHJlbiIsImNvbXBvbmVudCIsImNsYXNzTmFtZSIsImRpc2FibGVGb2N1c1JpcHBsZSIsImVuZEljb25Qcm9wIiwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lIiwic3RhcnRJY29uUHJvcCIsInR5cGUiLCJvdGhlciIsImNsYXNzZXMiLCJzbG90cyIsImxhYmVsIiwiY29tcG9zZWRDbGFzc2VzIiwiY29tcG9zZUNsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImZvY3VzUmlwcGxlIiwidmFsaWRhdG9yIiwicmVhc29uIiwiY29tcG9uZW50TmFtZUluRXJyb3IiLCJDb21wb25lbnQiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciIsImNvbmZpZ3VyZSIsImdlbmVyYXRvciIsIkNsYXNzTmFtZUdlbmVyYXRvciIsImdsb2JhbElkIiwibWF5YmVSZWFjdFVzZUlkIiwidG9TdHJpbmciLCJ1c2VJZCIsImlkT3ZlcnJpZGUiLCJ1bmRlZmluZWQiLCJyZWFjdElkIiwiZGVmYXVsdElkIiwic2V0RGVmYXVsdElkIiwiaWQiLCJ1c2VHbG9iYWxJZCIsIlNhdmVGaWxlQnV0dG9uIiwiX1JlYWN0JHVzZVN0YXRlMiIsIlJlYWN0IiwiZmlsZU5hbWUiLCJzZXRGaWxlTmFtZSIsIl9qc3hzIiwiQm94Iiwic3giLCJfanN4IiwiU2F2ZUljb24iLCJtIiwib25DbGljayIsInVzZXJDb2RlIiwiUm9ib3RpY3NSZWFjdENvbXBvbmVudHMiLCJDb2RlRWRpdG9yIiwiZ2V0Q29kZSIsInNhdmVDb2RlIiwiVGV4dEZpZWxkIiwib25DaGFuZ2UiLCJlIiwidGFyZ2V0IiwicHJvcFR5cGVzIiwiY29udGV4dCIsIlByb3BUeXBlcyIsImdldF9pbm5lcl9zaXplIiwiZWxlbWVudCIsImNzIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsInBhZGRpbmdfeCIsInBhcnNlRmxvYXQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdfeSIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwiYm9yZGVyX3giLCJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyX3kiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwib2Zmc2V0V2lkdGgiLCJoZWlnaHQiLCJvZmZzZXRIZWlnaHQiLCJNYXRoIiwiZmxvb3IiLCJnZXRfbm92bmNfc2l6ZV9yZWFjdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJwYXJzZUludCIsImdldF9ub3ZuY19zaXplIiwiaW5uZXJfc2l6ZSIsImJvZHkiLCJjbGllbnRXaWR0aCIsImNsaWVudEhlaWdodCIsInB5dGhvbl9jb2RlIiwiYmxvYiIsIkJsb2IiLCJhIiwiY3JlYXRlRWxlbWVudCIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJzZXRUaW1lb3V0IiwicmVtb3ZlQ2hpbGQiLCJ3aW5kb3ciLCJyZXZva2VPYmplY3RVUkwiLCJkZWNvZGVfdXRmOCIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJtb2R1bGUiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/917.89d51636.js b/react_frontend/static/react_frontend/js/917.89d51636.js new file mode 100644 index 000000000..a80036046 --- /dev/null +++ b/react_frontend/static/react_frontend/js/917.89d51636.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[917],{917:(e,a,t)=>{function n(e){return decodeURIComponent(escape(e))}t.r(a),t.d(a,{drawImage:()=>o,drawLeftImage:()=>d});var i=new Image,r=new Image;function o(e){var a=document.getElementById("gui_canvas_right"),t=a.getContext("2d");function r(){window.requestAnimationFrame(r),t.drawImage(i,0,0)}i.onload=function(){r()};var o=JSON.parse(e.image),d=n(o.image),g=o.shape;""!=d&&(i.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}function d(e){var a=document.getElementById("gui_canvas_left"),t=a.getContext("2d");function i(){window.requestAnimationFrame(i),t.drawImage(r,0,0)}r.onload=function(){i()};var o=JSON.parse(e.image_left),d=n(o.image_left),g=o.shape;""!=d&&(r.src="data:image/jpeg;base64,"+d,a.width=g[1],a.height=g[0])}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvOTE3LmFjMDNhOTgxLmpzIiwibWFwcGluZ3MiOiI4R0FDQSxTQUFTQSxFQUFZQyxHQUNqQixPQUFPQyxtQkFBbUJDLE9BQU9GLEdBQ3JDLEMsb0RBRUEsSUFBSUcsRUFBUSxJQUFJQyxNQUNaQyxFQUFhLElBQUlELE1BRWQsU0FBU0UsRUFBV0MsR0FDdkIsSUFBSUMsRUFBU0MsU0FBU0MsZUFBZSxvQkFDckNDLEVBQVVILEVBQU9JLFdBQVcsTUFRNUIsU0FBU0MsSUFDTEMsT0FBT0Msc0JBQXNCRixHQUM3QkYsRUFBUUwsVUFBVUgsRUFBTyxFQUFHLEVBQ2hDLENBUkFBLEVBQU1hLE9BQVMsV0FDWEgsR0FDSixFQVNBLElBQUlJLEVBQWFDLEtBQUtDLE1BQU1aLEVBQUtKLE9BQzdCaUIsRUFBU3JCLEVBQVlrQixFQUFXZCxPQUNoQ2tCLEVBQVFKLEVBQVdJLE1BRVYsSUFBVkQsSUFDQ2pCLEVBQU1tQixJQUFNLDBCQUE0QkYsRUFDeENaLEVBQU9lLE1BQVFGLEVBQU0sR0FDckJiLEVBQU9nQixPQUFTSCxFQUFNLEdBRTlCLENBRU8sU0FBU0ksRUFBZWxCLEdBQzNCLElBQUltQixFQUFjakIsU0FBU0MsZUFBZSxtQkFDMUNpQixFQUFlRCxFQUFZZCxXQUFXLE1BUXRDLFNBQVNnQixJQUNMZCxPQUFPQyxzQkFBc0JhLEdBQzdCRCxFQUFhckIsVUFBVUQsRUFBWSxFQUFHLEVBQzFDLENBUkFBLEVBQVdXLE9BQVMsV0FDaEJZLEdBQ0osRUFTQSxJQUFJWCxFQUFhQyxLQUFLQyxNQUFNWixFQUFLRixZQUM3QmUsRUFBU3JCLEVBQVlrQixFQUFXWixZQUNoQ2dCLEVBQVFKLEVBQVdJLE1BRVYsSUFBVkQsSUFDQ2YsRUFBV2lCLElBQU0sMEJBQTRCRixFQUM3Q00sRUFBWUgsTUFBUUYsRUFBTSxHQUMxQkssRUFBWUYsT0FBU0gsRUFBTSxHQUVuQyxDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi4vZXhlcmNpc2VzL3N0YXRpYy9leGVyY2lzZXMvZHJvbmVfZ3lta2hhbmFfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc0Ryb25lR3lta2hhbmEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVG8gZGVjb2RlIHRoZSBpbWFnZSBzdHJpbmcgd2Ugd2lsbCByZWNlaXZlIGZyb20gc2VydmVyXHJcbmZ1bmN0aW9uIGRlY29kZV91dGY4KHMpe1xyXG4gICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUocykpXHJcbn1cclxuXHJcbmxldCBpbWFnZSA9IG5ldyBJbWFnZSgpO1xyXG5sZXQgaW1hZ2VfbGVmdCA9IG5ldyBJbWFnZSgpO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzX3JpZ2h0XCIpLFxyXG4gICAgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpXHJcblxyXG4gICAgLy8gRm9yIGltYWdlIG9iamVjdFxyXG4gICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKXtcclxuICAgICAgICB1cGRhdGVfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfaW1hZ2UoKXtcclxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZV9pbWFnZSk7XHJcbiAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApO1xyXG4gICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc291cmNlID0gZGVjb2RlX3V0ZjgoaW1hZ2VfZGF0YS5pbWFnZSksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2Uuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHNoYXBlWzFdO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMZWZ0SW1hZ2UgKGRhdGEpe1xyXG4gICAgdmFyIGNhbnZhc19sZWZ0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJndWlfY2FudmFzX2xlZnRcIiksXHJcbiAgICBjb250ZXh0X2xlZnQgPSBjYW52YXNfbGVmdC5nZXRDb250ZXh0KCcyZCcpXHJcblxyXG4gICAgLy8gRm9yIGltYWdlIG9iamVjdFxyXG4gICAgaW1hZ2VfbGVmdC5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9sZWZ0X2ltYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUmVxdWVzdCBBbmltYXRpb24gRnJhbWUgdG8gcmVtb3ZlIHRoZSBmbGlja2Vyc1xyXG4gICAgZnVuY3Rpb24gdXBkYXRlX2xlZnRfaW1hZ2UoKXtcclxuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZV9sZWZ0X2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0X2xlZnQuZHJhd0ltYWdlKGltYWdlX2xlZnQsIDAsIDApO1xyXG4gICAgfVxyXG4gICAgICAgICAgICBcclxuICAgIC8vIFBhcnNlIHRoZSBJbWFnZSBEYXRhXHJcbiAgICB2YXIgaW1hZ2VfZGF0YSA9IEpTT04ucGFyc2UoZGF0YS5pbWFnZV9sZWZ0KSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNoYXBlID0gaW1hZ2VfZGF0YS5zaGFwZTtcclxuICAgIFxyXG4gICAgaWYoc291cmNlICE9IFwiXCIpe1xyXG4gICAgICAgIGltYWdlX2xlZnQuc3JjID0gXCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LFwiICsgc291cmNlO1xyXG4gICAgICAgIGNhbnZhc19sZWZ0LndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzX2xlZnQuaGVpZ2h0ID0gc2hhcGVbMF07XHJcbiAgICB9ICAgXHJcbn1cclxuIl0sIm5hbWVzIjpbImRlY29kZV91dGY4IiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsImltYWdlIiwiSW1hZ2UiLCJpbWFnZV9sZWZ0IiwiZHJhd0ltYWdlIiwiZGF0YSIsImNhbnZhcyIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsInVwZGF0ZV9pbWFnZSIsIndpbmRvdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9ubG9hZCIsImltYWdlX2RhdGEiLCJKU09OIiwicGFyc2UiLCJzb3VyY2UiLCJzaGFwZSIsInNyYyIsIndpZHRoIiwiaGVpZ2h0IiwiZHJhd0xlZnRJbWFnZSIsImNhbnZhc19sZWZ0IiwiY29udGV4dF9sZWZ0IiwidXBkYXRlX2xlZnRfaW1hZ2UiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9294.a25ad635.js b/react_frontend/static/react_frontend/js/9294.a25ad635.js new file mode 100644 index 000000000..d29aaea88 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9294.a25ad635.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9294],{9294:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9359.cd3b2c55.js b/react_frontend/static/react_frontend/js/9359.cd3b2c55.js new file mode 100644 index 000000000..da5c5d7d2 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9359.cd3b2c55.js @@ -0,0 +1,3 @@ +/*! For license information please see 9359.cd3b2c55.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9359],{1740:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvOTM1OS5kMmQxODg1My5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUnVCLFNBQUNBLEdBQ3RCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3Jlc2N1ZV9wZW9wbGVfY2xhc3NpYy9yZWFjdC1jb21wb25lbnRzL3Jlc2N1ZVBlb3BsZVJSLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9yZXNjdWVQZW9wbGVSUi5jc3NcIjtcclxuXHJcbmNvbnN0IHJlc2N1ZVBlb3BsZVJSID0gKHByb3BzKSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxGcmFnbWVudD5cclxuICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgIDwvRnJhZ21lbnQ+XHJcbiAgKTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHJlc2N1ZVBlb3BsZVJSOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9359.cd3b2c55.js.LICENSE.txt b/react_frontend/static/react_frontend/js/9359.cd3b2c55.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9359.cd3b2c55.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/9390.22d1890d.js b/react_frontend/static/react_frontend/js/9390.22d1890d.js new file mode 100644 index 000000000..815154fe4 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9390.22d1890d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9390],{9390:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/945.b4c3c33f.js b/react_frontend/static/react_frontend/js/945.b4c3c33f.js new file mode 100644 index 000000000..8b44a79fa --- /dev/null +++ b/react_frontend/static/react_frontend/js/945.b4c3c33f.js @@ -0,0 +1,3 @@ +/*! For license information please see 945.b4c3c33f.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[945],{1020:(e,r,t)=>{var o=t(6540),n=Symbol.for("react.element"),f=Symbol.for("react.fragment"),_=Object.prototype.hasOwnProperty,a=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function l(e,r,t){var o,f={},l=null,p=null;for(o in void 0!==t&&(l=""+t),void 0!==r.key&&(l=""+r.key),void 0!==r.ref&&(p=r.ref),r)_.call(r,o)&&!s.hasOwnProperty(o)&&(f[o]=r[o]);if(e&&e.defaultProps)for(o in r=e.defaultProps)void 0===f[o]&&(f[o]=r[o]);return{$$typeof:n,type:e,key:l,ref:p,props:f,_owner:a.current}}r.Fragment=f,r.jsx=l,r.jsxs=l},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvOTQ1LjM5NmIzMzA1LmpzIiwibWFwcGluZ3MiOiI7K0dBU2EsSUFBSUEsRUFBRSxFQUFRLE1BQVNDLEVBQUVDLE9BQU9DLElBQUksaUJBQWlCQyxFQUFFRixPQUFPQyxJQUFJLGtCQUFrQkUsRUFBRUMsT0FBT0MsVUFBVUMsZUFBZUMsRUFBRVQsRUFBRVUsbURBQW1EQyxrQkFBa0JDLEVBQUUsQ0FBQ0MsS0FBSSxFQUFHQyxLQUFJLEVBQUdDLFFBQU8sRUFBR0MsVUFBUyxHQUNoUCxTQUFTQyxFQUFFQyxFQUFFQyxFQUFFQyxHQUFHLElBQUlDLEVBQUVDLEVBQUUsQ0FBQyxFQUFFQyxFQUFFLEtBQUtDLEVBQUUsS0FBaUYsSUFBSUgsVUFBaEYsSUFBU0QsSUFBSUcsRUFBRSxHQUFHSCxRQUFHLElBQVNELEVBQUVOLE1BQU1VLEVBQUUsR0FBR0osRUFBRU4sVUFBSyxJQUFTTSxFQUFFTCxNQUFNVSxFQUFFTCxFQUFFTCxLQUFjSyxFQUFFZCxFQUFFb0IsS0FBS04sRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFUSxhQUFhLElBQUlMLEtBQUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTMUIsRUFBRTJCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUVLLE1BQU1QLEVBQUVRLE9BQU9yQixFQUFFc0IsUUFBUSxDQUFDQyxFQUFRQyxTQUFTN0IsRUFBRTRCLEVBQVFFLElBQUlqQixFQUFFZSxFQUFRRyxLQUFLbEIsa0JDUHhXbUIsRUFBT0osUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XG59XG4iXSwibmFtZXMiOlsiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJwcm9wcyIsIl9vd25lciIsImN1cnJlbnQiLCJleHBvcnRzIiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/945.b4c3c33f.js.LICENSE.txt b/react_frontend/static/react_frontend/js/945.b4c3c33f.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/945.b4c3c33f.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/9516.386bb506.js b/react_frontend/static/react_frontend/js/9516.386bb506.js new file mode 100644 index 000000000..1a6a8e29a --- /dev/null +++ b/react_frontend/static/react_frontend/js/9516.386bb506.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9516],{3034:(t,e,n)=>{n.d(e,{A:()=>r});const r=n(1547).A},6852:(t,e,n)=>{n.d(e,{A:()=>r});const r=n(1523).A},1544:(t,e,n)=>{n.d(e,{A:()=>f});var r=n(6540);let o,i=!0,c=!1;const a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function u(t){t.metaKey||t.altKey||t.ctrlKey||(i=!0)}function s(){i=!1}function l(){"hidden"===this.visibilityState&&c&&(i=!0)}const f=function(){const t=r.useCallback((t=>{var e;null!=t&&((e=t.ownerDocument).addEventListener("keydown",u,!0),e.addEventListener("mousedown",s,!0),e.addEventListener("pointerdown",s,!0),e.addEventListener("touchstart",s,!0),e.addEventListener("visibilitychange",l,!0))}),[]),e=r.useRef(!1);return{isFocusVisibleRef:e,onFocus:function(t){return!!function(t){const{target:e}=t;try{return e.matches(":focus-visible")}catch(t){}return i||function(t){const{type:e,tagName:n}=t;return!("INPUT"!==n||!a[e]||t.readOnly)||"TEXTAREA"===n&&!t.readOnly||!!t.isContentEditable}(e)}(t)&&(e.current=!0,!0)},onBlur:function(){return!!e.current&&(c=!0,window.clearTimeout(o),o=window.setTimeout((()=>{c=!1}),100),e.current=!1,!0)},ref:t}}},989:(t,e,n)=>{function r(t,e){"function"==typeof t?t(e):t&&(t.current=e)}n.d(e,{A:()=>r})},1529:(t,e,n)=>{n.d(e,{A:()=>o});var r=n(6540);const o="undefined"!=typeof window?r.useLayoutEffect:r.useEffect},1547:(t,e,n)=>{n.d(e,{A:()=>i});var r=n(6540),o=n(1529);const i=function(t){const e=r.useRef(t);return(0,o.A)((()=>{e.current=t})),r.useCallback(((...t)=>(0,e.current)(...t)),[])}},1523:(t,e,n)=>{n.d(e,{A:()=>i});var r=n(6540),o=n(989);function i(...t){return r.useMemo((()=>t.every((t=>null==t))?null:e=>{t.forEach((t=>{(0,o.A)(t,e)}))}),t)}},5760:(t,e,n)=>{n.r(e),n.d(e,{default:()=>s});var r=n(6540),o=n(7839),i=n(4719),c=n(4073),a=n(4848);function u(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n{n.d(e,{A:()=>r});const r=n(6540).createContext(null)},5540:(t,e,n)=>{function r(t,e){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},r(t,e)}function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,r(t,e)}n.d(e,{A:()=>o})}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkEsRUFBUUMsS0FBS0MsTUFDZkwsR0FBVyxHQUVYQSxHQUFXLEVBRWYsRUFNQSxPQUxBaEIsT0FBT3NCLDJCQUEyQkMsYUFBYUMsVUFDN0MsQ0FBQ3hCLE9BQU9zQiwyQkFBMkJDLGFBQWFFLE9BQU9DLGVBQ3ZEUixHQUdLLFdBQ0xsQixPQUFPc0IsMkJBQTJCQyxhQUFhSSxZQUM3QyxDQUFDM0IsT0FBT3NCLDJCQUEyQkMsYUFBYUUsT0FBT0MsZUFDdkRSLEVBRUosQ0FDRixHQUFHLEtBRURVLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLEVBQU8sQ0FBQ0MsTUFBTSxzQkFBcUJDLFVBQ2xDQyxFQUFBQSxFQUFBQSxNQUFDQyxFQUFBQSxFQUFHLENBQUNDLFVBQVduQixFQUFVLFFBQVUsVUFBVWdCLFNBQUEsRUFDNUNILEVBQUFBLEVBQUFBLEtBQUEsS0FBR00sVUFBVSxRQUFPSCxTQUFDLGlCQUNyQkgsRUFBQUEsRUFBQUEsS0FBQ08sRUFBQUEsRUFBVSxDQUFDQyxHQUFJLENBQUVDLFNBQVUsVUFBWUgsVUFBVSxPQUFNSCxTQUNyRG5CLEVBQU0wQixXQUtqQixDLGtDQ3BDQSxRLFFBQWUsY0FBb0IsSyxpQkNEbkMsU0FBU0MsRUFBZ0JDLEVBQUdDLEdBQzFCLE9BQU9GLEVBQWtCRyxPQUFPQyxlQUFpQkQsT0FBT0MsZUFBZUMsT0FBUyxTQUFVSixFQUFHQyxHQUMzRixPQUFPRCxFQUFFSyxVQUFZSixFQUFHRCxDQUMxQixFQUFHRCxFQUFnQkMsRUFBR0MsRUFDeEIsQ0NIQSxTQUFTSyxFQUFlTixFQUFHTyxHQUN6QlAsRUFBRVEsVUFBWU4sT0FBT08sT0FBT0YsRUFBRUMsV0FBWVIsRUFBRVEsVUFBVUUsWUFBY1YsRUFBRyxFQUFlQSxFQUFHTyxFQUMzRixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VFdmVudENhbGxiYWNrLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRm9ya1JlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VJc0ZvY3VzVmlzaWJsZS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUlzRm9jdXNWaXNpYmxlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VFbmhhbmNlZEVmZmVjdC91c2VFbmhhbmNlZEVmZmVjdC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VFdmVudENhbGxiYWNrL3VzZUV2ZW50Q2FsbGJhY2suanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlRm9ya1JlZi91c2VGb3JrUmVmLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvdmlzdWFsaXplcnMvQXBwSW5kaWNhdG9yLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvZXNtL1RyYW5zaXRpb25Hcm91cENvbnRleHQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUV2ZW50Q2FsbGJhY2sgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRXZlbnRDYWxsYmFjazsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUZvcmtSZWYgYXMgdXNlRm9ya1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRm9ya1JlZjsiLCIndXNlIGNsaWVudCc7XG5cbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL2ZvY3VzLXZpc2libGUvYmxvYi92NC4xLjUvc3JjL2ZvY3VzLXZpc2libGUuanNcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmxldCBoYWRLZXlib2FyZEV2ZW50ID0gdHJ1ZTtcbmxldCBoYWRGb2N1c1Zpc2libGVSZWNlbnRseSA9IGZhbHNlO1xubGV0IGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dDtcbmNvbnN0IGlucHV0VHlwZXNXaGl0ZWxpc3QgPSB7XG4gIHRleHQ6IHRydWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdXJsOiB0cnVlLFxuICB0ZWw6IHRydWUsXG4gIGVtYWlsOiB0cnVlLFxuICBwYXNzd29yZDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBkYXRlOiB0cnVlLFxuICBtb250aDogdHJ1ZSxcbiAgd2VlazogdHJ1ZSxcbiAgdGltZTogdHJ1ZSxcbiAgZGF0ZXRpbWU6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWVcbn07XG5cbi8qKlxuICogQ29tcHV0ZXMgd2hldGhlciB0aGUgZ2l2ZW4gZWxlbWVudCBzaG91bGQgYXV0b21hdGljYWxseSB0cmlnZ2VyIHRoZVxuICogYGZvY3VzLXZpc2libGVgIGNsYXNzIGJlaW5nIGFkZGVkLCBpLmUuIHdoZXRoZXIgaXQgc2hvdWxkIGFsd2F5cyBtYXRjaFxuICogYDpmb2N1cy12aXNpYmxlYCB3aGVuIGZvY3VzZWQuXG4gKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eShub2RlKSB7XG4gIGNvbnN0IHtcbiAgICB0eXBlLFxuICAgIHRhZ05hbWVcbiAgfSA9IG5vZGU7XG4gIGlmICh0YWdOYW1lID09PSAnSU5QVVQnICYmIGlucHV0VHlwZXNXaGl0ZWxpc3RbdHlwZV0gJiYgIW5vZGUucmVhZE9ubHkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodGFnTmFtZSA9PT0gJ1RFWFRBUkVBJyAmJiAhbm9kZS5yZWFkT25seSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChub2RlLmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEtlZXAgdHJhY2sgb2Ygb3VyIGtleWJvYXJkIG1vZGFsaXR5IHN0YXRlIHdpdGggYGhhZEtleWJvYXJkRXZlbnRgLlxuICogSWYgdGhlIG1vc3QgcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gd2FzIHZpYSB0aGUga2V5Ym9hcmQ7XG4gKiBhbmQgdGhlIGtleSBwcmVzcyBkaWQgbm90IGluY2x1ZGUgYSBtZXRhLCBhbHQvb3B0aW9uLCBvciBjb250cm9sIGtleTtcbiAqIHRoZW4gdGhlIG1vZGFsaXR5IGlzIGtleWJvYXJkLiBPdGhlcndpc2UsIHRoZSBtb2RhbGl0eSBpcyBub3Qga2V5Ym9hcmQuXG4gKiBAcGFyYW0ge0tleWJvYXJkRXZlbnR9IGV2ZW50XG4gKi9cbmZ1bmN0aW9uIGhhbmRsZUtleURvd24oZXZlbnQpIHtcbiAgaWYgKGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LmN0cmxLZXkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaGFkS2V5Ym9hcmRFdmVudCA9IHRydWU7XG59XG5cbi8qKlxuICogSWYgYXQgYW55IHBvaW50IGEgdXNlciBjbGlja3Mgd2l0aCBhIHBvaW50aW5nIGRldmljZSwgZW5zdXJlIHRoYXQgd2UgY2hhbmdlXG4gKiB0aGUgbW9kYWxpdHkgYXdheSBmcm9tIGtleWJvYXJkLlxuICogVGhpcyBhdm9pZHMgdGhlIHNpdHVhdGlvbiB3aGVyZSBhIHVzZXIgcHJlc3NlcyBhIGtleSBvbiBhbiBhbHJlYWR5IGZvY3VzZWRcbiAqIGVsZW1lbnQsIGFuZCB0aGVuIGNsaWNrcyBvbiBhIGRpZmZlcmVudCBlbGVtZW50LCBmb2N1c2luZyBpdCB3aXRoIGFcbiAqIHBvaW50aW5nIGRldmljZSwgd2hpbGUgd2Ugc3RpbGwgdGhpbmsgd2UncmUgaW4ga2V5Ym9hcmQgbW9kYWxpdHkuXG4gKi9cbmZ1bmN0aW9uIGhhbmRsZVBvaW50ZXJEb3duKCkge1xuICBoYWRLZXlib2FyZEV2ZW50ID0gZmFsc2U7XG59XG5mdW5jdGlvbiBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKCkge1xuICBpZiAodGhpcy52aXNpYmlsaXR5U3RhdGUgPT09ICdoaWRkZW4nKSB7XG4gICAgLy8gSWYgdGhlIHRhYiBiZWNvbWVzIGFjdGl2ZSBhZ2FpbiwgdGhlIGJyb3dzZXIgd2lsbCBoYW5kbGUgY2FsbGluZyBmb2N1c1xuICAgIC8vIG9uIHRoZSBlbGVtZW50IChTYWZhcmkgYWN0dWFsbHkgY2FsbHMgaXQgdHdpY2UpLlxuICAgIC8vIElmIHRoaXMgdGFiIGNoYW5nZSBjYXVzZWQgYSBibHVyIG9uIGFuIGVsZW1lbnQgd2l0aCBmb2N1cy12aXNpYmxlLFxuICAgIC8vIHJlLWFwcGx5IHRoZSBjbGFzcyB3aGVuIHRoZSB1c2VyIHN3aXRjaGVzIGJhY2sgdG8gdGhlIHRhYi5cbiAgICBpZiAoaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkpIHtcbiAgICAgIGhhZEtleWJvYXJkRXZlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlcGFyZShkb2MpIHtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB0cnVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0ZWFyZG93bihkb2MpIHtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGhhbmRsZVBvaW50ZXJEb3duLCB0cnVlKTtcbiAgZG9jLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB0cnVlKTtcbn1cbmZ1bmN0aW9uIGlzRm9jdXNWaXNpYmxlKGV2ZW50KSB7XG4gIGNvbnN0IHtcbiAgICB0YXJnZXRcbiAgfSA9IGV2ZW50O1xuICB0cnkge1xuICAgIHJldHVybiB0YXJnZXQubWF0Y2hlcygnOmZvY3VzLXZpc2libGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBCcm93c2VycyBub3QgaW1wbGVtZW50aW5nIDpmb2N1cy12aXNpYmxlIHdpbGwgdGhyb3cgYSBTeW50YXhFcnJvci5cbiAgICAvLyBXZSB1c2Ugb3VyIG93biBoZXVyaXN0aWMgZm9yIHRob3NlIGJyb3dzZXJzLlxuICAgIC8vIFJldGhyb3cgbWlnaHQgYmUgYmV0dGVyIGlmIGl0J3Mgbm90IHRoZSBleHBlY3RlZCBlcnJvciBidXQgZG8gd2UgcmVhbGx5XG4gICAgLy8gd2FudCB0byBjcmFzaCBpZiBmb2N1cy12aXNpYmxlIG1hbGZ1bmN0aW9uZWQ/XG4gIH1cblxuICAvLyBObyBuZWVkIGZvciB2YWxpZEZvY3VzVGFyZ2V0IGNoZWNrLiBUaGUgdXNlciBkb2VzIHRoYXQgYnkgYXR0YWNoaW5nIGl0IHRvXG4gIC8vIGZvY3VzYWJsZSBldmVudHMgb25seS5cbiAgcmV0dXJuIGhhZEtleWJvYXJkRXZlbnQgfHwgZm9jdXNUcmlnZ2Vyc0tleWJvYXJkTW9kYWxpdHkodGFyZ2V0KTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUlzRm9jdXNWaXNpYmxlKCkge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPSBudWxsKSB7XG4gICAgICBwcmVwYXJlKG5vZGUub3duZXJEb2N1bWVudCk7XG4gICAgfVxuICB9LCBbXSk7XG4gIGNvbnN0IGlzRm9jdXNWaXNpYmxlUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcblxuICAvKipcbiAgICogU2hvdWxkIGJlIGNhbGxlZCBpZiBhIGJsdXIgZXZlbnQgaXMgZmlyZWRcbiAgICovXG4gIGZ1bmN0aW9uIGhhbmRsZUJsdXJWaXNpYmxlKCkge1xuICAgIC8vIGNoZWNraW5nIGFnYWluc3QgcG90ZW50aWFsIHN0YXRlIHZhcmlhYmxlIGRvZXMgbm90IHN1ZmZpY2UgaWYgd2UgZm9jdXMgYW5kIGJsdXIgc3luY2hyb25vdXNseS5cbiAgICAvLyBSZWFjdCB3b3VsZG4ndCBoYXZlIHRpbWUgdG8gdHJpZ2dlciBhIHJlLXJlbmRlciBzbyBgZm9jdXNWaXNpYmxlYCB3b3VsZCBiZSBzdGFsZS5cbiAgICAvLyBJZGVhbGx5IHdlIHdvdWxkIGFkanVzdCBgaXNGb2N1c1Zpc2libGUoZXZlbnQpYCB0byBsb29rIGF0IGByZWxhdGVkVGFyZ2V0YCBmb3IgYmx1ciBldmVudHMuXG4gICAgLy8gVGhpcyBkb2Vzbid0IHdvcmsgaW4gSUUxMSBkdWUgdG8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8zNzUxXG4gICAgLy8gVE9ETzogY2hlY2sgYWdhaW4gaWYgUmVhY3QgcmVsZWFzZXMgdGhlaXIgaW50ZXJuYWwgY2hhbmdlcyB0byBmb2N1cyBldmVudCBoYW5kbGluZyAoaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMTkxODYpLlxuICAgIGlmIChpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50KSB7XG4gICAgICAvLyBUbyBkZXRlY3QgYSB0YWIvd2luZG93IHN3aXRjaCwgd2UgbG9vayBmb3IgYSBibHVyIGV2ZW50IGZvbGxvd2VkXG4gICAgICAvLyByYXBpZGx5IGJ5IGEgdmlzaWJpbGl0eSBjaGFuZ2UuXG4gICAgICAvLyBJZiB3ZSBkb24ndCBzZWUgYSB2aXNpYmlsaXR5IGNoYW5nZSB3aXRoaW4gMTAwbXMsIGl0J3MgcHJvYmFibHkgYVxuICAgICAgLy8gcmVndWxhciBmb2N1cyBjaGFuZ2UuXG4gICAgICBoYWRGb2N1c1Zpc2libGVSZWNlbnRseSA9IHRydWU7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dCk7XG4gICAgICBoYWRGb2N1c1Zpc2libGVSZWNlbnRseVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gZmFsc2U7XG4gICAgICB9LCAxMDApO1xuICAgICAgaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgY2FsbGVkIGlmIGEgYmx1ciBldmVudCBpcyBmaXJlZFxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlRm9jdXNWaXNpYmxlKGV2ZW50KSB7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlKGV2ZW50KSkge1xuICAgICAgaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB7XG4gICAgaXNGb2N1c1Zpc2libGVSZWYsXG4gICAgb25Gb2N1czogaGFuZGxlRm9jdXNWaXNpYmxlLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1clZpc2libGUsXG4gICAgcmVmXG4gIH07XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VJc0ZvY3VzVmlzaWJsZSBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlSXNGb2N1c1Zpc2libGU7IiwiLyoqXG4gKiBUT0RPIHY1OiBjb25zaWRlciBtYWtpbmcgaXQgcHJpdmF0ZVxuICpcbiAqIHBhc3NlcyB7dmFsdWV9IHRvIHtyZWZ9XG4gKlxuICogV0FSTklORzogQmUgc3VyZSB0byBvbmx5IGNhbGwgdGhpcyBpbnNpZGUgYSBjYWxsYmFjayB0aGF0IGlzIHBhc3NlZCBhcyBhIHJlZi5cbiAqIE90aGVyd2lzZSwgbWFrZSBzdXJlIHRvIGNsZWFudXAgdGhlIHByZXZpb3VzIHtyZWZ9IGlmIGl0IGNoYW5nZXMuIFNlZVxuICogaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9pc3N1ZXMvMTM1MzlcbiAqXG4gKiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gZXhwb3NlIHRoZSByZWYgb2YgYW4gaW5uZXIgY29tcG9uZW50IHRvIHRoZSBwdWJsaWMgQVBJXG4gKiB3aGlsZSBzdGlsbCB1c2luZyBpdCBpbnNpZGUgdGhlIGNvbXBvbmVudC5cbiAqIEBwYXJhbSByZWYgQSByZWYgY2FsbGJhY2sgb3IgcmVmIG9iamVjdC4gSWYgYW55dGhpbmcgZmFsc3ksIHRoaXMgaXMgYSBuby1vcC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0UmVmKHJlZiwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYodmFsdWUpO1xuICB9IGVsc2UgaWYgKHJlZikge1xuICAgIHJlZi5jdXJyZW50ID0gdmFsdWU7XG4gIH1cbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IHVzZUVuaGFuY2VkRWZmZWN0ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyBSZWFjdC51c2VMYXlvdXRFZmZlY3QgOiBSZWFjdC51c2VFZmZlY3Q7XG5leHBvcnQgZGVmYXVsdCB1c2VFbmhhbmNlZEVmZmVjdDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VFbmhhbmNlZEVmZmVjdCBmcm9tICcuLi91c2VFbmhhbmNlZEVmZmVjdCc7XG5cbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNDA5OSNpc3N1ZWNvbW1lbnQtNDQwMDEzODkyXG4gKi9cblxuZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjayhmbikge1xuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYoZm4pO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgcmVmLmN1cnJlbnQgPSBmbjtcbiAgfSk7XG4gIHJldHVybiBSZWFjdC51c2VDYWxsYmFjaygoLi4uYXJncykgPT5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBoaWRlIGB0aGlzYFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6YmFuLWNvbW1hLW9wZXJhdG9yXG4gICgwLCByZWYuY3VycmVudCkoLi4uYXJncyksIFtdKTtcbn1cbmV4cG9ydCBkZWZhdWx0IHVzZUV2ZW50Q2FsbGJhY2s7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc2V0UmVmIGZyb20gJy4uL3NldFJlZic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VGb3JrUmVmKC4uLnJlZnMpIHtcbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gaWYgdGhlIHJlZnMgcGFzc2VkIHRvIHRoaXMgaG9vayBjaGFuZ2UgYW5kIGFyZSBhbGwgZGVmaW5lZC5cbiAgICogVGhpcyBtZWFucyByZWFjdCB3aWxsIGNhbGwgdGhlIG9sZCBmb3JrUmVmIHdpdGggYG51bGxgIGFuZCB0aGUgbmV3IGZvcmtSZWZcbiAgICogd2l0aCB0aGUgcmVmLiBDbGVhbnVwIG5hdHVyYWxseSBlbWVyZ2VzIGZyb20gdGhpcyBiZWhhdmlvci5cbiAgICovXG4gIHJldHVybiBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVmcy5ldmVyeShyZWYgPT4gcmVmID09IG51bGwpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGluc3RhbmNlID0+IHtcbiAgICAgIHJlZnMuZm9yRWFjaChyZWYgPT4ge1xuICAgICAgICBzZXRSZWYocmVmLCBpbnN0YW5jZSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgcmVmcyk7XG59IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcclxuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL0luZGljYXRvci5jc3NcIjtcclxuXHJcbmZ1bmN0aW9uIEFwcEluZGljYXRvcihwcm9wcykge1xyXG4gIGNvbnN0IFtydW5uaW5nLCBzZXRSdW5uaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgaWYgKG1lc3NhZ2UuZGF0YS5zdGF0ZSA9PT0gXCJhcHBsaWNhdGlvbl9ydW5uaW5nXCIpIHtcclxuICAgICAgICBzZXRSdW5uaW5nKHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNldFJ1bm5pbmcoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSxcclxuICAgICAgY2FsbGJhY2tcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci51bnN1YnNjcmliZShcclxuICAgICAgICBbd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5ldmVudHMuU1RBVEVfQ0hBTkdFRF0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8VG9vbHRpcCB0aXRsZT1cIkFwcGxpY2F0aW9uIFJ1bm5pbmdcIj5cclxuICAgICAgPEJveCBjbGFzc05hbWU9e3J1bm5pbmcgPyBcInJlYWR5XCIgOiBcIndhaXRpbmdcIn0+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGl0bGVcIj5BcHBsaWNhdGlvbjwvcD5cclxuICAgICAgICA8VHlwb2dyYXBoeSBzeD17eyBmb250U2l6ZTogXCIwLjhyZW1cIiB9fSBjbGFzc05hbWU9XCJ3b3JkXCI+XHJcbiAgICAgICAgICB7cHJvcHMubmFtZX1cclxuICAgICAgICA8L1R5cG9ncmFwaHk+XHJcbiAgICAgIDwvQm94PlxyXG4gICAgPC9Ub29sdGlwPlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEFwcEluZGljYXRvcjtcclxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBkZWZhdWx0IFJlYWN0LmNyZWF0ZUNvbnRleHQobnVsbCk7IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbmV4cG9ydCB7IF9zZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZSh0LCBvKSB7XG4gIHQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gdCwgc2V0UHJvdG90eXBlT2YodCwgbyk7XG59XG5leHBvcnQgeyBfaW5oZXJpdHNMb29zZSBhcyBkZWZhdWx0IH07Il0sIm5hbWVzIjpbImhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dCIsImhhZEtleWJvYXJkRXZlbnQiLCJoYWRGb2N1c1Zpc2libGVSZWNlbnRseSIsImlucHV0VHlwZXNXaGl0ZWxpc3QiLCJ0ZXh0Iiwic2VhcmNoIiwidXJsIiwidGVsIiwiZW1haWwiLCJwYXNzd29yZCIsIm51bWJlciIsImRhdGUiLCJtb250aCIsIndlZWsiLCJ0aW1lIiwiZGF0ZXRpbWUiLCJoYW5kbGVLZXlEb3duIiwiZXZlbnQiLCJtZXRhS2V5IiwiYWx0S2V5IiwiY3RybEtleSIsImhhbmRsZVBvaW50ZXJEb3duIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsInRoaXMiLCJ2aXNpYmlsaXR5U3RhdGUiLCJyZWYiLCJub2RlIiwiZG9jIiwib3duZXJEb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJpc0ZvY3VzVmlzaWJsZVJlZiIsIm9uRm9jdXMiLCJ0YXJnZXQiLCJtYXRjaGVzIiwiZXJyb3IiLCJ0eXBlIiwidGFnTmFtZSIsInJlYWRPbmx5IiwiaXNDb250ZW50RWRpdGFibGUiLCJmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eSIsImlzRm9jdXNWaXNpYmxlIiwiY3VycmVudCIsIm9uQmx1ciIsIndpbmRvdyIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJzZXRSZWYiLCJ2YWx1ZSIsImZuIiwiYXJncyIsInVzZUZvcmtSZWYiLCJyZWZzIiwiZXZlcnkiLCJpbnN0YW5jZSIsImZvckVhY2giLCJwcm9wcyIsIl91c2VTdGF0ZTIiLCJ1c2VTdGF0ZSIsInJ1bm5pbmciLCJzZXRSdW5uaW5nIiwidXNlRWZmZWN0IiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInN0YXRlIiwiUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMiLCJjb21tc01hbmFnZXIiLCJzdWJzY3JpYmUiLCJldmVudHMiLCJTVEFURV9DSEFOR0VEIiwidW5zdWJzY3JpYmUiLCJfanN4IiwiVG9vbHRpcCIsInRpdGxlIiwiY2hpbGRyZW4iLCJfanN4cyIsIkJveCIsImNsYXNzTmFtZSIsIlR5cG9ncmFwaHkiLCJzeCIsImZvbnRTaXplIiwibmFtZSIsIl9zZXRQcm90b3R5cGVPZiIsInQiLCJlIiwiT2JqZWN0Iiwic2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzTG9vc2UiLCJvIiwicHJvdG90eXBlIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9536.1daf38e9.js b/react_frontend/static/react_frontend/js/9536.1daf38e9.js new file mode 100644 index 000000000..e65eb1bf1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9536.1daf38e9.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9536],{3493:(e,t,n)=>{n.d(t,{A:()=>u});var o=n(6540),r=n(961),s=n(1523),i=n(1529),a=n(989),l=n(4848);const u=o.forwardRef((function(e,t){const{children:n,container:u,disablePortal:c=!1}=e,[d,f]=o.useState(null),A=(0,s.A)(o.isValidElement(n)?n.ref:null,t);if((0,i.A)((()=>{c||f(function(e){return"function"==typeof e?e():e}(u)||document.body)}),[u,c]),(0,i.A)((()=>{if(d&&!c)return(0,a.A)(t,d),()=>{(0,a.A)(t,null)}}),[t,d,c]),c){if(o.isValidElement(n)){const e={ref:A};return o.cloneElement(n,e)}return(0,l.jsx)(o.Fragment,{children:n})}return(0,l.jsx)(o.Fragment,{children:d?r.createPortal(n,d):d})}))},3636:(e,t,n)=>{n.d(t,{W:()=>i});var o=n(6540);n(4848);const r={disableDefaultClasses:!1},s=o.createContext(r);function i(e){const{disableDefaultClasses:t}=o.useContext(s);return n=>t?"":e(n)}},4856:(e,t,n)=>{n.d(t,{A:()=>s});var o=n(8168),r=n(5419);function s(e,t,n){return void 0===e||(0,r.A)(e)?t:(0,o.A)({},t,{ownerState:(0,o.A)({},t.ownerState,n)})}},5419:(e,t,n)=>{function o(e){return"string"==typeof e}n.d(t,{A:()=>o})},5489:(e,t,n)=>{function o(e,t,n){return"function"==typeof e?e(t,n):e}n.d(t,{A:()=>o})},9977:(e,t,n)=>{n.d(t,{A:()=>d});var o=n(8168),r=n(8587),s=n(1523),i=n(4856),a=n(53);function l(e){if(void 0===e)return{};const t={};return Object.keys(e).filter((t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t]))).forEach((n=>{t[n]=e[n]})),t}var u=n(5489);const c=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function d(e){var t;const{elementType:n,externalSlotProps:d,ownerState:f,skipResolvingSlotProps:A=!1}=e,m=(0,r.A)(e,c),p=A?{}:(0,u.A)(d,f),{props:y,internalRef:v}=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:s,className:i}=e;if(!t){const e=(0,a.A)(null==s?void 0:s.className,null==r?void 0:r.className,i,null==n?void 0:n.className),t=(0,o.A)({},null==n?void 0:n.style,null==s?void 0:s.style,null==r?void 0:r.style),l=(0,o.A)({},n,s,r);return e.length>0&&(l.className=e),Object.keys(t).length>0&&(l.style=t),{props:l,internalRef:void 0}}const u=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter((n=>n.match(/^on[A-Z]/)&&"function"==typeof e[n]&&!t.includes(n))).forEach((t=>{n[t]=e[t]})),n}((0,o.A)({},s,r)),c=l(r),d=l(s),f=t(u),A=(0,a.A)(null==f?void 0:f.className,null==n?void 0:n.className,i,null==s?void 0:s.className,null==r?void 0:r.className),m=(0,o.A)({},null==f?void 0:f.style,null==n?void 0:n.style,null==s?void 0:s.style,null==r?void 0:r.style),p=(0,o.A)({},f,n,d,c);return A.length>0&&(p.className=A),Object.keys(m).length>0&&(p.style=m),{props:p,internalRef:f.ref}}((0,o.A)({},m,{externalSlotProps:p})),g=(0,s.A)(v,null==p?void 0:p.ref,null==(t=e.additionalProps)?void 0:t.ref);return(0,i.A)(n,(0,o.A)({},y,{ref:g}),f)}},4719:(e,t,n)=>{n.d(t,{A:()=>l});var o=n(7413),r=n(9071),s=n(6544),i=n(8312);const a=(0,s.A)(),l=(0,o.A)({themeId:i.A,defaultTheme:a,defaultClassName:"MuiBox-root",generateClassName:r.A.generate})},7467:(e,t,n)=>{n.d(t,{A:()=>y});var o=n(8168),r=n(8587),s=n(6540),i=n(7353),a=n(4675),l=n(5186),u=n(6852),c=n(4848);const d=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function f(e){return`scale(${e}, ${e**2})`}const A={entering:{opacity:1,transform:f(1)},entered:{opacity:1,transform:"none"}},m="undefined"!=typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),p=s.forwardRef((function(e,t){const{addEndListener:n,appear:p=!0,children:y,easing:v,in:g,onEnter:h,onEntered:x,onEntering:E,onExit:P,onExited:N,onExiting:b,style:C,timeout:S="auto",TransitionComponent:R=i.Ay}=e,k=(0,r.A)(e,d),w=s.useRef(),j=s.useRef(),T=(0,a.A)(),D=s.useRef(null),O=(0,u.A)(D,y.ref,t),F=e=>t=>{if(e){const n=D.current;void 0===t?e(n):e(n,t)}},H=F(E),_=F(((e,t)=>{(0,l.q)(e);const{duration:n,delay:o,easing:r}=(0,l.c)({style:C,timeout:S,easing:v},{mode:"enter"});let s;"auto"===S?(s=T.transitions.getAutoHeightDuration(e.clientHeight),j.current=s):s=n,e.style.transition=[T.transitions.create("opacity",{duration:s,delay:o}),T.transitions.create("transform",{duration:m?s:.666*s,delay:o,easing:r})].join(","),h&&h(e,t)})),L=F(x),B=F(b),I=F((e=>{const{duration:t,delay:n,easing:o}=(0,l.c)({style:C,timeout:S,easing:v},{mode:"exit"});let r;"auto"===S?(r=T.transitions.getAutoHeightDuration(e.clientHeight),j.current=r):r=t,e.style.transition=[T.transitions.create("opacity",{duration:r,delay:n}),T.transitions.create("transform",{duration:m?r:.666*r,delay:m?n:n||.333*r,easing:o})].join(","),e.style.opacity=0,e.style.transform=f(.75),P&&P(e)})),M=F(N);return s.useEffect((()=>()=>{clearTimeout(w.current)}),[]),(0,c.jsx)(R,(0,o.A)({appear:p,in:g,nodeRef:D,onEnter:_,onEntered:L,onEntering:H,onExit:I,onExited:M,onExiting:B,addEndListener:e=>{"auto"===S&&(w.current=setTimeout(e,j.current||0)),n&&n(D.current,e)},timeout:"auto"===S?null:S},k,{children:(e,t)=>s.cloneElement(y,(0,o.A)({style:(0,o.A)({opacity:0,transform:f(.75),visibility:"exited"!==e||g?void 0:"hidden"},A[e],C,y.props.style),ref:O},t))}))}));p.muiSupportAuto=!0;const y=p},1159:(e,t,n)=>{n.d(t,{A:()=>o});const o=n(2501).A},7413:(e,t,n)=>{n.d(t,{A:()=>A});var o=n(8168),r=n(8587),s=n(6540),i=n(53),a=n(9359),l=n(3571),u=n(9599),c=n(2858),d=n(4848);const f=["className","component"];function A(e={}){const{themeId:t,defaultTheme:n,defaultClassName:A="MuiBox-root",generateClassName:m}=e,p=(0,a.Ay)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(l.A);return s.forwardRef((function(e,s){const a=(0,c.A)(n),l=(0,u.A)(e),{className:y,component:v="div"}=l,g=(0,r.A)(l,f);return(0,d.jsx)(p,(0,o.A)({as:v,ref:s,className:(0,i.A)(y,m?m(A):A),theme:t&&a[t]||a},g))}))}},9599:(e,t,n)=>{n.d(t,{A:()=>u});var o=n(8168),r=n(8587),s=n(3272),i=n(4188);const a=["sx"],l=e=>{var t,n;const o={systemProps:{},otherProps:{}},r=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:i.A;return Object.keys(e).forEach((t=>{r[t]?o.systemProps[t]=e[t]:o.otherProps[t]=e[t]})),o};function u(e){const{sx:t}=e,n=(0,r.A)(e,a),{systemProps:i,otherProps:u}=l(n);let c;return c=Array.isArray(t)?[i,...t]:"function"==typeof t?(...e)=>{const n=t(...e);return(0,s.Q)(n)?(0,o.A)({},i,n):i}:(0,o.A)({},i,t),(0,o.A)({},u,{sx:c})}},2325:(e,t,n)=>{function o(e){return e&&e.ownerDocument||document}n.d(t,{A:()=>o})},2501:(e,t,n)=>{n.d(t,{A:()=>r});var o=n(6540);function r({controlled:e,default:t,name:n,state:r="value"}){const{current:s}=o.useRef(void 0!==e),[i,a]=o.useState(t);return[s?e:i,o.useCallback((e=>{s||a(e)}),[])]}}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QjJHLEVBQU8zRyxHQUNUSixFQUFPOEcsWUFBWTFHLEdBQVFuQyxFQUFNbUMsR0FFakNKLEVBQU9WLFdBQVdjLEdBQVFuQyxFQUFNbUMsRUFDbEMsSUFFS0osQ0FBTSxFQUVBLFNBQVNpSCxFQUFhaEosR0FDbkMsTUFDSWlKLEdBQUlDLEdBQ0ZsSixFQUNKK0YsR0FBUSxPQUE4Qi9GLEVBQU9zQyxJQUN6QyxZQUNKdUcsRUFBVyxXQUNYeEgsR0FDRXFILEVBQVczQyxHQUNmLElBQUlvRCxFQWNKLE9BWkVBLEVBREVDLE1BQU1DLFFBQVFILEdBQ04sQ0FBQ0wsS0FBZ0JLLEdBQ0YsbUJBQVRBLEVBQ04sSUFBSUksS0FDWixNQUFNdkgsRUFBU21ILEtBQVFJLEdBQ3ZCLE9BQUssT0FBY3ZILElBR1osT0FBUyxDQUFDLEVBQUc4RyxFQUFhOUcsR0FGeEI4RyxDQUUrQixHQUdoQyxPQUFTLENBQUMsRUFBR0EsRUFBYUssSUFFL0IsT0FBUyxDQUFDLEVBQUc3SCxFQUFZLENBQzlCNEgsR0FBSUUsR0FFUixDLGlCQy9DZSxTQUFTSSxFQUFjaEQsR0FDcEMsT0FBT0EsR0FBUUEsRUFBS2dELGVBQWlCN0ksUUFDdkMsQyxnRUNFZSxTQUFTOEksR0FBYyxXQUNwQ0MsRUFDQUMsUUFBU0MsRUFBVyxLQUNwQkMsRUFBSSxNQUNKOUIsRUFBUSxVQUdSLE1BQ0V0QixRQUFTcUQsR0FDUCxjQUE0QnRJLElBQWZrSSxJQUNWSyxFQUFZQyxHQUFZLFdBQWVKLEdBc0I5QyxNQUFPLENBckJPRSxFQUFlSixFQUFhSyxFQWdCWCxlQUFrQkUsSUFDMUNILEdBQ0hFLEVBQVNDLEVBQ1gsR0FDQyxJQUVMLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvUG9ydGFsL1BvcnRhbC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvQ2xhc3NOYW1lQ29uZmlndXJhdG9yLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy9hcHBlbmRPd25lclN0YXRlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy9pc0hvc3RDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL3Jlc29sdmVDb21wb25lbnRQcm9wcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvb21pdEV2ZW50SGFuZGxlcnMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL3VzZVNsb3RQcm9wcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvbWVyZ2VTbG90UHJvcHMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL2V4dHJhY3RFdmVudEhhbmRsZXJzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQm94L0JveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0dyb3cvR3Jvdy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3VzZUNvbnRyb2xsZWQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZUJveC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L2V4dGVuZFN4UHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9vd25lckRvY3VtZW50L293bmVyRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlQ29udHJvbGxlZC91c2VDb250cm9sbGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyBleGFjdFByb3AsIEhUTUxFbGVtZW50VHlwZSwgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgYXMgdXNlRW5oYW5jZWRFZmZlY3QsIHVuc3RhYmxlX3VzZUZvcmtSZWYgYXMgdXNlRm9ya1JlZiwgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIGdldENvbnRhaW5lcihjb250YWluZXIpIHtcbiAgcmV0dXJuIHR5cGVvZiBjb250YWluZXIgPT09ICdmdW5jdGlvbicgPyBjb250YWluZXIoKSA6IGNvbnRhaW5lcjtcbn1cblxuLyoqXG4gKiBQb3J0YWxzIHByb3ZpZGUgYSBmaXJzdC1jbGFzcyB3YXkgdG8gcmVuZGVyIGNoaWxkcmVuIGludG8gYSBET00gbm9kZVxuICogdGhhdCBleGlzdHMgb3V0c2lkZSB0aGUgRE9NIGhpZXJhcmNoeSBvZiB0aGUgcGFyZW50IGNvbXBvbmVudC5cbiAqXG4gKiBEZW1vczpcbiAqXG4gKiAtIFtQb3J0YWxdKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LXBvcnRhbC8pXG4gKlxuICogQVBJOlxuICpcbiAqIC0gW1BvcnRhbCBBUEldKGh0dHBzOi8vbXVpLmNvbS9iYXNlLXVpL3JlYWN0LXBvcnRhbC9jb21wb25lbnRzLWFwaS8jcG9ydGFsKVxuICovXG5jb25zdCBQb3J0YWwgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBQb3J0YWwocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICBjb25zdCB7XG4gICAgY2hpbGRyZW4sXG4gICAgY29udGFpbmVyLFxuICAgIGRpc2FibGVQb3J0YWwgPSBmYWxzZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFttb3VudE5vZGUsIHNldE1vdW50Tm9kZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBUT0RPIHVwc3RyZWFtIGZpeFxuICBjb25zdCBoYW5kbGVSZWYgPSB1c2VGb3JrUmVmKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pID8gY2hpbGRyZW4ucmVmIDogbnVsbCwgZm9yd2FyZGVkUmVmKTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZVBvcnRhbCkge1xuICAgICAgc2V0TW91bnROb2RlKGdldENvbnRhaW5lcihjb250YWluZXIpIHx8IGRvY3VtZW50LmJvZHkpO1xuICAgIH1cbiAgfSwgW2NvbnRhaW5lciwgZGlzYWJsZVBvcnRhbF0pO1xuICB1c2VFbmhhbmNlZEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1vdW50Tm9kZSAmJiAhZGlzYWJsZVBvcnRhbCkge1xuICAgICAgc2V0UmVmKGZvcndhcmRlZFJlZiwgbW91bnROb2RlKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHNldFJlZihmb3J3YXJkZWRSZWYsIG51bGwpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW2ZvcndhcmRlZFJlZiwgbW91bnROb2RlLCBkaXNhYmxlUG9ydGFsXSk7XG4gIGlmIChkaXNhYmxlUG9ydGFsKSB7XG4gICAgaWYgKCAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgICBjb25zdCBuZXdQcm9wcyA9IHtcbiAgICAgICAgcmVmOiBoYW5kbGVSZWZcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwgbmV3UHJvcHMpO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goUmVhY3QuRnJhZ21lbnQsIHtcbiAgICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICAgIH0pO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChSZWFjdC5GcmFnbWVudCwge1xuICAgIGNoaWxkcmVuOiBtb3VudE5vZGUgPyAvKiNfX1BVUkVfXyovUmVhY3RET00uY3JlYXRlUG9ydGFsKGNoaWxkcmVuLCBtb3VudE5vZGUpIDogbW91bnROb2RlXG4gIH0pO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBQb3J0YWwucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IFR5cGVTY3JpcHQgdHlwZXMgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIHRvIHJlbmRlciBpbnRvIHRoZSBgY29udGFpbmVyYC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEFuIEhUTUwgZWxlbWVudCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lLlxuICAgKiBUaGUgYGNvbnRhaW5lcmAgd2lsbCBoYXZlIHRoZSBwb3J0YWwgY2hpbGRyZW4gYXBwZW5kZWQgdG8gaXQuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGl0IHVzZXMgdGhlIGJvZHkgb2YgdGhlIHRvcC1sZXZlbCBkb2N1bWVudCBvYmplY3QsXG4gICAqIHNvIGl0J3Mgc2ltcGx5IGBkb2N1bWVudC5ib2R5YCBtb3N0IG9mIHRoZSB0aW1lLlxuICAgKi9cbiAgY29udGFpbmVyOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW0hUTUxFbGVtZW50VHlwZSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgLyoqXG4gICAqIFRoZSBgY2hpbGRyZW5gIHdpbGwgYmUgdW5kZXIgdGhlIERPTSBoaWVyYXJjaHkgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUG9ydGFsOiBQcm9wVHlwZXMuYm9vbFxufSA6IHZvaWQgMDtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBQb3J0YWxbJ3Byb3BUeXBlcycgKyAnJ10gPSBleGFjdFByb3AoUG9ydGFsLnByb3BUeXBlcyk7XG59XG5leHBvcnQgZGVmYXVsdCBQb3J0YWw7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgZGVmYXVsdENvbnRleHRWYWx1ZSA9IHtcbiAgZGlzYWJsZURlZmF1bHRDbGFzc2VzOiBmYWxzZVxufTtcbmNvbnN0IENsYXNzTmFtZUNvbmZpZ3VyYXRvckNvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dChkZWZhdWx0Q29udGV4dFZhbHVlKTtcbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGhvb2suXG4gKlxuICogV3JhcHMgdGhlIGBnZW5lcmF0ZVV0aWxpdHlDbGFzc2AgZnVuY3Rpb24gYW5kIGNvbnRyb2xzIGhvdyB0aGUgY2xhc3NlcyBhcmUgZ2VuZXJhdGVkLlxuICogQ3VycmVudGx5IGl0IG9ubHkgYWZmZWN0cyB3aGV0aGVyIHRoZSBjbGFzc2VzIGFyZSBhcHBsaWVkIG9yIG5vdC5cbiAqXG4gKiBAcmV0dXJucyBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2l0aCB0aGUgYGdlbmVyYXRlVXRpbGl0eUNsYXNzYCBmdW5jdGlvbiBzcGVjaWZpYyB0byBhIGNvbXBvbmVudCB0byBnZW5lcmF0ZSB0aGUgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNsYXNzTmFtZXNPdmVycmlkZShnZW5lcmF0ZVV0aWxpdHlDbGFzcykge1xuICBjb25zdCB7XG4gICAgZGlzYWJsZURlZmF1bHRDbGFzc2VzXG4gIH0gPSBSZWFjdC51c2VDb250ZXh0KENsYXNzTmFtZUNvbmZpZ3VyYXRvckNvbnRleHQpO1xuICByZXR1cm4gc2xvdCA9PiB7XG4gICAgaWYgKGRpc2FibGVEZWZhdWx0Q2xhc3Nlcykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3Moc2xvdCk7XG4gIH07XG59XG5cbi8qKlxuICogQWxsb3dzIHRvIGNvbmZpZ3VyZSB0aGUgY29tcG9uZW50cyB3aXRoaW4gdG8gbm90IGFwcGx5IGFueSBidWlsdC1pbiBjbGFzc2VzLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDbGFzc05hbWVDb25maWd1cmF0b3IocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGRpc2FibGVEZWZhdWx0Q2xhc3NlcyxcbiAgICBjaGlsZHJlblxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBkaXNhYmxlRGVmYXVsdENsYXNzZXM6IGRpc2FibGVEZWZhdWx0Q2xhc3NlcyAhPSBudWxsID8gZGlzYWJsZURlZmF1bHRDbGFzc2VzIDogZmFsc2VcbiAgfSksIFtkaXNhYmxlRGVmYXVsdENsYXNzZXNdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KENsYXNzTmFtZUNvbmZpZ3VyYXRvckNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICB2YWx1ZTogY29udGV4dFZhbHVlLFxuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KTtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBpc0hvc3RDb21wb25lbnQgZnJvbSAnLi9pc0hvc3RDb21wb25lbnQnO1xuXG4vKipcbiAqIFR5cGUgb2YgdGhlIG93bmVyU3RhdGUgYmFzZWQgb24gdGhlIHR5cGUgb2YgYW4gZWxlbWVudCBpdCBhcHBsaWVzIHRvLlxuICogVGhpcyByZXNvbHZlcyB0byB0aGUgcHJvdmlkZWQgT3duZXJTdGF0ZSBmb3IgUmVhY3QgY29tcG9uZW50cyBhbmQgYHVuZGVmaW5lZGAgZm9yIGhvc3QgY29tcG9uZW50cy5cbiAqIEZhbGxzIGJhY2sgdG8gYE93bmVyU3RhdGUgfCB1bmRlZmluZWRgIHdoZW4gdGhlIGV4YWN0IHR5cGUgY2FuJ3QgYmUgZGV0ZXJtaW5lZCBpbiBkZXZlbG9wbWVudCB0aW1lLlxuICovXG5cbi8qKlxuICogQXBwZW5kcyB0aGUgb3duZXJTdGF0ZSBvYmplY3QgdG8gdGhlIHByb3BzLCBtZXJnaW5nIHdpdGggdGhlIGV4aXN0aW5nIG9uZSBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIGVsZW1lbnRUeXBlIFR5cGUgb2YgdGhlIGVsZW1lbnQgdGhhdCBvd25zIHRoZSBgZXhpc3RpbmdQcm9wc2AuIElmIHRoZSBlbGVtZW50IGlzIGEgRE9NIG5vZGUgb3IgdW5kZWZpbmVkLCBgb3duZXJTdGF0ZWAgaXMgbm90IGFwcGxpZWQuXG4gKiBAcGFyYW0gb3RoZXJQcm9wcyBQcm9wcyBvZiB0aGUgZWxlbWVudC5cbiAqIEBwYXJhbSBvd25lclN0YXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwcGVuZE93bmVyU3RhdGUoZWxlbWVudFR5cGUsIG90aGVyUHJvcHMsIG93bmVyU3RhdGUpIHtcbiAgaWYgKGVsZW1lbnRUeXBlID09PSB1bmRlZmluZWQgfHwgaXNIb3N0Q29tcG9uZW50KGVsZW1lbnRUeXBlKSkge1xuICAgIHJldHVybiBvdGhlclByb3BzO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3RoZXJQcm9wcywge1xuICAgIG93bmVyU3RhdGU6IF9leHRlbmRzKHt9LCBvdGhlclByb3BzLm93bmVyU3RhdGUsIG93bmVyU3RhdGUpXG4gIH0pO1xufSIsIi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhIGdpdmVuIGVsZW1lbnQgaXMgYSBET00gZWxlbWVudCBuYW1lIChpLmUuIG5vdCBhIFJlYWN0IGNvbXBvbmVudCkuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzSG9zdENvbXBvbmVudChlbGVtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZyc7XG59IiwiLyoqXG4gKiBJZiBgY29tcG9uZW50UHJvcHNgIGlzIGEgZnVuY3Rpb24sIGNhbGxzIGl0IHdpdGggdGhlIHByb3ZpZGVkIGBvd25lclN0YXRlYC5cbiAqIE90aGVyd2lzZSwganVzdCByZXR1cm5zIGBjb21wb25lbnRQcm9wc2AuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRQcm9wcyhjb21wb25lbnRQcm9wcywgb3duZXJTdGF0ZSwgc2xvdFN0YXRlKSB7XG4gIGlmICh0eXBlb2YgY29tcG9uZW50UHJvcHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY29tcG9uZW50UHJvcHMob3duZXJTdGF0ZSwgc2xvdFN0YXRlKTtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50UHJvcHM7XG59IiwiLyoqXG4gKiBSZW1vdmVzIGV2ZW50IGhhbmRsZXJzIGZyb20gdGhlIGdpdmVuIG9iamVjdC5cbiAqIEEgZmllbGQgaXMgY29uc2lkZXJlZCBhbiBldmVudCBoYW5kbGVyIGlmIGl0IGlzIGEgZnVuY3Rpb24gd2l0aCBhIG5hbWUgYmVnaW5uaW5nIHdpdGggYG9uYC5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IE9iamVjdCB0byByZW1vdmUgZXZlbnQgaGFuZGxlcnMgZnJvbS5cbiAqIEByZXR1cm5zIE9iamVjdCB3aXRoIGV2ZW50IGhhbmRsZXJzIHJlbW92ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9taXRFdmVudEhhbmRsZXJzKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIE9iamVjdC5rZXlzKG9iamVjdCkuZmlsdGVyKHByb3AgPT4gIShwcm9wLm1hdGNoKC9eb25bQS1aXS8pICYmIHR5cGVvZiBvYmplY3RbcHJvcF0gPT09ICdmdW5jdGlvbicpKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIHJlc3VsdFtwcm9wXSA9IG9iamVjdFtwcm9wXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiZWxlbWVudFR5cGVcIiwgXCJleHRlcm5hbFNsb3RQcm9wc1wiLCBcIm93bmVyU3RhdGVcIiwgXCJza2lwUmVzb2x2aW5nU2xvdFByb3BzXCJdO1xuaW1wb3J0IHsgdW5zdGFibGVfdXNlRm9ya1JlZiBhcyB1c2VGb3JrUmVmIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgYXBwZW5kT3duZXJTdGF0ZSBmcm9tICcuL2FwcGVuZE93bmVyU3RhdGUnO1xuaW1wb3J0IG1lcmdlU2xvdFByb3BzIGZyb20gJy4vbWVyZ2VTbG90UHJvcHMnO1xuaW1wb3J0IHJlc29sdmVDb21wb25lbnRQcm9wcyBmcm9tICcuL3Jlc29sdmVDb21wb25lbnRQcm9wcyc7XG4vKipcbiAqIEBpZ25vcmUgLSBkbyBub3QgZG9jdW1lbnQuXG4gKiBCdWlsZHMgdGhlIHByb3BzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBzbG90IG9mIGFuIHVuc3R5bGVkIGNvbXBvbmVudC5cbiAqIEl0IG1lcmdlcyB0aGUgaW50ZXJuYWwgcHJvcHMgb2YgdGhlIGNvbXBvbmVudCB3aXRoIHRoZSBvbmVzIHN1cHBsaWVkIGJ5IHRoZSB1c2VyLCBhbGxvd2luZyB0byBjdXN0b21pemUgdGhlIGJlaGF2aW9yLlxuICogSWYgdGhlIHNsb3QgY29tcG9uZW50IGlzIG5vdCBhIGhvc3QgY29tcG9uZW50LCBpdCBhbHNvIG1lcmdlcyBpbiB0aGUgYG93bmVyU3RhdGVgLlxuICpcbiAqIEBwYXJhbSBwYXJhbWV0ZXJzLmdldFNsb3RQcm9wcyAtIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBwcm9wcyB0byBiZSBwYXNzZWQgdG8gdGhlIHNsb3QgY29tcG9uZW50LlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VTbG90UHJvcHMocGFyYW1ldGVycykge1xuICB2YXIgX3BhcmFtZXRlcnMkYWRkaXRpb25hO1xuICBjb25zdCB7XG4gICAgICBlbGVtZW50VHlwZSxcbiAgICAgIGV4dGVybmFsU2xvdFByb3BzLFxuICAgICAgb3duZXJTdGF0ZSxcbiAgICAgIHNraXBSZXNvbHZpbmdTbG90UHJvcHMgPSBmYWxzZVxuICAgIH0gPSBwYXJhbWV0ZXJzLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwYXJhbWV0ZXJzLCBfZXhjbHVkZWQpO1xuICBjb25zdCByZXNvbHZlZENvbXBvbmVudHNQcm9wcyA9IHNraXBSZXNvbHZpbmdTbG90UHJvcHMgPyB7fSA6IHJlc29sdmVDb21wb25lbnRQcm9wcyhleHRlcm5hbFNsb3RQcm9wcywgb3duZXJTdGF0ZSk7XG4gIGNvbnN0IHtcbiAgICBwcm9wczogbWVyZ2VkUHJvcHMsXG4gICAgaW50ZXJuYWxSZWZcbiAgfSA9IG1lcmdlU2xvdFByb3BzKF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IHJlc29sdmVkQ29tcG9uZW50c1Byb3BzXG4gIH0pKTtcbiAgY29uc3QgcmVmID0gdXNlRm9ya1JlZihpbnRlcm5hbFJlZiwgcmVzb2x2ZWRDb21wb25lbnRzUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc29sdmVkQ29tcG9uZW50c1Byb3BzLnJlZiwgKF9wYXJhbWV0ZXJzJGFkZGl0aW9uYSA9IHBhcmFtZXRlcnMuYWRkaXRpb25hbFByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogX3BhcmFtZXRlcnMkYWRkaXRpb25hLnJlZik7XG4gIGNvbnN0IHByb3BzID0gYXBwZW5kT3duZXJTdGF0ZShlbGVtZW50VHlwZSwgX2V4dGVuZHMoe30sIG1lcmdlZFByb3BzLCB7XG4gICAgcmVmXG4gIH0pLCBvd25lclN0YXRlKTtcbiAgcmV0dXJuIHByb3BzO1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgZXh0cmFjdEV2ZW50SGFuZGxlcnMgZnJvbSAnLi9leHRyYWN0RXZlbnRIYW5kbGVycyc7XG5pbXBvcnQgb21pdEV2ZW50SGFuZGxlcnMgZnJvbSAnLi9vbWl0RXZlbnRIYW5kbGVycyc7XG4vKipcbiAqIE1lcmdlcyB0aGUgc2xvdCBjb21wb25lbnQgaW50ZXJuYWwgcHJvcHMgKHVzdWFsbHkgY29taW5nIGZyb20gYSBob29rKVxuICogd2l0aCB0aGUgZXh0ZXJuYWxseSBwcm92aWRlZCBvbmVzLlxuICpcbiAqIFRoZSBtZXJnZSBvcmRlciBpcyAodGhlIGxhdHRlciBvdmVycmlkZXMgdGhlIGZvcm1lcik6XG4gKiAxLiBUaGUgaW50ZXJuYWwgcHJvcHMgKHNwZWNpZmllZCBhcyBhIGdldHRlciBmdW5jdGlvbiB0byB3b3JrIHdpdGggZ2V0KlByb3BzIGhvb2sgcmVzdWx0KVxuICogMi4gQWRkaXRpb25hbCBwcm9wcyAoc3BlY2lmaWVkIGludGVybmFsbHkgb24gYSBCYXNlIFVJIGNvbXBvbmVudClcbiAqIDMuIEV4dGVybmFsIHByb3BzIHNwZWNpZmllZCBvbiB0aGUgb3duZXIgY29tcG9uZW50LiBUaGVzZSBzaG91bGQgb25seSBiZSB1c2VkIG9uIGEgcm9vdCBzbG90LlxuICogNC4gRXh0ZXJuYWwgcHJvcHMgc3BlY2lmaWVkIGluIHRoZSBgc2xvdFByb3BzLipgIHByb3AuXG4gKiA1LiBUaGUgYGNsYXNzTmFtZWAgcHJvcCAtIGNvbWJpbmVkIGZyb20gYWxsIHRoZSBhYm92ZS5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVNsb3RQcm9wcyhwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHtcbiAgICBnZXRTbG90UHJvcHMsXG4gICAgYWRkaXRpb25hbFByb3BzLFxuICAgIGV4dGVybmFsU2xvdFByb3BzLFxuICAgIGV4dGVybmFsRm9yd2FyZGVkUHJvcHMsXG4gICAgY2xhc3NOYW1lXG4gIH0gPSBwYXJhbWV0ZXJzO1xuICBpZiAoIWdldFNsb3RQcm9wcykge1xuICAgIC8vIFRoZSBzaW1wbGVyIGNhc2UgLSBnZXRTbG90UHJvcHMgaXMgbm90IGRlZmluZWQsIHNvIG5vIGludGVybmFsIGV2ZW50IGhhbmRsZXJzIGFyZSBkZWZpbmVkLFxuICAgIC8vIHNvIHdlIGNhbiBzaW1wbHkgbWVyZ2UgYWxsIHRoZSBwcm9wcyB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCBleHRyYWN0aW5nIGV2ZW50IGhhbmRsZXJzLlxuICAgIGNvbnN0IGpvaW5lZENsYXNzZXMgPSBjbHN4KGV4dGVybmFsRm9yd2FyZGVkUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsRm9yd2FyZGVkUHJvcHMuY2xhc3NOYW1lLCBleHRlcm5hbFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogZXh0ZXJuYWxTbG90UHJvcHMuY2xhc3NOYW1lLCBjbGFzc05hbWUsIGFkZGl0aW9uYWxQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSk7XG4gICAgY29uc3QgbWVyZ2VkU3R5bGUgPSBfZXh0ZW5kcyh7fSwgYWRkaXRpb25hbFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBhZGRpdGlvbmFsUHJvcHMuc3R5bGUsIGV4dGVybmFsRm9yd2FyZGVkUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsRm9yd2FyZGVkUHJvcHMuc3R5bGUsIGV4dGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbFNsb3RQcm9wcy5zdHlsZSk7XG4gICAgY29uc3QgcHJvcHMgPSBfZXh0ZW5kcyh7fSwgYWRkaXRpb25hbFByb3BzLCBleHRlcm5hbEZvcndhcmRlZFByb3BzLCBleHRlcm5hbFNsb3RQcm9wcyk7XG4gICAgaWYgKGpvaW5lZENsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgcHJvcHMuY2xhc3NOYW1lID0gam9pbmVkQ2xhc3NlcztcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKG1lcmdlZFN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgICBwcm9wcy5zdHlsZSA9IG1lcmdlZFN0eWxlO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcHJvcHMsXG4gICAgICBpbnRlcm5hbFJlZjogdW5kZWZpbmVkXG4gICAgfTtcbiAgfVxuXG4gIC8vIEluIHRoaXMgY2FzZSwgZ2V0U2xvdFByb3BzIGlzIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoZSBleHRlcm5hbCBldmVudCBoYW5kbGVycy5cbiAgLy8gV2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIG1lcmdlZCBwcm9wcyBiZWNhdXNlIG9mIHRoaXMuXG5cbiAgY29uc3QgZXZlbnRIYW5kbGVycyA9IGV4dHJhY3RFdmVudEhhbmRsZXJzKF9leHRlbmRzKHt9LCBleHRlcm5hbEZvcndhcmRlZFByb3BzLCBleHRlcm5hbFNsb3RQcm9wcykpO1xuICBjb25zdCBjb21wb25lbnRzUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyA9IG9taXRFdmVudEhhbmRsZXJzKGV4dGVybmFsU2xvdFByb3BzKTtcbiAgY29uc3Qgb3RoZXJQcm9wc1dpdGhvdXRFdmVudEhhbmRsZXJzID0gb21pdEV2ZW50SGFuZGxlcnMoZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcyk7XG4gIGNvbnN0IGludGVybmFsU2xvdFByb3BzID0gZ2V0U2xvdFByb3BzKGV2ZW50SGFuZGxlcnMpO1xuXG4gIC8vIFRoZSBvcmRlciBvZiBjbGFzc2VzIGlzIGltcG9ydGFudCBoZXJlLlxuICAvLyBFbW90aW9uICh0aGF0IHdlIHVzZSBpbiBsaWJyYXJpZXMgY29uc3VtaW5nIEJhc2UgVUkpIGRlcGVuZHMgb24gdGhpcyBvcmRlclxuICAvLyB0byBwcm9wZXJseSBvdmVycmlkZSBzdHlsZS4gSXQgcmVxdWlyZXMgdGhlIG1vc3QgaW1wb3J0YW50IGNsYXNzZXMgdG8gYmUgbGFzdFxuICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvcHVsbC8zMzIwNSkgZm9yIHRoZSByZWxhdGVkIGRpc2N1c3Npb24uXG4gIGNvbnN0IGpvaW5lZENsYXNzZXMgPSBjbHN4KGludGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBpbnRlcm5hbFNsb3RQcm9wcy5jbGFzc05hbWUsIGFkZGl0aW9uYWxQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lLCBleHRlcm5hbEZvcndhcmRlZFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbEZvcndhcmRlZFByb3BzLmNsYXNzTmFtZSwgZXh0ZXJuYWxTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsU2xvdFByb3BzLmNsYXNzTmFtZSk7XG4gIGNvbnN0IG1lcmdlZFN0eWxlID0gX2V4dGVuZHMoe30sIGludGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBpbnRlcm5hbFNsb3RQcm9wcy5zdHlsZSwgYWRkaXRpb25hbFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBhZGRpdGlvbmFsUHJvcHMuc3R5bGUsIGV4dGVybmFsRm9yd2FyZGVkUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsRm9yd2FyZGVkUHJvcHMuc3R5bGUsIGV4dGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbFNsb3RQcm9wcy5zdHlsZSk7XG4gIGNvbnN0IHByb3BzID0gX2V4dGVuZHMoe30sIGludGVybmFsU2xvdFByb3BzLCBhZGRpdGlvbmFsUHJvcHMsIG90aGVyUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycywgY29tcG9uZW50c1Byb3BzV2l0aG91dEV2ZW50SGFuZGxlcnMpO1xuICBpZiAoam9pbmVkQ2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgcHJvcHMuY2xhc3NOYW1lID0gam9pbmVkQ2xhc3NlcztcbiAgfVxuICBpZiAoT2JqZWN0LmtleXMobWVyZ2VkU3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICBwcm9wcy5zdHlsZSA9IG1lcmdlZFN0eWxlO1xuICB9XG4gIHJldHVybiB7XG4gICAgcHJvcHMsXG4gICAgaW50ZXJuYWxSZWY6IGludGVybmFsU2xvdFByb3BzLnJlZlxuICB9O1xufSIsIi8qKlxuICogRXh0cmFjdHMgZXZlbnQgaGFuZGxlcnMgZnJvbSBhIGdpdmVuIG9iamVjdC5cbiAqIEEgcHJvcCBpcyBjb25zaWRlcmVkIGFuIGV2ZW50IGhhbmRsZXIgaWYgaXQgaXMgYSBmdW5jdGlvbiBhbmQgaXRzIG5hbWUgc3RhcnRzIHdpdGggYG9uYC5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IEFuIG9iamVjdCB0byBleHRyYWN0IGV2ZW50IGhhbmRsZXJzIGZyb20uXG4gKiBAcGFyYW0gZXhjbHVkZUtleXMgQW4gYXJyYXkgb2Yga2V5cyB0byBleGNsdWRlIGZyb20gdGhlIHJldHVybmVkIG9iamVjdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXh0cmFjdEV2ZW50SGFuZGxlcnMob2JqZWN0LCBleGNsdWRlS2V5cyA9IFtdKSB7XG4gIGlmIChvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5maWx0ZXIocHJvcCA9PiBwcm9wLm1hdGNoKC9eb25bQS1aXS8pICYmIHR5cGVvZiBvYmplY3RbcHJvcF0gPT09ICdmdW5jdGlvbicgJiYgIWV4Y2x1ZGVLZXlzLmluY2x1ZGVzKHByb3ApKS5mb3JFYWNoKHByb3AgPT4ge1xuICAgIHJlc3VsdFtwcm9wXSA9IG9iamVjdFtwcm9wXTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjcmVhdGVCb3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJy4uL2NsYXNzTmFtZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuY29uc3QgZGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCh7XG4gIHRoZW1lSWQ6IFRIRU1FX0lELFxuICBkZWZhdWx0VGhlbWUsXG4gIGRlZmF1bHRDbGFzc05hbWU6ICdNdWlCb3gtcm9vdCcsXG4gIGdlbmVyYXRlQ2xhc3NOYW1lOiBDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGVcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFkZEVuZExpc3RlbmVyXCIsIFwiYXBwZWFyXCIsIFwiY2hpbGRyZW5cIiwgXCJlYXNpbmdcIiwgXCJpblwiLCBcIm9uRW50ZXJcIiwgXCJvbkVudGVyZWRcIiwgXCJvbkVudGVyaW5nXCIsIFwib25FeGl0XCIsIFwib25FeGl0ZWRcIiwgXCJvbkV4aXRpbmdcIiwgXCJzdHlsZVwiLCBcInRpbWVvdXRcIiwgXCJUcmFuc2l0aW9uQ29tcG9uZW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGVsZW1lbnRBY2NlcHRpbmdSZWYgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdC10cmFuc2l0aW9uLWdyb3VwJztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWUnO1xuaW1wb3J0IHsgZ2V0VHJhbnNpdGlvblByb3BzLCByZWZsb3cgfSBmcm9tICcuLi90cmFuc2l0aW9ucy91dGlscyc7XG5pbXBvcnQgdXNlRm9ya1JlZiBmcm9tICcuLi91dGlscy91c2VGb3JrUmVmJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5mdW5jdGlvbiBnZXRTY2FsZSh2YWx1ZSkge1xuICByZXR1cm4gYHNjYWxlKCR7dmFsdWV9LCAke3ZhbHVlICoqIDJ9KWA7XG59XG5jb25zdCBzdHlsZXMgPSB7XG4gIGVudGVyaW5nOiB7XG4gICAgb3BhY2l0eTogMSxcbiAgICB0cmFuc2Zvcm06IGdldFNjYWxlKDEpXG4gIH0sXG4gIGVudGVyZWQ6IHtcbiAgICBvcGFjaXR5OiAxLFxuICAgIHRyYW5zZm9ybTogJ25vbmUnXG4gIH1cbn07XG5cbi8qXG4gVE9ETyB2NjogcmVtb3ZlXG4gQ29uZGl0aW9uYWxseSBhcHBseSBhIHdvcmthcm91bmQgZm9yIHRoZSBDU1MgdHJhbnNpdGlvbiBidWcgaW4gU2FmYXJpIDE1LjQgLyBXZWJLaXQgYnJvd3NlcnMuXG4gKi9cbmNvbnN0IGlzV2ViS2l0MTU0ID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL14oKD8hY2hyb21lfGFuZHJvaWQpLikqKHNhZmFyaXxtb2JpbGUpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvKG9zIHx2ZXJzaW9uXFwvKTE1KC58Xyk0L2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLyoqXG4gKiBUaGUgR3JvdyB0cmFuc2l0aW9uIGlzIHVzZWQgYnkgdGhlIFtUb29sdGlwXSgvbWF0ZXJpYWwtdWkvcmVhY3QtdG9vbHRpcC8pIGFuZFxuICogW1BvcG92ZXJdKC9tYXRlcmlhbC11aS9yZWFjdC1wb3BvdmVyLykgY29tcG9uZW50cy5cbiAqIEl0IHVzZXMgW3JlYWN0LXRyYW5zaXRpb24tZ3JvdXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXApIGludGVybmFsbHkuXG4gKi9cbmNvbnN0IEdyb3cgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBHcm93KHByb3BzLCByZWYpIHtcbiAgY29uc3Qge1xuICAgICAgYWRkRW5kTGlzdGVuZXIsXG4gICAgICBhcHBlYXIgPSB0cnVlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBlYXNpbmcsXG4gICAgICBpbjogaW5Qcm9wLFxuICAgICAgb25FbnRlcixcbiAgICAgIG9uRW50ZXJlZCxcbiAgICAgIG9uRW50ZXJpbmcsXG4gICAgICBvbkV4aXQsXG4gICAgICBvbkV4aXRlZCxcbiAgICAgIG9uRXhpdGluZyxcbiAgICAgIHN0eWxlLFxuICAgICAgdGltZW91dCA9ICdhdXRvJyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBUcmFuc2l0aW9uQ29tcG9uZW50ID0gVHJhbnNpdGlvblxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCB0aW1lciA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCBhdXRvVGltZW91dCA9IFJlYWN0LnVzZVJlZigpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IG5vZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYobm9kZVJlZiwgY2hpbGRyZW4ucmVmLCByZWYpO1xuICBjb25zdCBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrID0gY2FsbGJhY2sgPT4gbWF5YmVJc0FwcGVhcmluZyA9PiB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZVJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBvbkVudGVyWHh4IGFuZCBvbkV4aXRYeHggY2FsbGJhY2tzIGhhdmUgYSBkaWZmZXJlbnQgYXJndW1lbnRzLmxlbmd0aCB2YWx1ZS5cbiAgICAgIGlmIChtYXliZUlzQXBwZWFyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FsbGJhY2sobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhub2RlLCBtYXliZUlzQXBwZWFyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkVudGVyaW5nKTtcbiAgY29uc3QgaGFuZGxlRW50ZXIgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKChub2RlLCBpc0FwcGVhcmluZykgPT4ge1xuICAgIHJlZmxvdyhub2RlKTsgLy8gU28gdGhlIGFuaW1hdGlvbiBhbHdheXMgc3RhcnQgZnJvbSB0aGUgc3RhcnQuXG5cbiAgICBjb25zdCB7XG4gICAgICBkdXJhdGlvbjogdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgZGVsYXksXG4gICAgICBlYXNpbmc6IHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblxuICAgIH0gPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2VudGVyJ1xuICAgIH0pO1xuICAgIGxldCBkdXJhdGlvbjtcbiAgICBpZiAodGltZW91dCA9PT0gJ2F1dG8nKSB7XG4gICAgICBkdXJhdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmdldEF1dG9IZWlnaHREdXJhdGlvbihub2RlLmNsaWVudEhlaWdodCk7XG4gICAgICBhdXRvVGltZW91dC5jdXJyZW50ID0gZHVyYXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGR1cmF0aW9uID0gdHJhbnNpdGlvbkR1cmF0aW9uO1xuICAgIH1cbiAgICBub2RlLnN0eWxlLnRyYW5zaXRpb24gPSBbdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5Jywge1xuICAgICAgZHVyYXRpb24sXG4gICAgICBkZWxheVxuICAgIH0pLCB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ3RyYW5zZm9ybScsIHtcbiAgICAgIGR1cmF0aW9uOiBpc1dlYktpdDE1NCA/IGR1cmF0aW9uIDogZHVyYXRpb24gKiAwLjY2NixcbiAgICAgIGRlbGF5LFxuICAgICAgZWFzaW5nOiB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb25cbiAgICB9KV0uam9pbignLCcpO1xuICAgIGlmIChvbkVudGVyKSB7XG4gICAgICBvbkVudGVyKG5vZGUsIGlzQXBwZWFyaW5nKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVFbnRlcmVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkVudGVyZWQpO1xuICBjb25zdCBoYW5kbGVFeGl0aW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkV4aXRpbmcpO1xuICBjb25zdCBoYW5kbGVFeGl0ID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhub2RlID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBkdXJhdGlvbjogdHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgZGVsYXksXG4gICAgICBlYXNpbmc6IHRyYW5zaXRpb25UaW1pbmdGdW5jdGlvblxuICAgIH0gPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2V4aXQnXG4gICAgfSk7XG4gICAgbGV0IGR1cmF0aW9uO1xuICAgIGlmICh0aW1lb3V0ID09PSAnYXV0bycpIHtcbiAgICAgIGR1cmF0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuZ2V0QXV0b0hlaWdodER1cmF0aW9uKG5vZGUuY2xpZW50SGVpZ2h0KTtcbiAgICAgIGF1dG9UaW1lb3V0LmN1cnJlbnQgPSBkdXJhdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgZHVyYXRpb24gPSB0cmFuc2l0aW9uRHVyYXRpb247XG4gICAgfVxuICAgIG5vZGUuc3R5bGUudHJhbnNpdGlvbiA9IFt0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ29wYWNpdHknLCB7XG4gICAgICBkdXJhdGlvbixcbiAgICAgIGRlbGF5XG4gICAgfSksIHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgndHJhbnNmb3JtJywge1xuICAgICAgZHVyYXRpb246IGlzV2ViS2l0MTU0ID8gZHVyYXRpb24gOiBkdXJhdGlvbiAqIDAuNjY2LFxuICAgICAgZGVsYXk6IGlzV2ViS2l0MTU0ID8gZGVsYXkgOiBkZWxheSB8fCBkdXJhdGlvbiAqIDAuMzMzLFxuICAgICAgZWFzaW5nOiB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb25cbiAgICB9KV0uam9pbignLCcpO1xuICAgIG5vZGUuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgbm9kZS5zdHlsZS50cmFuc2Zvcm0gPSBnZXRTY2FsZSgwLjc1KTtcbiAgICBpZiAob25FeGl0KSB7XG4gICAgICBvbkV4aXQobm9kZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkV4aXRlZCk7XG4gIGNvbnN0IGhhbmRsZUFkZEVuZExpc3RlbmVyID0gbmV4dCA9PiB7XG4gICAgaWYgKHRpbWVvdXQgPT09ICdhdXRvJykge1xuICAgICAgdGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQobmV4dCwgYXV0b1RpbWVvdXQuY3VycmVudCB8fCAwKTtcbiAgICB9XG4gICAgaWYgKGFkZEVuZExpc3RlbmVyKSB7XG4gICAgICAvLyBPbGQgY2FsbCBzaWduYXR1cmUgYmVmb3JlIGByZWFjdC10cmFuc2l0aW9uLWdyb3VwYCBpbXBsZW1lbnRlZCBgbm9kZVJlZmBcbiAgICAgIGFkZEVuZExpc3RlbmVyKG5vZGVSZWYuY3VycmVudCwgbmV4dCk7XG4gICAgfVxuICB9O1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIuY3VycmVudCk7XG4gICAgfTtcbiAgfSwgW10pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkNvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgIGFwcGVhcjogYXBwZWFyLFxuICAgIGluOiBpblByb3AsXG4gICAgbm9kZVJlZjogbm9kZVJlZixcbiAgICBvbkVudGVyOiBoYW5kbGVFbnRlcixcbiAgICBvbkVudGVyZWQ6IGhhbmRsZUVudGVyZWQsXG4gICAgb25FbnRlcmluZzogaGFuZGxlRW50ZXJpbmcsXG4gICAgb25FeGl0OiBoYW5kbGVFeGl0LFxuICAgIG9uRXhpdGVkOiBoYW5kbGVFeGl0ZWQsXG4gICAgb25FeGl0aW5nOiBoYW5kbGVFeGl0aW5nLFxuICAgIGFkZEVuZExpc3RlbmVyOiBoYW5kbGVBZGRFbmRMaXN0ZW5lcixcbiAgICB0aW1lb3V0OiB0aW1lb3V0ID09PSAnYXV0bycgPyBudWxsIDogdGltZW91dFxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAoc3RhdGUsIGNoaWxkUHJvcHMpID0+IHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBfZXh0ZW5kcyh7XG4gICAgICAgIHN0eWxlOiBfZXh0ZW5kcyh7XG4gICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICB0cmFuc2Zvcm06IGdldFNjYWxlKDAuNzUpLFxuICAgICAgICAgIHZpc2liaWxpdHk6IHN0YXRlID09PSAnZXhpdGVkJyAmJiAhaW5Qcm9wID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfSwgc3R5bGVzW3N0YXRlXSwgc3R5bGUsIGNoaWxkcmVuLnByb3BzLnN0eWxlKSxcbiAgICAgICAgcmVmOiBoYW5kbGVSZWZcbiAgICAgIH0sIGNoaWxkUHJvcHMpKTtcbiAgICB9XG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gR3Jvdy5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBZGQgYSBjdXN0b20gdHJhbnNpdGlvbiBlbmQgdHJpZ2dlci4gQ2FsbGVkIHdpdGggdGhlIHRyYW5zaXRpb25pbmcgRE9NXG4gICAqIG5vZGUgYW5kIGEgZG9uZSBjYWxsYmFjay4gQWxsb3dzIGZvciBtb3JlIGZpbmUgZ3JhaW5lZCB0cmFuc2l0aW9uIGVuZFxuICAgKiBsb2dpYy4gTm90ZTogVGltZW91dHMgYXJlIHN0aWxsIHVzZWQgYXMgYSBmYWxsYmFjayBpZiBwcm92aWRlZC5cbiAgICovXG4gIGFkZEVuZExpc3RlbmVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFBlcmZvcm0gdGhlIGVudGVyIHRyYW5zaXRpb24gd2hlbiBpdCBmaXJzdCBtb3VudHMgaWYgYGluYCBpcyBhbHNvIGB0cnVlYC5cbiAgICogU2V0IHRoaXMgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBBIHNpbmdsZSBjaGlsZCBjb250ZW50IGVsZW1lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogZWxlbWVudEFjY2VwdGluZ1JlZi5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogVGhlIHRyYW5zaXRpb24gdGltaW5nIGZ1bmN0aW9uLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgZWFzaW5nIG9yIGEgb2JqZWN0IGNvbnRhaW5pbmcgZW50ZXIgYW5kIGV4aXQgdmFsdWVzLlxuICAgKi9cbiAgZWFzaW5nOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGVudGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCB3aWxsIHRyYW5zaXRpb24gaW4uXG4gICAqL1xuICBpbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRW50ZXJlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRXhpdDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gZm9yIHRoZSB0cmFuc2l0aW9uLCBpbiBtaWxsaXNlY29uZHMuXG4gICAqIFlvdSBtYXkgc3BlY2lmeSBhIHNpbmdsZSB0aW1lb3V0IGZvciBhbGwgdHJhbnNpdGlvbnMsIG9yIGluZGl2aWR1YWxseSB3aXRoIGFuIG9iamVjdC5cbiAgICpcbiAgICogU2V0IHRvICdhdXRvJyB0byBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZSB0cmFuc2l0aW9uIHRpbWUgYmFzZWQgb24gaGVpZ2h0LlxuICAgKiBAZGVmYXVsdCAnYXV0bydcbiAgICovXG4gIHRpbWVvdXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2F1dG8nXSksIFByb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYXBwZWFyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGVudGVyOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGV4aXQ6IFByb3BUeXBlcy5udW1iZXJcbiAgfSldKVxufSA6IHZvaWQgMDtcbkdyb3cubXVpU3VwcG9ydEF1dG8gPSB0cnVlO1xuZXhwb3J0IGRlZmF1bHQgR3JvdzsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUNvbnRyb2xsZWQgYXMgdXNlQ29udHJvbGxlZCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlQ29udHJvbGxlZDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCBzdHlsZUZ1bmN0aW9uU3gsIHsgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnLi9zdHlsZUZ1bmN0aW9uU3gnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4vdXNlVGhlbWUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUJveChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lSWQsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIGRlZmF1bHRDbGFzc05hbWUgPSAnTXVpQm94LXJvb3QnLFxuICAgIGdlbmVyYXRlQ2xhc3NOYW1lXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBCb3hSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gICAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcHJvcCAhPT0gJ3RoZW1lJyAmJiBwcm9wICE9PSAnc3gnICYmIHByb3AgIT09ICdhcydcbiAgfSkoc3R5bGVGdW5jdGlvblN4KTtcbiAgY29uc3QgQm94ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQm94KGluUHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgICBjb25zdCBfZXh0ZW5kU3hQcm9wID0gZXh0ZW5kU3hQcm9wKGluUHJvcHMpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIGNvbXBvbmVudCA9ICdkaXYnXG4gICAgICB9ID0gX2V4dGVuZFN4UHJvcCxcbiAgICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX2V4dGVuZFN4UHJvcCwgX2V4Y2x1ZGVkKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQm94Um9vdCwgX2V4dGVuZHMoe1xuICAgICAgYXM6IGNvbXBvbmVudCxcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzTmFtZSwgZ2VuZXJhdGVDbGFzc05hbWUgPyBnZW5lcmF0ZUNsYXNzTmFtZShkZWZhdWx0Q2xhc3NOYW1lKSA6IGRlZmF1bHRDbGFzc05hbWUpLFxuICAgICAgdGhlbWU6IHRoZW1lSWQgPyB0aGVtZVt0aGVtZUlkXSB8fCB0aGVtZSA6IHRoZW1lXG4gICAgfSwgb3RoZXIpKTtcbiAgfSk7XG4gIHJldHVybiBCb3g7XG59IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInN4XCJdO1xuaW1wb3J0IHsgaXNQbGFpbk9iamVjdCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGRlZmF1bHRTeENvbmZpZyBmcm9tICcuL2RlZmF1bHRTeENvbmZpZyc7XG5jb25zdCBzcGxpdFByb3BzID0gcHJvcHMgPT4ge1xuICB2YXIgX3Byb3BzJHRoZW1lJHVuc3RhYmxlLCBfcHJvcHMkdGhlbWU7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBzeXN0ZW1Qcm9wczoge30sXG4gICAgb3RoZXJQcm9wczoge31cbiAgfTtcbiAgY29uc3QgY29uZmlnID0gKF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA9IHByb3BzID09IG51bGwgfHwgKF9wcm9wcyR0aGVtZSA9IHByb3BzLnRoZW1lKSA9PSBudWxsID8gdm9pZCAwIDogX3Byb3BzJHRoZW1lLnVuc3RhYmxlX3N4Q29uZmlnKSAhPSBudWxsID8gX3Byb3BzJHRoZW1lJHVuc3RhYmxlIDogZGVmYXVsdFN4Q29uZmlnO1xuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChwcm9wID0+IHtcbiAgICBpZiAoY29uZmlnW3Byb3BdKSB7XG4gICAgICByZXN1bHQuc3lzdGVtUHJvcHNbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0Lm90aGVyUHJvcHNbcHJvcF0gPSBwcm9wc1twcm9wXTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4dGVuZFN4UHJvcChwcm9wcykge1xuICBjb25zdCB7XG4gICAgICBzeDogaW5TeFxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCB7XG4gICAgc3lzdGVtUHJvcHMsXG4gICAgb3RoZXJQcm9wc1xuICB9ID0gc3BsaXRQcm9wcyhvdGhlcik7XG4gIGxldCBmaW5hbFN4O1xuICBpZiAoQXJyYXkuaXNBcnJheShpblN4KSkge1xuICAgIGZpbmFsU3ggPSBbc3lzdGVtUHJvcHMsIC4uLmluU3hdO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpblN4ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZmluYWxTeCA9ICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBpblN4KC4uLmFyZ3MpO1xuICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgcmV0dXJuIHN5c3RlbVByb3BzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzeXN0ZW1Qcm9wcywgcmVzdWx0KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIGZpbmFsU3ggPSBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIGluU3gpO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3RoZXJQcm9wcywge1xuICAgIHN4OiBmaW5hbFN4XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG93bmVyRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJiBub2RlLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQ7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rcywgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzICovXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VDb250cm9sbGVkKHtcbiAgY29udHJvbGxlZCxcbiAgZGVmYXVsdDogZGVmYXVsdFByb3AsXG4gIG5hbWUsXG4gIHN0YXRlID0gJ3ZhbHVlJ1xufSkge1xuICAvLyBpc0NvbnRyb2xsZWQgaXMgaWdub3JlZCBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RzIGFzIGl0IHNob3VsZCBuZXZlciBjaGFuZ2UuXG4gIGNvbnN0IHtcbiAgICBjdXJyZW50OiBpc0NvbnRyb2xsZWRcbiAgfSA9IFJlYWN0LnVzZVJlZihjb250cm9sbGVkICE9PSB1bmRlZmluZWQpO1xuICBjb25zdCBbdmFsdWVTdGF0ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoZGVmYXVsdFByb3ApO1xuICBjb25zdCB2YWx1ZSA9IGlzQ29udHJvbGxlZCA/IGNvbnRyb2xsZWQgOiB2YWx1ZVN0YXRlO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNDb250cm9sbGVkICE9PSAoY29udHJvbGxlZCAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBBIGNvbXBvbmVudCBpcyBjaGFuZ2luZyB0aGUgJHtpc0NvbnRyb2xsZWQgPyAnJyA6ICd1bid9Y29udHJvbGxlZCAke3N0YXRlfSBzdGF0ZSBvZiAke25hbWV9IHRvIGJlICR7aXNDb250cm9sbGVkID8gJ3VuJyA6ICcnfWNvbnRyb2xsZWQuYCwgJ0VsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLicsIGBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICR7bmFtZX0gYCArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4nLCBcIlRoZSBuYXR1cmUgb2YgdGhlIHN0YXRlIGlzIGRldGVybWluZWQgZHVyaW5nIHRoZSBmaXJzdCByZW5kZXIuIEl0J3MgY29uc2lkZXJlZCBjb250cm9sbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgYHVuZGVmaW5lZGAuXCIsICdNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJ10uam9pbignXFxuJykpO1xuICAgICAgfVxuICAgIH0sIFtzdGF0ZSwgbmFtZSwgY29udHJvbGxlZF0pO1xuICAgIGNvbnN0IHtcbiAgICAgIGN1cnJlbnQ6IGRlZmF1bHRWYWx1ZVxuICAgIH0gPSBSZWFjdC51c2VSZWYoZGVmYXVsdFByb3ApO1xuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoIWlzQ29udHJvbGxlZCAmJiBkZWZhdWx0VmFsdWUgIT09IGRlZmF1bHRQcm9wKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IEEgY29tcG9uZW50IGlzIGNoYW5naW5nIHRoZSBkZWZhdWx0ICR7c3RhdGV9IHN0YXRlIG9mIGFuIHVuY29udHJvbGxlZCAke25hbWV9IGFmdGVyIGJlaW5nIGluaXRpYWxpemVkLiBgICsgYFRvIHN1cHByZXNzIHRoaXMgd2FybmluZyBvcHQgdG8gdXNlIGEgY29udHJvbGxlZCAke25hbWV9LmBdLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFByb3ApXSk7XG4gIH1cbiAgY29uc3Qgc2V0VmFsdWVJZlVuY29udHJvbGxlZCA9IFJlYWN0LnVzZUNhbGxiYWNrKG5ld1ZhbHVlID0+IHtcbiAgICBpZiAoIWlzQ29udHJvbGxlZCkge1xuICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgIH1cbiAgfSwgW10pO1xuICByZXR1cm4gW3ZhbHVlLCBzZXRWYWx1ZUlmVW5jb250cm9sbGVkXTtcbn0iXSwibmFtZXMiOlsicHJvcHMiLCJmb3J3YXJkZWRSZWYiLCJjaGlsZHJlbiIsImNvbnRhaW5lciIsImRpc2FibGVQb3J0YWwiLCJtb3VudE5vZGUiLCJzZXRNb3VudE5vZGUiLCJoYW5kbGVSZWYiLCJyZWYiLCJnZXRDb250YWluZXIiLCJkb2N1bWVudCIsImJvZHkiLCJuZXdQcm9wcyIsImRlZmF1bHRDb250ZXh0VmFsdWUiLCJkaXNhYmxlRGVmYXVsdENsYXNzZXMiLCJDbGFzc05hbWVDb25maWd1cmF0b3JDb250ZXh0IiwidXNlQ2xhc3NOYW1lc092ZXJyaWRlIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3MiLCJzbG90IiwiYXBwZW5kT3duZXJTdGF0ZSIsImVsZW1lbnRUeXBlIiwib3RoZXJQcm9wcyIsIm93bmVyU3RhdGUiLCJ1bmRlZmluZWQiLCJpc0hvc3RDb21wb25lbnQiLCJlbGVtZW50IiwicmVzb2x2ZUNvbXBvbmVudFByb3BzIiwiY29tcG9uZW50UHJvcHMiLCJzbG90U3RhdGUiLCJvbWl0RXZlbnRIYW5kbGVycyIsIm9iamVjdCIsInJlc3VsdCIsIk9iamVjdCIsImtleXMiLCJmaWx0ZXIiLCJwcm9wIiwibWF0Y2giLCJmb3JFYWNoIiwiX2V4Y2x1ZGVkIiwidXNlU2xvdFByb3BzIiwicGFyYW1ldGVycyIsIl9wYXJhbWV0ZXJzJGFkZGl0aW9uYSIsImV4dGVybmFsU2xvdFByb3BzIiwic2tpcFJlc29sdmluZ1Nsb3RQcm9wcyIsInJlc3QiLCJyZXNvbHZlZENvbXBvbmVudHNQcm9wcyIsIm1lcmdlZFByb3BzIiwiaW50ZXJuYWxSZWYiLCJnZXRTbG90UHJvcHMiLCJhZGRpdGlvbmFsUHJvcHMiLCJleHRlcm5hbEZvcndhcmRlZFByb3BzIiwiY2xhc3NOYW1lIiwiam9pbmVkQ2xhc3NlcyIsIm1lcmdlZFN0eWxlIiwic3R5bGUiLCJsZW5ndGgiLCJldmVudEhhbmRsZXJzIiwiZXhjbHVkZUtleXMiLCJpbmNsdWRlcyIsImV4dHJhY3RFdmVudEhhbmRsZXJzIiwiY29tcG9uZW50c1Byb3BzV2l0aG91dEV2ZW50SGFuZGxlcnMiLCJvdGhlclByb3BzV2l0aG91dEV2ZW50SGFuZGxlcnMiLCJpbnRlcm5hbFNsb3RQcm9wcyIsIm1lcmdlU2xvdFByb3BzIiwidXNlRm9ya1JlZiIsImRlZmF1bHRUaGVtZSIsInRoZW1lSWQiLCJkZWZhdWx0Q2xhc3NOYW1lIiwiZ2VuZXJhdGVDbGFzc05hbWUiLCJnZW5lcmF0ZSIsImdldFNjYWxlIiwidmFsdWUiLCJzdHlsZXMiLCJlbnRlcmluZyIsIm9wYWNpdHkiLCJ0cmFuc2Zvcm0iLCJlbnRlcmVkIiwiaXNXZWJLaXQxNTQiLCJuYXZpZ2F0b3IiLCJ0ZXN0IiwidXNlckFnZW50IiwiR3JvdyIsImFkZEVuZExpc3RlbmVyIiwiYXBwZWFyIiwiZWFzaW5nIiwiaW4iLCJpblByb3AiLCJvbkVudGVyIiwib25FbnRlcmVkIiwib25FbnRlcmluZyIsIm9uRXhpdCIsIm9uRXhpdGVkIiwib25FeGl0aW5nIiwidGltZW91dCIsIlRyYW5zaXRpb25Db21wb25lbnQiLCJvdGhlciIsInRpbWVyIiwiYXV0b1RpbWVvdXQiLCJ0aGVtZSIsIm5vZGVSZWYiLCJub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrIiwiY2FsbGJhY2siLCJtYXliZUlzQXBwZWFyaW5nIiwibm9kZSIsImN1cnJlbnQiLCJoYW5kbGVFbnRlcmluZyIsImhhbmRsZUVudGVyIiwiaXNBcHBlYXJpbmciLCJkdXJhdGlvbiIsInRyYW5zaXRpb25EdXJhdGlvbiIsImRlbGF5IiwidHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIiwibW9kZSIsInRyYW5zaXRpb25zIiwiZ2V0QXV0b0hlaWdodER1cmF0aW9uIiwiY2xpZW50SGVpZ2h0IiwidHJhbnNpdGlvbiIsImNyZWF0ZSIsImpvaW4iLCJoYW5kbGVFbnRlcmVkIiwiaGFuZGxlRXhpdGluZyIsImhhbmRsZUV4aXQiLCJoYW5kbGVFeGl0ZWQiLCJjbGVhclRpbWVvdXQiLCJuZXh0Iiwic2V0VGltZW91dCIsInN0YXRlIiwiY2hpbGRQcm9wcyIsInZpc2liaWxpdHkiLCJtdWlTdXBwb3J0QXV0byIsImNyZWF0ZUJveCIsIm9wdGlvbnMiLCJCb3hSb290Iiwic2hvdWxkRm9yd2FyZFByb3AiLCJpblByb3BzIiwiX2V4dGVuZFN4UHJvcCIsImNvbXBvbmVudCIsImFzIiwic3BsaXRQcm9wcyIsIl9wcm9wcyR0aGVtZSR1bnN0YWJsZSIsIl9wcm9wcyR0aGVtZSIsInN5c3RlbVByb3BzIiwiY29uZmlnIiwidW5zdGFibGVfc3hDb25maWciLCJleHRlbmRTeFByb3AiLCJzeCIsImluU3giLCJmaW5hbFN4IiwiQXJyYXkiLCJpc0FycmF5IiwiYXJncyIsIm93bmVyRG9jdW1lbnQiLCJ1c2VDb250cm9sbGVkIiwiY29udHJvbGxlZCIsImRlZmF1bHQiLCJkZWZhdWx0UHJvcCIsIm5hbWUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZVN0YXRlIiwic2V0VmFsdWUiLCJuZXdWYWx1ZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/958.d9fd8a9f.js b/react_frontend/static/react_frontend/js/958.d9fd8a9f.js new file mode 100644 index 000000000..edca99d69 --- /dev/null +++ b/react_frontend/static/react_frontend/js/958.d9fd8a9f.js @@ -0,0 +1,3 @@ +/*! For license information please see 958.d9fd8a9f.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[958],{958:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>m});var n=r(6540),i=r(3718),o=r(8586),a=r(6327),c=r(5161),u=r.n(c),s=r(1710),f=r.n(s),h=r(4848);function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function v(){v=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,r){return e[t]=r}}function f(e,t,r,n){var o=t&&t.prototype instanceof g?t:g,a=Object.create(o.prototype),c=new k(n||[]);return i(a,"_invoke",{value:U(e,r,c)}),a}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=f;var b="suspendedStart",p="suspendedYield",y="executing",d="completed",m={};function g(){}function _(){}function x(){}var P={};s(P,a,(function(){return this}));var T=Object.getPrototypeOf,K=T&&T(T(R([])));K&&K!==r&&n.call(K,a)&&(P=K);var w=x.prototype=g.prototype=Object.create(P);function Z(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function r(i,o,a,c){var u=h(e[i],e,o);if("throw"!==u.type){var s=u.arg,f=s.value;return f&&"object"==l(f)&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,a,c)}),(function(e){r("throw",e,a,c)})):t.resolve(f).then((function(e){s.value=e,a(s)}),(function(e){return r("throw",e,a,c)}))}c(u.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return o=o?o.then(i,i):i()}})}function U(t,r,n){var i=b;return function(o,a){if(i===y)throw Error("Generator is already running");if(i===d){if("throw"===o)throw a;return{value:e,done:!0}}for(n.method=o,n.arg=a;;){var c=n.delegate;if(c){var u=E(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===b)throw i=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=y;var s=h(t,r,n);if("normal"===s.type){if(i=n.done?d:p,s.arg===m)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(i=d,n.method="throw",n.arg=s.arg)}}}function E(t,r){var n=r.method,i=t.iterator[n];if(i===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,E(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=h(i,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,m;var a=o.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function I(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function z(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(I,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[a];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function r(){for(;++i=0;--o){var a=this.tryEntries[o],c=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),z(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;z(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},t}function b(e,t,r,n,i,o,a){try{var c=e[o](a),u=c.value}catch(e){return void r(e)}c.done?t(u):Promise.resolve(u).then(n,i)}function p(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){b(o,n,i,a,c,"next",e)}function c(e){b(o,n,i,a,c,"throw",e)}a(void 0)}))}}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o,a,c=[],u=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){s=!0,i=e}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{e.exports="PK\0\0\0\0\0ìmþZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0console_interfaces/ux\v\0\0\0\0\0\0\0\0\0UT\r\0<ø‰hFø‰h<ø‰hPK\0\0\0\0\0ìmþZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0console_interfaces/general/ux\v\0\0\0\0\0\0\0\0\0UT\r\0<ø‰hFø‰h<ø‰hPK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0%\0 \0console_interfaces/general/console.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ih<ø‰h<ø‰hPÍjÃ0\f¾ú\"½Ø¬Kص°k÷c”+TàZÆR×îí'7éZèc!}hÛc”8\t(ƒh_ú`ˆ,\bƒÍ9ârA‡Ì¶aùiåËúZlj·›ÑÎo–\v°·‚74µA÷\b#E„€2ÊÊE&›=WŸº½¢˜E‰=Wsl#‰*®é~vY¥kü™\rwc0¤hq‡þl?;Jº®ï›ç—ï}ÍY\tº51,¥JgL÷¢ðt'¸†ætµ™Y|Ô°(ý•t=æåôǼEo/\0÷î×9¥ÛøPK\bÓ4LÏÛ\0\0\0í\0\0PK\0\0\0\0\0ìmþZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0console_interfaces/specific/ux\v\0\0\0\0\0\0\0\0\0UT\r\0<ø‰hFø‰h<ø‰hPK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0&\0 \0console_interfaces/specific/readme.txtux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ih<ø‰h<ø‰hMŒÑ\t€0\fWyˆc¸GH_iÁ&%-èø?ÄÏãŽ;<0:µæªPoݍ6ÀÄuæ‹Í~±mMS×Y/–æAŹN”!àé–])ÿD$©òÇ4 PùƒÀ4MTaÚ¥>e\vՒÎfÙÒ\fV\ru¸f’ÄM8yíQ}]Ú#üù™+„Êù\bôíÜk‹ò»îAVT÷£5¢/ü¯dø9•7žƒÐbªÞ¢jàû¢Õ«­Š:S£›6 ~H\n\fXœägê¥4oiìià™Þ#;i„abA;©›NïCšq²†Sr©¹+Œ8­ˆÚÛçÙVj–³ùBo¬¹uêyêÇ¿·{#Å•EÂZ•†zþ¸ªÜêz|³g¬€ð8B{\\Š*_(dEFs‰¼xâ”V\tÌ\" ~ÍIÆ\"ˆHš†$º@„-KVäÀDym%g¿I;û¯¹P°.ié­ÉD€ˆ£-i\tàìü\"ƒ6êADX:vú?HJ“^Ž“-Ì³P\t\0ˆ.µi*l‘=»h´ÚYǦ\bq\v±G]²RŽBç»*;]}ÖcYO×yԕ®´M'6Cgè[¥ã\b´X#PŠtG¡Óú²”ó°*ðü²ñ mü½2ß1{TÕ®V¬Ö²öd;NN˜°2š¤é¾‘uz‡ÕZˆ7r>Üá\"-olKh¨P¶®„ŽØu5ît;[o…Š{M\thŠõ\t˜áFøH¯Y.U1ä¼T6î’#e答ü܀ SG\0I×®•~R^H]¬\"B„•e÷LÈt֋ŒKÃ*ðÊXÉô‘±[I·î#ßÂìâ=҅Ô+¡£âþ€¸°“ûHø›\\X¤ûªÐ¼^1¿>ò]ˆb]\vvjI7›…•UÅÚfÄÓp‘¸<ð}Nªu¹ÑÜR÷ŠeÈ͍ò…`\fùÒ*·Œ!w·V1HÜi³ƒh³»Hßaͱ ’_+Ϫ(G`¿…¨ª˜’½k`N›\n/[›\f)]»l£hŠ—Z3ÇᐲÑ{Nò!Ú)Ît†hÈNqÎ)ešþ!°46†cˆ¬µâ(ŽzÁl.ÂQN[ï¢-#*K¡á'BÈXÔuR‚HØAÈvŠsz„”ú•å(Í­)\nS©\b†T·ÖÄlM)»ù™×êÛ·ÈaÜ£zÐM”S¶‹5÷\0d^¬ 5D„ú‰i˜ã˜ª<͍iŠ“ï‘óF=փŒK¥“’OC4J.·1’.¥‹þŸPO1ªâv1ÉÉ\fV=¡D߯[d\\‰:i(“ÐÎû\t2¶:#CHz-­L›£%çédJ¦Öì˟EÞf+¹YÞÂyyN)ŕŽÆMûDÊïUZáÙ¢)5˜Jê2y:$¸á§Ñ„¢2Ü;¦hÁ6©î)•h¡œƒ®Ajä²,¡Æ˜}Ø¿ZØÆÅÈÏòs¹c¢k¦9\vԅ^sÄfD²š“hFcUɉ>\vHUe’#³I˜Jüà”RvEÌúg„±ª¼×\võQ¶‚™÷B¾Û:>=Jy©ªtØô×Àap¸çԝ é°)lÊH'ù÷¦¡ûœ‘$kë“Ù›ÓlM\v#§ÉZ*˖ÐhM\v#§Éº„¡Éž¡Ùº¬ZR£Kh|\tM.¡é%4\vÐ.1“¦ì2™Ã4d—ưÍ4f—†CĽ±Zù&=> ÿW+û6ÌZ\våX16&\fžl‚¬T•H…ž™ô…œFm%Ao@Ó¶R¯«äȂ&l’³Mۍô‚µÓÀmwÁ|:Qž¦í3#7ÜMÃäiÚjQ¯S!¤¯Óƒõ|Q'Χa[ƒ9ɘœ¦m\r®à֛ӨÅa\"6\bóɉŽ&-ŽU˜“FÃö\0³T²bæ4tá Ùª%¼\bZ#Q4ȪmÊMj\tÑ\0¶IÛËi\0[c–ŒPgm’Ó#~D•ê9\r`Fèà#tðYÉ*ÑL-u}``\0Wؖãiþâ¡)\"4Lqޑ°ƒÈs{ÎÇá„lø”’Ã\tيDÙ0@Må‘$b/Uòô8œ–8®4Œ½Ü{•ŠÑ\\€ÊM”¡\rxV\bÍã­|•í-h&ï’ã\\NC¹\f.á2º@ÆÈ䡃„H[+\rd‚Jkjv.Íåö™#§¹|Žýc‹ú\v_Òno\n(—=aOT~2ûÇ \\Êe6‡·=åçó{ÉÒÉT\tîVP¶“ÑcsUv2W+;Ù~£t';ÐßýFìñZìŽÚðƒJºª„×AVt¶zÒ\n2§Ë3\tÚ\r–éÿÙR€%üw¶r\b+‡Ë¤JψýÅ3´r •Ô'ŸG—´¬Ù»gU>þùךÈÓñ¤+¤E‡ÓnzDŽw]l?Âß³ÞÄs+hŒÃ•µ™+\v«+øá;8Åóª|\vàK+¡€uæÒû$±¦?I¿ƒW‘ïeÙEÂÀ$ÀlØö»¥Ö]+E\t>X³ù*5\0q*ߧߋt²ð¥ÆC´RzYøSo^Ó]à̋±´ëVÐìž{/¼\b¯'íÅüå’_×IÿQ×ÍyØN¤•Y ã8͝Éà´w.ѼÛËÞà|¬Þã—-\fÿ>\\[Ïeé¿krn'ê/Oo¿Úæ\\\rz±ý¥Á`E¿@2ïàxcŸcjðs¯“Áï#ü¾œdþ‘ý!_\\ì¥Ë–.ðK')4ë¤iI÷ÿnHØÒ,:&îÀb'žóÀómöü’\v`M4!VûØviª\bÔ$¶]Ëíï£& }-´ñû·ç\vé—+âPH\"ë_UÊ냗ìŸäÁJ\rQ\nƒðC©Ñ¥kü]ßw¤t]Q×ðÆyŸ¢×Ò±ýÔíÍßPK\býí4Ž@\0\0„\0\0PK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0+\0 \0hal_interfaces/general/detection_network.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ihAø‰hI‰ih­X[oÛ8~ÿ d_’…áZ¾;@ -0Û):}L&0h‰Ž¹–I¤|é`þûœshóP¶[,°ë‰ôñèð;wÊjSë³bÛ¿½Qáڸۛۛ_~ùýý§ùO_Þ}þWöÀn-üªû£ôýÝ+il!Ý]'»Û˜RVtå\\9WºµWFÏ·ýya\nÓ­w·7ŸŸæ_ûú?«ò{Ú~ýøû{Ð5èõìÏïžÞÿ<ÿ÷»Ï\0ýy{“Á§÷˜Ý5º\vYÉò®ÀÀZZgô\té²PÅ¡¨ä\t\0T\b{º>\"-olKh¨P¶®„ŽØu5ît;[o…Š{M\thŠõ\t˜áFøH¯Y.U1ä¼T6î’#e答ü܀ SG\0I×®•~R^H]¬\"B„•e÷LÈt֋ŒKÃ*ðÊXÉô‘±[I·î#ßÂìâ=҅Ô+¡£âþ€¸°“ûHø›\\X¤ûªÐ¼^1¿>ò]ˆb]\vvjI7›…•UÅÚfÄÓp‘¸<ð}Nªu¹ÑÜR÷ŠeÈ͍ò…`\fùÒ*·Œ!w·V1HÜi³ƒh³»Hßaͱ ’_+Ϫ(G`¿…¨ª˜’½k`N›\n/[›\f)]»l£hŠ—Z3ÇᐲÑ{Nò!Ú)Ît†hÈNqÎ)ešþ!°46†cˆ¬µâ(ŽzÁl.ÂQN[ï¢-#*K¡á'BÈXÔuR‚HØAÈvŠsz„”ú•å(Í­)\nS©\b†T·ÖÄlM)»ù™×êÛ·ÈaÜ£zÐM”S¶‹5÷\0d^¬ 5D„ú‰i˜ã˜ª<͍iŠ“ï‘óF=փŒK¥“’OC4J.·1’.¥‹þŸPO1ªâv1ÉÉ\fV=¡D߯[d\\‰:i(“ÐÎû\t2¶:#CHz-­L›£%çédJ¦Öì˟EÞf+¹YÞÂyyN)ŕŽÆMûDÊïUZáÙ¢)5˜Jê2y:$¸á§Ñ„¢2Ü;¦hÁ6©î)•h¡œƒ®Ajä²,¡Æ˜}Ø¿ZØÆÅÈÏòs¹c¢k¦9\vԅ^sÄfD²š“hFcUɉ>\vHUe’#³I˜Jüà”RvEÌúg„±ª¼×\võQ¶‚™÷B¾Û:>=Jy©ªtØô×Àap¸çԝ é°)lÊH'ù÷¦¡ûœ‘$kë“Ù›ÓlM\v#§ÉZ*˖ÐhM\v#§Éº„¡Éž¡Ùº¬ZR£Kh|\tM.¡é%4\vÐ.1“¦ì2™Ã4d—ưÍ4f—†CĽ±Zù&=> ÿW+û6ÌZ\våX16&\fžl‚¬T•H…ž™ô…œFm%Ao@Ó¶R¯«äȂ&l’³Mۍô‚µÓÀmwÁ|:Qž¦í3#7ÜMÃäiÚjQ¯S!¤¯Óƒõ|Q'Χa[ƒ9ɘœ¦m\r®à֛ӨÅa\"6\bóɉŽ&-ŽU˜“FÃö\0³T²bæ4tá Ùª%¼\bZ#Q4ȪmÊMj\tÑ\0¶IÛËi\0[c–ŒPgm’Ó#~D•ê9\r`Fèà#tðYÉ*ÑL-u}``\0Wؖãiþâ¡)\"4Lqޑ°ƒÈs{ÎÇá„lø”’Ã\tيDÙ0@Må‘$b/Uòô8œ–8®4Œ½Ü{•ŠÑ\\€ÊM”¡\rxV\bÍã­|•í-h&ï’ã\\NC¹\f.á2º@ÆÈ䡃„H[+\rd‚Jkjv.Íåö™#§¹|Žýc‹ú\v_Òno\n(—=aOT~2ûÇ \\Êe6‡·=åçó{ÉÒÉT\tîVP¶“ÑcsUv2W+;Ù~£t';ÐßýFìñZìŽÚðƒJºª„×AVt¶zÒ\n2§Ë3\tÚ\r–éÿÙR€%üw¶r\b+‡Ë¤JψýÅ3´r •Ô'ŸG—´¬Ù»gU>þùךÈÓñ¤+¤E‡ÓnzDŽw]l?Âß³ÞÄs+hŒÃ•µ™+\v«+øá;8Åóª|\vàK+¡€uæÒû$±¦?I¿ƒW‘ïeÙEÂÀ$ÀlØö»¥Ö]+E\t>X³ù*5\0q*ߧߋt²ð¥ÆC´RzYøSo^Ó]à̋±´ëVÐìž{/¼\b¯'íÅüå’_×IÿQ×ÍyØN¤•Y ã8͝Éà´w.ѼÛËÞà|¬Þã—-\fÿ>\\[Ïeé¿krn'ê/Oo¿Úæ\\\rz±ý¥Á`E¿@2ïàxcŸcjðs¯“Áï#ü¾œdþ‘ý!_\\ì¥Ë–.ðK')4ë¤iI÷ÿnHØÒ,:&îÀb'žóÀómöü’\v`M4!VûØviª\bÔ$¶]Ëíï£& }-´ñû·ç\vé—+âPH\"ë_UÊ냗ìŸäÁJ\rQ\nƒðC©Ñ¥kü]ßw¤t]Q×ðÆyŸ¢×Ò±ýÔíÍßPK\býí4Ž@\0\0„\0\0PK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0hal_interfaces/general/laser.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hI‰ihµVßkÛ0~ä8œ{kÝ´o+\fº–e´éHRØØ†Q9µ%#)£eÝÿ¾“%ÿLœnŒé!D§ï¾;NŸœH‘ŒÓü)äbMe¹fø8pE¹2ÊÔF…ø3$Æ)#ú¾„ç\fˆ‚OÓÊ¥`pž\0nŠ?8\0‡50δÜp0`r÷yz=Ì¿ÀÕÝìb9½-†ƒ8%JÁ5QT¾'š8‚5M Š\fAùЦ‰a¶KfKøƒ¤[ªà-|ý0‚Œj*U“1>ᛔ\"jl@v\"H˜T\n\nð%Y« ëI÷{b¾‡Ÿ¾©oÈ#XC.[!‰oSݱíÈøŸ9j–Ñ…&Y^z*\v¾VeÅl1•–ZVèã×S3¼ú0àç7Ž–²Šçൡ¯YýV¥ƒ.³®œ)¦AÌTõÄr'ðBº¦?ݗ)æ_Ó­ŽïP°\nԓ°½\f‡,bŸû/oï$Õ[ÉAÙ\vlš(5±ˆ\t?«ZÄW8-ÊóÓR®R¢ñzj2¿]Ø+nœA\vø¸¦R¬„^>å´qûCëþ.'’d`¨Ïw}uIîÀ9¶Â¹%·RG¨½×65U¡«ì‹mâñ՛\f\vµî×PšP4ëkR·ºqCrkÏÍÆk{û@Ìw\r€â{r¶\v|ÞÂóßÂ\f5—Ž‹9Z¶ñÿ\bÝ.wS©‹º3‰ÐŠ=ŠÉœÀY\v]«sRۃ.•µ>3ƒî$°ÄxԔÚuO\t¶r¨Œ-DÝÅøþî'\\˜ÅWpJß¸nrÍY׏ä‡É5LgËËùÕäâÐÒz\"ÍË훟 ï¡<Â+’³¸¥ñۜJ?\b+œWČÌ'×}LÔveöfþƒâ=‰Ð¢bÉrÍï*ZûÛ!¬îŸËâÈ¥LiÊ1bLÒtEâ‡#8ïÕ\vÇ62EŒŠLzBØ/‹²;!\\1šòÔ €šiCuCÝ:Ïeó̺BØfÆì~PK\bû!·xë\0\0~\t\0\0PK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0 \0 \0hal_interfaces/general/motors.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hI‰ih•PMkÃ0\f½üDsq ˜í:Ø¡ŒŽ\r¶Fi&KœÌÌÁvšv¿~r>ÊhÇ`:\bI~zïɵw錌þ$LhÇÊ´ÎGØö*DJêò¥nOܺJί¬)™šá™ìk°nê¹ûdù%€1”U‘å\tGI–eð´zçÍvýö¸zXN()u¼ºè|H,¥™¥’5\b‘X„`Aêz\tѵª\\‚)Ž»!ïvD§\b]+=Ëùykaj‘NYä?€ÈÆÛîîDzô²ˆRàD«ðÃoœõno.wÑw1b\0—ξƒ´Õn2}˜úe›keeáùi×þøäˆ]¬]ií'­þ/­Â6F±/ëÿ%ö\rPK\bÌåqg\0\0;\0\0PK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0(\0 \0hal_interfaces/general/noise_odometry.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hI‰ihµYmoÛ6þ ÿs¾È­£Åé§ËРk×\fEÒ%)à4\v\fÆ¢c¡’(KrliØß_DŠ–l']ÓZ¦È{y¼ã‘ã”gIqZš“$Ýߛf<&Ù$JK?á#¡”¹€²jŒi1ÓÕ4“¡MŽ$\r÷÷T}BŸÆqþ˜ûð¨+ëþ¼OIÂջϿyý“ý=²\"LÂÂë£ÜþÞÁÁ9û2:ÿt~vuK>|¹xws~yqM ~oÑ<'ŸyÎÞŠ!`S2#Ãxìå,š\"µlÂ?¬ñWä”r@FdÂy»˜,Ëï¹RËÝn–«´Ü×Ír3¢ÜG’ÒŒÆnwtYw\bEš¼õDSé4•ý&S^KVŽdeH>:M3‡Ä3¯¢ªùªYÀ<Àã¶Íè²ßÆÚ¦í\0£õ6aÑÒôE#›×æÞÔÓ¼CÃzMl×Bm$ÿöZ±b‘%¨4þÃ5…Šƒ¼ùr@æ+ø”ð©ôòêõÑMF“<‚AåDÄ.³žIÁѐ¾”{+<’\0×‘%ûD£Ssö¶(S֔œFœªUéŠ.,P¤Ð*®\n–®*þñÚ¾Ò#0رD^o¾‚缄é™/±Tõ›¢C•-K”Ò+rˆƒR%p\r:­$« ›~\r$«Yiy®a‘ß«ñƒê׃’¢\nø>#\nŠeF^_hÈ[aÈÆ%+´ˆ°WÙ°äm«Iá7Ø5ZfiH~ƅ\"ÛXÔÀý\n]w]dÎZåp{÷jÊv“Þ:&Å8õ}E†eP±>Þf>F\r·,¥1µ[®úMQÛ-[Üòu›[ŽôpVÁ¨Í1Gݎ9rsds$s͆#cC¶ˆXvŒ–ô`#ä<\0á°»Ô¹Ôs¨$õåò€…Åԇñ@ՄçžÌPšu˜ÞˆšC]c«-)d!·K„ušHiRJMÐѤ ¡Ék-µE“¶!µhRuj²@ÎÉšl’Òdù,M^4'Û­ÓXfw&ÀgyoÖ8¤ËYy,3A߷Ƌ«Ëkr©€1þ\fXÆxq!@Ÿ\bšiOÖpu\b°CˆÕbÍðAùZð@s­v\n²`\n\tñ”uxBÊûØ.PÉðD|\fXœUQx„(ç¯,¹rƒ\\iÉUäT,:’³\r’3»gql©ó1ˆQ¿Vò«”_:q‘Lê\bcå\0»ÕqÆl4»ÁÄѦ[ôÞµ6bü3Fauùâhãçl.â­7$4áØøŠ\fÙá/îòGf³äé\"ÏCšŒæÌeâÅ)òdɆ\"ZÆ{b¶\fµGˆzéݰ\0Q‹„g1¼x!ÐÂ\rV‚V¢#\\\"+ôolnh§Ú‚4\b”npÂ.ƨ=¨Ä–ªô@§ ¡§Ùȇ0Ë\v1}$Ì¡Õ[ZÍHNOÉO‰‡ÔG÷dø.ØÊÐÅü‰Åà-ÒñO:ø3 eY\r¾QYåÈà±Ø¼T­Žñ¸Vsƒç!W¹…«ÜÆU®j\vWµ«Ò3†,2δð5bˆHQ ¤ÛØ[B“xÓïUè`º¸2ÅÒ+Üíj˜±½RBx¨*®L±4E¦úF•–hòu$ðQh-J½@û.m´óœíôÚœ($ª›ÇvîæŠoÁ–;aÅ¢iCcªÙ×CùƒÂÇE(7YöžZǥͫçz÷]\vBˆRРŸ·})2ÏÙÉB\\ÿ¶Òu5®QqP÷ԘÄe¸ÔiQⴞ6.o}yýFpéÊI:Ì`\tȱ¬¶s•Û¸Jm›í\\Õ6®JqU\\ÖJòõuwG÷;AJ\v2Ü\rRYãÝ K\vòƅ¬e2Ööà¶m‚ê\\§\v®ÚHs™‹ýgŸÈùÅÍû«gïÞÛWú˜Žè…‡¿‘üxÔq!øŠˆ8ÍË ãsF’UÎEAnà¾ß[ sE‹ee¦2ÉF„4;‘<é÷Œ=£Ÿ£•|–\\j£bí÷ ½ 7í€òü‹~ÀG’,)<qýÞp8$—Âëwחw3òöÃÍëéõíÍ={¿§TJòžKöÓÜ0ÌقD2D‘'Yº@jíÂZ‚ù•L\b’Äœ‹9yX±‚\tùèàÊ\n7;ÛW¸§qKÀ!îŠäTЕû8º­\b·4{Nك óž<)âe}¯ÇÁ‚§i…½ÃûãÐ5à&#bþ1äÏ\r…¡d\tÏp‘¬Ø}AWyE>‘Êò€Ô¶²–5„”z¿_¿ÿÊÀ´» òh„§¥ò¡5P®Òq•~›IÖȽƒÜ7$WŽkéxMS™Ú͊ä××ôŒnýî@%Ö©P%í‘`TïT,*m…~ÕÈֵܧž´>ÒÃzMœ\n®A]$ÿ\f: X±vÿpMaGÏAo½‘õ¾%|÷Õò\f\fÑTÐL¦0(IÔÞÕ¬gRp2иW*#\t°p­aYØÏ4Ý03g¯Š2gmä\"å´0^ÓWLaEŠª\vs·\vV_ÍþÇ\vð}¤ì<˜Ä[ïàº.azÖ[¼Ûûmè@µg‹…Þ‘1†¨8¸Û«¸V&m0Ñ&،›çþ °IÌ­'h£•¹\r‹Úù½:~ÔDùõ ô„‡#¡ÊˆoQQ|/õöú•BΔã–’{TDéU¶”œuJ‚\f¿Á[£cö1 Oȏ¸P´¥­¸_àÑÇÇn¤d8|½{5e·¤3GRܧ¾MQdø^‚ªwàÿг™°•–¥³J˝߆Úi9îH˗]iVkÀYaWb†Ç3t3l3T‰y aØhÈçÊQžë7³‡íÿÔïîöžÜš@Tð9ü‰S¤ªÐڊ\"íÅA\\-‰-©†V°¶œÔˆ‰AÕDÖÝÎ\vs£C<3\\$`C|€~}#Ë`fÔbh‚Uíè@ᒠ.ØY¸ò®´pû8³6†¹<\\ÚOVedý~„‹ø³Ó?¥þ©^$šÉ””Öžüe¦¼lÿËÂT©yúhAíBSÉ(¬®@•šd1ä’wèÈhÆÑù‚œ±ñÏî΅ÌÍãêò¹¾™¾¹{{ùú}´¨Ö~<¼øÇŽ#X½y·ÊÛM΄ç5nP¥V„«] aa$7OXÆâm,¬ä\b,2IŽ;õ›}¾\nªnšNŒ4IšÈ‚eLD1MÓ'‘³Iw}¨àTÎK½è¤÷|»ª? 7ó\0­Y8àV'†ç™&ÝóÑÊݐFèÔ¿PK\b$%q3\0\0³\0\0PK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0\"\0 \0hal_interfaces/general/sim_time.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hI‰ih}T]Ϛ0¾7á?œà\rf†}\\šÌ9ÌëfÔ\to²%Kš\nE›(kë…ÙŸ_?P\n:¹ pÎsž>íyz\nÎ*àYÙ\\šåhÕ0.a£¾½QÑ%ÿ0qÍíIIñ–T^v¬¤Ùe\n?X²ã¬ %™Â\v’ñ6åÚ\"ÎÄ‘ãæ„*q¡zuÍïÔ5kÿCöLfÞ\bÔc´¦2˜hœ7Ç0ý¹Z¯æû_°|Ý,ÒÕv“x£¬ÄB@B«”Vä+–¸¥ÈI\bi\n„AÊBs۔~t$$cu. ‚ƒLkÖ˺¤Br‡óV§€A÷«ߕ׆>›ßǽE¸’&C€oŠ[YÏ\bå‰óɉ<ó„=W½#aU~rÔYɲ·ëö|¿]/å¸%–D€1Ê~›ÀB#A2ø–ÎL¦—†ô:ÚâÏ\ræ¸Ã<ë—Ê+o‹”Šâ\n4 6ÞjÇ.{Wœ[QYWpnb¹µÁdv,ab¡}«èØwˆ\vn3­“­â[]çæ—ùV›4Þ/ç‹Tdàe}ýšP×5æÆ*ýÝmX˜w7?º›á—8IQ¼\\n÷é´_w²#!ꍆð{ïÐzž\fÑ9iä)ú8}hX{/Î%Ó|fœ¨f#§ÞáPôpò„ÆDƒEý÷¦+þ lÖ(•lRŽ2\\–|WkÏXÔäýª³©–Ø^¨­üG£w×vßÉ0}Ÿ‚‚÷šÿp3q;®#‘­³îÌs\tæÀj¥ðPK\b¾¹U\0\0C\0\0PK\0\0\0\0\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0hal_interfaces/specific/ux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ihFø‰hI‰ihPK\0\0\0\0\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0)\0 \0hal_interfaces/specific/amazon_warehouse/ux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhFø‰hI‰ihPK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0?\0 \0hal_interfaces/specific/amazon_warehouse/platform_controller.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hI‰ih½VËnã6Ýð?ÊFéx8ž,ƒ¦hÉ -Ü`05AS”Æ\"’ò ýú^¾dY’NÕBÉÃÃs¼WµÑ\r2L¶/XéŠ#Ñ´Ú8ô\0ßËEÝ/æyÛ\nE:å„$uç:Ã\tÓM+¹t‚¸GÃi%Ô.íßÑ¿ùV“Æî,¶fŸ™nÛV¾ü¡…r÷u\r\tm]¡ðÊÐ/κ4\f‚–‹åâÃýÇÛo›¯è]ù¡¨‘Òië§òòz¹@ðÄ\t¡„+/=n¹¨xXSmDí®\"y™†ýÆ©\fòbâN&©µèîÏ~:a=!žŸÒrYgÿøq°å&™á5ŒqEDÑ)©iUø“23H\b¤+ÿ5ǜ7Ãòp!֙AɲlÞ†½9¦Š†^\\\\ ßn7è÷‡¯÷Ÿ?ÞÞÝ#˜Éöê¶RØGn>Iê xO—Ò¿.Oùd…œnó뺖›ò÷ÈbÂ\\ŒÝÕv[06|2H4ÇI›÷”ÑÃé¨z¿oN®Jñ‹éåzÏχÏïÂ>EˆÎŒ\"œ4”£¬ê·_ÃüÚa)þûq}¸’/ï´rFK\tžz%Vù{9”VÅa0åCð\téÖ1§\r>\0m©¡Md»Fá²#EBÞóÒ½´<ó}Ÿ=|š3m’¥(ë™8MjöïkÞÀÄ!þþ¹Hc9B_¸Ù\vÆG¯ ª4\\rjyy¢à5\rUÕu§þ¤su&Ð(ÁŽ«™jc'=\nf,3¢õ·©X ñ‘ÝRö4×¾|5<§ÿLÖ* ,Δý·üXŽŠãæ7>>¹…ïù™F°þôî[hSÐ>w‚!«áòR‡’Bacõa¬k:Ã+¸¹<ÌR&߂üptú#É«ð‹×àw)ôÇQ5õ¼¯ÀY#¤zO¦Éc—'Ø~>O6·å'ôöjÌnù\fKüA;ÌC«ÓÁ¿¶;™vNðÛ3ÿ—ÿÕü\t,CN&?6‰¼åÊÔ^½Qs³oPnÿ\0PK\b\\êÔö\0\0.\r\0\0PK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0\"\0 \0hal_interfaces/specific/readme.txtux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ihõ‰hI‰ihMŒÑ\t€0\fWyˆc¸GH_iÁ&%-èø?ÄÏãŽ;<0:µæªPoݍ6«ÞëÐÉ\\ðúÈ*ÓщW‰Ç§PŠÇ§áZ| ¨†Áéø@¹\f>P/ƒÌàß}€TÔà%µùù0Á\f.ÿÅþš(MPê7Ñ[¾“GÕGvóäqÓžÕ‘燣ôÍð¦zÂ?³ìE\r¦/<“͐¯J5FÈnæíù’[íÏΒõ2AЙÿTpCU;ASÇ-Þ1â/€ˆ? ‚ÓæcEÄó¥2\toK™e²œ/5ªÖ⻎B6%C\t$Ü!Ä÷„ßDû¹‹;˜l€c>qüЀ\b€Rß7Ñâ09LK™\fMÛâÌl:¦mÎg6Íç#àÃ%—x\\äRÃ¥—z\\ä¦6,§È¹™›½ú\nSßÅ=””ôд—ZA\\Óc‚\0.\\¸¤Ç5=&(àRÀ¥€K{ÜÔpSÀM7Ü´å‚<Èvä8kýJÜÏ¡4ýªMaÅd`ÈÈvÈ8kå@oÉÀ0‘a\"Ûaâ¬ôÝ#Ý#Ý#CÝS¾Ê=×ὐù~›_\f'pkªO••-ÂTwßÌ&ª»if“>ÕÝ1³ÉVïӀ\b¶\"ˆ B€\b¹*B¬\b\"ˆP B¯ŠP+’‘ˆ¤@$õE—¯¢xׂzà0§ÎaÞ,YÿwNí͹áݓ:ÃWm£¥Ãiª¯™;8%²$В\fYRh\t¿= WÌáu%\0<:\0<:\0<:\0<2\0z=\x002:\x002:\x002:\x0022€ôz\0tt\0tt\0tt\0t8\0çjîfûÐæÀèÖÌþÌÁo%ÍâJ]:)Â)|E\n܂“€\tH †ò¾ÑûÊLkï_+mìëšöM.ÉåºÉÑ?]šÁÕÍ|ã#±:ö帙ÀyvlŸgOåï•Ì3vºþâ>€tëîó…7óGí>7Ý!¬þ.\txçRJåàÒnô©üÅìüÿ¿á—?²3졬sý&³e¸Ó^՜±œ¸C.qG†ÞÁßPK\b'R‰Á©\0\0š\0\0PK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0hal_interfaces/__init__.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ihI‰ihI‰ih\0PK\b\0\0\0\0\0\0\0\0\0\0\0PK\0\0\0\0\0îmþZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0gui_interfaces/ux\v\0\0\0\0\0\0\0\0\0UT\r\0Aø‰hFø‰hAø‰hPK\0\0\0\0\0îmþZ\0\0\0\0\0\0\0\0\0\0\0\0\0 \0gui_interfaces/general/ux\v\0\0\0\0\0\0\0\0\0UT\r\0Aø‰hFø‰hAø‰hPK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\x001\0 \0gui_interfaces/general/measuring_threading_gui.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hAø‰h­X[oÛ6~ÿÀ©/Òê(v:l…Št(ÐA—bY Ðes•H¤ê¸E×Þ÷Ëv©+-õ2Lb‹<<<—ïܜ+Y’ŒfxÉ\b/+©L÷~~Ö,ü©¥è^t½­”L™ÖݒJ‹êؽ™½b4ãbׯ\f™ØVËô3çg=Ï£Æ7øˆ+jö1š).$¸|#·ÒðTÿRUO©áR¼¢‚î˜\n\"<”£\n¥[‰-“Bîvp{\fŸI³ÞjöRxòü,-¨Ö䣺Vp䶕ü×·/Öçgž \bà…pa˜ÊiÊH­a¿×‘P‘‘²e@ÞÜ>GóÑ5rÇóšy¬\rm\"\"Ë41’lIiQ°ŒP´#\f¸ÈÜ~å‚àhö2ûC8&·°\\Wè–dWóyF\rɈ'hY°’¬Y'}+HÆr’$ȵˆîÖUÞ6â\böðcˆ6‡z\vÖõA/\0ƒœü³ÁcÉ,ògÛßlf iÁō_û³½Ÿ]¤†ptÇ̦2érË¢•RlPà¨\rÀ1’gåÀ ö¯vW˜¬Vàö\0l4~¹¨‚{Ï ¸•4\r\v껗øFVL„ÈldZf¸ûâæÚ»÷ÀÍ~Ì0vçÖ§Þӂ\v,çSr8u\vO†T\v²\r‚h‚M¯BÁm’½{€³ŠWÐMàÈ9ĺ#nƒEÝÏð™)u=ÿ»å}œ±Tf,\fj“_<\rF¨˜ÏSØp]€Á&\t w°èÎ`¿ƒ¹Á56ŽÌVPbë´ã¥sÀ™•„n{ÔXÈCý?¸Jk¥ p¾t…5úbD1qL^\"ôÂÌÄ=jò=¹úþý¸tÿ·XƒÙÁD,­–Ëf±ä©’Í´P¸/ǜ}»\feòdpþȺ6h\"•xÍLÁ󹝟ɒ0hÐÈò˹é\ví\t>=¶¦%Up:\v­©.=Õd¡´žÂßm¾NLL¶ÃËG7ùÝ$Þ5¡åWt‹øt£§òb‚Ôµ#á¦È\\G9êSä®Ñl›Â)\n×r¶ý¡GñɇX«,NŒqV—•§\r2ê):»Ù¬bdâ*XèÓ>\"7M\"ç\"•%v\r‰€0½@F”±aÝl†ždû–ïÚol€×PÈ48¶¿BïpM@Y†*cLƒÀJ€™¸aì¥W7†3ËD¦Ÿ‡|‚á\\4¦Dp{œûÇaü`JA-Þ\n]W8Ã\f\n\n޽?kŽûbUM•Çaצnœg›\f/‹Bœsìˆ:˜qÁKèc(‰ëv¸Å矿‰çz䍮Ԫõ)$ žú˜°?\rL¢¢oÿC‡íd›omÀ~…˜Évaö¡ÿˆ<Û3ð< ‰Â< %­ˆÞ˺ÈnºkN¿\tPm¾¦“»ˆ_GÓdFöf8v\\›±Ý×ö$;ƒ…>cšC‚&³>¬ •fÙØÊPh{x&ǪÞ:¦¤øû‘ÿsÄEËÕSvÐôlFAáÔe\b!vZS9¿óPǹ¸o:v¼\"D–žRVrm?ð—ª‰èøœ;¹\fóàc¾ÌÚ$E>²O÷ÿPK\bÖ»ê€G\0\0\0\0PK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\0:\0 \0gui_interfaces/general/measuring_threading_gui_harmonic.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hAø‰hXێÛ6}`•9ñÊönÑ\\ H“\"À&\bÒMû\rZ¢lv%R%©8› ßÕ÷~Yg¨;Em.2`[äp.œ32S² )5Ìð‚^”R™îýþ½fào-E÷¢«}©d´î†T’—·Ý›9*FS.ýȐىíµLn˜¹/Céy+þ\n¨UÏV⧕~«ñ\r~¢’šcąfʄë%\tV¯å^žè_Ë2ç\t5\\ŠTÐSÁYqE=)ZĹ<@p¿q3Þ*q)ÍÚZ|’S­É\vFu¥`ÉU«ôïožoïß#ðA\0/„\vÃTFF*FõæQ‘’¢e@^_=ͦ[äŽë5˳H\nÖ,ˆ`,ÕÄH²g$¡yÎRBqgaÀEfö/Ü\0Gs”鵨™\\ÁpU¢ãCÅCä¹hHF<Áʜ\ftM;í[ER–‘8Fæql9,ÉQj³\vNz»ZmÎŽÖðÙlÏ/ÖÁ’dŠý³»€¡%9I•§± ÛÀ…V¹\tø< O?°¤BאD\n£dNÞS¥{\n»\r²2qÉ­wd­Éʊr²t4¹‚+U±éD\fîû²xFsí#É¥eÐù(º„p1‘ÃSFó8¹Mrä×δÂYy\fŽ7RK‚êWL$·q‘¸šO=uÁ^Q.‚-øbé̀/½ãÊdÞñ¬ÔÞñœwü³k*À׆NœÈ\n±ì3¦Ô0z¶q†{3ìîO%b¾u•3è‚9ü™ÌõŠþeˆÕ:f,Ô·C¤=sšóÌ†ž%³qóÛÿa3Ir1Ðø¿_Û㡎ó–˜ÙµÆÄ][B\f³BжhÃwŒøY=0¸¢k&‹ë‰8=ÊÀŸØEß·ªñ¬…¦_™¹ó*a6T°Nx,‘±†`Œ;výšoU˜?È­O°$Ää\vy£y_ÜáÍym!ÎbÌ=õ’%©SÙx4ùü+j\vúz× ­î\bI\0ŸŽ >\0\rÌtoƒÃGp{`dÉüsÆì·Áò¬lZZ}ròÕçàÁèàݘ¥§Và>¹’ºÝN}w¤\n€Ç“¸éÀ`qߎE¯dɄÇã­%Kˆ¡3\\óüÕS;ΔŽÿöôϗo./§Ì&{„Ï»j:Ñ@Bª}ŠúnüD¸¶ñ\v%ˉÑÑ\rÏóÅ\f_*i\0)ɹÀƉ`™\v'œëýÁzž\"á’ìƒ`áñ>H§ dÊ0'âkT¿†Ae²³ÇGG|x…ÛAA€:\r9Î\bŧ &9‚D¸eT%Ç—·šHÛ^ë‡áÛëô:z÷h\nžç5cNc’Õê­­&Sìg¹¤&´‹£ƒ’Unw\bÂgln|þ­P‘°|Š\0ö!a¥þ°ÿ¤š0Â%´ç&̂§JÁN‘Oì³ëȌ\vhÉ}ñ\tû0ÁT)sІpmã|f‡¼ŸÚ\0ü'{\bŒ…4sÌçúSØj‘†îĒ\\Œòó|õöeéútiٖk†ñŽ\tº[ƒç¬Òõ¥&³=/±µgî*\n‡ŒoõÛSi$ä)\\|†N%•RP¾$ÂnÙýÙXÅ1y¹.LM”Ò[M’óáë§uýõ\b¸EM~[ÀÐf½n\vž(Ù&˕ˆÖcÎî¾\furt¨ý‘vO¢(PÌLãh›™ù…¬\tƒ#qtóu\t_8PàcAÐc˯iX»U+Ç´%Ù,lüÃîëÔĶg(|$É=ÿ¡,•_q¾Ã§;ã9&/=¤õ¡o¤œ¬>zãÜG^\rÛcœ¢>$¶':‡â³\v±ÖX¼#ŠÒª(uèߐI2«/<0«×½dèÒ> ¯šN‡‹DØï7$ö&Ó\vd”AC9ì`›Ë‹ô-ß­{Ä\0@ªÁ±½\b}À1\r2ô›{8$7ƒ+\n,à0bkvÃØI9'nŽã[†¹Ôì»Áp\t†7cJ·Ã¹¿¸Âk-üaXÈÂàÐU‰w[Ю€Á(Ñ»wFãÄþJ±’ª¦ßÆK+›ºñ^ªÉðPâä©v޽jÜU—ÐÇÐpmÛK*|þû—8®G¾‹‘ØA- ZO!­š‹‰æFуŠþ\0÷'-ì)Û|k\v~¹b&Û=²=ï˜ôyrdày@%‚ {*‰>Ê*Onº;&~ Ú|M½³Š_Ïw¨ìÝÑÚ\r€Ü\\´¹Ö¾€dg°Ð§LsHÐÄs\v€Ëi©m;=Øe(´½œ-ǪÞ:¦ ðؽ@\0\0ö\0\0PK\0\b\0\b\0™zýZ\0\0\0\0\0\0\0\0\0\0\0\x008\0 \0gui_interfaces/general/measuring_threading_gui_no_sim.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0¢¼ˆhAø‰hAø‰hWێÛ6}_`ÿU^¤ÆÑzw‹¶0àE‘’\"H7èK+l6©’T'Èwõ½_ÖRWZÎ&ÕÖj8Îå̅¥V5+¸+j`¢n”¶Ã÷åEGøË(9|˜ö¾Ñ*c’Ϋæ8|Ù½^\b¹)Sa¸7*\vöòb”y4ô…¯´ávŸ\ni@Ûx½bÑÕku¯¬ÈÍÏMS‰œ[¡äK.ùt”Ц’L¨=%Õ¼Î*µÛáé)¾³ŽÞ[öBíº½´óò\"¯¸1ì%pÓjÜr×kþë›ç›Ë\v†OEøÁ„´ Kžk\r®62.\vV÷Øë»gä>¾!é´ß@U¦Ær´&a 0Ì*v,çUãä/`€RTéþRX”h÷ªøSz!wHn\nK¶kEL2“Že&­¬ Ôµ´ï) dYF³ÌIX±½2vÌæêêúæ‡tכ›Ûõm´b¥†¿··HJSèyо‡¼¥ °\\I«UÅÞqmFg°jmր¨ß–]§kvåN%9>ž¿E†;ÝÂéB†EK$‰xÆ+³ÄR)'`ˆFú\tqrrŽ(€WY~Ì+@ö×Á²¦Ui†!¶J#ϓ뀇ôoAæÇ¬Fè#„éãÈã¼}¯¹Ñݾ\nV0l‹tmËEz٘EzÅmHÿڊHuY’åª%Ø¢¢¡Á(~ŠÂ=5tO+%»T°L0Â5zMÁæAï°º™è9BPðJ|\0—;ŽÍÿ¸ÿÝ–WA܅uÜ;†Ù'jŒ[w`·½’ÙPZV˜„P+¹%…“>ÿæ@>«Ç³>Ò'\n@ðË3üuŠÍ£6Uӗ\nÈðÈÌ ¸³Aܸçk5Á‘¤¥‰ÅT¶0»ïä3n<¯-Â6£\\ö[VLò¶Ñœ͜ý+¼cýïÂ<\"fÂäö¢‚ 7sÅÝRíxL:à\n;H`ë\fÃ+†9Ó%÷h¾Y\bgÝÙ³K¥áè¸A5]eAmSV̑\\?yÇ«í:™æÌytœ¸K»ï[`<Ý88\f{¨£\n|ëðl®D1W\tMêÚC/°A…jSØO©T‡8ùŠ8¸M¦hâ›ÀMy«5ºè¡#œ;(ˆ3þ'sçì5´¸°iÁ†}Ën¾ÃŸï×þç1JK\r`Ã*L‚¤ëõº#Ö\"ת[Á&E\véz.9ôËT§@bh4\vh«é˜3uZ”çV~bkØÙúa>Pÿéq ±µ¬©ÆÝEì\\u˜¶b×\tiüÍöËÔ¤´š>;)ì×tւ•_ЎéZr`òjÕ÷è™rKl¾e/Î\rK쾓÷]w‰Ã÷ô¾ŸBˆõÆÒLžmݘxÙ!³î1øÍU«2_«â÷{åg{CsUS?éX܌Iå+ÊX°f²+fÕo\n‡ÇçE\bƒÃ¯ÁÀŽG˜Ñ$àêHƒ,Îv“‘‘!%Â\r½à ä„ÝϧÂÍ©£ÏNœ!Ãtòœs¸É㕂.ô­•Ž£7Ò´\rÝ:pÊG£Y¡§ùya¥¡áTØÉßtp¥›n\f]…WU¥>8î0¹E`”(ÆLØM} çßXz’›ÌŽônÌ)$°‡…˜p—¯ETŒÂÿèä48ôõÖ5\bú\t;ęj÷o!ô±_ö€‘G$q¼1ð¾Ø0³WmUÜÌ0†| úzÍW'±N–Ù&‚응8Hõ@î.F¡µ/±ØYjôš-L™ô@ÅÅÜËØhÇ\0.§®Þ¦æïé†^øžôRc'cÁ(f–@}5Áԙb§w•ç\t'}<—÷ÝlFGÄ$2ðÃû‹w[zÑݖ&:=§É.d©â2zJ9?Œà}‘báåýPK\b,B,ç„\0\0f\0\0PK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0'\0 \0gui_interfaces/general/threading_gui.pyux\v\0\0\0\0\0\0\0\0\0UT\r\0I‰ihAø‰hAø‰hVÍnä6\f¾È;\bîÅfIr(0ÀŠb[ØmÙl{)`(6=#D–\\IÎdZìsõÞ'+)ÿJ3S u(¦(Šüø‘´hZm3¥l×W¢s{¼j7KDÓËž­._À]_M2{´ô†KÞr·Ï…²`\\º^±äæQ?k'Jû]ÛJQr'´úÈ߁I2:Tݰ¦—ä†7…Ô»ޞãZ\fr6ÜóAtòúª”ÜZö4:ü㗇ÍõÃ'I|aB905/u÷çÐ6tš-È:·Ž£·S\0•eN³g`%—*Æ\t` *¦kÿ¯P±Ü^W¿©ÞÈŠ»¶âŠ]'R²™\r*MŒBBèT5¹9:RA͊‚Œ…·°b{mÝ69ØÍÍÍíÝ·ùn7w÷ëûdÅj¿oïQ”M¡Ðó\r{üù3»óNÎRQ3¥‡4çú%Í6ó=ýI³ÐÚû7(;J+µrFKöʍ5<|ºsE\vF`´[v›¯ÙwoiÉëñòžL§Ò\0qQdâ.í9©½)‰ùÄ{íR\nDuùá.;HËâU‹ªhWì'­ ;ñÍtJCFÿ¢mJîÑí(]îô–è’€diB“l™ßžgž›¥Ïˆ¼àRüŒ#^ÍsíWxþìk\rõ±Ïgg,ú\"HñèÜvŒ©˜ªuÅ*V[Š/)bwÑÑ`Ía¼ªš«ˆ¥Ta˜ûá=û¯Bº-}Äz)ˆ?ý‘S¼mJ“À÷ÙÖI}s‡P› r’ˆÃ^H\bèÕIÈ­ÉP>¥\t{\\kÀ ÓªhÀZDs_¨\"N«îâÝ>±µ6ð\n&mÑ͂4âµ%n¯˜ùÖ÷Êåv½€ç“Ñ%^í¡Ô\r¥rpÆ7(J4¦tF+pnèI»ŝçA¡\ta±sZtb¾ÂîH¦0vy¤.ˆ¥lƒÞ” $Á£á\bõƒpû°\tl.`|®ÁÄ\nËFjvÈò\0\0ö\0\0:\0\0\0\0\0\0\0\0\0\0¶PA\0\0gui_interfaces/general/measuring_threading_gui_harmonic.pyux\v\0\0\0\0\0\0\0\0\0UT\0¢¼ˆhPK\0\b\0\b\0™zýZ,B,ç„\0\0f\0\x008\0\0\0\0\0\0\0\0\0\0¶I\0\0gui_interfaces/general/measuring_threading_gui_no_sim.pyux\v\0\0\0\0\0\0\0\0\0UT\0¢¼ˆhPK\0\b\0\b\0®ºåZ29€\t\0\0\v\0\0'\0\0\0\0\0\0\0\0\0\0¶ O\0\0gui_interfaces/general/threading_gui.pyux\v\0\0\0\0\0\0\0\0\0UT\0I‰ihPK\0\0\0\0\0îmþZ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ÿA¤S\0\0gui_interfaces/specific/ux\v\0\0\0\0\0\0\0\0\0UT\0Aø‰hPK\0\b\0\b\0®ºåZ՞AbO\0\0\0m\0\0\0\"\0\0\0\0\0\0\0\0\0\0¶úS\0\0gui_interfaces/specific/readme.txtux\v\0\0\0\0\0\0\0\0\0UT\0I‰ihPK\0\b\0\b\0®ºåZ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0¶¹T\0\0gui_interfaces/__init__.pyux\v\0\0\0\0\0\0\0\0\0UT\0I‰ihPK\0\0\0\0!\0!\0‡\r\0\0#U\0\0\0\0"}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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b25zL1BsYXlQYXVzZUJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL3NyYy9jb21tb24uemlwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBMb2FkaW5nQnV0dG9uIGZyb20gXCJAbXVpL2xhYi9Mb2FkaW5nQnV0dG9uXCI7XHJcbmltcG9ydCBQbGF5QXJyb3dJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1BsYXlBcnJvd1wiO1xyXG5pbXBvcnQgUGF1c2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1BhdXNlXCI7XHJcbmltcG9ydCBjb21tb25zIGZyb20gXCIuLi8uLi9jb21tb24uemlwXCI7XHJcbmltcG9ydCBKU1ppcCBmcm9tIFwianN6aXBcIjtcclxuXHJcbmNvbnN0IFBsYXlQYXVzZSA9IChwcm9wcykgPT4ge1xyXG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICBjb25zdCBbYXBwbGljYXRpb25SdW5uaW5nLCBzZXRBcHBsaWNhdGlvblJ1bm5pbmddID0gdXNlU3RhdGUodHJ1ZSk7XHJcbiAgY29uc3QgW2FwcGxpY2F0aW9uUGF1c2VkLCBzZXRBcHBsaWNhdGlvblBhdXNlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSB1c2VTdGF0ZSh0cnVlKTtcclxuICBjb25zdCBbZWRpdG9yQ2hhbmdlZCwgc2V0RWRpdG9yQ2hhbmdlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gIGNvbnN0IGNvbW1zTWFuYWdlciA9IHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXI7XHJcbiAgY29uc3QgY29uZmlnID0gSlNPTi5wYXJzZShcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZXhlcmNpc2UtY29uZmlnXCIpLnRleHRDb250ZW50XHJcbiAgKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gKG1lc3NhZ2UpID0+IHtcclxuICAgICAgY29uc3Qgc3RhdGUgPSBtZXNzYWdlLmRhdGEuc3RhdGU7XHJcbiAgICAgIHNldEFwcGxpY2F0aW9uUGF1c2VkKHN0YXRlID09PSBcInBhdXNlZFwiKTtcclxuICAgICAgc2V0QXBwbGljYXRpb25SdW5uaW5nKHN0YXRlID09PSBcImFwcGxpY2F0aW9uX3J1bm5pbmdcIik7XHJcbiAgICAgIHNldERpc2FibGVkKFxyXG4gICAgICAgICEoXHJcbiAgICAgICAgICBzdGF0ZSA9PT0gXCJ0b29sc19yZWFkeVwiIHx8XHJcbiAgICAgICAgICBzdGF0ZSA9PT0gXCJhcHBsaWNhdGlvbl9ydW5uaW5nXCIgfHxcclxuICAgICAgICAgIHN0YXRlID09PSBcInBhdXNlZFwiXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgIH07XHJcblxyXG4gICAgY29tbXNNYW5hZ2VyLnN1YnNjcmliZShbY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSwgY2FsbGJhY2spO1xyXG5cclxuICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgIGNvbW1zTWFuYWdlci51bnN1YnNjcmliZShbY29tbXNNYW5hZ2VyLmV2ZW50cy5TVEFURV9DSEFOR0VEXSwgY2FsbGJhY2spO1xyXG4gICAgfTtcclxuICB9LCBbXSk7XHJcblxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5Db2RlRWRpdG9yLk9uRWRpdG9yQ29kZUNoYW5nZWQoKCkgPT4ge1xyXG4gICAgICBzZXRFZGl0b3JDaGFuZ2VkKHRydWUpO1xyXG4gICAgfSk7XHJcbiAgfSwgW10pO1xyXG5cclxuICBjb25zdCBwbGF5ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgc2V0TG9hZGluZyh0cnVlKTtcclxuICAgIGxldCBlZGl0b3JDb2RlID0gXCJcIjtcclxuICAgIGVkaXRvckNvZGUgPSBSb2JvdGljc1JlYWN0Q29tcG9uZW50cy5Db2RlRWRpdG9yLmdldENvZGUoKTtcclxuXHJcbiAgICBpZiAoYXBwbGljYXRpb25QYXVzZWQpIHtcclxuICAgICAgaWYgKGVkaXRvckNoYW5nZWQpIHtcclxuICAgICAgICBhd2FpdCBydW5Db2RlKGVkaXRvckNvZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbW1zTWFuYWdlci5yZXN1bWUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGF3YWl0IHJ1bkNvZGUoZWRpdG9yQ29kZSk7XHJcbiAgICB9XHJcbiAgICBzZXRFZGl0b3JDaGFuZ2VkKGZhbHNlKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBydW5Db2RlID0gYXN5bmMgKGNvZGUpID0+IHtcclxuICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPVxyXG4gICAgICBcIlN5bnRheCBvciBkZXBlbmRlbmN5IGVycm9yLCBjaGVjayBkZXRhaWxzIG9uIHRoZSBjb25zb2xlLlxcblwiO1xyXG5cclxuICAgIGNvbnN0IHNlcnZlckJhc2UgPSBgJHtkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbH0vLyR7ZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWV9OjcxNjRgO1xyXG4gICAgbGV0IHJlcXVlc3RVcmwgPSBgJHtzZXJ2ZXJCYXNlfS9leGVyY2lzZXMvZXhlcmNpc2UvJHtjb25maWdbMF0uZXhlcmNpc2VfaWR9L3VzZXJfY29kZV96aXBgO1xyXG5cclxuICAgIHZhciB6aXAgPSBuZXcgSlNaaXAoKTtcclxuICAgIGNvbnN0IGNvbW1vbnNaaXAgPSBhd2FpdCB6aXAubG9hZEFzeW5jKGNvbW1vbnMpO1xyXG4gICAgY29uc29sZS5sb2coY29tbW9uc1ppcCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXF1ZXN0VXJsLCB7XHJcbiAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZm9ybWF0dGluZyBjb2RlOlwiLCB6aXAuZXJyb3IpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgcmVzcG9uc2VKU09OID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xyXG4gICAgICBjb25zdCBleHRyYUZpbGVzID0gcmVzcG9uc2VKU09OLmZpbGVzO1xyXG5cclxuICAgICAgZXh0cmFGaWxlcy5mb3JFYWNoKChmaWxlKSA9PiB7XHJcbiAgICAgICAgY29tbW9uc1ppcC5maWxlKGZpbGUubmFtZSwgZmlsZS5jb250ZW50KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBjb21tb25zWmlwLmZpbGUoXCJhY2FkZW15LnB5XCIsIGNvZGUpO1xyXG5cclxuICAgICAgLy8gYWRkIG9ubnggZmlsZSB0byB0aGUgemlwIGlmIGl0IGV4aXN0c1xyXG4gICAgICBpZiAod2luZG93LlJvYm90aWNzUmVhY3RDb21wb25lbnRzLkRlZXBMZWFybmluZ01vZGVsKSB7XHJcbiAgICAgICAgY29uc3QgbW9kZWxCdWZmZXIgPVxyXG4gICAgICAgICAgUm9ib3RpY3NSZWFjdENvbXBvbmVudHMuRGVlcExlYXJuaW5nTW9kZWwuZ2V0TW9kZWxCdWZmZXIoKTtcclxuICAgICAgICBpZiAobW9kZWxCdWZmZXIpIHtcclxuICAgICAgICAgIGNvbW1vbnNaaXAuZmlsZShcIm1vZGVsLm9ubnhcIiwgbW9kZWxCdWZmZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJObyBPTk5YIG1vZGVsIGJ1ZmZlciBmb3VuZC5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIkRlZXBMZWFybmluZ01vZGVsIGNvbXBvbmVudCBub3QgZm91bmQuXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IHRoZSBibG9iIHRvIGJhc2U2NCB1c2luZyBGaWxlUmVhZGVyXHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgYmFzZTY0ZGF0YSA9IHJlYWRlci5yZXN1bHQ7IC8vIEdldCB0aGUgemlwIGluIGJhc2U2NFxyXG4gICAgICAgIC8vIFNlbmQgdGhlIGJhc2U2NCBlbmNvZGVkIGJsb2JcclxuICAgICAgICAvLyBUT0RPOiB0ZW1wb3JhbCB1bnRpbCBjb25maWcgZmlsZVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBhd2FpdCB3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLnJ1bih7XHJcbiAgICAgICAgICAgIGVudHJ5cG9pbnQ6IFwiL3dvcmtzcGFjZS9jb2RlL2FjYWRlbXkucHlcIixcclxuICAgICAgICAgICAgbGludGVyOiBbXCJhY2FkZW15LnB5XCJdLFxyXG4gICAgICAgICAgICBjb2RlOiBiYXNlNjRkYXRhLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIFJvYm90aWNzUmVhY3RDb21wb25lbnRzLk1lc3NhZ2VTeXN0ZW0uQWxlcnQuc2hvd0FsZXJ0KFxyXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICAgIFwiZXJyb3JcIlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb21tb25zWmlwLmdlbmVyYXRlQXN5bmMoeyB0eXBlOiBcImJsb2JcIiB9KS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7XHJcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoY29udGVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgcGF1c2UgPSAoKSA9PiB7XHJcbiAgICBzZXRMb2FkaW5nKHRydWUpO1xyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlclxyXG4gICAgICAucGF1c2UoKVxyXG4gICAgICAudGhlbigoKSA9PiB7fSlcclxuICAgICAgLmNhdGNoKChyZXNwb25zZSkgPT4gY29uc29sZS5sb2cocmVzcG9uc2UpKVxyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8TG9hZGluZ0J1dHRvblxyXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XHJcbiAgICAgIGlkPXtcImxvYWRJbnRvUm9ib3RcIn1cclxuICAgICAgbG9hZGluZz17bG9hZGluZ31cclxuICAgICAgY29sb3I9e1wic2Vjb25kYXJ5XCJ9XHJcbiAgICAgIG9uQ2xpY2s9e2FwcGxpY2F0aW9uUnVubmluZyA/IHBhdXNlIDogcGxheX1cclxuICAgICAgc3g9e3sgbTogMC41IH19XHJcbiAgICAgIHZhcmlhbnQ9e1wib3V0bGluZWRcIn1cclxuICAgID5cclxuICAgICAge2FwcGxpY2F0aW9uUnVubmluZyA/IDxQYXVzZUljb24gLz4gOiA8UGxheUFycm93SWNvbiAvPn1cclxuICAgIDwvTG9hZGluZ0J1dHRvbj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgUGxheVBhdXNlO1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IFwiUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMOsbcO+WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMTNcXHUwMDAwIFxcdTAwMDBjb25zb2xlX2ludGVyZmFjZXMvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwNzzDuMKJaEbDuMKJaDzDuMKJaFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDrG3DvlpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDFiXFx1MDAwMCBcXHUwMDAwY29uc29sZV9pbnRlcmZhY2VzL2dlbmVyYWwvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwNzzDuMKJaEbDuMKJaDzDuMKJaFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCVcXHUwMDAwIFxcdTAwMDBjb25zb2xlX2ludGVyZmFjZXMvZ2VuZXJhbC9jb25zb2xlLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloPMO4woloPMO4wolowp1Qw41qw4MwXFxmwr5cXHUwMDE3w7pcXHUwMDBlXFxcIsK9w5jCrEvDmMK1wrBrw7dcXHUwMDEwY8KUXFx1MDAxMCtUw6Baw4ZSw5fDrsOtJzfDqVrDqFxcdTAwMGVjXFx1MDAxNlxcdTAwMDYhfX9oXFx1MDAwNcObY1xcdTAwMWHClDhcXHQowoNoX1xcdTAwMTTDulxcdTAwMTRgwogsXFxiwoPDjTnDonJBwofDjMK2YcO5acOlw4vDulpcXHUwMDAxw4fCicK3wpvDkcOOb8KWXFx1MDAwYsKwwrfCgjc0wrVcXHUwMDE4QcO3XFxiI0XChMKAMlxcdTAwMTTDisOKRSbCmz1Xwp/CusKPwr3CosKYRcOCwok9XFx1MDAwNsKBV3NsI8KJXFx1MDAwNirCrsOpXFx1MDAwMn52WcKla8O8XFx1MDAwNMKZXFxyd2MwwqRoccKHw75sPztKwrrCrlxcdTAwMDLDr8Kbw6fCl1xcdTAwMGbDr33DjVlcXHRcXHUwMDE2wro1MSzCpUpnTMO3wqLDsHQnwrjChsOmdMK1wplZfMOUf8KwKMO9wpV0PcOmw6XDtFxcdTAwMGbDh8K8RW8vXFx1MDAwMMO3XFx1MDAxMMOuw5c5wqXDm8O4XFx1MDAxYlBLXFx1MDAwN1xcYsOTNEzDj8ObXFx1MDAwMFxcdTAwMDBcXHUwMDAww61cXHUwMDAxXFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww6xtw75aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxY1xcdTAwMDAgXFx1MDAwMGNvbnNvbGVfaW50ZXJmYWNlcy9zcGVjaWZpYy91eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcclxcdTAwMDBcXHUwMDA3PMO4woloRsO4woloPMO4woloUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCrsK6w6VaXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwJlxcdTAwMDAgXFx1MDAwMGNvbnNvbGVfaW50ZXJmYWNlcy9zcGVjaWZpYy9yZWFkbWUudHh0dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloPMO4woloPMO4woloTcKMw5FcXHTCgDBcXGZcXHUwMDA1V3lcXHUwMDAzwohjwrhHSF9pw4EmJS3DqMO4XFx1MDAxNj/DhMOPw6PCjjs8MDrCtcOmwqpQb8Odwo02XFx1MDAwNzxDXFxmwrxcXHUwMDE5WlxcdTAwMDc3aFAmIcOIfiZcXHUwMDA2wq46XFx1MDAwYmbDocKXw4DCpC1vXFx0wpLDkmt+wrfChcOBXFx1MDAxZFxcdTAwMGZQS1xcdTAwMDdcXGLDlcKeQWJPXFx1MDAwMFxcdTAwMDBcXHUwMDAwbVxcdTAwMDBcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMWVcXHUwMDAwIFxcdTAwMDBjb25zb2xlX2ludGVyZmFjZXMvX19pbml0X18ucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcclxcdTAwMDBcXHUwMDA3ScKJaWg8w7jCiWg8w7jCiWhcXHUwMDAzXFx1MDAwMFBLXFx1MDAwN1xcYlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAyXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCrsK6w6VaXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwZlxcdTAwMDAgXFx1MDAwMGhhbF9pbnRlcmZhY2VzL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDdJwolpaEbDuMKJaEnCiWloUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMTdcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoRsO4woloScKJaWhQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCBcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL2J1bXBlci5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoQcO4woloScKJaWjClVTDm8KKw5swXFx1MDAxMH03w7hcXHUwMDFmwobDpMOFwqYhJMObwrfChVxcdTAwMTbCsmnDklxccsKkacOJXFx1MDAwNVrDkmBkW8OOworDuFxcdTAwMTIkwqXCsC3DvcO3wo4sXyTDo1xcdTAwMTTDllxcdTAwMGYhwpo5c2bDpsOMSFxcdC8yw6BRen1cXHUwMDFkw6dFTMKBZcOXwoJLw5jDoH/Dl0nClMOzTH7Dk8KwXFxiMnFcXHUwMDE2Y8O8wqlcXHUwMDExw7NcXFwiwpckwpJiJ8KJRGhlLcKZXFxcXFxcdTAwMDfDj1xcdMOkRXVcXHUwMDFlXFx1MDAxN1xcdTAwMTfDj390XFx1MDAxZMOAT1xcdTAwMWJYw47CpMOnK8OccDjChMOZw6HDu2rCvcKabX/DgMOywrDCmcOvV183O0DCu3JvV8Kfwp/Dt8OBw5PDocOLwrfDhVxcdTAwMTY+w4DDhHXDpsKLw41+wrFtTVPDl1kvwpZcXHUwMDA2w6ZBw4XCuU7ClFxcdTAwMTIhw6DDqcKWXSnDv0QkwqnDssOHNMKBIFDDucKDw4BcXHUwMDEzNE1UYcOawqU+ZVxcdTAwMTlcXHUwMDBiw5XCksOOZsOZw4PCklxcZlxcdTAwMWRWXFxydcK4ZlxcdTAwMTbCklxcdTAwMWLDhE04XFx1MDAwNnnDrVF9XFx1MDAwM13DmiPDvMO5wpkrwoTDisO5XFxiXFx1MDAwM1xcdTAwMWLDtFxcdTAwMGXDrcOca8KLw7LCu8OuQVxcdTAwMTlcXHUwMDFjVlTDt8KjNcKiL8O8wq9cXHUwMDExZMO4OcKVN8KewoPDkGLCqsOewqJqw6DDu8KiXFx1MDAxNcOVwqvCjcKtwoo6U1xcdTAwMTDCo1xcdTAwMTfCmzbCoH7CjUhcXG5cXHUwMDBlXFxmWFxcdTAwMGXCnMOkZ8OqwqU0b2nDrGnDoFxcdTAwMTLCmcOeIztpXFx1MDAxOcKEXFx1MDAwZlxcdTAwMWZhYkE7wqnCm1xcdTAwMTlOw69DwppxwrJcXHUwMDBlwoZTcsKpwrkrXFx1MDAxZMKMOMKtwojDmsObw6fDmVxcdTAwMWFWalxcdTAwMTPClsKzw7lCb8Kswrl1w6pcXHUwMDBlecOqw4fCv8K3eyPCkMOFwpVFw4JawpVcXHUwMDFiwoZ6w77CuFxcdTAwMDFcXHUwMDBlwqrDnMOqelxcdTAwMGV8wrNnwqzCgMOwOEJ7XFxcXMKKKl8oZEVGc8KJwrx4w6LClFZcXHTDjFxcdTAwMThcXFwiIH7DjUnDhlxcXCLCiEjCmsKGJMK6QMKELUtWw6TDgER5bSVnwr9cXHUwMDE4STvDu8KvwrlQwrAuacOpwq3DiUTCgMKIwqMtaVxcdMOgw6zDvFxcXCLCg1xcdTAwMWE2w6pBRFg6dsO6P0hKwpNewo7Cky3DjMOuXFx1MDAxNsKKwojCs1BcXHRcXHUwMDAwwoguwrVpKmzCkT3Cu2jCtMOaWcOHwqZcXGJxXFx1MDAwYsKxR13CslLCjlxcdTAwMDZCw6fCuypcXHUwMDExO1xcdTAwMTddfcOWY1lPXFx1MDAxZMOXecOUwpXCrsK0TSc2Q2fDqFvCpcOjXFxiwrRYI1DCinRHwqHDk1xcdTAwMDXDusKywpTDs8KwKsOww7zCssOxwqBtw7zCvX8yw58xe1TDlcKuVsKsw5bCssO2ZDtOTsKYwrAywprCpMKdw6nCvsKRdXrCh8OVWsKIN3I+w5zDoTxTaTxcXFxcw53Dh8K8elxcdTAwMTJ6w5/Dg8K+NDjCvn9QS1xcdTAwMDdcXGJcXHUwMDBlwrPDmlxcdTAwMWXCh1xcdTAwMDJcXHUwMDAwXFx1MDAwMGZcXHUwMDA3XFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCBcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL2NhbWVyYS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoQcO4woloScKJaWh9VVFPw5swXFx1MDAxMH7Cr8OUw79wSl9cXHUwMDEyXFx1MDAxNjJgaMOqKsO1wqF0woxVwoJuKkViYihyXFx1MDAxMzfCtWjCnMOIdlxcdTAwMTlsw5p/w5/DmU5SN8K0w4tDXFx1MDAxNMOfw53Dt8O5w7PCncOvwrJcXHUwMDE0RVxcdTAwMGVcXFwiWcKXwq9cXHUwMDExL1JcXG4sL1xcdTAwMGLCoWDCisOfw51OwrXCkMKUw4tCw4TCucOMZMKEwq9uZ8KpQTlRwqs6wrxkQCR8wp80XFx1MDAxMMK+w4nDi1dtw6NlY0vCnsOjwoVgaUZcXHUwMDFkw4tZw7NtNHQ7wrheXFx1MDAwMi/CqnVUPMO5w4HCoMObXFx1MDAwMXzCrMKBccKmw7xAw4fDtXo9XFx1MDAxOMOdw51Pwq4nwqPDmVxcdTAwMGbDuHI3XFx1MDAxZMOPJ8OfwqbCt8KAdsOtwr5cXHUwMDE5w53Dj0bDk8KrS1xcdTAwMThCXFx1MDAxZsKgwodyX2BNecKGwqJcXHUwMDA1TSh7wqYpwphzwrDCnGTDtDNcXHUwMDAyJsOTXFx1MDAxYXDColxcdMK6wp1kTcKkwoTCicO2V1xcdTAwMWFSwrrChDjDllxcdTAwMWHDosOYwpd0wr3DlMOiwqxLP8OaXFx1MDAxMsKtKMOLVlxcblnDjsO7J3pjwoPCh8OKw7pQwrJcXHUwMDE3wrrClsKPLcOML8KWwqLCriF8PHcgw5Z4XFx1MDAwMMKhWE5vXFx1MDAxNcOJSy1XY8OmaFxcdTAwMDBpLFxcdTAwMGbDslxcdTAwMTHCjsOewrdcXHUwMDAww4tCYMOFMMOaw7PCtltURsKpXFx1MDAwNMOjXFx1MDAxOcO4wrPCq8KLflxcYlxcdTAwMTdXwrMwworCosKgRcKQXFx1MDAxMkVcXHUwMDEww47Di8OoN1xcdTAwMTXChcO0wrduw73DuMOOw5lDw6dQIXxcXGJCXFxyw5owwq7DultMYDTCr8KoTT9cXHUwMDE4csKmNG7Dj8K2wpFcXFxcwpHCksOiw6bChzfCqcOLYCvChFxcdTAwMDdyXFxuw5TDsCFDS8K2Z8KrXFx1MDAwYn9+clxcXFxZw6ZcXHUwMDAxeMK7QcOvdMKCw5xcXHUwMDAzXFx1MDAwNm3Cv2fDoEbDi8O/w5Amw4BcXHUwMDAxXFx1MDAwN8K7w5pkw4Nkw6vCglRcXHUwMDFhw61Uwq/DtjfDlcKvQsOqXFxyXFx1MDAxYcO7QWbCncOOXFx1MDAxNkjCm1xcdTAwMDJcXHUwMDFiw7DDl8ORLsKow5pcXGJcXHUwMDBlw5LDtsKCw47CqynDlcKNw4zDjkzDknzClmchw5jCjsOewrZcXHUwMDAxdi92wpnDtlXCvEPCvMKfwoM3wqzDk8KCw5NcXHUwMDA2Ym7DgMOQXknDm8Obwo3CucOpXFxmTWjCvl1nw5Nqw5prXFx1MDAxN8Kue3vDpcOxSsO3PcOXw6XCtsKPXFx1MDAwNcKTwpTCisOIw7RPJGnCgsOpw7DDn8OYOcOhwoXDtlxcdTAwMWTDgSk9w75UwqVcXHUwMDE4wqdafcKAwpMmXFx1MDAwNVxcdTAwMWFKeVLCpMOYVlxcdTAwMGbDh2fCg0fCnVxcdTAwMDZvfMOqOcKZw4hcXHUwMDA0eUVoXFx1MDAxNi82w4slwqJtJiPCtMOgwozCjVVcXHUwMDExw6N0wrQ5dsOZwpzDgjo7wqfCtFTCq3nCocO7w5fDn8Ohw51cXHUwMDBiw4ZxQlxcdTAwMDd7eVxcdTAwMGVrw7BcXHUwMDE2wpnDqHvCrcOiVCPCoSbCqMOmwrTCrXBlwqknw7XDl8ORNUzCpsOzw4vDmcKXw5HDuMOSw45oO17DhyTCp8KCw6jDv8KNwq9fw4HCoUlcXHUwMDFiwoIqSsKWw6zDtMOzwqbCpMOCXFx1MDAwZsKiJsOOS1xcZlnCrMO/ZF57fsOJw43CosKeIMKJwqBEw5FcXHUwMDE4LTJcXHUwMDExwqxUwqzDoMKtwrnDkMO6w6VFw6ZuVlxcdTAwMTLCqsOJwrNmUlFORcKcwpDDtXpBwpLCp1xcdTAwMTBOT8O2w7fCtlxcdCdSwpnCslxcdTAwMThcXHUwMDExe8OYw702w4JcXHUwMDE2I8K2XFx0wq4qM37CvjBcXHUwMDFmw5s2w5HCiXojwqXDilxcdTAwMThyw6/DpMKrwq3Dg8O8w4zCtzRcXHUwMDE5VVZJe3DCuiXDncO2w78uXcK4I1xcdTAwMWHDpcO9XFx1MDAwM1BLXFx1MDAwN1xcYsK1ciVMNVxcdTAwMDNcXHUwMDAwXFx1MDAwMFpcXGJcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL2NsYXNzbmV0LnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloQcO4woloScKJaWjCrVhbb8ObOFxcdTAwMTZ+XFx1MDAwZsKQw78gZF/CksKFw6Fawr47QFxcdTAwMWZcXHUwMDFhwqDCnS0ww5spOn1cXHUwMDE4TCYwaMKJwo7CucKWScKBwqR8w6lgw77Du8Kcc2jDs1DCtlsswrDDq1xcdTAwMDTCicO0w7HDqMOwO3fDimpTXFx1MDAxYsOrwrNiw5vCv8K9UcOhw5rCuMObwpvDm8KbXFx1MDAwZl9+w7nDvcO9wqfDuU9fw559w75Xw7ZcXHUwMDE2w4BuLcO8wqrDu1xcdTAwMWbCo8O0w73DnVxcdTAwMWIrwp1pbCHDnV0nwrvDm8KYUlZ0w6VcXFxcOVfCusKQwrVXRsOPwrfDvXlhXFxuw5PCrVxcdTAwMTd3XFx1MDAwZsK3N8Kfwp/Dpl9/w7vDuj/Cq8Oye8KPw5p+w73DuMO7e8OQNcOow7XCkMOsw4/Dr8Kew57DvzzDv8O3wrvDj1xcdTAwMDDDvXl7wpPDgcKnw7fCmMOdNcK6XFx1MDAxMlxcdTAwMGJZw4nDssKuXFx1MDAxM8OAXFx1MDAxY8OAWlpnw7RcXHTDqVxcdTAwMDPCslDDhcKhwqjDpFxcdFxcdTAwMWFcXHUwMDAwVFxcYnvCulxcdTAwMWQ+XFxcIi1vbEtoXFx1MDAwNMKoUMK2wq7ChMKOw5hcXHUwMDE4dTXDrnQ7woFbb8KFwop7TVxcdGjCisO1XFx0wpjDoVxcdTAwMDNGw7hIwq9cXHUwMDE3XFx1MDAxZVkuVVxcdTAwMTExw6TCvFQ2w67CkiNlw6fCrcKUw7zDnMKAIFNHXFx1MDAwMEnDl8OCwq7ClX7CjVxcdTAwMThSXkhdwqxcXFwiQsKEwpVlw7dMw4h0w5bCi8KMS8ODKsKQw7DDilhcXHUwMDE3w4nDtMKRwrFbSVxcdTAwMTnCt8OuI8Ofw4LDrMOiPcOSwoVcXHUwMDE4w5QrwqHCo8Oiw77CgMK4wrDCk8O7SMO4wptcXFxcWFxcdTAwMTFcXHUwMDExwqTDu8Kqw5BcXHUwMDE5wrxcXHUwMDFiXFx1MDAxMl4xwr8+w7JdwohiXVxcdTAwMGJ2alxcdTAwMWZJN8KbwoXClVXDhcOaZsOEw5NwwpDCkcK4PMOwfU7CqnXCuVxcdTAwMTDDkcOcXFx1MDAwMVLDt8KKZcOIw43CjcOywoVgXFx1MDAwZlxcZsKQw7nDkirCt8KQwowhd8K3VjFcXHUwMDE1XFx1MDAwNkjDnGnCs8KDaMKzwrtcXHUwMDA3SMOfYcONwrEgwpJfK8OPwqooR2DCv8KFwqjCqsKYwpLCvWtgTsKbXFxuL1vCm1xcZildXFx1MDAxYcK7bMKjaMKKwpdaM8OHw6HCkMKyw5F7TsOyIcOaXFx1MDAwMSnDjnTChmjDiE5xw45cXHUwMDBmKWXCmlxcdTAwMTjDviFcXHUwMDFhwrA0NsKGY8KIXFx1MDAwNsKswrXDoijCjnrDgWwuw4JRTlvDr8KiLSMqS8Khw6EnQsOIWMOUdVLCgkjDmEHDiHbCinN6woTClMKNXFx1MDAxNcO6wpXDpSjDjcKtKVxcblPCqVxcYsKGVMK3w5bDhGxcXHUwMDFhTSnCu8O5XFx1MDAxZcKZw5fDqsObwrfDiGHDnMKjesOQTcKUXFx1MDAxOVPCtsKLNcO3XFx1MDAwMGRewqzCoDVEwoTDusKJacKYw6PCmMKqXFx1MDAxMzzDjcKNaVxcdTAwMWPCisKTw6/CkcOzRlxcdTAwMDE9w5bCg8KMS8KlwpPCklxcdTAwMWVPQzRKLsK3McKSLsKlwovDvsKfUE8xwqrDonYxw4nDiVxcZlY9wqFEw5/DhltkXFxcXMKJOmkowpPDkFxcdTAwMDVcXHUwMDFiw47Du1xcdDLCtlxcdTAwMTI6I0NIei1cXHUwMDBmwq1MwpvCkMKjJcOnw6lkSsKmXFx1MDAxNcOWw6zDhMKWwp9Fw55mK8K5WVxcdTAwMDbDnsOCeVxcdTAwMTl5TinDhcKVwo7Dhk3Du0RcXHUwMDAyw4rDr1Vaw6HDmcKiKTXCmErDqjJ5OiTCuMOhwqfDkcKEwqIyw5w7wqZow4E2wqnDrinClWjCocKcwoPCrlxcdTAwMTdBasOkwrIsXFx1MDAwZlxcdTAwMTHCocOGwphcXHUwMDA0fVxcdTAwMTbDmFxcdTAwMWLCv1rDmMOGw4XDiMOPw7JzwrljwqJrwqY5XFx1MDAwYsOUwoVec8OEZkRcXHUwMDFkwrLCmsKTaEZcXHUwMDE5Y1XDicKJPlxcdTAwMGJcXHUwMDAzSFVlwpIjwrNJwphKw7zDoMKUUnZcXHUwMDAxRcOMw7pnwoTCscKqwrzDl1xcdTAwMGLDtVHCtsKCwpnDt0LCvsObOlxcdTAwMTk+PUp5wqnCqnTDmMO0XFx1MDAwNsOXw4BhcMK4w6dcXHUwMDExw5RcXHUwMDFiwp0gw6lcXHUwMDE4XFx1MDAxY1xcdTAwMDfCsClcXHUwMDEzbFxcdTAwMTLDikgnw7nCkMO3wqbCocO7wpzCkSRrXFx1MDAxYcOrwpPDmcKbw5NsTVxcdTAwMGIjwqfDiVoqw4vClsOQaE1cXHUwMDBiI8Knw4nCusKEwqHDicKewqHDmcK6wqxaUsKjS2h8XFx0TS7CocOpJTRcXHUwMDBiw5AuMcKTwqbDrDLCmcODNGTCl8OGwrDDjTRmwpdcXHUwMDE2woZcXHUwMDEzQ8OEwr3CsVrDuSY9PiDDv1crXFx1MDAxY8O7NsOMWlxcdTAwMGLDpVgxNiZcXGZcXHUwMDFjwp5swoJcXHUwMDE2wqxUwpVIwoXCnsKZw7TChcKcRm0lQVxcdTAwMTlvQMOTwrZSwq/Cq8Okw4jCgiZswpLCs1xcdTAwMDZNw5vCjcO0woLCtcOTw4Btd8OBfFxcdTAwMTA6UcOCwp7CpsOtXFx1MDAwNjMjwo03wo3DnE3Dg8OkacOaalHCr1MhwqTCr8OTwoNcXHUwMDE0w7V8USfDjsKnYVvCgzlcXHUwMDFiw4lcXHUwMDA3wpjCnMKmbVxccsKuw6DDlsKbw5PCqMOFXFx1MDAxM2FcXFwiNlxcYsKQw7PDicKJwo4mLcKOVcKYwpNcXHUwMDFiRsKPw4PDtlxcdTAwMDBcXHUwMDE1wrNUwrJiw6Y0dMOhIMOZwqolXFx1MDAxYcK8XFxiWiNcXHUwMDEyUTTDiMKqbcOKXFx1MDAxZk1qXFx0w5FcXHUwMDAwwrZJw5vDi2lcXHUwMDAwW2PClsKMUGdtwpLDkyNcXHUwMDFkfkTClcOqOVxccmBGw6jDoCNcXHUwMDA1XFx1MDAwM3TDsFnDiSrDkUwtdX1gYFxcdTAwMWFcXHUwMDAwV8OYwpbDo2nDvsOiwqEpXFxcIjR/XFx1MDAxZExxw57CkVxcdTAwMDbCsMKDw4hze8OOw4fDocKEbMO4wpTCksKPw4NcXHTDmcKKRMOZMEBNXFx1MDAwMcOlwpEkXFx1MDAxZMKNYi9cXHUwMDE2VcOyw7Q4wpzCljjCrjTCjMK9w5x7wpXCisORXFxcXMKAw4pNwpTCoVxccnhWwo9cXGLDjcOjwq18wpXDrS1oJsOvwpLDo1xcXFxOQ8K5wo1cXGYuwpDDoVxcdTAwMDUywrpAw4ZcXHUwMDE3w4jDpFxcdTAwMDLCocKDwoRIWytcXHJkwoJKa2p2LsONw6XDtsKZI8Knwrl8wo5cXHUwMDExw71jwovDulxcdTAwMGJfw5Jub1xcbihcXHUwMDA0wpc9YU/CgVR+MsO7w4cgXFxcXMOKZTbCh8K3PcOlw6fDs3tcXHUwMDA3w4nDksOJVFxcdMOuVlBcXHUwMDA3wrbCk8ORY3NVdjJXXFx1MDAxOCs7w5l+wqN0JzvDkMOfw71Gw6zDsVrDrFxcdTAwMWbCjsOaw7DCg0rCusKqwoTDl0FWdMK2esOSXFxuMsKnw4szXFx0w5pcXHLClsOpw7/DmVxcdTAwMWFSwoAlw7x3wrZyXFxiK8KHw4tcXHUwMDE1wqRKw4/CiMO9w4UzwrRywqDClcOUJ8KQwp9HwpfCtMKsXFx1MDAwM8OZwrtnVT7DvsO5w5dcXHUwMDFmwprDiMOTXFx1MDAxNcOxwqQrwqRFXFx1MDAxN8KHw5NcXHUwMDA1bnpEwo5cXHUwMDE3d11sP8OCw5/Cs8Oew4Rzwp0raMKMw4PClcK1XFx1MDAxMMKZK1xcdTAwMGJcXHUwMDE0wqsrw7jDoTs4w4XDs8KqfFxcdTAwMGJ/w6BLK8KhwoB1w6bDklxcdTAwMWPDuyTCscKmP0nCv8KDV8KRw69lw5lFw4LDgCTDgGzDmMO2wrvCpcOWXStFXFx0XFx1MDAxYT5YwrPDuSo1XFx1MDAxY1xcdTAwMDBxKsOfwqfDn8KLdMKyw7DCpcOGQ1xcdTAwMWHCtFJ6WcO4U1xcdTAwMWFvXsOTXcOgw4zCi8KxXFx1MDAwM8K0w6tWw5DDrMKeey/CvFxcYsKvJ8Otw4XDvMOlwpJfw5dJw79Rw5fDjXnDmE7CpFxcdTAwMTfClVkgw6PCj1xcdTAwMWI4w43CncOJw6BcXHUwMDA3wrR3LsORwrzDm8OLw57DoHzDr8KOwq7CrMOew6PCly3CnVxcZsO/PlxcXFxbXFx1MDAwZcOPZcOpwr9rcm4nw6ovT2/Cv8Oaw6Y8UcOIXFx1MDAwMMOoMm8/wojDisKdLz5cXFxcXFxyesKxw73CpcOBYEXCv0Ayw6/DoFxcdTAwMTB4XFx1MDAxZmPCgcKfY2rCkMOwc8KvwpPDgcOvI8O8wr7CnGTDvsKRw71cXHUwMDA0IV9cXHUwMDFjXFx1MDAxYlxcdTAwMTJcXFxcw6zCpcOLwpbCjS7DsEsnXFx1MDAwZSk0w6vCpGlJw7fDv1xcdTAwMGVuSFxcdTAwMTnDmMOSwp0sOiZcXHUwMDExw67DgGInwp7Ds8OAw7Ntw7bDvMKSXFx1MDAxYVxcdTAwMGJcXHUwMDFlYE1cXHUwMDE5NCFWw7vDmHZpwqpcXGLDlCTCtl3Di1xcdTAwMTjDrcOvwqMmwqB9LcK0w7HDu8K3w6dcXHUwMDBiw6nClyvDolBIXFxcIlxcdTAwMTXDq19Vw4rDq8KDwpfDrMKfw6TDgVxcdTAwMWZKXFxyUVxcbsKDw7BDwqnDkX/CpWvDvFxcdTAwMWRdXFx1MDAwZsOfd8KkdF1Rw5fDsMOGecKfwqLDl8OSwrHDvcOUw63DjcOfUEtcXHUwMDA3XFxiw73DrTTCjkBcXHUwMDA3XFx1MDAwMFxcdTAwMDDChFxcdTAwMTVcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCtcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL2RldGVjdGlvbl9uZXR3b3JrLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloQcO4woloScKJaWjCrVhbb8ObOFxcdTAwMTZ+XFx1MDAwZsKQw78gZF/CksKFw6Fawr47QFxcdTAwMWZcXHUwMDFhwqDCnS0ww5spOn1cXHUwMDE4TCYwaMKJwo7CucKWScKBwqR8w6lgw77Du8Kcc2jDs1DCtlsswrDDq1xcdTAwMDTCicO0w7HDqMOwO3fDimpTXFx1MDAxYsOrwrNiw5vCv8K9UcOhw5rCuMObwpvDm8KbXFx1MDAwZl9+w7nDvcO9wqfDuU9fw559w75Xw7ZcXHUwMDE2w4BuLcO8wqrDu1xcdTAwMWbCo8O0w73DnVxcdTAwMWIrwp1pbCHDnV0nwrvDm8KYUlZ0w6VcXFxcOVfCusKQwrVXRsOPwrfDvXlhXFxuw5PCrVxcdTAwMTd3XFx1MDAwZsK3N8Kfwp/Dpl9/w7vDuj/Cq8Oye8KPw5p+w73DuMO7e8OQNcOow7XCkMOsw4/Dr8Kew57DvzzDv8O3wrvDj1xcdTAwMDDDvXl7wpPDgcKnw7fCmMOdNcK6XFx1MDAxMlxcdTAwMGJZw4nDssKuXFx1MDAxM8OAXFx1MDAxY8OAWlpnw7RcXHTDqVxcdTAwMDPCslDDhcKhwqjDpFxcdFxcdTAwMWFcXHUwMDAwVFxcYnvCulxcdTAwMWQ+XFxcIi1vbEtoXFx1MDAwNMKoUMK2wq7ChMKOw5hcXHUwMDE4dTXDrnQ7woFbb8KFwop7TVxcdGjCisO1XFx0wpjDoVxcdTAwMDNGw7hIwq9cXHUwMDE3XFx1MDAxZVkuVVxcdTAwMTExw6TCvFQ2w67CkiNlw6fCrcKUw7zDnMKAIFNHXFx1MDAwMEnDl8OCwq7ClX7CjVxcdTAwMThSXkhdwqxcXFwiQsKEwpVlw7dMw4h0w5bCi8KMS8ODKsKQw7DDilhcXHUwMDE3w4nDtMKRwrFbSVxcdTAwMTnCt8OuI8Ofw4LDrMOiPcOSwoVcXHUwMDE4w5QrwqHCo8Oiw77CgMK4wrDCk8O7SMO4wptcXFxcWFxcdTAwMTFcXHUwMDExwqTDu8Kqw5BcXHUwMDE5wrxcXHUwMDFiXFx1MDAxMl4xwr8+w7JdwohiXVxcdTAwMGJ2alxcdTAwMWZJN8KbwoXClVXDhcOaZsOEw5NwwpDCkcK4PMOwfU7CqnXCuVxcdTAwMTDDkcOcXFx1MDAwMVLDt8KKZcOIw43CjcOywoVgXFx1MDAwZlxcZsKQw7nDkirCt8KQwowhd8K3VjFcXHUwMDE1XFx1MDAwNkjDnGnCs8KDaMKzwrtcXHUwMDA3SMOfYcONwrEgwpJfK8OPwqooR2DCv8KFwqjCqsKYwpLCvWtgTsKbXFxuL1vCm1xcZildXFx1MDAxYcK7bMKjaMKKwpdaM8OHw6HCkMKyw5F7TsOyIcOaXFx1MDAwMSnDjnTChmjDiE5xw45cXHUwMDBmKWXCmlxcdTAwMTjDviFcXHUwMDFhwrA0NsKGY8KIXFx1MDAwNsKswrXDoijCjnrDgWwuw4JRTlvDr8KiLSMqS8Khw6EnQsOIWMOUdVLCgkjDmEHDiHbCinN6woTClMKNXFx1MDAxNcO6wpXDpSjDjcKtKVxcblPCqVxcYsKGVMK3w5bDhGxcXHUwMDFhTSnCu8O5XFx1MDAxZcKZw5fDqsObwrfDiGHDnMKjesOQTcKUXFx1MDAxOVPCtsKLNcO3XFx1MDAwMGRewqzCoDVEwoTDusKJacKYw6PCmMKqXFx1MDAxMzzDjcKNaVxcdTAwMWPCisKTw6/CkcOzRlxcdTAwMDE9w5bCg8KMS8KlwpPCklxcdTAwMWVPQzRKLsK3McKSLsKlwovDvsKfUE8xwqrDonYxw4nDiVxcZlY9wqFEw5/DhltkXFxcXMKJOmkowpPDkFxcdTAwMDVcXHUwMDFiw47Du1xcdDLCtlxcdTAwMTI6I0NIei1cXHUwMDBmwq1MwpvCkMKjJcOnw6lkSsKmXFx1MDAxNcOWw6zDhMKWwp9Fw55mK8K5WVxcdTAwMDbDnsOCeVxcdTAwMTl5TinDhcKVwo7Dhk3Du0RcXHUwMDAyw4rDr1Vaw6HDmcKiKTXCmErDqjJ5OiTCuMOhwqfDkcKEwqIyw5w7wqZow4E2wqnDrinClWjCocKcwoPCrlxcdTAwMTdBasOkwrIsXFx1MDAwZlxcdTAwMTHCocOGwphcXHUwMDA0fVxcdTAwMTbDmFxcdTAwMWLCv1rDmMOGw4XDiMOPw7JzwrljwqJrwqY5XFx1MDAwYsOUwoVec8OEZkRcXHUwMDFkwrLCmsKTaEZcXHUwMDE5Y1XDicKJPlxcdTAwMGJcXHUwMDAzSFVlwpIjwrNJwphKw7zDoMKUUnZcXHUwMDAxRcOMw7pnwoTCscKqwrzDl1xcdTAwMGLDtVHCtsKCwpnDt0LCvsObOlxcdTAwMTk+PUp5wqnCqnTDmMO0XFx1MDAwNsOXw4BhcMK4w6dcXHUwMDExw5RcXHUwMDFiwp0gw6lcXHUwMDE4XFx1MDAxY1xcdTAwMDfCsClcXHUwMDEzbFxcdTAwMTLDikgnw7nCkMO3wqbCocO7wpzCkSRrXFx1MDAxYcOrwpPDmcKbw5NsTVxcdTAwMGIjwqfDiVoqw4vClsOQaE1cXHUwMDBiI8Knw4nCusKEwqHDicKewqHDmcK6wqxaUsKjS2h8XFx0TS7CocOpJTRcXHUwMDBiw5AuMcKTwqbDrDLCmcODNGTCl8OGwrDDjTRmwpdcXHUwMDE2woZcXHUwMDEzQ8OEwr3CsVrDuSY9PiDDv1crXFx1MDAxY8O7NsOMWlxcdTAwMGLDpVgxNiZcXGZcXHUwMDFjwp5swoJcXHUwMDE2wqxUwpVIwoXCnsKZw7TChcKcRm0lQVxcdTAwMTlvQMOTwrZSwq/Cq8Okw4jCgiZswpLCs1xcdTAwMDZNw5vCjcO0woLCtcOTw4Btd8OBfFxcdTAwMTA6UcOCwp7CpsOtXFx1MDAwNjMjwo03wo3DnE3Dg8OkacOaalHCr1MhwqTCr8OTwoNcXHUwMDE0w7V8USfDjsKnYVvCgzlcXHUwMDFiw4lcXHUwMDA3wpjCnMKmbVxccsKuw6DDlsKbw5PCqMOFXFx1MDAxM2FcXFwiNlxcYsKQw7PDicKJwo4mLcKOVcKYwpNcXHUwMDFiRsKPw4PDtlxcdTAwMDBcXHUwMDE1wrNUwrJiw6Y0dMOhIMOZwqolXFx1MDAxYcK8XFxiWiNcXHUwMDEyUTTDiMKqbcOKXFx1MDAxZk1qXFx0w5FcXHUwMDAwwrZJw5vDi2lcXHUwMDAwW2PClsKMUGdtwpLDkyNcXHUwMDFkfkTClcOqOVxccmBGw6jDoCNcXHUwMDA1XFx1MDAwM3TDsFnDiSrDkUwtdX1gYFxcdTAwMWFcXHUwMDAwV8OYwpbDo2nDvsOiwqEpXFxcIjR/XFx1MDAxZExxw57CkVxcdTAwMDbCsMKDw4hze8OOw4fDocKEbMO4wpTCksKPw4NcXHTDmcKKRMOZMEBNXFx1MDAwMcOlwpEkXFx1MDAxZMKNYi9cXHUwMDE2VcOyw7Q4wpzCljjCrjTCjMK9w5x7wpXCisORXFxcXMKAw4pNwpTCoVxccnhWwo9cXGLDjcOjwq18wpXDrS1oJsOvwpLDo1xcXFxOQ8K5wo1cXGYuwpDDoVxcdTAwMDUywrpAw4ZcXHUwMDE3w4jDpFxcdTAwMDLCocKDwoRIWytcXHJkwoJKa2p2LsONw6XDtsKZI8Knwrl8wo5cXHUwMDExw71jwovDulxcdTAwMGJfw5Jub1xcbihcXHUwMDA0wpc9YU/CgVR+MsO7w4cgXFxcXMOKZTbCh8K3PcOlw6fDs3tcXHUwMDA3w4nDksOJVFxcdMOuVlBcXHUwMDA3wrbCk8ORY3NVdjJXXFx1MDAxOCs7w5l+wqN0JzvDkMOfw71Gw6zDsVrDrFxcdTAwMWbCjsOaw7DCg0rCusKqwoTDl0FWdMK2esOSXFxuMsKnw4szXFx0w5pcXHLClsOpw7/DmVxcdTAwMWFSwoAlw7x3wrZyXFxiK8KHw4tcXHUwMDE1wqRKw4/CiMO9w4UzwrRywqDClcOUJ8KQwp9HwpfCtMKsXFx1MDAwM8OZwrtnVT7DvsO5w5dcXHUwMDFmwprDiMOTXFx1MDAxNcOxwqQrwqRFXFx1MDAxN8KHw5NcXHUwMDA1bnpEwo5cXHUwMDE3d11sP8OCw5/Cs8Oew4Rzwp0raMKMw4PClcK1XFx1MDAxMMKZK1xcdTAwMGJcXHUwMDE0wqsrw7jDoTs4w4XDs8KqfFxcdTAwMGJ/w6BLK8KhwoB1w6bDklxcdTAwMWPDuyTCscKmP0nCv8KDV8KRw69lw5lFw4LDgCTDgGzDmMO2wrvCpcOWXStFXFx0XFx1MDAxYT5YwrPDuSo1XFx1MDAxY1xcdTAwMDBxKsOfwqfDn8KLdMKyw7DCpcOGQ1xcdTAwMWHCtFJ6WcO4U1xcdTAwMWFvXsOTXcOgw4zCi8KxXFx1MDAwM8K0w6tWw5DDrMKeey/CvFxcYsKvJ8Otw4XDvMOlwpJfw5dJw79Rw5fDjXnDmE7CpFxcdTAwMTfClVkgw6PCj1xcdTAwMWI4w43CncOJw6BcXHUwMDA3wrR3LsORwrzDm8OLw57DoHzDr8KOwq7CrMOew6PCly3CnVxcZsO/PlxcXFxbXFx1MDAwZcOPZcOpwr9rcm4nw6ovT2/Cv8Oaw6Y8UcOIXFx1MDAwMMOoMm8/wojDisKdLz5cXFxcXFxyesKxw73CpcOBYEXCv0Ayw6/DoFxcdTAwMTB4XFx1MDAxZmPCgcKfY2rCkMOwc8KvwpPDgcOvI8O8wr7CnGTDvsKRw71cXHUwMDA0IV9cXHUwMDFjXFx1MDAxYlxcdTAwMTJcXFxcw6zCpcOLwpbCjS7DsEsnXFx1MDAwZSk0w6vCpGlJw7fDv1xcdTAwMGVuSFxcdTAwMTnDmMOSwp0sOiZcXHUwMDExw67DgGInwp7Ds8OAw7Ntw7bDvMKSXFx1MDAxYVxcdTAwMGJcXHUwMDFlYE1cXHUwMDE5NCFWw7vDmHZpwqpcXGLDlCTCtl3Di1xcdTAwMTjDrcOvwqMmwqB9LcK0w7HDu8K3w6dcXHUwMDBiw6nClyvDolBIXFxcIlxcdTAwMTXDq19Vw4rDq8KDwpfDrMKfw6TDgVxcdTAwMWZKXFxyUVxcbsKDw7BDwqnDkX/CpWvDvFxcdTAwMWRdXFx1MDAwZsOfd8KkdF1Rw5fDsMOGecKfwqLDl8OSwrHDvcOUw63DjcOfUEtcXHUwMDA3XFxiw73DrTTCjkBcXHUwMDA3XFx1MDAwMFxcdTAwMDDChFxcdTAwMTVcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxZlxcdTAwMDAgXFx1MDAwMGhhbF9pbnRlcmZhY2VzL2dlbmVyYWwvbGFzZXIucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcclxcdTAwMDBcXHUwMDA3wqLCvMKIaEHDuMKJaEnCiWlowrVWw59rw5swXFx1MDAxMH5cXHUwMDBmw6R/OMKcXFx1MDAxN3trw53CtG8rXFxmXFx1MDAxNsK6wpZlwrTDqUhSw5jDmMKGUVxcdTAwMWM5XFx1MDAxNcK1JSMpwqNlw53Dv8K+wpMlw79MwpxuwozDqSFEwqfDr8K+O8KdTsKfwpxIwpHCgcKMw5PDvCnDpGJNwoFlwrnCkFxcdTAwMWFmw7h/OHBcXHUwMDEzRcK5XFx1MDAxMjLDisOURsKFw7gzXFx1MDAxYyTDhikjw7rCvsKEw6dcXGbCiMKCT8OTw4rCpWBcXHUwMDFjXFx1MDAwZXDCnlxcdTAwMDBcXHUwMDE3blxcdTAwMWXCilxcdTAwMDc/OFxcdTAwMWZcXHUwMDBlXFx1MDAwMMKHNTDDjsK0XFx1MDAxZlxcdTAwMTjDnHAwXFx1MDAxYcKNYHLDt3l6PcKdw4zCv8OAw5XDncOsYjnCvcKdLcKGwoM4JUrDgTVRVMK+J8KaOMKCNU0gwopcXGZBXFx1MDAxNMO5worCpsKJYcK2S2ZcXHUwMDE4S8O4woPCpFvCqsOgLXzDvVxcdTAwMGUwwoLCjGoqVVxcdTAwMDfCkzE+w6HCm8KUXFxcImpsQHZcXFwiXFx1MDAxMkjCmFRcXHUwMDFhXFxuXFxuw7AlWcKrwqDDq0lcXHUwMDFlw7d7YsK+wodcXHUwMDFkXFx1MDAxOcKfXFx1MDAxM8K+wqlcXHUwMDFjb8OII1hDLlxcdTAwMTRbIcKJb1PDnVxcdTAwMTPCscOtw4jDuMKfOWrClsORwoUmWV56KlxcdTAwMWFcXHUwMDBiwr5WZcOFbDHClcKWwo1aVlxcdTAwMDTDqMOjw5dTM8K8w7oww6DDpzfCjsKWwrLCisOnw6DCtcKhwq9cXHUwMDAxWcO9VsKlwoMuw4LCs1xcdTAwMTTCrsKcXFx1MDAwNylcXHUwMDFjwqZBXFx1MDAxMVxcdTAwMWPDjFTDtcOEcifDsELCulxcdTAwMDXCpj/DncKXKVxcdTAwMWPDpl/Dk8Ktwo7Dr1DCsFxcbsOUwpPCsMK9XFxmwodcXHUwMDE4LGLCn8O7L2/Dr1xcdTAwMGUkw5Vbw4lBw5lcXHUwMDBibMKaKDXCjcKxwohcXHQ/wqtaw4RXOC1cXHUwMDFiw4rDs1xcdTAwMWPDk1JcXHUwMDEywq5SwqLDsXpcXHUwMDE2ajLCv13DmCtuwpxBXFx1MDAwYsO4wrjCplLCrMKEXj7DpcK0ccO7Q8Orw74uJ8KSZGDCqMOPd311ScOuw4BcXHUwMDFhOVxcdTAwMWPCtsOCwrklwrdcXHUwMDA1UkfCqMK9w5c2NVXCocKrw6zCi23DosOxw5XCm1xcZlxcdTAwMWFcXHUwMDBiwrXDrlxcdTAwMTjDl1DCmlxcdTAwMTZQXFx1MDAxNVxcdTAwMDM0w6trUsK3wrpxQ3Jrw4LCjcOPw43Dhmt7w7tAw4xcXHUwMDE4d1xccsKAw6J7csK2XFx1MDAwYnzDnlxcdTAwMDXDgsOzw5/DglxcZjVcXHUwMDFjwpdcXHUwMDAzwo7CizlaXFx1MDAxYsK2w7HDv1xcYsOdLndTwqnCi8K6XFx1MDAxMjPCicOQwoo9worDicKcw4BZXFx1MDAwYl3Cq3NcXHUwMDEzwo1Sw5vCgy7ClcK1PjPCg8OuJMKwXFx1MDAwZsOEeFxcdTAwMTPDlMKUw5pcXHUwMDAydU9cXHTCtnLCqMKMLUTDncOFw7jDvsOuXFx1MDAwMidcXFxcwpjDhVdwSsKPw5/CuG5yw41ZXFx1MDAxMMOXwo/DpMKHw4k1TGfDi8OLw7nDlcOkw6JcXHUwMDEyw5DDknpcXFwiw43Di8OtwpvCn8Kgw6/CoTzDgivCksKzwrjCpcOxw5vCnEo/XFxiK8KcV8OEwozDjCfCgcOXfUzDlHZlw7Zmw77DhsKSw6I9wonDkMKiYsOJcsONXFx1MDAwNMOvKlrDu8ObIcKsw67Cn8OLw6LDiFxcdTAwMTLCpUxpw4oxYkzDknRFw6LChyM4XFx1MDAxZMOvw5VcXHUwMDFjXFx1MDAwYsOHXFx1MDAxNzYyRcKMwopMekLDmC/Ci8KyXFx1MDAwNjshXFxcXDHCmsOyw5RcXHUwMDEzwqBcXHUwMDEwwoDCmmlDdUPDnTrDj2XDs8OMwrpCw5hmw4bDrH5cXHUwMDAzUEtcXHUwMDA3XFxiw7shwrd4w6tcXHUwMDAyXFx1MDAwMFxcdTAwMDB+XFx0XFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCBcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL21vdG9ycy5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoQcO4woloScKJaWjClVBNa8ODMFxcZsK9XFx1MDAxYsO8XFx1MDAxZkRzccKgwpjDrTrDmMKhwozCjlxccsK2XFx1MDAxZUZpwo8mS8Kcw4zDjFxcdTAwMWbDgXbCmnbCv35yPsOKaMOHYDpcXGJJfnrDr8OJwrV3XFx1MDAwNlxcdTAwMWHDqcKMwozDviRMaFxcdTAwMDLDh1xcdTAwMDTDisK0w45Hw5jDtipESsOqXFx1MDAwNMOywqVuT8OcwrpKw47Cr1xcdTAwMWLCrCnCmcKaw6HCmVxcdTAwMTLDrGvCsG7DqsK5w7tkw7lcXHUwMDFkJcKAMVxcdTAwMGXClFXCkcOlXFx0R0nClmXDsMK0esKBw6fDjXbDvcO2wrh6WFxcdTAwMDNOKCl1XFx1MDAxMVxcdTAwMDLCvMK6w6h8SFxcdTAwMTIswqXCmcKlwpI1XFxiwpFYwoRgQcOqelxcdMORwrXCqlxcXFzCginCjsK7IcOvXFx1MDAxM3ZEwqdcXGJdKz3Di8O5eWthXFx1MDAwNmrCkU5Zw6Q/woDDiMOGw5vDrlxcdTAwMWTDrsOHwrLDtMKywohSw6BEwqvDsMKBXFx1MDAxY8ODb8Kcw7Vuby53w5F3XFx1MDAxNDHCgcKQYlxcdTAwMDDCj8KXw47CvsKDwrTDlW4yfcKYXFx1MDAwZsO6ZcKba2Vlw6HDuVxcdTAwMTFpXFx1MDAwZcOXw77DuMOkwohdwqxdacOtJ8Ktw74vwq3DgjbCnUbCsS9cXHUwMDE0w6vDvyXDtlxcclBLXFx1MDAwN1xcYsOMw6VxZ1xcdTAwMTFcXHUwMDAxXFx1MDAwMFxcdTAwMDA7XFx1MDAwMlxcdTAwMDBcXHUwMDAwUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCmXrDvVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDAoXFx1MDAwMCBcXHUwMDAwaGFsX2ludGVyZmFjZXMvZ2VuZXJhbC9ub2lzZV9vZG9tZXRyeS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoQcO4woloScKJaWjCtVltb8ObNlxcdTAwMTDDvlxcdTAwMWUgw7/CgXPCvsOIwq3Co8OFw6nCp1xcdTAwMDXDi8OQwqBrw5dcXGZFw5IlKcOgNFxcdTAwMGJcXGbDhsKiY8KhwpIoS3JsacOYf8OfXFx1MDAxZF9EworClmwnXcOTWsKmw4h7XFx1MDAxZVxcdTAwMWV5wrzDo8KRXFx1MDAwZcOjwpRnXFx1MDAwNUlcXHUwMDE2cVpcXHUwMDEywprCkyTDncOfwptmPCbDmSRKSz/DoVxcdTAwMDEjwqHClMK5woDCsmrCjGkxw5PDlTRcXHUwMDBmwpNcXHUwMDAxwqFcXHUwMDA1TcKOXFx1MDAwNyRcXHLDt8O3VH1Cwp/DhnHDvsKYw7vDsMKoK1xcdTAwMDXDq8O+XFx1MDAxZcK8T0nDgsOVwrvDj8K/ecO9wpPDvT1cXHUwMDAyf8KyXFxcIkzDgsOCw6vCo8Ocw77DnsOBw4FcXHUwMDAxOcO7MjrDv3R+dnVLPnzCuXh3c355cU3CoH5/b1xcdTAwMTLDkTwnwp95w47DnlxcdTAwMDTCiiFgUzJcXHUwMDFlI8ODeMOsw6UswppcXFwiwrVsw4I/wqzDsVfDpMKUXFx1MDAxY1xcdTAwMTFyQEZkw4J5XFx1MDAxNsKQwrvCmFxcdTAwMTUsw4vDr1xcdTAwMWTCuVLDi8OdbsKWwqvCtMOcw5fDjXIzwpBcXHUwMDFiwqLDnEfCksOSwozDhm53dFl3XFxiRcKaPEbDrC7Co8OBXFx1MDAxYU9cXHUwMDFhXFx1MDAxNsKTwplcXHUwMDE2w70sXsK6woUzXFx1MDAxZUVaw7ZcXG7Di8OdwqJzwpDCuztcXHUwMDFhXFx1MDAxMMO1w79cXHUwMDFlIX8tKFxcZiVcXHR5w6JcXGJcXHUwMDE3YcOMwq5cXHUwMDBiXFx1MDAxYcKnwprDvFxcdTAwMDYqSC5qw67CkMOawrZHXmTCljlqXFx1MDAxZcKAw7bChMO1fj8hw7/DvMKdQMOVw6rChMO0w4hrwqDDiTxpwqo+wrzDtURTw6k0wpXDvSZTXktWwo5kZUg+Ok0zwofDhDPCr8KiwqrDucKqWcOAPMOAw6PCtlxcdTAwMTnDjcOowrLDn1xcdTAwMGVcXHUwMDE0w4bDmlxcdTAwMDRcXHUwMDE1wqbDrVxcdTAwMDDCo8O1NmHDkcOSXFx1MDAxNsO0RSPCm8OXw6bDnsOUw5PCvEPDg3pNbFxcdTAwMDLDl0JtJMO/w7ZaXFx1MDAwN8KQwrFiwpElwqg0w77DgzXChcKKXFx1MDAxZcKDXFx1MDAxZMK8w7lyQMOmK8O4wpTDsMKpw7TDssOqw7VcXHUwMDE0w5FNRsKTPMKCQcOlRMOELsKzwp5Jw4HDkcKQwr7ClHsrPMKSXFx1MDAwMFxcdTAwMWLCkFxcdTAwMDHDl1xcdTAwMWNcXHUwMDE2wpElw7tEwqNcXHUwMDA1U3PDtsK2KFPDlsKUwpxGwpxcXHUwMDE2wqpVw6nCii4sUMKkw5AqXFx1MDAwNMKuXFxuwpbCrirDvsOxXFx1MDAwMsOawr7DkiMww5jCsX9EXlxcdTAwMTFvwr7CgsOnwrzChMOpwpkvwrFUw7XCm8KiQ1xcdTAwMTDClS1LwpRcXHUwMDExw5IrcsKIXFx1MDAxMMKBwoNSJXBcXHJcXHUwMDE4OsKtfyTCqyBcXHUwMDE4wpt+f1xcdTAwMTJcXHJcXHUwMDEwJFxcdTAwMDLCq1xcdTAwMDdZaXnCrmFcXHUwMDExwpHDn8Krw7FcXHUwMDAzwoPDqsOXwoPCklxcdTAwMTPColxcdTAwMWFcXHUwMDFjXFx1MDAxM1xcbsKPw7g+I1xcbsKKXFx1MDAxZmVGXFx1MDAxOV5faMOIW2HDiMODwoYlK8K0wojCsFfDmcKww6RtwqtJwpDDoTfDmDVaZlxcdTAwMWZcXHUwMDAxaUh+w4bChVxcXCLDm1jDlMOAw71cXG5dd1xcdTAwMDFcXHUwMDBmXWTDjlrDpXB7w7dqw4p2wpPDnjomw4U4w7V9XFx1MDAxNkXChlxcdTAwMWZlUMKxXFx1MDAwNz7Dg8KeZj5GXFxywrcswqUxwrVbwq7Duk1Rw5stXFx1MDAwZlvDnMOydcKbW8KOw7RcXHUwMDFhcFbDgcKow40xR8Odwo45clxcdTAwMWNzZFxcdTAwMWNzJFxcdTAwMWNzw43ChiNjQ8K2wohYdsKMwpbDtGAjw4PCpFxcdTAwMGU8XFx1MDAwMMOhwrDCu8OUwrnDlFxcdTAwMWNzwqgkw7XDpcOywoBcXHUwMDE5woXDhcOUwofDsUDDlcKEw6fCnsOMUMKadcKYw57CiMKaQ11jwqstKWTCjVxcdTAwMDIhwrdLwoR1wppIaVJKTcKQw5DDkcKkwo3CoMKhw4lrLcK1RcKTwrYhwrVoUnVqwrLCjUDDjsOJXFx1MDAwZcKabFxcdTAwMWLCksOSZMO5LE1eNCfDm8Ktw5NYZncmXFx1MDAxOMOAZ3lvw5ZcXHUwMDFiXFx1MDAwZjjCpMOLWXksM0FcXHUwMDBmw5/Ct8OGwovCq8OLa3LCqcKAXFx1MDAxODHDvlxcZljDhlxcdTAwMWZ4cVxcdTAwMDMhQMKfXFxiwppcXHUwMDExXFx1MDAwNGlPw5ZwdVxcYsKwQ8KIXFx1MDAxNMOVYsONw7BBXFx1MDAxNcO5WsOwQMKQXFx1MDAxZXPCrXZcXG7CsmBcXG5cXHTDscKUdXhcXHUwMDE2QlxcdTAwMWTDisO7w5guXFx1MDAxZlDDiVxcdTAwMTLDsERcXHUwMDExfFxcZljCnFVcXHUwMDFjUXjChCjDp8KvLMK5csKDXFxcXGnDiVVcXHUwMDFiw6RULDrCkMKSwrNcXHLCkjPCu2dxbMKpw7MxXFx1MDAxOMKIXFx1MDAwZlFcXHUwMDAzwr9Ww7LCq8KUXzpxwpFMw6pcXGJjw6VcXHUwMDAwwrtcXHUwMDAxw5Vxw4ZsNMK7w4HDhMORwqZbw7TDnlxcdTAwMTLCtVxcdTAwMGY2YsO8M0ZhdcO5w6Jow6PDp2xcXHUwMDAyLsOiwq03JDTDocOYw7jCilxcZsOZw6Evw67DskdmwrPDpFxcdTAwMWbDqVxcXCLDj0PCmsKMXFx1MDAxM1xcdTAwMWXDpsOMXFx1MDAwM2XDosOFKVxcdTAwMDTDslxcdTAwMDFkw4lcXHUwMDAxXFx1MDAxNMKGXFx1MDAwM1xcXCJaw4ZcXHUwMDExe2JcXHUwMDExwrZcXGbCtUfCiHrDqcOdwrBcXHUwMDAwUcKLwoRnMcKNwrx4IcOQw4JcXHUwMDEzXFxyVsKCVsKiI1xcXFxcXFwiK8O0b2xuaMKnw5rCjcKCNFxcYsKUbnDDgi7DhsKoPcKow4TClsKqw7RAwoFcXHUwMDFmwqfCoMKhwqfDmVxcdTAwMWRcXHUwMDBlw4jChzDDi1xcdTAwMGIxfSTDjMKhXFx1MDAxYlxcdTAwMWHDlVtaw41ITk/DiVxcdTAwMDVPXFx1MDAxYcKJwofDlEfDt2TDuC7DmMOKw5DDhcO8wonDhcOgLcOSw7HCkE86XFx1MDAxYcO4MyBlWVxcclxcdTAwMTPCvlFZw6XCncOIXFx1MDAwNcOgwrHDmMK8VFxcdTAwMWbCrcKOXFx1MDAwNcOxwrhWc8KDw6chV8K5woXCq8Ocw4ZVXFx1MDAxYcKualxcdTAwMGJXwrXCjcKrw5IzwoYsMsOOwrTDsDViwo3CiEhRwqDCpMObw5hbQsKTXFx1MDAxOHjDk8OvVcKPw6hgwrrCuDLDhcOSXFx1MDAxNCvDnMOtasKYwrHCvVJCeMKoKsKuTMKxNEVcXHUwMDE1wqbDukbClcKWaMOyXFx1MDAwMnUkw7B/UWgtSsK9QFxcdTAwMWTCgcO7Lm3CtMOzwpxcXHUwMDA1woHDrcO0w5pcXHUwMDAzwpwoJMKqwpvCgcOHdsOuw6bCim/DgcKWO2HDhcKiaUNjwqrDmcKNw5dDw7nCg1xcdTAwMTXDgsOHRShcXHUwMDEwN1nDtsKeWsOHwqXDjcKrXFx1MDAxN8OnesO3XVxcdTAwMGJCwohSw5DCoMKfwrd9KVxcdTAwMDZcXHUwMDAxMlxcdTAwMWPDj8OZw4lcXHUwMDE0XFx1MDAwM0JcXFxcw7/CtsOSdTXCrsKBUXFQw7fDlMKYw4PChGXCkMK4w5RcXHUwMDEzaVHDosK0wp42Lm99wp1cXHUwMDA3ecO9RnDDqcOKSTrDjGBcXHTDiMKxwqzCtnPClcObwrhKbcKbw61cXFxcw5U2wq5KcVXCnVxcXFzDlkrDssO1XFx1MDAwZVxcdTAwMDJ1d0fDtztBSlxcdTAwMGIyw5xcXHJSWcKQw6PDnSBLXFx1MDAwYsOyw4bChcKsZTLDlsO2w6DCtm3CgsOqXFxcXMKnXFx1MDAwYsKuw5rCnVxcdTAwMWNIc8KZwovDvcKPZ8Kfw4jDucOFw43Du8KrXFx1MDAwZmfDr8Oew5tXw7pcXHUwMDE3wpjCjsOowoXCh8K/PHjDuMOod8Odw7FcXHUwMDBmYMOrT8ODScOjbnnCkcKyw4zDq8O7wrVcXFxcT8KkOGN9w5pcXHUwMDE4w6NvXFx1MDAxYj3Du8KOXFx1MDAxNMOvJsOzw4VcXHUwMDAzw54kY3FcXHUwMDAySUvDgcOGUMKTT8KyMMOFw4l1wq5QW8K9RMKpMsKQJFHCmFxcdTAwMTfDqG3Do1xcdMKNwqJcXHUwMDA3OsO5NiDDg8Kjw7YrWiHCrnfDnzHCkcKpwpHDky7Ch8KgXFx1MDAwZVxcdTAwMTVbwpxUw7g6w4zDsTvCnlxcdTAwMTRcXHUwMDEwXFx1MDAwMEgxY8KEw4Z8XFx1MDAwMWlcXHUwMDEzwp/CqsOkSMOMw7haXFx1MDAwZirDqsOKwrtcXGLDsXtcXHUwMDA1ZMKkeMKjQFxcXCJew5jDt8O6a8KjU8OGXFx1MDAwMMKFbFN0Z8KDwrLDtcKaTXhcXHUwMDEydGR3U1xcdTAwMDFFXFxiwqZ3wrlcXHUwMDE0XFx1MDAxNcKvJsODwpvDlsO0NsOtw40sw4zCulhtXFx1MDAxZTxcXHUwMDA1XFxuUcKHNTdqbTLCg0nClcKbwqvDgzHCqMKYwpXCgcKLXFx1MDAxZsKsw43DusKOwotDw7zCqmYsw7HDiFxcbnXDhnR/Y1HCvsOnXFx1MDAxZcKyXFx1MDAxZD3CoMKvw79cXHUwMDAwUEtcXHUwMDA3XFxiw4M8TTfDv1xcdTAwMDZcXHUwMDAwXFx1MDAwMFxcdTAwMGJcXHUwMDFjXFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL29kb21ldHJ5LnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN8KiwrzCiGhBw7jCiWhJwolpaMK1V1Fvw5s2XFx1MDAxMH43w6DDv8OAw5kvUmtrTsO2wrRgXFx1MDAxYlxcdTAwMWF0LcKSwqFIwrrDhFxcdTAwMDXDpGbCgcOAw4h0LFRcXHUwMDE2ZVLCri1cXHUwMDBmw7vDr8K7IynCicKiZcKva1EnwpbDhcK7w68+wpHDvHjDlHEhw7jCisKIOMONw4sgw6NzRsKSVcOORUFuw6DCvsOfW8Kgc0XCi2VlwqYyw4lGwoRcXHUwMDE2NDtcXHUwMDFmwpE8w6nDt8KMPcKjwp/Co8KVfMKWXFx1MDAwMVxcXFxqwqNiw63Dt8Kgwr0gXFx1MDAxOTfDrcKAf8Oyw7zCi37Cj8OAR1xcdTAwMWLCkiwpPFxcdTAwMWZxw73DnnA4JMKXXFx1MDAxZsOCw6t3w5fCl3czw7LDtsODw43Dq8Opw7XDrcONPVxcdTAwMDF7wr9cXHUwMDE3wqdUSsOywp5Lw7bDk8OcMMOMw5nCgkRcXHUwMDExMkTCkSdZwrpAasOtw4JcXHUwMDBmWsKCXFx1MDAxZMO5wpVMXFxiXFx1MDAxOcKSwpDDhMKcwos5eVjCscKCXFx0w7nDqMOgw4pcXG43O8KNw5tXwrjCj8KncUvDgMKdIcOuworDpFTDkMKVw7s4wrrCrVxcdTAwMWZcXGLCtzR7TsOZwoPCoMOzXFx1MDAwM8KePCnDomVcXHUwMDA1fcKvXFx1MDAxYcOHw4HCgsKnacKFwr3Dg8O7w6PDkDXDoFxcdTAwMWUmI2LDvlxcdTAwMWYxw6TDj1xccsKFwqFkXFx0w49cXHUwMDFjcMKRwqzDmH1BV3lFPlxcdTAwMDVcXHUwMDAzwpHDisOywoDDlMK2XFx1MDAxZcKyXFx1MDAxMMKWXFx1MDAxYzVcXHUwMDBmwoRcXHUwMDBlwpR6wr9fwpDCv8O/w4rDgMK0wrsgXFx1MDAwM8OyXFx1MDAxMmjChMKnwqXDssKhNVDCrsOSccKVfsKbScOWw4jCvcKDw5w3JFfCjmvDqcKQeE1TwpnDmsONwopcXHUwMDA1w6RcXHUwMDAxXFx1MDAxZcOXw5fDtMKMbsO9w65AJcOWwqlQJcOtwpFgVMOvVCwqbcKFfsOVw4jDlsK1w5zCp8KewrQ+w5LDg3pNwpxcXG7CrkFdJMO/XFxmOlxcdTAwMDcgWMKxXFx1MDAxMVxcdTAwMTl2XFx1MDAxYcO/cE1hR8OPQVxcdTAwMDdvwr1cXHUwMDFkwpHDtVxcdTAwMGXCviV8w7fDlcOyXFx1MDAxYVxcZlxcZsORVMOQTMKmMChJw5TDnsOVwqxnUnBcXHUwMDE0MsOQwrhXKiNcXHTCsFxcdTAwMDFcXHUwMDE5cMKtYVxcdTAwMTFZw5jDjzTDnTAzZ8KvwooyZ23DpFxcXCLDpcK0MF7Dk1dMYVxcdTAwMTVFworCqlxcdTAwMGJzwrdcXHUwMDBiVl/DjcO+w4dcXHUwMDBiw7B9wqRcXHUwMDEzXFx1MDAxMMOsPMKYwpBcXHUwMDE3w4Rbw6/DoMK6LmF6w5ZbwrzDm8O7bcOoXFx1MDAxOUDCtWfCi1xcdTAwMTjChcOewpExwobCqDjCuMObwqvCuFZcXHUwMDE4Jm0ww5Emw5jCjMKbw6fDvsKgXFx1MDAxY8KwScOMwq0naMKjwpXCuVxccsKLw5rDucK9On7DlETDucO1wqDDtMKEXFx1MDAxOMKHI8Khw4rCiG9cXHUwMDEzUVF8L1xcdTAwMTnDtcO2w7rClULDjsKUwpDDo8KWwpJ7VETDqVXCtsKUwpx1SsKCXFxmwr/DgVvCo2PDtjEgT8OIwo/CuFDCtMKPwqXCrcK4X8Ogw5HDh1xcdTAwMDLDh27CpGTCnTh8wr17NWXCt8KkM0dSw5zCp8K+TVFkw7hewoLCqnfDoMO/w5DCs8KZwo/CsMKVwpbCpVxcdTAwMTbCs0rDi8Kdw5/ChsOaaTnDrkjDi8KXXWlcXHUwMDE5VmvDgFlcXHUwMDA1YVdiwobDh1xcdTAwMTMzdFxcdTAwMTIzbFxcdTAwMTIzVMKJecKgYcOYaMOIw6dcXHUwMDFjw4pcXHUwMDE3UcKew6s3wrPCh8Otw7/DlMOvw67DtsKew5zCmkBUw7DCjzlcXHUwMDEzw7zCiVxcdTAwMTdTwpDCpMKqw5DDmsKKXFxcIsOtw4VBXFxcXC3CiS3CqcKGVsKwwrbCnMOUwpBcXHUwMDFmwojCiUHDlUTDlsOdw45cXHUwMDAxXFx1MDAwYnPCo0M8M1xcdTAwMTFcXFxcJGBDfMKAfn1cXHUwMDAxI8OLYGbDlGJowoJVw63DqEDDocKSIC7DmFnCuMOyXFx1MDAwNMKuwrRww7tcXHUwMDEzOMKzNsKGXFx1MDAxYcK5PMKBXFxcXMOaT1ZlZMO9fsKEwoFcXHUwMDA0wpDCi8O4wrPDkz/CpcO+wqleJMKaw4nClMKUw5bCnsO8ZcKBwqbCvGxcXHUwMDEyw7/Di8OCVMKpeVxcdTAwMWPDumhBw61CU8KNf8OJKMKswq5AwpXCmsKBZDHDpMKSd8Oow4how4bDkcO5woLCnMKxw7HDj8Ouw47ChcOMw41cXHUwMDAxw6PDqsOyXFx1MDAxZMK5wr7CmcK+wrl7e8O5w7rCjX3CtMKow5ZcXHUwMDFjXFx1MDAxZX48wrzDuMOHwo5cXHUwMDE5I1jCvXlcXHUwMDEywrfDisObTcOOwoTDp1xcdTAwMDc1blDCpVbChFxcdTAwMDfCq8KBXcKgYWEkN09Yw4bDom0sXFx1MDAxOMKsw6RcXGIsMlxcdTAwMTZJwo5cXHUwMDFhO8O1wpt9wr5cXG7Cqm7Cmk7CjDRJwprDiMKCZUxEMU3DkydcXHUwMDFhf1xcdTAwMWHCkcKzSXd9wqjDoFRcXHUwMDE2XFx1MDAxMcOOS1xcdTAwMDTCvcOowqTDt3zCu8KqP8KgN8OzXFx1MDAwMFxcdTAwMTHCrVk4w6BWJ8OCwobDp8KZXFx1MDAxNSZcXHUwMDFmw53Ds8KBw5HDisOdwpBcXHUwMDFjRsOow5TCv1BLXFx1MDAwN1xcYiQlcVxcdTAwMWQzXFx1MDAwNFxcdTAwMDBcXHUwMDAwwrNcXHUwMDBlXFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL3NpbV90aW1lLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN8KiwrzCiGhBw7jCiWhJwolpaH1UXcOPwpowXFx1MDAxNMK+N8OhP8Kcw6BcXHJmwoZ9XFxcXMKawpDDjDnDjMOrZsOUXFx0b8KyJUvCmlxcbkXCm1xcdTAwMTcoa8OrwoXDmcKfXz9QXFxuOsK5IHDDjnPCnj7DrXl6XFxuw44qw6BZw5lcXFxcw4LCmsOlXFx1MDAwNGjDlTAuYcKjwr7CvVHDkSXDvzBxw43DrUlJw7HCgcKWVF52wqzCpMOZZVxcbj9YwrLDo8KswqAlwpnDglxcdTAwMGJcXHUwMDE1wpLDsTbDpcKNw5pcXFwiw47DhMKRw6PDpsKEKnFcXHUwMDE0wqF6dVxcdTAwMTnDjcOvwo3DlH9cXHUwMDAxNWvDv0PDtlxcdTAwMTZMZsOeXFxiw5RjXFx1MDAwM8K0wqYywphowpw3XFx1MDAxYcKPw4cwf8O9wrlawq/DpsO7X8KwfMOdLMOSw5V2wpN4wqPCrMOEQkBCwqvClFbDpCvClsK4wqXDiElcXHUwMDAxXFxiaVxcbsKEXFx1MDAwMkHDikJzw5vClH50JFxcdTAwMTQkY3UuIMKCXFx1MDAwZsKDTMKNa8OWw4vCusKkQnLCh8OzVsKnwoBBw7fCq1xcdTAwMWbDn8KVXFx1MDAwNX9/w5fChj7Cm8KBw5/Dh8K9XFx1MDAwM0VcXHUwMDE5wrjCkiZDwoBvwopbWcOPXFxiXFx1MDAxY8OlXFx1MDAwZcKJw7PDicKJPMOzXFx1MDAxYcKEPVfCvSNhVX5yw5RcXHUwMDA2WcOJwrLCt8Orw7Z8wr9dL8OlwrhcXHUwMDE2JcKWRMKAMcOKfsKbw4BCI0Eyw7jCllxcdTAwMTPDjlxcdTAwMGVMwqbCl8KGw7Q6XFx1MDAxMsOaw6LDj1xccsOmwrhcXHUwMDAyw4M8w6vCl8OKK2/Ci8KUworDolxcbjTCoDbDnmrDhy57V8KcW1FZV3BcXHUwMDEzbmJcXHUwMDA2XFx1MDAxZMK5wrXDgWTCkHYsYWLCoX3Cq8OoXFx1MDAxMMOYd8KIXFx1MDAwYm4zwq3Ck8Ktw6JbXcOnw6bCl8O5XFx1MDAxYVbCmzTDni/Dp8KLXFx1MDAxOFRkw6BlfVxcdTAwMWZcXHUwMDAzw73Cmjxzw7TDjX3Dp8KGw7BgXFx1MDAxMsOeXFx1MDAwMMK+w6rDqlnCnVxcbmU1wpLCilxcdTAwMGXDqcK7w647PlDDl1xcdTAwMWI1w6bDhirDvcOdbVxcdTAwMWVYwph3Nz/CusKbXFx1MDAwMsOhwpc4SVHCvFxcXFxuw7fDqcK0X3fCsiMhw6rCjcKGw7B7XFx1MDAxY8Ovw5B6wp5cXGbDkTlpw6Qpw7o4fWhYey/DjlxcdTAwMDclw5N8ZsKcwqhmI1xcdTAwMTVcXHUwMDExXFx1MDAxOcKnwo3DnsOhUMO0cMOywoTDhkTCg0XDvcO3wqYrw74gbMOWKMKVbFJcXHUwMDEzwo4yXFxcXMKWXFx1MDAwN3xXa1xcdTAwMGXDj1xcdTAwMWVYw5RcXHUwMDFkw6RcXHUwMDEzw73CqsKzXFx1MDAxMsKpwpbDmF7CqMKtw7xHwqPCnXfDl3bDn8OJMH3Cn8KCwoLDt8Kaw79wXFx1MDAwNTNxO8KuI8KRwq3Cs8Ouw4xzXFx1MDAxZFxcdFxcdTAwMGbDpsOAXFx1MDAwM2rCpcOwXFx1MDAxZlBLXFx1MDAwN1xcYsK+XFx1MDAwNVxcdTAwMDXCuVVcXHUwMDAyXFx1MDAwMFxcdTAwMDBDXFx1MDAwNlxcdTAwMDBcXHUwMDAwUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMKuwrrDpVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDE4XFx1MDAwMCBcXHUwMDAwaGFsX2ludGVyZmFjZXMvc3BlY2lmaWMvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloRsO4woloScKJaWhQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwpl6w71aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwKVxcdTAwMDAgXFx1MDAwMGhhbF9pbnRlcmZhY2VzL3NwZWNpZmljL2FtYXpvbl93YXJlaG91c2UvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN8KiwrzCiGhGw7jCiWhJwolpaFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwP1xcdTAwMDAgXFx1MDAwMGhhbF9pbnRlcmZhY2VzL3NwZWNpZmljL2FtYXpvbl93YXJlaG91c2UvcGxhdGZvcm1fY29udHJvbGxlci5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoQcO4woloScKJaWjCvVbDi27DozZcXHUwMDE0w51cXHUwMDFiw7A/XFx1MDAxMMOKRsOpeDjCnizCg8KmaMKQw4nCoC3DnGAwwo81QVPClMODwoZcXFwiXFx1MDAxNcKSw7Igw73Dul7CvmRZwpLCnU5cXHUwMDE3w5VCXFx1MDAxMMOJw4PDg3NcXHUwMDFmwrxXwrXDkVxccjJMwrYvWMOpwoojw5HCtMOaOMO0XFx1MDAwMMOfw4tFw50vw6Z5w5tcXG5FOsOlwoQkdcOnOsODXFx0w5NNK8K5XFx1MDAwM3TCgsK4R8ODaSXDlC7DrcOfw5HCv8O5VsKTw4bDrizCtmbCn8KZbsObVsK+w7zCocKFcsO3dVxcclxcdTAwMTNcXHRtXVxcdTAwMTXCocOww4rDkC/DjlxcdTAwMDTCujRcXGbCgsKWwovDpcOiw4PDvcOHw5tvwpvCr8OoXFx1MDAwNl3DucKhwqjCkcOSaVxcdTAwMTnDq8Knw7LDsnrCuUDDsMOEXFx0wqHChCsvPW7CucKoeMKNWFNtRMOtwq5cXFwiecKZwobDvVxcdTAwMWVcXHUwMDBlw4bCqVxcZsOyYsOiTibCqcK1w6jDrsOPXFx1MDAwZn46YT1cXHUwMDFiIcKewp/CkMOScllnXFx1MDAxMsO/w7hxwrDDpSbCmcOhNcKMXFx1MDAxN3FFXFx1MDAxZFxcdTAwMDVEw5EpwqlpVcO4wpMyM0hcXGLCpCvDvzXDh8KcN8ODw7JwXFx1MDAxZiHDlsKZXFx1MDAxOUHDicKyXFx1MDAwMmzCkMOewoZcXHUwMDAywr05wqbCisKGXlxcXFxcXFxcwqDDn243w6jDt8KHwq/Dt8KfP8Oew57DnSPCmMOJw7Z/w6rCtlLDmEduPknDqiB4wo1PwpfDksK/Lk/DuWTChcKcblxcdTAwMDXDs8OrXFx1MDAwM1xcdTAwMTPCusKWwpvDslxcdTAwMTLDt8OIYsOCXFxcXMKMw53DlXZbMDZ8Mkg0w4dJwpvDt8KUw5HDg8OpwqhcXHUwMDE1esK/XFx1MDAxZW9Owq5Kw7HCi8OpwpDDpXrDj8OPwofDj8Ovw4I+XFx1MDAwZUXCiMOOwoxcXFwiwpw0wpTCo8Ksw6rCt19cXHUwMDFlXFx1MDAxZFxcdTAwMTXDg8O8w5phKVxcdTAwMTnDvsO7cX3CuMKSL8OvwrRyRktcXHTCnnolVn/DuXs5wpRWXFx1MDAxNMOFYTDDpUPDsFxcdMOpw5YxwqdcXHI+XFx1MDAwMH9twqnCoU1kwrtGw6HCsiNFXFx1MDAxYlxcdTAwMGVcXHUwMDAxQsKNw57Ds1xcdTAwMDHDksK9wrQ8XFx1MDAwM8OzfcKfPXzCmjNtwpJcXHUwMDAzwqUow6vCmThNasO2XFx1MDAwNMKBw69rXFx1MDAxM8Oew4DDhCHDvsO+wrlIXFx1MDAwMmM5Ql/CuMOZXFx1MDAwYsOGRzxMXFxuXFx1MDAwZcKYw6NcXHUwMDA0wozCk8OlwrjCosKtUMOxwo7DujlcXHUwMDEyw6xcXFwiPMOMXFx1MDAwZcKlfX9cXHUwMDE0wpLCh8KiNSDDh8OfKcOYXFx1MDAwNVBiwqPChMOSwonChsOrw47DgcKYw53CvMOHw6thXFxcXHphO8OuwojDlMK7XcOwwo1QwrUuwovCtD3DsMOTPVxcdTAwMTXCkm4lXyFPXFx1MDAwZlxcdTAwMWVAdEfChcOCXFx1MDAxOFxcdTAwMTdHXlxcYmTChj/Cg8KJY3vDsGfDvsOcccOrJlxcdTAwMTVcXGbDoDjCmlxcdTAwMTjCgntcXHUwMDEzw6M4YcKNXFxyXFx1MDAwM8KWXFx1MDAxZsK0XFx1MDAxYcO7NTXCk1fDgsOkM8OVclUlV8KmZFxcdTAwMTXCqsOtwrJ3R8O1JcKrwovCi8OAPMOEw47DoMKswqPDhlxcdTAwMTHDr29cXGbDjlxcdTAwMDbDvMO6PEhRwqVPXFx1MDAwM8Krw45QJ8K0SlxcXFxXw6vDtVnDlFxcdTAwMTHDmVxcdTAwMDHDmMK7bcKYI8KMSknCqH1RwqzDjETDg8KowpzDrMOSw4llcXZcXHUwMDFhw7hBXFx1MDAxODBlw4/CnTB8XFx1MDAxMsOtXk/DvFxcdTAwMThewqBcXHUwMDE2w67CrcOzwonDl8ODwq5RwrFcXHUwMDFhXFxmQcKnw60kZFxcdTAwMTDCtlxcdTAwMWRjw5zDmlxcdTAwMTXCml91w5R1wpY0woDCoDs+wq8gwqo0XFxcXHJqeXnCosOgNVxcclXDlVxcdTAwMGZ1wqfDvsKkc3Umw5BcXHUwMDEyKMOBwo7Cq8KZamMnPVxcbmYsM8Kiw7XCgVxcdTAwMWXCt8KpWMKgXFx1MDAxMlxcdTAwMTfDscKRw51Sw7Y0w5fCvnw1XFx1MDAxMTzCp8O/TMOWXFx1MDAxZCogLMOOwpTDvcOCwrfDvFjCjsKKw6PDpjc+PsK5woXDr8O5wplGwrDCgcO+w7TDrltoU8OQPnfCgiHCq8Ohw7JSwofCkkJhY8O1YcKsazrCkMODK8K4woHCuTzDjFImw5/CgsO8cHTDuiPDicKrw7DCi8OXXFx1MDAwM8OgdynDtMOHUTVcXHUwMDE0w7XCvMKvw4BZI8Kkf3pPwqZ/w4ljXFx1MDAwNMKXJ8OYfj5PNsK3w6Unw7TDtmrDjG7DuVxcZkvDvEE7w4xcXHUwMDA3XFx1MDAxMUPCq8OTf8OBwr/CtjvCmXZOw7DDm1xcdTAwMWYzw7/Cl8O/w5XDvFxcdCxDTiY/XFx1MDAxZTbCiVxcdTAwMWHCvMOlw4rDlFxcdTAwMWVewr1Rc8Kzb1BuXFx1MDAxOMO/XFx1MDAwMFBLXFx1MDAwN1xcYsKQXFxcXMOqw5TDtlxcdTAwMDNcXHUwMDAwXFx1MDAwMC5cXHJcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwIFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9zcGVjaWZpYy9yZWFkbWUudHh0dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloXFx1MDAwNcO1woloScKJaWhNwozDkVxcdMKAMFxcZlxcdTAwMDVXeVxcdTAwMDPCiGPCuEdIX2nDgSYlLcOow7hcXHUwMDE2P8OEw4/Do8KOOzwwOsK1w6bCqlBvw53CjTZcXHUwMDA3PENcXGbCvFxcdTAwMTlaXFx1MDAwNzdoUCYhw4h+JlxcdTAwMDbCrjpcXHUwMDBiZsOhwpfDgMKkLW9cXHTCksOSa37Ct8KFw4FcXHUwMDFkXFx1MDAwZlBLXFx1MDAwN1xcYsOVwp5BYk9cXHUwMDAwXFx1MDAwMFxcdTAwMDBtXFx1MDAwMFxcdTAwMDBcXHUwMDAwUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMKuwrrDpVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDAuXFx1MDAwMCBcXHUwMDAwaGFsX2ludGVyZmFjZXMvc3BlY2lmaWMvdGhyZWVkX3JlY29uc3RydWN0aW9uL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDdJwolpaEbDuMKJaEnCiWloUEtcXHUwMDAzXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCrsK6w6VaXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwQlxcdTAwMDAgXFx1MDAwMGhhbF9pbnRlcmZhY2VzL3NwZWNpZmljL3RocmVlZF9yZWNvbnN0cnVjdGlvbi9wYXJhbWV0ZXJzX2NhbWVyYS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDdJwolpaEHDuMKJaEnCiWlow41YXW/DsjZcXHUwMDE0wr7Cr8OUw7/DoGVcXHUwMDE3b8KAXFx1MDAxNMKwwp19VcOiasOTwqbDqcKdwrTCqsOrXFx1MDAxZELDiFxcclxcdTAwMDbDslxcdTAwMTbCksOIccOVwrFfP38kw43CsWPDkmjDm8OFw5JWwoDCn8OzPMOHw6fCg8OjwqTDucK5KsKFRMOFw6vCucK6IFbCo8KiwrrCvcOJw63DmsKFwp1Pw69cXHUwMDFmw4rDusO2RsO/ZCdWw5fDqMK3wrzClsK8w6DDosKBXFx0dsOmwpLCi8O6w77DtlxcdTAwMDbCqWvDh8O3aMK7w43Ci1xcXFxuwrdxw41Pw7tcXHUwMDA0ZWXCscOPXFx1MDAwZj/DpyfCrsOewrPDs8OkXsOLwqDDpsOKw7dKeX7DoDJ7w5vDhVxcdTAwMTPCtFrCoWhcXHUwMDExw513wrjCvsO2aMKFw4rCilxcdTAwMTdxwrR4K8OFS13CscKML8KycsOHXFx1MDAxN1xcdTAwMTHCmjnDssKRwogmXFx1MDAxZMKXwp9qfk3CqsOPw6pcXGbCs8O9QcKZw6nDqMOnNcObw7PDrcKpZMK7eFxcdTAwMGbChMK/RsK1ZELDpsOFQXk/wp8hw7BlJ8KywpVZwp3DqyTDhEorQcKfw6hPwo9cXFxcecKswqV4w41kXlxcdTAwMTbCn1xcdTAwMWPCsTxTw640UcOnw6HDlyx2w4BKwqjDvSpfwrxWRsK5MXl4X8KKwp19w6/CmGTDikjCuVxcXFxHwr7Dh2jCs1bCucOfwqwjbVxcdTAwMTRtOlIlw7JCw4Z6w5XDkcOSwqXCm39WakU1Z0LCsEvDrCZyw61+bMOdwq/Co8OPw4rDk3LCk1xcZsOBeFxcdTAwMTgmw4NwOlxcZn8zXFxmfztcXGZ/P1xcZsO/w7BBYMK9w4DDvcOPO3nCqcO4SsOldFfCvj7Cq8Oew6vDkMOJXFxcXMOww7rDiCpcXHUwMDFlw5NcXHUwMDA0w5HCiVfCicOHwqd/UMKKw4fCp8OhWlxcdTAwMTh8wqBcXHUwMDE4XFx1MDAwNlxcdTAwMWbCqMKGw4HDqVxcdTAwMDfDuEDCuVxcZj5QL8KDXFx1MDAwZlxcdTAwMTTDjMOgw599woBcXHUwMDBmVMOUw6BcXHUwMDAzJcK1w7nDuTDCgcOBXFxmLsO/w4VcXHUwMDFhw75cXHUwMDBmwpooTVDDqjfDkVvCvsKTR8OVR3bDs3/DpH9xw5NcXHUwMDFmwp7DlcKRw6fCh8Kjw7TDjcOwwqbCnVxcdTAwMGV6w4I/wrPDrEVcXHLCpi88wpPDjcKQwq9KNUbDiG5cXHUwMDAyw6bDrcO5wpJcXHUwMDE3W8Otw4/DjsKSw7UyQcOQwpnCgcO/VHBDVTtBU8OHXFx1MDAxNi3DnjHDolxcdTAwMTMvwoDCiD8gwoLDk8OmXFx1MDAwNWNFw4TDs8KlMlxcdG9LwplcXHUwMDEwZcKywpwvwp01wqrDlsOiwrvCjkI2XFx1MDAxMyVcXHUwMDExQ8KNXFx0JFxcdTAwMTDDnFxcdTAwMTchw4TDt8KNXFx1MDAxM8KEXFx1MDAxZMOfRMO7wrnCizvCmGzCgFxcdTAwMWJjPnHDvMOQwoBcXHUwMDFmXFx1MDAxYVxcYsKAUsOfN8ORw6IwOUxLwplcXGZNw5vDosOMbDrCpm3Djmc2XFx1MDAxNcONw6cjw6BcXHUwMDEyw4MlXFx1MDAxZcKXeFxcXFxcXHUwMDEyw6RSw4PCpVxcdTAwMWXCl3pcXFxcXFx1MDAxYcOkwqY2LMKnw4jDglxcdTAwMTTCucKZwpvCvcO6XFxuU8OfXFx1MDAxNsOFPcKUXFx1MDAwMsKUw7TDkMK0wpdaQTxvTkVcXHUwMDA1w7HCvHnCqMOnw41DXFx1MDAwM8OewqjDp8KNOFxcZsOqecOzUMOPwpvCh1xcdTAwMDbCvMKlw73DtlxcdTAwMTJpwr/CvURKXFx1MDAwM2vCgcOaPMKbXFx1MDAxZVxcdTAwMTPCpsOHVMK/w41sOcKmwrp/ZjbDuVPDnVxcdTAwMGYzwptqw7U+XFx1MDAwNVxcXFzDk2PCglxcdTAwMDAuXFx1MDAwMVxcXFxcXHUwMDAywrjCpMOHNT0mKMOgUsOAwqXCgEt7w5zDlHBTw4BNXFx1MDAwMTdcXHUwMDA1w5zCtMOlwoI8w4h2w6Q4a8O9XFx1MDAxY0rDnMOPwqE0w71cXHUwMDA2wqpNYcOFZGDDiMOIdsOIOGtcXHUwMDAxw6VAb8OJw4AwwpHCgWFcXFwiw5thw6LCrFxcdTAwMDXDtFxcdTAwMDLDnSNcXHUwMDAzw50jXFx1MDAwM8OdI0PDnVPCvsOKXFx1MDAwNz3Dl8Ohwr3CkMO5fsKbX1xcZidwa8KqT8KVwpUtw4JUd8Ofw4wmf8KqwrtpZsKTPsOVw50xwrPDiVbDr8OTwoBcXGLCtlxcXCJcXHUwMDA0wohcXHUwMDEwIELCgFxcYsK5KkLCrFxcYlxcdTAwMDVcXFwiXFx1MDAxNMKIUCBCwq/CilArwpJcXHUwMDAywpFcXHUwMDE0wojCpEAkw7VFXFx1MDAwNMKXwq/ConjDl8KCXFx1MDAwN3rDoDDCp8OOYcOeLFnDv3dOw63DjcK5w6HDncKTOsODV23Co8Klw4NpwqrCr8KZOzjCgSVcXHUwMDFlwrIkw5DCklxcZllSaFxcdMK/PcKgV8OMw6F1JVxcdTAwMDA8OlxcdTAwMDA8OlxcdTAwMDA8OlxcdTAwMDA8MlxcdTAwMDB6PVxcdTAwMDAyOlxcdTAwMDAyOlxcdTAwMDAyOlxcdTAwMDAyMsKAw7R6XFx1MDAwMHR0XFx1MDAwMHR0XFx1MDAwMHR0XFx1MDAwMHQ4XFx1MDAwMMOnXFx1MDAxYmrDrmbCncO7w5DDpsOAw6jDlsOMw77DjMOBXFx1MDAwMW8lw41cXHUwMDAxw6JKXTopXFx1MDAxY8KQw4JcXHUwMDAxKXxFXFxuw5zCgsKTwoBcXHUwMDE0XFx0SFxcdTAwMTEgXFx1MDAwNcKGw7LCvsORw7vDikxrw69fK21cXHUwMDAyw6zDq8OCwprDtk0uwo3DicOlwrrDicORP13CmsOBw5XDjXzDoyPCsTrDtsOlwrjCmcOAeXZcXHUwMDEwbMKfZ0/DpcOvwpXDjDN2wrrDvsKQw6I+woB0w6vDrsOzwoU3XFx1MDAwN8Kdw7NHw61cXHUwMDAzPjfDnSHCrMO+LlxcdHhcXHUwMDAywoHDp1JcXHUwMDEzSsOlXFx1MDAwZsOgw5Juw7TCqcO8w4XDrMO8w7/Cv8OhXFx1MDAwM8KXP8KyM1xcdTAwMTfDrMKhwqxzw71cXHUwMDFmJsKzZcK4w5New5XCnMKxwpzCuEMucUfChsOew4HDn1BLXFx1MDAwN1xcYidSwonDgcKpXFx1MDAwNFxcdTAwMDBcXHUwMDAwwppcXHUwMDE0XFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKuwrrDpVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDFhXFx1MDAwMCBcXHUwMDAwaGFsX2ludGVyZmFjZXMvX19pbml0X18ucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcclxcdTAwMDBcXHUwMDA3ScKJaWhJwolpaEnCiWloXFx1MDAwM1xcdTAwMDBQS1xcdTAwMDdcXGJcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww65tw75aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwZlxcdTAwMDAgXFx1MDAwMGd1aV9pbnRlcmZhY2VzL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDdBw7jCiWhGw7jCiWhBw7jCiWhQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww65tw75aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxN1xcdTAwMDAgXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0HDuMKJaEbDuMKJaEHDuMKJaFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwMVxcdTAwMDAgXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvbWVhc3VyaW5nX3RocmVhZGluZ19ndWkucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcclxcdTAwMDBcXHUwMDA3wqLCvMKIaEHDuMKJaEHDuMKJaMKtWFtvw5s2XFx1MDAxNH5cXHUwMDBmwpDDv8OAwqkvw5LDqih2OmzChVxcdTAwMDFcXHUwMDBmXFx1MDAxOMKKdCjDkFxcdTAwMTZBwpdiXFx1MDAwZlkgw5BcXHUwMDEyZXPClUjCjcKkw6rCuEV/w5fDnsO3w4t2XFx1MDAwZcKpKy3DtTJMXFx1MDAwMWLCizw8PMKXw6/DnMKcK1nCksKMXFx1MDAxYWZ4w4lcXGIvK8KpTMO3fn7DlizDvMKpwqXDqF50wr3CrcKUTMKZw5bDncKSSsKLw6rDmMK9wpnCvWI0w6Niw5fCr1xcZsKZXFx1MDAxZMOYVsOLw7RcXHUwMDFkM8OnZz3Dj8Kjw4Y3w7jCiCtqw7YxXFx1MDAxN8KaKVxcdTAwMTMuXFx1MDAxNyTCuHwjwrfDksOwVMO/UlVcXHUwMDA1T8Kpw6FSwrzCosKCw67CmFxcblxcXCI8wpTCo1xcbsKlW8KJXFx1MDAxNS3Ck0LDrnZwe1xcZsKfScKzw55qw7ZSw67CmsKzeMOyw7wsLcKow5bDpFxcdTAwMTXCo8K6VnDDpMK2wpXDvMOXwrcvw5bDp2dcXHUwMDA0wp4gXFxiw6DChXBhwpjDimnDikjCrWHCv8OXwpFQwpHCkcKyZUDDnsOcPkfDs8ORNXLDh8OzwppcXHUwMDE1ecKsXFxyXFx1MDAwNW1cXFwiXFxcIlxcdTAwMTjDizQxwpJsXFx1MDAxOUlpUcKwwoxQwrRcXHUwMDE3I1xcZsK4w4jDnH7DpcKCXFx1MDAxYsOgaMO2MsO7QzgmwrfCsFxcXFxXw6jClmRXw7NcXHUwMDEweUZcXHLDicKIJ2hZwrDCksKBwqxZJ30rSMOGcsKSJMOIPEkswodcXHUwMDA1w5lLbTbDgUHCry8vV1c/w4VLw7hbwq3Cr8KeLMKfXFx1MDAwNFxcdTAwMGLCkivDtsOXw6ZcXHQsRcKdKsO4PFxcXCLDl1xcdTAwMGYswq3DkVxcdCTClcOCKFnCkMO3VMOpwp7Dgiosa8KTVExxwpBvQ1bDscKSXFxcXFrChkNOwpbCjsKmw6/CgMOgVsOVw6x0I1xcdTAwMDHDh8KCJlxcdTAwMDJZPMKnwoXCnlxcXCIpwqRlw5B5I35cXHRcXHUwMDBiYXRyXFx1MDAwZsOPXFx1MDAxOC3CksO0wphcXHUwMDE2XFxmw4jCny7CvW3ChcK7XFxiw5JcXHUwMDA0XFxcXGzCpFxcdTAwMDJcXHUwMDFhwp9cXHUwMDA0w4XCr8KZSMKPSVxcdMOIXFx1MDAwN1xcdTAwMDRcXHUwMDAxw43Dh8Kew4ZcXHUwMDFhe8KrKFxcdTAwMTfDgVxcdTAwMWHCrMK+w7B2w4BrwpPDq8OKw6TCk8OrecKlJ8OXXFx1MDAwYmrDvMO1T8K+wqpcXHUwMDAwVFxcdTAwMWIkSSprRMOtwpQywpXChsOVwovClcK3XFxmw5zCm2XDnz7CtVxcdTAwMTDCiMOuw5ZVw542w6JcXGLDtsOwY8KINsKHelxcdTAwMGLDlsO1XFx1MDAxMEEvXFx1MDAwMMKDwpxcXHUwMDE2w7xcXHUwMDAzwrPDgWPDiSzDsn9nw5vDn2xmIGnDgVxcdTAwMDHDhcKNX8O7wrPCvcKfXcKkwoZwdMOHw4zCplxcdTAwMTUyw6lyw4tcXHUwMDAywqLCkMKVUmxQw6DCqFxccsOAMcKSZ8Olw4Agw7bCr3ZXwpg8cVxcdTAwMWIjw5BNXFxiXFx1MDAwM19cXHUwMDEyXFx1MDAxZlXDnyrDhsOzXFx1MDAxNnLDk8OCw7TCiMKcXFx1MDAxN2lcXGbCn8KhwoAuZcKxXFx1MDAwNMKuTDRcXHUwMDA0WcOSwrHDq8OPfMKrw4DCvMOEwrhAbn3CiiQhwqZPw4hcXHUwMDA3w417w7RcXHUwMDE5b8OOS1xcdTAwMGLDscKTYE5xR1xcdTAwMTZEw5DCkm3CgsOxajDDssO5Z8K0cFxcdTAwMWHDtHXCqEFbXFx1MDAwZsOcXFx1MDAxMcKSTlxcdTAwMDB8w5jDs8KCwo3DomI9XFx1MDAxNsOcbjVcXGLDnsO0w5fDhFxcdTAwMWTCvMKhwpJ5wrrCjkJpQSB4wpssw5PCq8OPRcOiw4PDgGo3e8K3XFxywohcXFxcKsO2wp7CqcKwXFx1MDAwMjEtXFx1MDAxNsOBXsKbw5dSwrBcXHUwMDA1wrFLwrbCrsK9wqfDhWZcXHUwMDE5XFxyQ3dcXG7CvifChsKAw6LDslxcZjI0XFx1MDAxN8K1wqx1ccOEworClsOWwpBDwpjCtmjDgMOzXFx1MDAxN8K2wq1ww6djW8KMwr7DmsKKeDLDllxcdTAwMDVjVXjDpSlcXHTDgMOAw7x1XFx1MDAxN8OsPsKsVsOgw7ZcXHUwMDAwXFx1MDAxY2w0fsK5wqjCgnvDjyDCuMKVNFxcclxcdTAwMGJcXHUwMDFjw6rCu8KXw7hGVkzChMOIbFxcdTAwMDFkXFx1MDAxOVpmwrjDu8Oiw6bDmsK7w7fDgMONfsOMMHbDp8OWwqfDnlxcdTAwMDTDg8KTwoJcXHUwMDBiLMOnXFx1MDAwNFNyOHVcXHUwMDBlXFx1MDAwYk/ChlRcXHUwMDBiwrJcXHLCgmjCgk3Cr0LDgW3CksK9e8KAwrPCilfDkE3DoFxcdTAwMTVcXHUwMDBmw4hcXHUwMDFmOcOEXFx1MDAxYcK6I1xcdTAwMTNuwoNFXFx1MDAxMMOdw4/DsMKZKXU9w7/Cu8OlfcKcwrFUZixcXGZqwpNfPFxcckbCqMKYw49cXHUwMDE5U8OYcF1cXHUwMDE1woDDgSZcXHQgd8Kww6jDjmDCv8KDwrnDgTU2wo7DjFZQYsOrwrRcXHUwMDFlw6PCpVxcdTAwMDJcXHUwMDFjc8OAwpnClVxcdTAwMWTChG57w5RYw4hDXFx1MDAxOMO9P8K4SmvCpSBwwr50woU1XFx1MDAwN8O6YkR/MVxcdTAwMTZxTF5cXFwiw7TDgsOMw4RcXHUwMDE5PWrDsj3CucO6XFx1MDAwMcO+w73CuHTDv1xcdTAwMWVcXHUwMDAzwrdYwoPDmcOBRFxcdTAwMTEswq3ClsOLZsKxw6TCqcKSw41cXHUwMDBlwrRQwrhcXHUwMDExL8OHwpx9wrtcXGZlw7JkcMO+w4jCujZoXFxcIlxcdTAwMDfClXjDjUxcXHUwMDFiw4HDs8K5wp3Cn8OJwpIwaMOQw4jDssOLwrnDqVxcdTAwMGLDrVxcdD5cXHUwMDE2XFx1MDAwND3CtsKmJVVwOlxcdTAwMGLCrcKpLj3DlVxcdTAwMTZkXFx1MDAxNcKhwrTCnsOCw59twr5OTEzCtsODw4tHN8O5w50kw541wqHDpVd0wovDuHRcXHUwMDFkwqPCp8OyYsKCw5TCtcKQI8OhwqbDiFxcXFxHOVxcdTAwMTnDqlPDpMKuw5FswpvDgilcXG7Dl3LCtsO9wqFHw7HDicKHWMKrLE7CjHFWwpfClVxcdTAwMGXCp1xccjLDqik6wrvDmcKsYmTDoipYw6jDkz5cXFwiN01cXFwiw6dcXFwiwpUldlxcdTAwMTlcXHLCicKdwoAwwr1ARlxcdTAwMTnClMKxYcOdbMKGwp5cXHUwMDAzZMO7wpbDr8Oab2zCgFxcdTAwMDXDl1DDiDQ4wrbCv0LDr3BNQFnChipcXHUwMDA3Y1xcdTAwMTZMXFx1MDAxZcKDwoFcXHUwMDA3wpBcXHUwMDE2w4BKwoDCmcK4YcOswqVcXHUwMDFjVzfChjPDi0TCpsKfwp3Ch3zCgsOhXFxcXDTCpkRwe8Kcw7vCgVxcdTAwMTfDh2HDvGBKQS1cXHUwMDBmw55cXG5dVzhcXHUwMDEzw4NcXGZcXG5cXG7CjlxcdTAwMTPCvT9rwo5cXHUwMDEzw7vCjWJcXHUwMDE1VU3ClcOHYcOXwqZuwpxnwptcXGYvwotCXFx1MDAxZcKcc8Oswog6wphxw4FLw6hjKMKJw6t2wrjDhcOnwp/Cv8KJw6d6w6RcXHUwMDFiwo3CrlxcdTAwMWTDlFxcdTAwMDLCqsO1KSTCoMKew7rCmMKwP1xcckzCosKib1xcdTAwMWLDv0N/wofDrWTCm29twoHDgH9+woXCmMOJdsKPYVxcdTAwMWXDtsKhw7/CiDzDmzPDsDwgwonDgjx/ICXCrcKIw57Di8K6w4hcXHUwMDEwbsK6a07Cv1xcdFBtwr7CpsKTwrvCncKIXFx1MDAwM19Hw5NkXFx1MDAwM0ZcXHUwMDFkw7ZmOHZcXFxcXFx1MDAxZMKQwpvCscOdw5fDtlxcdTAwMTUkO8KDwoU+Y8KaQ8KCJlxcdTAwMTPCs1xcdTAwMDc+wqzCoMKVZsOZw5jDilBoe1xcdTAwMDd4JsOHwqrDnjrCpsKkXFx1MDAwZsO4w7vCkcO/c8OERcOLw5VTdsOQXFx1MDAxNsO0bEZBw6FcXHUwMDAxw5RlXFx1MDAxM1xcYsKdIXZaUzlcXHUwMDFhwr/Ds1DDh8K5wrhvOnbCvFxcXCJEwpbCnlxcdTAwMWRcXHUwMDFlUlZcXHUwMDE5cm0/w7DCl1xcdTAwMTfCqsKJXFx1MDAxZsOow7jCnFxcdTAwMDY7XFx1MDAxN8K5XFxmw7PDoFxcdTAwMWFjwr5cXHUwMDFiw4zDmiRFPsKyT1xcdTAwMTjDt8O/XFx1MDAwMlBLXFx1MDAwN1xcYsOWwrvDqsKAR1xcdTAwMDZcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDE0XFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMDpcXHUwMDAwIFxcdTAwMDBndWlfaW50ZXJmYWNlcy9nZW5lcmFsL21lYXN1cmluZ190aHJlYWRpbmdfZ3VpX2hhcm1vbmljLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN8KiwrzCiGhBw7jCiWhBw7jCiWjCnVjDm8KOw5s2XFx1MDAxMH1cXHUwMDBmwpB/YMKVXFx1MDAxNznDscOKw7Zuw5FcXHUwMDA2XFx1MDAwNlxcXFzCoEjCk1xcXCLDgCZcXGLDkk3Du8KQXFxyXFx1MDAwNFrComx2JVIlwqk4wpsgw5/DlcO3fllnwqg7RW0uMmBbw6RwLsKcM1xcdTAwMTcyU8KyICk1w4zDsMKCXFx1MDAxMV7ClFLCmcOuw73DvsK9ZsOgby1Fw7fCosKrfcKpZMOCwrTDrsKGVMKSwpfCt8Odwps5KkZTLlxcdTAwMGXDvcOIwpDDmcKJw63CtUxuwpjCuX8vQ8OpXFx1MDAxZHkrw75cXG7CqFXDj1xcdTAwMWJWw6LCp8KVfsKrw7FcXHJ+wqLCksKaY8OEwoVmw4rChMOrJVxcdFbCr8OlXlxcdTAwMWHCnsOoX8OLMsOnXFx0NVxcXFzCilxcdTAwMTdUw5BcXHUwMDAzU8OBXFx1MDAwMlxcdTAwMTdZcUU9XFx1MDAxMilaw4TCuTxcXHUwMDFjQHBcXHUwMDA0wr9xM8OeKnEpXFx1MDAwZsONw5pafMKSU8Ktw4lcXHUwMDBiRnXCpWDDiVXCq8O0w69vwp5vw6/DnyPDsFxcdTAwMDRBXFx1MDAwMC/ChFxcdTAwMGLDg1RGXFx1MDAxM0Yqwo1Gw7XDplHCkcKSwqJlQF5fPcODwo3CplvDpMKOw6s1w4vCs0hcXHUwMDFiXFxuw5YswohgLMOVw4RIwrJnJMKhecOOUkJxZ1xcdTAwMTlhw4BFZsO2L1xcdTAwMTfDnFxcdTAwMDBHc8KUw6nCtcKowplcXFxcw4FwVcKiXFx1MDAwM8OjQ8OFQ8OkwrloSEY8w4HDisKcXFx1MDAxNVxcZnRNO8OtW0VSwpbCkThGw6ZxbDksw4lRasKzXFx1MDAwYk56wrtabcOOf8KOw5bDsMOZbMOPL8OWXFx1MDAxN8OBwpJkworDvcKzwrvCgMKhJTlJwpXCp8KxwqBcXHUwMDA1w5tcXHUwMDA1w4DChVbCuVxcdFxcdTAwMTbCncKBw7g8IE8/wrDCpELDl8KQRFxcbsKjZE7DnlPCpXtcXG7Cu1xccsKyMnHDiVxcdTAwMTRcXHUwMDA3wq13ZFxcdTAwMTPCrcOJw4rCilxcdTAwMTlywrJ0NMK5XFx1MDAwMcKCK1XCscOpRFxcZsOuXFx1MDAwNsO7XFx1MDAwNMKyeEZzw60jw4nCpWXDkMO5KMK6woTCgXAxwpHDg1NGw7M4wrlNclxcdTAwMDbDpMKPw5fDjsK0w4JZXFx1MDAwNHlcXGbCjjdSXFx1MDAwMcKNS8KCw6pXTCTCt3FcXHUwMDAxwpFcXHUwMDAzwrhcXHUwMDAywppPPcKNdcOBXlEuwoItw7hiw6nDjMKAL8K9w6PDimTDnsOxwqzDlMOew7HCnFxcdTAwMWF3w7zCs2sqw4DDl8KGTsKcw4hcXG7CscOsM8Kmw5QwesK2ccKGwoF7M8Osw65PJVxcdTAwMDRiwr51wpUzwo3DqMKCOcO8wpnDjMO1wpBcXHUwMDAyworDvmXCiMOVOmYsw5TCt0PCpD1cXHUwMDA3XFx1MDAwNHPCmsOzwo/DjMKGwp4lwrNxw7NcXHUwMDE3w5vDv2EzXFx1MDAxMElyXFx1MDAwZTHDkMO4wr9fw5vDo8Khwo7Ds1xcdTAwMTDCllxcdTAwMWXCmMOZwrXDhsOEXVxcdTAwMGVbQlxcZsKzQsKKXFx1MDAxZFxcdTAwMWHCtmjDg3fCjMO4WT0wXFx1MDAwNcK4wqJrXFx1MDAxMSbCi8OrwolcXHUwMDExOD3DisOAwp/DmEXDn8K3wqrDscKswoXCpl/CmVxcdTAwMWXCucOzKsKNYTZUwrBOeCxcXHUwMDA2wpHCscKGYMKMO3bDvcKab1XCmFxcdTAwMTdcXHUwMDE4P8OIwq1PwrAkw4TDpFxcdTAwMGJ5wqN5X8Ocw6HDjXltIcOOYsOMPcO1wpIlwqlTw5l4NFxcdTAwMTjDucO8XFx1MDAwZStqXFx1MDAwYsO6esOXwqDCrVxcdTAwMDfDrlxcYklcXHUwMDEzXFx1MDAwMMKfwo48Z8Kjw7jDmcKOXFx1MDAxNcK3U1xccsKCd8K9wpjCqMKDN8OUQcOHw5ZRw4gtXFx0XFx1MDAwNHnCk8KNesOzwrnCiF1cXHUwMDE4WMOrZmXDm8KAw4jCpGLDr8KZXFxuS1DDk2JcXHUwMDExw7Zrw7dSXFxuwrYkdsOIVsOFw7c0w5/CrVxcdTAwMTfDg8OQw7XDgXfCslxcdTAwMTFQwprCnkAmw6fCosKSwpXDjm/CsVxcdTAwMWUmXFx1MDAxNcOkXFx1MDAxYcKmLVxcdTAwMWFww73CmW1fw6rDtcKRLWVfwr3Ci8K4MsOSOWNleD5cXHUwMDAyID5cXHUwMDAwXFxyw4x0b8KDw4NHcHtgZMOJXFx1MDAxM8O8c8OGw6zCt8OBw7JcXHUwMDE3wqxsWlp9csOyw5XDp1xcdTAwMTXDoMOBw6jDoMOdwpjCpcKnVsOgPsK5wpLCjcK6w51OfXfCpFxcbsKAw4fCk8K4w6nDgGBxw5/CjkXCr2TDicKEw4fDo8KtJUvCiMKhXFx1MDAxNFxcdTAwMWQzXFxcXMOzw7zDlVM7w47ClFxcdTAwMWHCjsO/w7bDtMOPwpdvLi/Cp8OMJnvChMOPXFx1MDAwM8K7wo1qOsORQFxcdTAwMDFCXFx1MDAxZsKqfcKKw7puw7xEwrhcXHUwMDBmwrbDsVxcdTAwMGLCnSXDi8KJw5HDkVxccsOPw7PDhVxcZlxcdTAwMWJfKmlcXHUwMDFmXFx1MDAwMCnDicK5w4DDhsKJYMKZXFx1MDAwYifCnMOrw73DgXrCnlxcXCLDocKSw6zCg2DDocOxXFx1MDAwMz5IXFx1MDAxMMKnwqBkw4owJ8Oia1TCv8KGQWXCssKzw4fCgUdHfHhcXHUwMDA2woXDm0FBwoA6XFxyOcOOXFxiw4XCp8KgJjnCgkRcXHUwMDA1wrhlVCXDh1xcdTAwMTnCl8K3wo/CmkjDm17Dq8KHw6HDm8Orw7Q6esO3aFxcdTAwMDFcXHUwMDE4XFx1MDAxZVxcbsKew6c1Y05jwpLDlcOqXFx1MDAwZcKtwq0mU8OsZ8K5wqQmwrTCi8KjwoPCklVcXHUwMDE5blxcdTAwMTZ3XFxiw4JnXFx1MDAwZmxufMO+wq1cXHUwMDAxwpBQwpHCsHzCilxcdTAwMDDDtiFhwqXCgcO+XFx1MDAxM3/CsMO/wqTCmjDCj8OCJcK0w6cmw4zCgsKnSsOBTsKRT8OswrPDq8OIwoxcXHUwMDBiaMOJfcOxXFx0w7sww4FUKXPDkMKGcG3Do3xmwofCvFxcdTAwMTjCn8OaXFx1MDAwMMO8J3tcXGLCjMKFNHPDjMOnw7pTw5hqwpHChsOuw4TCklxcXFzCjMOyw7N8w7XDtmXDqcO6dFxcdTAwMDRpw5nClmvChsOxwo5cXHTCulvCg8OnXFx1MDAxNsKsw5LDtVxcdTAwMDHCpSbCsz0vwrHCncK1XFx1MDAxZWfDrlxcdTAwMTIqXFxuwofCjG/DtVxcdTAwMDPCjcObU2kkw6QpXFxcXHx/woZcXHUwMDFmTiXClVJQw4LCviTDgm5cXHUwMDA3XFx1MDAxNsOZXFx1MDAxMcO9w5lYw4UxecKBwrkuTE3ClMOSW01cXHUwMDFlwpLDs1xcdTAwMWbDocOrwqd1w73DtVxcYsK4RU1+W8OAw5Bmwr1uXFx1MDAwNlxcdTAwMGLCnijDmSbDi8KVwp3CiMOWY8OOw67CvlxcZnVydMKow73CkXZcXHUwMDA3XFx1MDAxN0/CoihQw4xMw6NcXHUwMDBmaMKbwpnDucKFwqxcXHTCgyNcXHUwMDE1cXTDs3VcXHRfOFDDoGNBw5Bjw4vCr2nCjVjCu1Urw4fCtCXDmSxsXFx1MDAwZVxcdTAwMWFcXHUwMDFiw7zDg8Ouw6vDlMOEwrZnKHwkw4k9w7/CoSzCj8KVX3HCvsODwqc7w6M5Ji89wqTDtcKhb8KkwpzCj8KsPlxcdTAwMDN6w6PDnEdeXFx1MDAxZlxccsObY8Kcwo/Coj4kwrYnOsKHw6LCs1xcdTAwMGLCscOWWMK8I8KKw5LCqih1w6jDn8KQSTLCqy88MMKrXFx1MDAxOFxcdTAwMTnDl8K9ZMOow5I+IMKvwppOwofCi0RcXHUwMDE2w5jDrzckw7YmXFx1MDAwM8OTXFx1MDAwYmTClEFDOcOsYMKbw4vCi1xcdTAwMTPDtFxcdTAwMTAtw5/CrXvDhFxcdTAwMDBcXHUwMDE2wpBAXFx1MDAxM8Kqw4HCscK9XFxifcOAMVxcdTAwMDFcXHIyw7TCm3s4fyQ3woMrXFxuLMOgMGJrdsODw5hJOSduwo7Do1vChsK5w5TDrMK7w4FwXFx0woY3XFx1MDAxOWNKXFx1MDAwNMK3w4PCucK/wrjDgmstw7xhWMOIw4LDoMKNw5BVwol3W8OQwq7CgMKBw4Eow5HCu3dGw6PDhMO+SsKxwpLCqsKmw5/DhksrwpvCusOxXsKqw4nDsFDDosOkwql2wo7CvWpcXHUwMDFhw5xVwoHCl8OQw4fDkHBtw5tLKnzDvsO7wpc4wq5Hwr7Ci8KRw5hBLcKgWk8hXFx1MDAwMcKtwprCi8KJw6ZGw5HCg8KKw75cXHUwMDAww7dcXHUwMDFkJy3DrCnDm3xrXFx1MDAwYlxcdTAwMDR+wrlcXHUwMDE1YibDmz3Csj3Dr8KYw7RcXHUwMDAxeXJkw6B5QFxcdTAwMTIlwoLCncKgeyrCiT7DiipPXFx1MDAxMW7CujsmflxcdTAwMTPCoMOafE3CvcKzwp3CilxcdTAwMDNfw493wqhcXHUwMDEzw6zDncORw5pcXHLCgMOcXFxcXMK0wrnDlsK+woBkZ8Kww5DCp0xzSMOQw4RzXFx1MDAwYsKAXFx1MDAwZsOLacKpbTs9w5hlKMK0wr1cXHUwMDAzwpwtw4fCqsOeOsKmwqBcXHUwMDFmw7BcXHUwMDFlw5jCvUA8a8K5OsOGXFx1MDAwZcOawoLCnsONKChcXHUwMDFjwoDDlsOZXFx1MDAwNEJnwojCnXbCq2pcXHUwMDFhwrfDs8OwXFx1MDAxZcOiwoZnZ1xcdTAwMTRcXHUwMDExXFxcIsOLw6/Dq1XCp8OBw45FJsObw6bCtcK7XFxcImnCk1TDm8OMw75cXHUwMDBmUEtcXHUwMDA3XFxiw61cXHUwMDAxXFx1MDAxZmE+XFx1MDAwN1xcdTAwMDBcXHUwMDAww7ZcXHUwMDE3XFx1MDAwMFxcdTAwMDBQS1xcdTAwMDNcXHUwMDA0XFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMDhcXHUwMDAwIFxcdTAwMDBndWlfaW50ZXJmYWNlcy9nZW5lcmFsL21lYXN1cmluZ190aHJlYWRpbmdfZ3VpX25vX3NpbS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDfCosK8wohoQcO4woloQcO4wolowp1Xw5vCjsObNlxcdTAwMTB9X2DDv8KBVV7CpMOGw5F6d8KLwrYww6BcXHUwMDAyRcKRXFx1MDAxNFxcdTAwMDHCklxcXCJIN8OoS1xcdTAwMDHCgSvCjWw2XFx1MDAxMsKpwpJUXFx1MDAxYyfDiHfDtcK9X8OWXFx1MDAxOVJXWsOOJsOVXFx1MDAwMsOWajhcXHUwMDFjw47DpcOMwoXCpVY1K8K4XFx1MDAwNStqYMKibsKUwrbDg8O3w6VFR8O4w4soOXzCmMO2wr7DkSpcXHUwMDA3Y1xcdTAwMDbCksOOwqvDpjh8w5nCvVxcdTAwMDZeXFxiwrlcXHUwMDFiKVNhXFx1MDAwN8K4Nyp/XFx1MDAwYsO2w7JiwpR5NMO0woXCr8K0w6F2wp9cXG5pQMObeMK9YsORw5VrdcKvwqzDiMONw49NU8KJwpxbwqHDpEsuw7lcXHUwMDBldMKUw5DCpsKSTMKoPSXDlcK8w44qwrXDm8Ohw6kpwr7Cs8KOw55bw7ZCw63CusK9wrTDs8OyXFxcIsKvwrgxw6wlcMOTasOccsOXa8O+w6vCm8OnwpvDi1xcdTAwMGLChk9cXHUwMDE0RcO4w4HChMK0wqBLwp5cXHUwMDAza1xccsKuwo82Mi5cXHUwMDBiVsO3XFx1MDAwMsOYw6vCu2fDpD7CviHDqcK0w59AVcKmw4ZywrQmYVxcdTAwMTLCoDDDjCp2XFx1MDAwZizDp1VcXHUwMDA1XFx1MDAwNcOjw6QvYMKAUlTDqcO+XFx1MDAxNVJYwpRow7fCqsO4U3ohd0huXFx1MDAxYlxcbkvCtmtFTDLCk8KOZSZcXHUwMDEzwq3CrMKgXFx1MDAwNsOUwrVcXHUwMDE4wrTDr1xcdTAwMTUpwqBkWUbDgsKzw4xJWMKxwr0ydlxcdTAwMWJcXHUwMDFkw4zDpsOqw6rDusOmwod0wo1/w5fCm8Kbw5vDtW3CtGLCpcKGwr/Ct8K3SEpcXHUwMDA2U8OoecOEwp7CvsKHwrzCpSDCsFxcXFxJwqtVw4XDnnFtRlxcdTAwMGVnwrBqbcOWwoBcXHUwMDE2wqjDn8KWXcKna3bDpVxcdTAwMDROJTk+wp7Cv0XChjvDncOCw6lCwobCgUVLJMKJeMOGK8Kzw4RSKSdgwohGw7pcXHUwMDAyXFx0cXJywo4owoBXWX7DjCtAw7ZcXHUwMDFmw5fDgcKywqZVXFx1MDAwMmnChiHCtkojw4/Ck8OrwoDCh8O0b0HDpsOHwqxGw6gjwoTCkMOpw6PDiMOjwrx9wq/CucKQw5FcXHUwMDA2w53CvlxcblYwbMKLdG3Di0V6w5nCmEV6w4VtSMO/XFx1MDAxNMOawopIdVnCksOlwqolw5jCosKiwqHDgSh+woHCisOCPTV0TyslwoHCu8KPVMKwTDDDgjV6TcOBw6ZBw6/CsMK6wplcXHUwMDAyw6g5QlDDsEp8XFx1MDAwMMKXO8KOw41cXHUwMDAxw79cXHUwMDBmwrjDv8OdXFx1MDAxNVxcdTAwMDbClldcXHUwMDAyQcOcwoV1w5w7wobDmSdqwoxbd2DCt8K9wpLDmVBaVsKYwoRQK8K5JcKFwpM+w7/DpkA+wqvDh8KzPsOSJ1xcblxcdTAwMDRAw7DDizPDvHXCisONwqM2VcOTwpdcXG7DiMOww4jDjCDCuMKzQcOcwrjDp2tcXHUwMDE1XFx1MDAxNjXDgcKRwqTCjcKlwonDhVTCtjBcXHUwMDBmwrvDr8OkM248wq8tw4I2wqNcXFxcw7ZbVkzDslxcdTAwMWHCtsORwpxcXHUwMDFhw43CnMO9XFx1MDAxOSvCvFxcdTAwMDVjw73Dr8OCPFxcXCJmXFx1MDAxNsOCXFx1MDAxM8OkXFx1MDAxY8O2wqLCglxcdTAwMTkgN3PDhcOdUlxcdTAwMDfCncOteEw6w6BcXG47SGDDq1xcZsODK8KGOcOTJcO3aMK+wpBZXFxiXFx1MDAwM2fDncOZwrNcXHUwMDFkXFx1MDAxMkvCpcOhXFx1MDAxZMOowrhBNV1lQX9tf1NcXHUwMDEyVsOMwpFcXFxcP3nDh8Krw606wpnDpsOMeXTCnMK4XFx1MDAwM0vCu8OvW2A8XFx1MDAxY8KQw504OFxcZnvCqMKjXFx1MDAxMFxcbnzDq8OwbMKuRDFXXFx0TcOqw5pDL8KwQcKNwoVqwo1TXFx1MDAxN1xcdTAwMWTDmE9cXHUwMDAxwqlUwoc4w7nCijjCuE3CplxcdTAwMDJow6LCm8OATXnCqzXCusOowqEjwpw7KMKIM8O+J3NcXHUwMDE1w6fDrDVcXHUwMDE1wrTCuMKwacOBwo/Chn3Di27CvsODwp/Dr8OXw77DpzFKS1xccmDDgypMwoLCpMOrw7XCuiPDllxcXCLDl8KqW8OBJkVcXHUwMDBiw6l6LjnDtMOLVMKnQFxcdTAwMDdcXHUwMDFmwo9iaDRcXHUwMDBiaMKrw6nCmDN1WsKUw6dWfmJrXFx1MDAwNsOYXFx1MDAwMsOZw7phXFx1MDAxND5Qw7/DqXEgXFx1MDAxOMKxwrXCrMKpw4bDnUXDrFxcXFx1XFx1MDAxNcKYwrZiw5dcXHRpXFx1MDAxYlxcdTAwMTjDvMONw7bDi8OUwqTCtMKaXFx1MDAxZT47KcOsw5d0w5bCgsKVX8OQwo7DqVxcdTAwMTlacmDDsmrCgcOVw7fDqMKZcktswr5lL8OOXFxyS8Oswr7Ck8O3XXfCicODw7fDtMK+XFx1MDAwM1xcdTAwMDdcXHUwMDFjwp9CwojDtcOGw5JMwp5cXHUwMDE2bcOdwph4w5khwrPDrjHDuMONVVxcdTAwMTXCqzJfwqvDosKQw7dcXHUwMDExe8OlZ3tcXHUwMDFjQ3NVUz/DqVjDnMKMScOlXFx1MDAwNSvDiljCsGZcXHUwMDE1wrJcXHUwMDFiK1xcdTAwMGZmw5VvXFxuwofDh8OnXFx1MDAxMkVcXGLCg8ODwq/DgcOAwo5HwphcXHUwMDFkw5EkXFx1MDAxNsOgw6pIwoMsw452wpPCkVxcdTAwMTLCkVxcdTAwMTYhJcOCXFxywr3DoMKgw6RcXHUwMDFjwoTDncOPwqfDgsONwqnCo8OPTsKcIcODdMOywpxzXFx1MDAxMsK4XFx1MDAwM8OJw6PClcKCLlxcdTAwMWPDtFxcdTAwMDLCrcKVwo7CozfDksK0XFxyw506cMOKR1xcdTAwMDPCo1nCoVxcdTAwMGbCp8O5eWF/wqXCocOhVMOYw4nDn3TCnXDCpcKbblxcZl3ChVdVwqVcXHUwMDBlPjjDrlxcdTAwMTIwwrlFYMKUKMOGTMOYTX99wqDDp8Off1hcXHUwMDEwesKSwpvDjMKOwp3DtFxcdTAwMDJuw4wpJMKwwofChcKYcMKXwq9FVMKMXFx1MDAwM8OCw7/DqMOkNDjDtMO1w5Y1XFxiw7pcXHQ7w4TCmWrDt1xcdTAwMThvXFx1MDAxYyHDtFxcdTAwMWbCsV/DtsKAwpFHJHHCvDFcXHUwMDFkw7DCvsOYMMKzV21VXFx1MDAxMMOcw4wwwoZ8XFx1MDAxNcKgw7p6w41cXHUwMDE3V1xcdTAwMDdcXHUwMDE1J8KxTsKWw5kmwoJcXHUwMDA2w6zCncKROEjDtUDDri5GwqHCtS/CscOYWWrDtFxcdTAwMDVcXHUwMDE4woFcXHUwMDA1wpotTMKZw7RAw4VcXHUwMDFiXFx1MDAwM8OFw5zDi8OYaMOHXFx1MDAwMFxcdTAwMDQuwqfCrsOeXFx1MDAwN8Kmw6bDr8OpwoZcXHUwMDFlXsO4wp7DtFJcXHUwMDAzYydjw4EoZsKWXFx1MDAxNFxcdTAwMDFAfTXDgcOUwpliwqd3wpXDp1xcdCdcXHUwMDBmfTzCl8O3w51sRkfDhCQyw7DDg8O7XFx1MDAxY1xcdTAwMWHCi3dbesORw53CllxcdTAwMWJcXHUwMDE2Jjo9wqfDiS5kwqnDojJ6Sjk/wozDoH3CkWJcXHUwMDFmw6FcXHUwMDEzw6XDvX9QS1xcdTAwMDdcXGIsQizDp8KEXFx1MDAwNVxcdTAwMDBcXHUwMDAwZlxcdTAwMTFcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCdcXHUwMDAwIFxcdTAwMDBndWlfaW50ZXJmYWNlcy9nZW5lcmFsL3RocmVhZGluZ19ndWkucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcclxcdTAwMDBcXHUwMDA3ScKJaWhBw7jCiWhBw7jCiWjCnVbDjW7DpDZcXGbCvlxcdTAwMDfDiDtcXGLDrsOFXFx1MDAwNmbCnUlyKDDDgFxcdTAwMWPCimJbXFx1MDAwNMOYbVxcdTAwMTfDmWx7KWAoNj0jRMKWXFxcXEnDjmRaw6xzw7XDnicrKcO/SjNTwqB1wpAowqYoworDvMO4wpHCtGhabVxcdTAwMWMzwqVswo/Dl1fCon9ze1xcdTAwMDPCvFxcdTAwMTJqN0tEXFx1MDAwM8OTw4tcXHUwMDAxwp7CrS5fw4BdX00ye8K0w7TChkvDnnLCt8OPwoXCsmBcXFxcwrpewrHDpMOmUT9rJ0rDu13Dm0pRcifCtMO6w4hcXHUwMDE1w5/CgUkyOlRcXHUwMDFiw53CsMKmwpfDpMKGN8KFw5TCu1xcdTAwMWTDnsKew6NaXFxmcjbDnMOzQcOvwobCs3TDssO6wqrClMOcWsO2NDrDvMOjwpfCh8ONw7VcXHUwMDE1w4MnSVxcdTAwMTJ8YUI5MDUvwoF1XFx1MDAxNsO3w6fDkDZ0wppcXHUwMDE0LcOIOsK3wo7Co8K3XFx1MDAxOVNcXHUwMDAwwpVlTsKzZ2AlwpdcXHUwMDEyKsOGXFx0XFx1MDAwZmDCoCrCpmvDv8KvUMOCwrFcXHUwMDA2w5xeV8K/wqnDnsOIXFx1MDAxM8KKwrvCtsOiXFx1MDAwZcKKXSdSwrLCmVxccirCgU3CjEJCXFx1MDAwM8OoVDXCuTk6UkHDjcKKwoLCjFxcdTAwMTfChcK3wrBie23DnTY5w5jDjcONw43DrcOdwrfDuVxcdTAwMWF/bjd3w7fDq8O7ZMOFalxcdTAwMDPCv2/Dr1HClE3CocOQw7NcXHJ7w7zDuTPCu8OzTsOOUlEzwqXChzTDp8O6JcONNsOzXFx1MDAxZT3DvVxcdTAwMDbCnUnCs8OQw5rDuzcoO0pcXHUwMDE5K8K1ckZLw7bDisKNwp01PHzCunNFXFx1MDAwYkZgwrRbdsKbwq/DmcKNd29pw4nDq8Oxw7JcXHUwMDA1XFx1MDAxNcKeTFxcdTAwMDfCp1xcdTAwMWJcXHUwMDA1w5JcXHUwMDAwcVFkw6JcXHUwMDA3LsOtOVxcdTAwMTXCqcK9woEpwonDuVxcdTAwMDdcXHUwMDE0w4RcXHUwMDFle8OtUlxcbkRcXHUwMDE5dVxcdTAwMWbDucOhXFx1MDAxNy47SMOLw6JVwovCqmhXw6wnwq0gO8Oxw410SlxcdTAwMTFDRsO/wqJtSlxcdTAwMDXDrsORXFx1MDAxMsOtKF1cXHUwMDAxw67DtFxcdTAwMTDClsOoXFx1MDAxOcKSwoBkaUJ/wpNswpnDn8KeZ8KeXFx1MDAxZcKbwqXDj1xcdTAwMGbCiMK8w6BSw7xcXHUwMDAxwowjXFx1MDAwMl7DjXPDrVd4w77DrGvCjVxcclxcdTAwMTHDtcKxw49nZyzDulxcXCJIw7HDqFxcdTAwMGXDnHbCjMKpwpjCqnXDhSpcXHUwMDBlwo1WW8KKL1xcdTAwMWIpXFx1MDAxZmJ3w5FcXHUwMDBmw5Fgw41hwrzCqsKawqvCiMKlVGHCmMO7w6E9w7tcXHUwMDE3wq9CwrotfcOEeinCiD/DvcKRXFx1MDAxNVPCvMKBbVxcdTAwMTJKwpPDgMO3w5nDlklcXHUwMDE0fVxcdTAwMDRzwodcXHUwMDFhUMKbXFx1MDAxM1xcdTAwMTAgcsKSwojDg15IXFxiw6hcXHUwMDEww5VJw4jCrcOJUD7CpVxcdHtcXFxcXFx1MDAxNGvDgMKgXFx1MDAxNcOTwqpow4BaRHNcXHUwMDBlX8KoXFxcIk7Cq8KPw67DosOdPsKxwrU2w7BcXG4mbcORw43CglxcdTAwMWE0w6LCtSVuwq/CmFxcdTAwMTfDucOWw7fDisOldsK9woDDp8KTw5ElXsKPw63CocOUXFxywqVycMOGNyhKNMKmdEYrcG7DqElcXHUwMDA3wrtcXHUwMDFhXFx1MDAwZsOFwp3Dp0HCoVxcdGHCsXNadGLCvsOCw65IwqYwdnnCpC7CiMKlbMKDw57ClMKgJMOBXFx1MDAwM8Kjw6FcXGLDtcKDcMO7wrBcXHRsLmB8wq7DgcOEXFxuw4tGXFx1MDAxM2pcXHUwMDAydsKdw4jDsjxvaFxcdTAwMWHDkVxcdTAwMDLDhmjCkyZfwpTDrVpcXHUwMDFhSThcXFwiMMOAwrDDjMOjUcKwMMKKXFxyw7/Ck8KBwpZcXHUwMDFiwoJcXHUwMDFjw7FGRcOua8KNw4ZNL8KqwrXClMO6w5Anw4dPwpDDhVxcYsOCLFFcXHUwMDExMsOhNsOjw6zCocOnw6/Cv8K8wrhwwrrDqFxcdTAwMTnCksKSw50swrh2fmlxZsKeUlxcdTAwMDLDqVxcdTAwMTNzw4JPw6bCs8Kswphrw7N/XFx1MDAxNFxcdTAwMTHDlcKsZyzDtXJcXFxccsO6XFx1MDAxM8K2wqLDnsK1w6/Dt8KAXFx0RcKCcMKcwqJcXHUwMDA3w7xGaMKZw53Dq05Ww4RcXFwiO1xcdTAwMTXDtn/DolxcdFpcXHUwMDFiVcOOw6xORFnCpDA7wq/CtjA0UcOqwoLDhcOJasOPw49hwrzDhcORfsOkWMKyw7jCiyBbYcKQVzRDO1DDpTHDlFxcdTAwMDTDiVtcXHUwMDBiVVxcYlxcdTAwMWV7wrfDgDXDgltcXHUwMDAywrQjw55cXHJ/wqPCr8KyeGzCv1xcdTAwMWLCrUbDgcO6XFx1MDAxYsK8woF0NlxcdTAwMTPCjsK0wpB3fcKTw4DCilhSYsKEwqrDl8KJQHLDpnjCqcKcwoduR1fCpGQyw4LDocKtwoTDlsOhXFx1MDAxN1xcbi3DtMKFw4ItwovDq8KXwp7Dk1xcdTAwMWFcXHUwMDE2wqrDlmnCncK8wqdSwp7ChsOaw5h7w5jCn8OwwpXDisO5XFx1MDAxZlBLXFx1MDAwN1xcYjI5woBcXHRcXHUwMDBmXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAxYlxcdTAwMGJcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDrm3DvlpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDE4XFx1MDAwMCBcXHUwMDAwZ3VpX2ludGVyZmFjZXMvc3BlY2lmaWMvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0HDuMKJaEbDuMKJaEHDuMKJaFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwIFxcdTAwMDBndWlfaW50ZXJmYWNlcy9zcGVjaWZpYy9yZWFkbWUudHh0dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHJcXHUwMDAwXFx1MDAwN0nCiWloQcO4woloQcO4woloTcKMw5FcXHTCgDBcXGZcXHUwMDA1V3lcXHUwMDAzwohjwrhHSF9pw4EmJS3DqMO4XFx1MDAxNj/DhMOPw6PCjjs8MDrCtcOmwqpQb8Odwo02XFx1MDAwNzxDXFxmwrxcXHUwMDE5WlxcdTAwMDc3aFAmIcOIfiZcXHUwMDA2wq46XFx1MDAwYmbDocKXw4DCpC1vXFx0wpLDkmt+wrfChcOBXFx1MDAxZFxcdTAwMGZQS1xcdTAwMDdcXGLDlcKeQWJPXFx1MDAwMFxcdTAwMDBcXHUwMDAwbVxcdTAwMDBcXHUwMDAwXFx1MDAwMFBLXFx1MDAwM1xcdTAwMDRcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMWFcXHUwMDAwIFxcdTAwMDBndWlfaW50ZXJmYWNlcy9fX2luaXRfXy5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFxyXFx1MDAwMFxcdTAwMDdJwolpaEHDuMKJaEHDuMKJaFxcdTAwMDNcXHUwMDAwUEtcXHUwMDA3XFxiXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDJcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww6xtw75aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxM1xcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww79BXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMGNvbnNvbGVfaW50ZXJmYWNlcy91eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMTzDuMKJaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMOsbcO+WlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMWJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMO/QVFcXHUwMDAwXFx1MDAwMFxcdTAwMDBjb25zb2xlX2ludGVyZmFjZXMvZ2VuZXJhbC91eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMTzDuMKJaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCrsK6w6Vaw5M0TMOPw5tcXHUwMDAwXFx1MDAwMFxcdTAwMDDDrVxcdTAwMDFcXHUwMDAwXFx1MDAwMCVcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woHCqlxcdTAwMDBcXHUwMDAwXFx1MDAwMGNvbnNvbGVfaW50ZXJmYWNlcy9nZW5lcmFsL2NvbnNvbGUucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMUnCiWloUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww6xtw75aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxY1xcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww79Bw7hcXHUwMDAxXFx1MDAwMFxcdTAwMDBjb25zb2xlX2ludGVyZmFjZXMvc3BlY2lmaWMvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDE8w7jCiWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWsOVwp5BYk9cXHUwMDAwXFx1MDAwMFxcdTAwMDBtXFx1MDAwMFxcdTAwMDBcXHUwMDAwJlxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwrbCgVJcXHUwMDAyXFx1MDAwMFxcdTAwMDBjb25zb2xlX2ludGVyZmFjZXMvc3BlY2lmaWMvcmVhZG1lLnR4dHV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAyXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMWVcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woFcXHUwMDE1XFx1MDAwM1xcdTAwMDBcXHUwMDAwY29uc29sZV9pbnRlcmZhY2VzL19faW5pdF9fLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDFJwolpaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMKuwrrDpVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDBmXFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDv0HCg1xcdTAwMDNcXHUwMDAwXFx1MDAwMGhhbF9pbnRlcmZhY2VzL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCmXrDvVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDE3XFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDv0HDkFxcdTAwMDNcXHUwMDAwXFx1MDAwMGhhbF9pbnRlcmZhY2VzL2dlbmVyYWwvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDHCosK8wohoUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WlxcdTAwMGXCs8OaXFx1MDAxZcKHXFx1MDAwMlxcdTAwMDBcXHUwMDAwZlxcdTAwMDdcXHUwMDAwXFx1MDAwMCBcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woElXFx1MDAwNFxcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvZ2VuZXJhbC9idW1wZXIucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMcKiwrzCiGhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71awrVyJUw1XFx1MDAwM1xcdTAwMDBcXHUwMDAwWlxcYlxcdTAwMDBcXHUwMDAwIFxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwrbCgVxcdTAwMWFcXHUwMDA3XFx1MDAwMFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL2NhbWVyYS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxwqLCvMKIaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCrsK6w6Vaw73DrTTCjkBcXHUwMDA3XFx1MDAwMFxcdTAwMDDChFxcdTAwMTVcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woHCvVxcblxcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvZ2VuZXJhbC9jbGFzc25ldC5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwq7CusOlWsO9w600wo5AXFx1MDAwN1xcdTAwMDBcXHUwMDAwwoRcXHUwMDE1XFx1MDAwMFxcdTAwMDArXFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCtsKBbVxcdTAwMTJcXHUwMDAwXFx1MDAwMGhhbF9pbnRlcmZhY2VzL2dlbmVyYWwvZGV0ZWN0aW9uX25ldHdvcmsucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMUnCiWloUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WsO7IcK3eMOrXFx1MDAwMlxcdTAwMDBcXHUwMDAwflxcdFxcdTAwMDBcXHUwMDAwXFx1MDAxZlxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwrbCgSZcXHUwMDFhXFx1MDAwMFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL2xhc2VyLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDHCosK8wohoUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKZesO9WsOMw6VxZ1xcdTAwMTFcXHUwMDAxXFx1MDAwMFxcdTAwMDA7XFx1MDAwMlxcdTAwMDBcXHUwMDAwIFxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwrbCgX5cXHUwMDFkXFx1MDAwMFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9nZW5lcmFsL21vdG9ycy5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxwqLCvMKIaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCmXrDvVrDgzxNN8O/XFx1MDAwNlxcdTAwMDBcXHUwMDAwXFx1MDAwYlxcdTAwMWNcXHUwMDAwXFx1MDAwMChcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woHDvVxcdTAwMWVcXHUwMDAwXFx1MDAwMGhhbF9pbnRlcmZhY2VzL2dlbmVyYWwvbm9pc2Vfb2RvbWV0cnkucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMcKiwrzCiGhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aJCVxXFx1MDAxZDNcXHUwMDA0XFx1MDAwMFxcdTAwMDDCs1xcdTAwMGVcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woFyJlxcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvZ2VuZXJhbC9vZG9tZXRyeS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxwqLCvMKIaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCmXrDvVrCvlxcdTAwMDVcXHUwMDA1wrlVXFx1MDAwMlxcdTAwMDBcXHUwMDAwQ1xcdTAwMDZcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woFcXHUwMDE1K1xcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvZ2VuZXJhbC9zaW1fdGltZS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxwqLCvMKIaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMKuwrrDpVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDv0HDmi1cXHUwMDAwXFx1MDAwMGhhbF9pbnRlcmZhY2VzL3NwZWNpZmljL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCmXrDvVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDApXFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDv0EwLlxcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvc3BlY2lmaWMvYW1hem9uX3dhcmVob3VzZS91eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMcKiwrzCiGhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71awpBcXFxcw6rDlMO2XFx1MDAwM1xcdTAwMDBcXHUwMDAwLlxcclxcdTAwMDBcXHUwMDAwP1xcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwrbCgcKXLlxcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvc3BlY2lmaWMvYW1hem9uX3dhcmVob3VzZS9wbGF0Zm9ybV9jb250cm9sbGVyLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDHCosK8wohoUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKuwrrDpVrDlcKeQWJPXFx1MDAwMFxcdTAwMDBcXHUwMDAwbVxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woFcXHUwMDFhM1xcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvc3BlY2lmaWMvcmVhZG1lLnR4dHV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCrsK6w6VaXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwLlxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww79Bw5kzXFx1MDAwMFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9zcGVjaWZpYy90aHJlZWRfcmVjb25zdHJ1Y3Rpb24vdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDFJwolpaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCrsK6w6VaJ1LCicOBwqlcXHUwMDA0XFx1MDAwMFxcdTAwMDDCmlxcdTAwMTRcXHUwMDAwXFx1MDAwMEJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woFFNFxcdTAwMDBcXHUwMDAwaGFsX2ludGVyZmFjZXMvc3BlY2lmaWMvdGhyZWVkX3JlY29uc3RydWN0aW9uL3BhcmFtZXRlcnNfY2FtZXJhLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDFJwolpaFBLXFx1MDAwMVxcdTAwMDJcXHUwMDE0XFx1MDAwM1xcdTAwMTRcXHUwMDAwXFxiXFx1MDAwMFxcYlxcdTAwMDDCrsK6w6VaXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDJcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxYVxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwwrbCgX45XFx1MDAwMFxcdTAwMDBoYWxfaW50ZXJmYWNlcy9fX2luaXRfXy5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDrm3DvlpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDBmXFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDv0HDqDlcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxQcO4woloUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww65tw75aXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAxN1xcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAww79BNTpcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvdXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDFBw7jCiWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aw5bCu8OqwoBHXFx1MDAwNlxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMTRcXHUwMDAwXFx1MDAwMDFcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woHCijpcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvbWVhc3VyaW5nX3RocmVhZGluZ19ndWkucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMcKiwrzCiGhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aw61cXHUwMDAxXFx1MDAxZmE+XFx1MDAwN1xcdTAwMDBcXHUwMDAww7ZcXHUwMDE3XFx1MDAwMFxcdTAwMDA6XFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCtsKBUEFcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvbWVhc3VyaW5nX3RocmVhZGluZ19ndWlfaGFybW9uaWMucHl1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMcKiwrzCiGhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcYlxcdTAwMDBcXGJcXHUwMDAwwpl6w71aLEIsw6fChFxcdTAwMDVcXHUwMDAwXFx1MDAwMGZcXHUwMDExXFx1MDAwMFxcdTAwMDA4XFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCtsKBXFx1MDAxNklcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvbWVhc3VyaW5nX3RocmVhZGluZ19ndWlfbm9fc2ltLnB5dXhcXHUwMDBiXFx1MDAwMFxcdTAwMDFcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwVVRcXHUwMDA1XFx1MDAwMFxcdTAwMDHCosK8wohoUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKuwrrDpVoyOcKAXFx0XFx1MDAwZlxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMWJcXHUwMDBiXFx1MDAwMFxcdTAwMDAnXFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCtsKBIE9cXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL2dlbmVyYWwvdGhyZWFkaW5nX2d1aS5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDFcXHUwMDAyXFx1MDAxNFxcdTAwMDNcXHUwMDE0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDrm3DvlpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDE4XFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDDv0HCpFNcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL3NwZWNpZmljL3V4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxQcO4woloUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKuwrrDpVrDlcKeQWJPXFx1MDAwMFxcdTAwMDBcXHUwMDAwbVxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcXCJcXHUwMDAwXFx1MDAxOFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMMK2woHDulNcXHUwMDAwXFx1MDAwMGd1aV9pbnRlcmZhY2VzL3NwZWNpZmljL3JlYWRtZS50eHR1eFxcdTAwMGJcXHUwMDAwXFx1MDAwMVxcdTAwMDRcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBVVFxcdTAwMDVcXHUwMDAwXFx1MDAwMUnCiWloUEtcXHUwMDAxXFx1MDAwMlxcdTAwMTRcXHUwMDAzXFx1MDAxNFxcdTAwMDBcXGJcXHUwMDAwXFxiXFx1MDAwMMKuwrrDpVpcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMlxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDFhXFx1MDAwMFxcdTAwMThcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDDCtsKBwrlUXFx1MDAwMFxcdTAwMDBndWlfaW50ZXJmYWNlcy9fX2luaXRfXy5weXV4XFx1MDAwYlxcdTAwMDBcXHUwMDAxXFx1MDAwNFxcdTAwMDBcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDA0XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMFVUXFx1MDAwNVxcdTAwMDBcXHUwMDAxScKJaWhQS1xcdTAwMDVcXHUwMDA2XFx1MDAwMFxcdTAwMDBcXHUwMDAwXFx1MDAwMCFcXHUwMDAwIVxcdTAwMDDCh1xcclxcdTAwMDBcXHUwMDAwI1VcXHUwMDAwXFx1MDAwMFxcdTAwMDBcXHUwMDAwXCIiXSwibmFtZXMiOlsiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsInByb3RvdHlwZSIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiaSIsIlN5bWJvbCIsImEiLCJpdGVyYXRvciIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsIl90eXBlb2YiLCJyZXNvbHZlIiwiX19hd2FpdCIsInRoZW4iLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsIkVycm9yIiwiZG9uZSIsIm1ldGhvZCIsImRlbGVnYXRlIiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwiVHlwZUVycm9yIiwicmVzdWx0TmFtZSIsIm5leHQiLCJuZXh0TG9jIiwicHVzaFRyeUVudHJ5IiwidHJ5TG9jIiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiYWZ0ZXJMb2MiLCJ0cnlFbnRyaWVzIiwicHVzaCIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImxlbmd0aCIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfbmV4dCIsIl90aHJvdyIsIl9zbGljZWRUb0FycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsInByb3BzIiwiX3VzZVN0YXRlMiIsInVzZVN0YXRlIiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU0IiwiYXBwbGljYXRpb25SdW5uaW5nIiwic2V0QXBwbGljYXRpb25SdW5uaW5nIiwiX3VzZVN0YXRlNiIsImFwcGxpY2F0aW9uUGF1c2VkIiwic2V0QXBwbGljYXRpb25QYXVzZWQiLCJfdXNlU3RhdGU4IiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsIl91c2VTdGF0ZTEwIiwiZWRpdG9yQ2hhbmdlZCIsInNldEVkaXRvckNoYW5nZWQiLCJjb21tc01hbmFnZXIiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbmZpZyIsIkpTT04iLCJwYXJzZSIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJ0ZXh0Q29udGVudCIsInVzZUVmZmVjdCIsImNhbGxiYWNrIiwibWVzc2FnZSIsInN0YXRlIiwiZGF0YSIsInN1YnNjcmliZSIsImV2ZW50cyIsIlNUQVRFX0NIQU5HRUQiLCJ1bnN1YnNjcmliZSIsIlJlYWN0IiwiUm9ib3RpY3NSZWFjdENvbXBvbmVudHMiLCJDb2RlRWRpdG9yIiwiT25FZGl0b3JDb2RlQ2hhbmdlZCIsInBsYXkiLCJfcmVmIiwiX2NhbGxlZSIsImVkaXRvckNvZGUiLCJfY29udGV4dCIsImdldENvZGUiLCJydW5Db2RlIiwicmVzdW1lIiwiX3JlZjIiLCJfY2FsbGVlMyIsImNvZGUiLCJlcnJvck1lc3NhZ2UiLCJzZXJ2ZXJCYXNlIiwicmVxdWVzdFVybCIsInppcCIsImNvbW1vbnNaaXAiLCJyZXNwb25zZSIsIm1vZGVsQnVmZmVyIiwicmVhZGVyIiwiX2NvbnRleHQzIiwiY29uY2F0IiwibG9jYXRpb24iLCJwcm90b2NvbCIsImhvc3RuYW1lIiwiZXhlcmNpc2VfaWQiLCJKU1ppcCIsImxvYWRBc3luYyIsImNvbW1vbnMiLCJjb25zb2xlIiwibG9nIiwiZmV0Y2giLCJoZWFkZXJzIiwib2siLCJlcnJvciIsImpzb24iLCJmaWxlcyIsImZpbGUiLCJjb250ZW50IiwiRGVlcExlYXJuaW5nTW9kZWwiLCJnZXRNb2RlbEJ1ZmZlciIsIndhcm4iLCJGaWxlUmVhZGVyIiwib25sb2FkZW5kIiwiX2NhbGxlZTIiLCJiYXNlNjRkYXRhIiwiX2NvbnRleHQyIiwicmVzdWx0IiwicnVuIiwiZW50cnlwb2ludCIsImxpbnRlciIsInQwIiwiTWVzc2FnZVN5c3RlbSIsIkFsZXJ0Iiwic2hvd0FsZXJ0IiwiZ2VuZXJhdGVBc3luYyIsInJlYWRBc0RhdGFVUkwiLCJfeCIsIl9qc3giLCJMb2FkaW5nQnV0dG9uIiwiaWQiLCJjb2xvciIsIm9uQ2xpY2siLCJwYXVzZSIsInN4IiwibSIsInZhcmlhbnQiLCJjaGlsZHJlbiIsIlBhdXNlSWNvbiIsIlBsYXlBcnJvd0ljb24iLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/958.d9fd8a9f.js.LICENSE.txt b/react_frontend/static/react_frontend/js/958.d9fd8a9f.js.LICENSE.txt new file mode 100644 index 000000000..ae386fb79 --- /dev/null +++ b/react_frontend/static/react_frontend/js/958.d9fd8a9f.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/react_frontend/static/react_frontend/js/9612.5d4557c4.js b/react_frontend/static/react_frontend/js/9612.5d4557c4.js new file mode 100644 index 000000000..11b903371 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9612.5d4557c4.js @@ -0,0 +1,3 @@ +/*! For license information please see 9612.5d4557c4.js.LICENSE.txt */ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9612],{9612:(e,r,t)=>{t.r(r),t.d(r,{default:()=>f});var n=t(6540),o=t(4848);const f=function(e){return(0,o.jsx)(n.Fragment,{children:e.children})}},1020:(e,r,t)=>{var n=t(6540),o=Symbol.for("react.element"),f=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,_={key:!0,ref:!0,__self:!0,__source:!0};function c(e,r,t){var n,f={},c=null,l=null;for(n in void 0!==t&&(c=""+t),void 0!==r.key&&(c=""+r.key),void 0!==r.ref&&(l=r.ref),r)a.call(r,n)&&!_.hasOwnProperty(n)&&(f[n]=r[n]);if(e&&e.defaultProps)for(n in r=e.defaultProps)void 0===f[n]&&(f[n]=r[n]);return{$$typeof:o,type:e,key:c,ref:l,props:f,_owner:s.current}}r.Fragment=f,r.jsx=c,r.jsxs=c},4848:(e,r,t)=>{e.exports=t(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMvOTYxMi41NzljOWIxNS5qcyIsIm1hcHBpbmdzIjoiO3NLQWFBLFFBUjJCLFNBQUNBLEdBQzFCLE9BQ0VDLEVBQUFBLEVBQUFBLEtBQUNDLEVBQUFBLFNBQVEsQ0FBQUMsU0FDUkgsRUFBTUcsVUFHWCxrQkNGYSxJQUFJQyxFQUFFLEVBQVEsTUFBU0MsRUFBRUMsT0FBT0MsSUFBSSxpQkFBaUJDLEVBQUVGLE9BQU9DLElBQUksa0JBQWtCRSxFQUFFQyxPQUFPQyxVQUFVQyxlQUFlQyxFQUFFVCxFQUFFVSxtREFBbURDLGtCQUFrQkMsRUFBRSxDQUFDQyxLQUFJLEVBQUdDLEtBQUksRUFBR0MsUUFBTyxFQUFHQyxVQUFTLEdBQ2hQLFNBQVNDLEVBQUVDLEVBQUVDLEVBQUVDLEdBQUcsSUFBSUMsRUFBRUMsRUFBRSxDQUFDLEVBQUVDLEVBQUUsS0FBS0MsRUFBRSxLQUFpRixJQUFJSCxVQUFoRixJQUFTRCxJQUFJRyxFQUFFLEdBQUdILFFBQUcsSUFBU0QsRUFBRU4sTUFBTVUsRUFBRSxHQUFHSixFQUFFTixVQUFLLElBQVNNLEVBQUVMLE1BQU1VLEVBQUVMLEVBQUVMLEtBQWNLLEVBQUVkLEVBQUVvQixLQUFLTixFQUFFRSxLQUFLVCxFQUFFSixlQUFlYSxLQUFLQyxFQUFFRCxHQUFHRixFQUFFRSxJQUFJLEdBQUdILEdBQUdBLEVBQUVRLGFBQWEsSUFBSUwsS0FBS0YsRUFBRUQsRUFBRVEsa0JBQWUsSUFBU0osRUFBRUQsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxNQUFNLENBQUNNLFNBQVMxQixFQUFFMkIsS0FBS1YsRUFBRUwsSUFBSVUsRUFBRVQsSUFBSVUsRUFBRTVCLE1BQU0wQixFQUFFTyxPQUFPcEIsRUFBRXFCLFFBQVEsQ0FBQ0MsRUFBUWpDLFNBQVNNLEVBQUUyQixFQUFRQyxJQUFJZixFQUFFYyxFQUFRRSxLQUFLaEIsa0JDUHhXaUIsRUFBT0gsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL3ZhY3V1bV9jbGVhbmVyL3JlYWN0LWNvbXBvbmVudHMvQmFzaWNWYWN1dW1DbGVhbmVyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9yZWFjdC9qc3gtcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHtGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbXBvcnQgXCIuL2Nzcy9CYXNpY1ZhY3V1bUNsZWFuZXIuY3NzXCI7XHJcblxyXG5jb25zdCBCYXNpY1ZhY3V1bUNsZWFuZXIgPSAocHJvcHMpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPEZyYWdtZW50PlxyXG4gICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgPC9GcmFnbWVudD5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgQmFzaWNWYWN1dW1DbGVhbmVyOyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJwcm9wcyIsIl9qc3giLCJGcmFnbWVudCIsImNoaWxkcmVuIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiZXhwb3J0cyIsImpzeCIsImpzeHMiLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9612.5d4557c4.js.LICENSE.txt b/react_frontend/static/react_frontend/js/9612.5d4557c4.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9612.5d4557c4.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/9617.bb943284.js b/react_frontend/static/react_frontend/js/9617.bb943284.js new file mode 100644 index 000000000..2e0670ee1 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9617.bb943284.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9617],{9617:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/978.1cbb7f53.js b/react_frontend/static/react_frontend/js/978.1cbb7f53.js new file mode 100644 index 000000000..ff9c04b09 --- /dev/null +++ b/react_frontend/static/react_frontend/js/978.1cbb7f53.js @@ -0,0 +1,3 @@ +/*! For license information please see 978.1cbb7f53.js.LICENSE.txt */ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[978,6357],{978:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var n=r(6540),a=r(5556),o=r.n(a),i=r(6357),s=r(4848);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r{"use strict";function n(e){return decodeURIComponent(escape(e))}r.r(t),r.d(t,{drawImage:()=>i,drawLeftImage:()=>s});var a=new Image,o=new Image;function i(e){var t=document.getElementById("gui_canvas_right"),r=t.getContext("2d");function o(){window.requestAnimationFrame(o),r.drawImage(a,0,0)}a.onload=function(){o()};var i=JSON.parse(e.image),s=n(i.image),c=i.shape;""!=s&&(a.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}function s(e){var t=document.getElementById("gui_canvas_left"),r=t.getContext("2d");function a(){window.requestAnimationFrame(a),r.drawImage(o,0,0)}o.onload=function(){a()};var i=JSON.parse(e.image_left),s=n(i.image_left),c=i.shape;""!=s&&(o.src="data:image/jpeg;base64,"+s,t.width=c[1],t.height=c[0])}},2694:(e,t,r)=>{"use strict";var n=r(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,o,i){if(i!==n){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,t,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},1020:(e,t,r)=>{"use strict";var n=r(6540),a=Symbol.for("react.element"),o=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,c={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,r){var n,o={},u=null,l=null;for(n in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)i.call(t,n)&&!c.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===o[n]&&(o[n]=t[n]);return{$$typeof:a,type:e,key:u,ref:l,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},4848:(e,t,r)=>{"use strict";e.exports=r(1020)}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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S0FBS04sRUFBRUUsS0FBS1QsRUFBRUosZUFBZWEsS0FBS0MsRUFBRUQsR0FBR0YsRUFBRUUsSUFBSSxHQUFHSCxHQUFHQSxFQUFFUSxhQUFhLElBQUlMLEtBQUtGLEVBQUVELEVBQUVRLGtCQUFlLElBQVNKLEVBQUVELEtBQUtDLEVBQUVELEdBQUdGLEVBQUVFLElBQUksTUFBTSxDQUFDTSxTQUFTMUIsRUFBRTJCLEtBQUtWLEVBQUVMLElBQUlVLEVBQUVULElBQUlVLEVBQUVsSCxNQUFNZ0gsRUFBRU8sT0FBT3BCLEVBQUVxQixRQUFRLENBQUM5RCxFQUFRK0QsU0FBUzNCLEVBQUVwQyxFQUFRZ0UsSUFBSWYsRUFBRWpELEVBQVFpRSxLQUFLaEIsK0JDUHhXbEQsRUFBT0MsUUFBVSxFQUFqQiIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4uL2V4ZXJjaXNlcy9zdGF0aWMvZXhlcmNpc2VzL2Ryb25lX2hhbmdhcl9uZXdtYW5hZ2VyL3JlYWN0LWNvbXBvbmVudHMvU3BlY2lmaWNEcm9uZUhhbmdhci5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uLi9leGVyY2lzZXMvc3RhdGljL2V4ZXJjaXNlcy9kcm9uZV9oYW5nYXJfbmV3bWFuYWdlci9yZWFjdC1jb21wb25lbnRzL2hlbHBlcnMvc2hvd0ltYWdlc0Ryb25lSGFuZ2FyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvcmVhY3QvY2pzL3JlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XHJcbmltcG9ydCB7IGRyYXdJbWFnZSwgZHJhd0xlZnRJbWFnZX0gZnJvbSBcIi4vaGVscGVycy9zaG93SW1hZ2VzRHJvbmVIYW5nYXJcIjtcclxuXHJcblxyXG5mdW5jdGlvbiBTcGVjaWZpY0Ryb25lSGFuZ2FyKHByb3BzKSB7XHJcbiAgY29uc3QgW2ltYWdlLCBzZXRJbWFnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxyXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHN1YnNjcmliaW5nIHRvIFsndXBkYXRlJ10gZXZlbnRzXCIpO1xyXG4gICAgY29uc3QgY2FsbGJhY2sgPSAobWVzc2FnZSkgPT4ge1xyXG4gICAgICBpZihtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKXtcclxuICAgICAgICBjb25zb2xlLmxvZygnaW1hZ2UnKVxyXG4gICAgICAgIGNvbnN0IGltYWdlID0gSlNPTi5wYXJzZShtZXNzYWdlLmRhdGEudXBkYXRlLmltYWdlKVxyXG4gICAgICAgIGlmKGltYWdlLmltYWdlKXtcclxuICAgICAgICAgIGRyYXdJbWFnZShtZXNzYWdlLmRhdGEudXBkYXRlKVxyXG4gICAgICAgIH0gXHJcbiAgICAgIH1cclxuICAgICAgaWYobWVzc2FnZS5kYXRhLnVwZGF0ZS5pbWFnZV9sZWZ0KXtcclxuICAgICAgICBjb25zb2xlLmxvZygnaW1hZ2VfbGVmdCcpXHJcbiAgICAgICAgY29uc3QgaW1hZ2UgPSBKU09OLnBhcnNlKG1lc3NhZ2UuZGF0YS51cGRhdGUuaW1hZ2VfbGVmdClcclxuICAgICAgICBpZihpbWFnZS5pbWFnZV9sZWZ0KXtcclxuICAgICAgICAgIGRyYXdMZWZ0SW1hZ2UobWVzc2FnZS5kYXRhLnVwZGF0ZSlcclxuICAgICAgICB9IFxyXG4gICAgICB9XHJcblxyXG4gICAgICBcclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LlJvYm90aWNzRXhlcmNpc2VDb21wb25lbnRzLmNvbW1zTWFuYWdlci5zdWJzY3JpYmUoXHJcbiAgICAgIFt3aW5kb3cuUm9ib3RpY3NFeGVyY2lzZUNvbXBvbmVudHMuY29tbXNNYW5hZ2VyLmV2ZW50cy5VUERBVEVdLFxyXG4gICAgICBjYWxsYmFja1xyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIlRlc3RTaG93U2NyZWVuIHVuc3Vic2NyaWJpbmcgZnJvbSBbJ3N0YXRlLWNoYW5nZWQnXSBldmVudHNcIik7XHJcbiAgICAgIHdpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIudW5zdWJzY3JpYmUoXHJcbiAgICAgICAgW3dpbmRvdy5Sb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cy5jb21tc01hbmFnZXIuZXZlbnRzLlVQREFURV0sXHJcbiAgICAgICAgY2FsbGJhY2tcclxuICAgICAgKTtcclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuXHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogXCJmbGV4XCIsICAgd2lkdGg6IFwiMTAwJVwiLFxyXG4gICAgaGVpZ2h0OiBcIjEwMCVcIn19PlxyXG4gICAgICA8Y2FudmFzIGlkPVwiZ3VpX2NhbnZhc19sZWZ0XCI+PC9jYW52YXM+XHJcbiAgICAgIDxjYW52YXMgaWQ9XCJndWlfY2FudmFzX3JpZ2h0XCI+PC9jYW52YXM+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblxyXG5TcGVjaWZpY0Ryb25lSGFuZ2FyLnByb3BUeXBlcyA9IHtcclxuICBjaXJjdWl0OiBQcm9wVHlwZXMuc3RyaW5nLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3BlY2lmaWNEcm9uZUhhbmdhclxyXG4iLCIvLyBUbyBkZWNvZGUgdGhlIGltYWdlIHN0cmluZyB3ZSB3aWxsIHJlY2VpdmUgZnJvbSBzZXJ2ZXJcclxuZnVuY3Rpb24gZGVjb2RlX3V0Zjgocyl7XHJcbiAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSlcclxufVxyXG5cclxubGV0IGltYWdlID0gbmV3IEltYWdlKCk7XHJcbmxldCBpbWFnZV9sZWZ0ID0gbmV3IEltYWdlKCk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0ltYWdlIChkYXRhKXtcclxuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfcmlnaHRcIiksXHJcbiAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpe1xyXG4gICAgICAgIHVwZGF0ZV9pbWFnZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlcXVlc3QgQW5pbWF0aW9uIEZyYW1lIHRvIHJlbW92ZSB0aGUgZmxpY2tlcnNcclxuICAgIGZ1bmN0aW9uIHVwZGF0ZV9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2ltYWdlKTtcclxuICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlKSxcclxuICAgICAgICBzb3VyY2UgPSBkZWNvZGVfdXRmOChpbWFnZV9kYXRhLmltYWdlKSxcclxuICAgICAgICBzaGFwZSA9IGltYWdlX2RhdGEuc2hhcGU7XHJcbiAgICBcclxuICAgIGlmKHNvdXJjZSAhPSBcIlwiKXtcclxuICAgICAgICBpbWFnZS5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzLndpZHRoID0gc2hhcGVbMV07XHJcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHNoYXBlWzBdO1xyXG4gICAgfSAgIFxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZHJhd0xlZnRJbWFnZSAoZGF0YSl7XHJcbiAgICB2YXIgY2FudmFzX2xlZnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImd1aV9jYW52YXNfbGVmdFwiKSxcclxuICAgIGNvbnRleHRfbGVmdCA9IGNhbnZhc19sZWZ0LmdldENvbnRleHQoJzJkJylcclxuXHJcbiAgICAvLyBGb3IgaW1hZ2Ugb2JqZWN0XHJcbiAgICBpbWFnZV9sZWZ0Lm9ubG9hZCA9IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgdXBkYXRlX2xlZnRfaW1hZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXF1ZXN0IEFuaW1hdGlvbiBGcmFtZSB0byByZW1vdmUgdGhlIGZsaWNrZXJzXHJcbiAgICBmdW5jdGlvbiB1cGRhdGVfbGVmdF9pbWFnZSgpe1xyXG4gICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlX2xlZnRfaW1hZ2UpO1xyXG4gICAgICAgIGNvbnRleHRfbGVmdC5kcmF3SW1hZ2UoaW1hZ2VfbGVmdCwgMCwgMCk7XHJcbiAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgLy8gUGFyc2UgdGhlIEltYWdlIERhdGFcclxuICAgIHZhciBpbWFnZV9kYXRhID0gSlNPTi5wYXJzZShkYXRhLmltYWdlX2xlZnQpLFxyXG4gICAgICAgIHNvdXJjZSA9IGRlY29kZV91dGY4KGltYWdlX2RhdGEuaW1hZ2VfbGVmdCksXHJcbiAgICAgICAgc2hhcGUgPSBpbWFnZV9kYXRhLnNoYXBlO1xyXG4gICAgXHJcbiAgICBpZihzb3VyY2UgIT0gXCJcIil7XHJcbiAgICAgICAgaW1hZ2VfbGVmdC5zcmMgPSBcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsXCIgKyBzb3VyY2U7XHJcbiAgICAgICAgY2FudmFzX2xlZnQud2lkdGggPSBzaGFwZVsxXTtcclxuICAgICAgICBjYW52YXNfbGVmdC5oZWlnaHQgPSBzaGFwZVswXTtcclxuICAgIH0gICBcclxufVxyXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxuZnVuY3Rpb24gZW1wdHlGdW5jdGlvbigpIHt9XG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0KCkge31cbmVtcHR5RnVuY3Rpb25XaXRoUmVzZXQucmVzZXRXYXJuaW5nQ2FjaGUgPSBlbXB0eUZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYmlnaW50OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBudW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBzeW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAgICBlbGVtZW50OiBzaGltLFxuICAgIGVsZW1lbnRUeXBlOiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hpbSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVPZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW0sXG4gICAgZXhhY3Q6IGdldFNoaW0sXG5cbiAgICBjaGVja1Byb3BUeXBlczogZW1wdHlGdW5jdGlvbldpdGhSZXNldCxcbiAgICByZXNldFdhcm5pbmdDYWNoZTogZW1wdHlGdW5jdGlvblxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcbiIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgZj1yZXF1aXJlKFwicmVhY3RcIiksaz1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxtPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksbj1mLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlJlYWN0Q3VycmVudE93bmVyLHA9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtcbmZ1bmN0aW9uIHEoYyxhLGcpe3ZhciBiLGQ9e30sZT1udWxsLGg9bnVsbDt2b2lkIDAhPT1nJiYoZT1cIlwiK2cpO3ZvaWQgMCE9PWEua2V5JiYoZT1cIlwiK2Eua2V5KTt2b2lkIDAhPT1hLnJlZiYmKGg9YS5yZWYpO2ZvcihiIGluIGEpbS5jYWxsKGEsYikmJiFwLmhhc093blByb3BlcnR5KGIpJiYoZFtiXT1hW2JdKTtpZihjJiZjLmRlZmF1bHRQcm9wcylmb3IoYiBpbiBhPWMuZGVmYXVsdFByb3BzLGEpdm9pZCAwPT09ZFtiXSYmKGRbYl09YVtiXSk7cmV0dXJueyQkdHlwZW9mOmssdHlwZTpjLGtleTplLHJlZjpoLHByb3BzOmQsX293bmVyOm4uY3VycmVudH19ZXhwb3J0cy5GcmFnbWVudD1sO2V4cG9ydHMuanN4PXE7ZXhwb3J0cy5qc3hzPXE7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6WyJTcGVjaWZpY0Ryb25lSGFuZ2FyIiwicHJvcHMiLCJfUmVhY3QkdXNlU3RhdGUyIiwiUmVhY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsbGJhY2siLCJtZXNzYWdlIiwiZGF0YSIsInVwZGF0ZSIsImltYWdlIiwiSlNPTiIsInBhcnNlIiwiZHJhd0ltYWdlIiwiaW1hZ2VfbGVmdCIsImRyYXdMZWZ0SW1hZ2UiLCJ3aW5kb3ciLCJSb2JvdGljc0V4ZXJjaXNlQ29tcG9uZW50cyIsImNvbW1zTWFuYWdlciIsInN1YnNjcmliZSIsImV2ZW50cyIsIlVQREFURSIsInVuc3Vic2NyaWJlIiwiX2pzeHMiLCJzdHlsZSIsImRpc3BsYXkiLCJ3aWR0aCIsImhlaWdodCIsImNoaWxkcmVuIiwiX2pzeCIsImlkIiwicHJvcFR5cGVzIiwiY2lyY3VpdCIsIlByb3BUeXBlcyIsImRlY29kZV91dGY4IiwicyIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkltYWdlIiwiY2FudmFzIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwidXBkYXRlX2ltYWdlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwib25sb2FkIiwiaW1hZ2VfZGF0YSIsInNvdXJjZSIsInNoYXBlIiwic3JjIiwiY2FudmFzX2xlZnQiLCJjb250ZXh0X2xlZnQiLCJ1cGRhdGVfbGVmdF9pbWFnZSIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJzaGltIiwicHJvcE5hbWUiLCJjb21wb25lbnROYW1lIiwibG9jYXRpb24iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsIm5hbWUiLCJnZXRTaGltIiwiaXNSZXF1aXJlZCIsIlJlYWN0UHJvcFR5cGVzIiwiYXJyYXkiLCJiaWdpbnQiLCJib29sIiwiZnVuYyIsIm51bWJlciIsIm9iamVjdCIsInN0cmluZyIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJlbGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbnN0YW5jZU9mIiwibm9kZSIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiZiIsImsiLCJTeW1ib2wiLCJmb3IiLCJsIiwibSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwibiIsIl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEIiwiUmVhY3RDdXJyZW50T3duZXIiLCJwIiwia2V5IiwicmVmIiwiX19zZWxmIiwiX19zb3VyY2UiLCJxIiwiYyIsImEiLCJnIiwiYiIsImQiLCJlIiwiaCIsImNhbGwiLCJkZWZhdWx0UHJvcHMiLCIkJHR5cGVvZiIsInR5cGUiLCJfb3duZXIiLCJjdXJyZW50IiwiRnJhZ21lbnQiLCJqc3giLCJqc3hzIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/978.1cbb7f53.js.LICENSE.txt b/react_frontend/static/react_frontend/js/978.1cbb7f53.js.LICENSE.txt new file mode 100644 index 000000000..e68557b27 --- /dev/null +++ b/react_frontend/static/react_frontend/js/978.1cbb7f53.js.LICENSE.txt @@ -0,0 +1,9 @@ +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/react_frontend/static/react_frontend/js/9820.e55ef154.js b/react_frontend/static/react_frontend/js/9820.e55ef154.js new file mode 100644 index 000000000..e25989940 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9820.e55ef154.js @@ -0,0 +1,29 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9820],{2032:(e,t,o)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a.createSvgIcon}});var a=o(8826)},3718:(e,t,o)=>{"use strict";o.d(t,{A:()=>S});var a=o(8587),n=o(8168),r=o(6540),i=o(8466),s=o(1668),l=o(5659),d=o(7577),c=o(4409),u=o(1224),p=o(3357),v=o(1609);function g(e){return(0,v.A)("MuiLoadingButton",e)}const h=(0,o(8413).A)("MuiLoadingButton",["root","loading","loadingIndicator","loadingIndicatorCenter","loadingIndicatorStart","loadingIndicatorEnd","endIconLoadingEnd","startIconLoadingStart"]);var m=o(4848);const b=["children","disabled","id","loading","loadingIndicator","loadingPosition","variant"],f=(0,d.Ay)(u.A,{shouldForwardProp:e=>(e=>"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e&&"classes"!==e)(e)||"classes"===e,name:"MuiLoadingButton",slot:"Root",overridesResolver:(e,t)=>[t.root,t.startIconLoadingStart&&{[`& .${h.startIconLoadingStart}`]:t.startIconLoadingStart},t.endIconLoadingEnd&&{[`& .${h.endIconLoadingEnd}`]:t.endIconLoadingEnd}]})((({ownerState:e,theme:t})=>(0,n.A)({[`& .${h.startIconLoadingStart}, & .${h.endIconLoadingEnd}`]:{transition:t.transitions.create(["opacity"],{duration:t.transitions.duration.short}),opacity:0}},"center"===e.loadingPosition&&{transition:t.transitions.create(["background-color","box-shadow","border-color"],{duration:t.transitions.duration.short}),[`&.${h.loading}`]:{color:"transparent"}},"start"===e.loadingPosition&&e.fullWidth&&{[`& .${h.startIconLoadingStart}, & .${h.endIconLoadingEnd}`]:{transition:t.transitions.create(["opacity"],{duration:t.transitions.duration.short}),opacity:0,marginRight:-8}},"end"===e.loadingPosition&&e.fullWidth&&{[`& .${h.startIconLoadingStart}, & .${h.endIconLoadingEnd}`]:{transition:t.transitions.create(["opacity"],{duration:t.transitions.duration.short}),opacity:0,marginLeft:-8}}))),x=(0,d.Ay)("div",{name:"MuiLoadingButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.loadingIndicator,t[`loadingIndicator${(0,i.A)(o.loadingPosition)}`]]}})((({theme:e,ownerState:t})=>(0,n.A)({position:"absolute",visibility:"visible",display:"flex"},"start"===t.loadingPosition&&("outlined"===t.variant||"contained"===t.variant)&&{left:"small"===t.size?10:14},"start"===t.loadingPosition&&"text"===t.variant&&{left:6},"center"===t.loadingPosition&&{left:"50%",transform:"translate(-50%)",color:(e.vars||e).palette.action.disabled},"end"===t.loadingPosition&&("outlined"===t.variant||"contained"===t.variant)&&{right:"small"===t.size?10:14},"end"===t.loadingPosition&&"text"===t.variant&&{right:6},"start"===t.loadingPosition&&t.fullWidth&&{position:"relative",left:-10},"end"===t.loadingPosition&&t.fullWidth&&{position:"relative",right:-10}))),S=r.forwardRef((function(e,t){const o=(0,c.A)({props:e,name:"MuiLoadingButton"}),{children:r,disabled:d=!1,id:u,loading:v=!1,loadingIndicator:h,loadingPosition:S="center",variant:A="text"}=o,y=(0,a.A)(o,b),I=(0,s.A)(u),w=null!=h?h:(0,m.jsx)(p.A,{"aria-labelledby":I,color:"inherit",size:16}),z=(0,n.A)({},o,{disabled:d,loading:v,loadingIndicator:w,loadingPosition:S,variant:A}),k=(e=>{const{loading:t,loadingPosition:o,classes:a}=e,r={root:["root",t&&"loading"],startIcon:[t&&`startIconLoading${(0,i.A)(o)}`],endIcon:[t&&`endIconLoading${(0,i.A)(o)}`],loadingIndicator:["loadingIndicator",t&&`loadingIndicator${(0,i.A)(o)}`]},s=(0,l.A)(r,g,a);return(0,n.A)({},a,s)})(z),$=v?(0,m.jsx)(x,{className:k.loadingIndicator,ownerState:z,children:w}):null;return(0,m.jsxs)(f,(0,n.A)({disabled:d||v,id:I,ref:t},y,{variant:A,classes:k,ownerState:z,children:["end"===z.loadingPosition?r:$,"end"===z.loadingPosition?$:r]}))}))},1224:(e,t,o)=>{"use strict";o.d(t,{A:()=>z});var a=o(8587),n=o(8168),r=o(6540),i=o(53),s=o(3726),l=o(5659),d=o(4279),c=o(7577),u=o(4409),p=o(6606),v=o(8466),g=o(8413),h=o(1609);function m(e){return(0,h.A)("MuiButton",e)}const b=(0,g.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);var f=o(1848),x=o(4848);const S=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],A=e=>(0,n.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),y=(0,c.Ay)(p.A,{shouldForwardProp:e=>(0,c.ep)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,v.A)(o.color)}`],t[`size${(0,v.A)(o.size)}`],t[`${o.variant}Size${(0,v.A)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,a;const r="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],i="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,n.A)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,n.A)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,d.X4)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,n.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${b.focusVisible}`]:(0,n.A)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${b.disabled}`]:(0,n.A)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,d.X4)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(a=e.palette).getContrastText)?void 0:o.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:r,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${b.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${b.disabled}`]:{boxShadow:"none"}})),I=(0,c.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,n.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},A(e)))),w=(0,c.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,v.A)(o.size)}`]]}})((({ownerState:e})=>(0,n.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},A(e)))),z=r.forwardRef((function(e,t){const o=r.useContext(f.A),d=(0,s.A)(o,e),c=(0,u.A)({props:d,name:"MuiButton"}),{children:p,color:g="primary",component:h="button",className:b,disabled:A=!1,disableElevation:z=!1,disableFocusRipple:k=!1,endIcon:$,focusVisibleClassName:C,fullWidth:P=!1,size:R="medium",startIcon:L,type:M,variant:E="text"}=c,W=(0,a.A)(c,S),B=(0,n.A)({},c,{color:g,component:h,disabled:A,disableElevation:z,disableFocusRipple:k,fullWidth:P,size:R,type:M,variant:E}),N=(e=>{const{color:t,disableElevation:o,fullWidth:a,size:r,variant:i,classes:s}=e,d={root:["root",i,`${i}${(0,v.A)(t)}`,`size${(0,v.A)(r)}`,`${i}Size${(0,v.A)(r)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",a&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,v.A)(r)}`],endIcon:["endIcon",`iconSize${(0,v.A)(r)}`]},c=(0,l.A)(d,m,s);return(0,n.A)({},s,c)})(B),j=L&&(0,x.jsx)(I,{className:N.startIcon,ownerState:B,children:L}),F=$&&(0,x.jsx)(w,{className:N.endIcon,ownerState:B,children:$});return(0,x.jsxs)(y,(0,n.A)({ownerState:B,className:(0,i.A)(o.className,N.root,b),component:h,disabled:A,focusRipple:!k,focusVisibleClassName:(0,i.A)(N.focusVisible,C),ref:t,type:M},W,{classes:N,children:[j,p,F]}))}))},1848:(e,t,o)=>{"use strict";o.d(t,{A:()=>a});const a=o(6540).createContext({})},3357:(e,t,o)=>{"use strict";o.d(t,{A:()=>$});var a=o(8587),n=o(8168),r=o(6540),i=o(53),s=o(5659),l=o(7437),d=o(8466),c=o(4409),u=o(7577),p=o(8413),v=o(1609);function g(e){return(0,v.A)("MuiCircularProgress",e)}(0,p.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var h=o(4848);const m=["className","color","disableShrink","size","style","thickness","value","variant"];let b,f,x,S,A=e=>e;const y=(0,l.i7)(b||(b=A` + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +`)),I=(0,l.i7)(f||(f=A` + 0% { + stroke-dasharray: 1px, 200px; + stroke-dashoffset: 0; + } + + 50% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -15px; + } + + 100% { + stroke-dasharray: 100px, 200px; + stroke-dashoffset: -125px; + } +`)),w=(0,u.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`color${(0,d.A)(o.color)}`]]}})((({ownerState:e,theme:t})=>(0,n.A)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,l.AH)(x||(x=A` + animation: ${0} 1.4s linear infinite; + `),y))),z=(0,u.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),k=(0,u.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.circle,t[`circle${(0,d.A)(o.variant)}`],o.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,n.A)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,l.AH)(S||(S=A` + animation: ${0} 1.4s ease-in-out infinite; + `),I))),$=r.forwardRef((function(e,t){const o=(0,c.A)({props:e,name:"MuiCircularProgress"}),{className:r,color:l="primary",disableShrink:u=!1,size:p=40,style:v,thickness:b=3.6,value:f=0,variant:x="indeterminate"}=o,S=(0,a.A)(o,m),A=(0,n.A)({},o,{color:l,disableShrink:u,size:p,thickness:b,value:f,variant:x}),y=(e=>{const{classes:t,variant:o,color:a,disableShrink:n}=e,r={root:["root",o,`color${(0,d.A)(a)}`],svg:["svg"],circle:["circle",`circle${(0,d.A)(o)}`,n&&"circleDisableShrink"]};return(0,s.A)(r,g,t)})(A),I={},$={},C={};if("determinate"===x){const e=2*Math.PI*((44-b)/2);I.strokeDasharray=e.toFixed(3),C["aria-valuenow"]=Math.round(f),I.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,$.transform="rotate(-90deg)"}return(0,h.jsx)(w,(0,n.A)({className:(0,i.A)(y.root,r),style:(0,n.A)({width:p,height:p},$,v),ownerState:A,ref:t,role:"progressbar"},C,S,{children:(0,h.jsx)(z,{className:y.svg,ownerState:A,viewBox:"22 22 44 44",children:(0,h.jsx)(k,{className:y.circle,style:I,ownerState:A,cx:44,cy:44,r:(44-b)/2,fill:"none",strokeWidth:b})})}))}))},8826:(e,t,o)=>{"use strict";o.r(t),o.d(t,{capitalize:()=>n.A,createChainedFunction:()=>r,createSvgIcon:()=>i.A,debounce:()=>s.A,deprecatedPropType:()=>l,isMuiElement:()=>d.A,ownerDocument:()=>c.A,ownerWindow:()=>u.A,requirePropFactory:()=>p,setRef:()=>v,unstable_ClassNameGenerator:()=>A,unstable_useEnhancedEffect:()=>g.A,unstable_useId:()=>h.A,unsupportedProp:()=>m,useControlled:()=>b.A,useEventCallback:()=>f.A,useForkRef:()=>x.A,useIsFocusVisible:()=>S.A});var a=o(9071),n=o(8466);const r=o(1210).A;var i=o(5003),s=o(1935);const l=function(e,t){return()=>null};var d=o(5034),c=o(6248),u=o(3749);o(8168);const p=function(e,t){return()=>null},v=o(989).A;var g=o(2778),h=o(1668);const m=function(e,t,o,a,n){return null};var b=o(1159),f=o(3034),x=o(6852),S=o(1544);const A={configure:e=>{a.A.configure(e)}}},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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UGdILE9BQVFoSCxHQUNQeUcsRUFBV0gsR0FDZDVILFdBQVlBLEVBQ1o4QixJQUFLQSxFQUNMeUcsS0FBTSxlQUNMUCxFQUFXNUYsRUFBTyxDQUNuQkosVUFBdUIsU0FBS21GLEVBQXFCLENBQy9DcEUsVUFBV1IsRUFBUTZFLElBQ25CcEgsV0FBWUEsRUFDWndJLFFBQVMsY0FDVHhHLFVBQXVCLFNBQUtxRixFQUF3QixDQUNsRHRFLFVBQVdSLEVBQVErRSxPQUNuQk0sTUFBT0UsRUFDUDlILFdBQVlBLEVBQ1p5SSxHQTdKSyxHQThKTEMsR0E5SkssR0ErSkxDLEdBL0pLLEdBK0pNZCxHQUFhLEVBQ3hCZSxLQUFNLE9BQ05DLFlBQWFoQixRQUlyQixHLHdlQ3pMQSxRLFFBQW9DLEUsd0JDQXBDLFFDRGUsU0FBNEJpQixFQUFXQyxHQUVsRCxNQUFPLElBQU0sSUFVakIsRSwwQ0NYQSxRQ0FlLFNBQTRCQyxFQUFzQkMsR0FFN0QsTUFBTyxJQUFNLElBb0JqQixFQ3RCQSxFLE9BQXFCLEUsd0JDQXJCLFFDRGUsU0FBeUJ0SixFQUFPdUosRUFBVUMsRUFBZUMsRUFBVUMsR0FFOUUsT0FBTyxJQU9YLEUsNENDYU8sTUFBTUMsRUFBOEIsQ0FDekNDLFVBQVdDLElBSVRDLEVBQUEsRUFBbUJGLFVBQVVDLEVBQVUsRSxXQ3RCM0NFLEVBQU9qTCxRQUxQLFNBQWdDa0wsR0FDOUIsT0FBT0EsR0FBS0EsRUFBRUMsV0FBYUQsRUFBSSxDQUM3QixRQUFXQSxFQUVmLEVBQ3lDRCxFQUFPakwsUUFBUW1MLFlBQWEsRUFBTUYsRUFBT2pMLFFBQWlCLFFBQUlpTCxFQUFPakwsTyIsInNvdXJjZXMiOlsid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvaWNvbnMtbWF0ZXJpYWwvdXRpbHMvY3JlYXRlU3ZnSWNvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL2xhYi9Mb2FkaW5nQnV0dG9uL2xvYWRpbmdCdXR0b25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbGFiL0xvYWRpbmdCdXR0b24vTG9hZGluZ0J1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9idXR0b25DbGFzc2VzLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uL0J1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NpcmN1bGFyUHJvZ3Jlc3MvY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9DaXJjdWxhclByb2dyZXNzL0NpcmN1bGFyUHJvZ3Jlc3MuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9kZXByZWNhdGVkUHJvcFR5cGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvcmVxdWlyZVByb3BGYWN0b3J5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3Vuc3VwcG9ydGVkUHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbid1c2UgY2xpZW50JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRlZmF1bHRcIiwge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gX3V0aWxzLmNyZWF0ZVN2Z0ljb247XG4gIH1cbn0pO1xudmFyIF91dGlscyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3V0aWxzXCIpOyIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICdAbXVpL21hdGVyaWFsL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGZyb20gJ0BtdWkvbWF0ZXJpYWwvZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9hZGluZ0J1dHRvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpTG9hZGluZ0J1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgbG9hZGluZ0J1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlMb2FkaW5nQnV0dG9uJywgWydyb290JywgJ2xvYWRpbmcnLCAnbG9hZGluZ0luZGljYXRvcicsICdsb2FkaW5nSW5kaWNhdG9yQ2VudGVyJywgJ2xvYWRpbmdJbmRpY2F0b3JTdGFydCcsICdsb2FkaW5nSW5kaWNhdG9yRW5kJywgJ2VuZEljb25Mb2FkaW5nRW5kJywgJ3N0YXJ0SWNvbkxvYWRpbmdTdGFydCddKTtcbmV4cG9ydCBkZWZhdWx0IGxvYWRpbmdCdXR0b25DbGFzc2VzOyIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImRpc2FibGVkXCIsIFwiaWRcIiwgXCJsb2FkaW5nXCIsIFwibG9hZGluZ0luZGljYXRvclwiLCBcImxvYWRpbmdQb3NpdGlvblwiLCBcInZhcmlhbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IGNhcGl0YWxpemUsIHVuc3RhYmxlX3VzZUlkIGFzIHVzZUlkIH0gZnJvbSAnQG11aS9tYXRlcmlhbC91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBzdHlsZWQsIHVzZVRoZW1lUHJvcHMgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcyc7XG5pbXBvcnQgQnV0dG9uIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQnV0dG9uJztcbmltcG9ydCBDaXJjdWxhclByb2dyZXNzIGZyb20gJ0BtdWkvbWF0ZXJpYWwvQ2lyY3VsYXJQcm9ncmVzcyc7XG5pbXBvcnQgbG9hZGluZ0J1dHRvbkNsYXNzZXMsIHsgZ2V0TG9hZGluZ0J1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vbG9hZGluZ0J1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdQb3NpdGlvbixcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBsb2FkaW5nICYmICdsb2FkaW5nJ10sXG4gICAgc3RhcnRJY29uOiBbbG9hZGluZyAmJiBgc3RhcnRJY29uTG9hZGluZyR7Y2FwaXRhbGl6ZShsb2FkaW5nUG9zaXRpb24pfWBdLFxuICAgIGVuZEljb246IFtsb2FkaW5nICYmIGBlbmRJY29uTG9hZGluZyR7Y2FwaXRhbGl6ZShsb2FkaW5nUG9zaXRpb24pfWBdLFxuICAgIGxvYWRpbmdJbmRpY2F0b3I6IFsnbG9hZGluZ0luZGljYXRvcicsIGxvYWRpbmcgJiYgYGxvYWRpbmdJbmRpY2F0b3Ike2NhcGl0YWxpemUobG9hZGluZ1Bvc2l0aW9uKX1gXVxuICB9O1xuICBjb25zdCBjb21wb3NlZENsYXNzZXMgPSBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0TG9hZGluZ0J1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5cbi8vIFRPRE8gdXNlIGBpbXBvcnQgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztgIG9uY2UgbW92ZSB0byBjb3JlXG5jb25zdCByb290U2hvdWxkRm9yd2FyZFByb3AgPSBwcm9wID0+IHByb3AgIT09ICdvd25lclN0YXRlJyAmJiBwcm9wICE9PSAndGhlbWUnICYmIHByb3AgIT09ICdzeCcgJiYgcHJvcCAhPT0gJ2FzJyAmJiBwcm9wICE9PSAnY2xhc3Nlcyc7XG5jb25zdCBMb2FkaW5nQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b24sIHtcbiAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcm9vdFNob3VsZEZvcndhcmRQcm9wKHByb3ApIHx8IHByb3AgPT09ICdjbGFzc2VzJyxcbiAgbmFtZTogJ011aUxvYWRpbmdCdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlcy5zdGFydEljb25Mb2FkaW5nU3RhcnQgJiYge1xuICAgICAgW2AmIC4ke2xvYWRpbmdCdXR0b25DbGFzc2VzLnN0YXJ0SWNvbkxvYWRpbmdTdGFydH1gXTogc3R5bGVzLnN0YXJ0SWNvbkxvYWRpbmdTdGFydFxuICAgIH0sIHN0eWxlcy5lbmRJY29uTG9hZGluZ0VuZCAmJiB7XG4gICAgICBbYCYgLiR7bG9hZGluZ0J1dHRvbkNsYXNzZXMuZW5kSWNvbkxvYWRpbmdFbmR9YF06IHN0eWxlcy5lbmRJY29uTG9hZGluZ0VuZFxuICAgIH1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBbYCYgLiR7bG9hZGluZ0J1dHRvbkNsYXNzZXMuc3RhcnRJY29uTG9hZGluZ1N0YXJ0fSwgJiAuJHtsb2FkaW5nQnV0dG9uQ2xhc3Nlcy5lbmRJY29uTG9hZGluZ0VuZH1gXToge1xuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ29wYWNpdHknXSwge1xuICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0XG4gICAgfSksXG4gICAgb3BhY2l0eTogMFxuICB9XG59LCBvd25lclN0YXRlLmxvYWRpbmdQb3NpdGlvbiA9PT0gJ2NlbnRlcicgJiYge1xuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoWydiYWNrZ3JvdW5kLWNvbG9yJywgJ2JveC1zaGFkb3cnLCAnYm9yZGVyLWNvbG9yJ10sIHtcbiAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRcbiAgfSksXG4gIFtgJi4ke2xvYWRpbmdCdXR0b25DbGFzc2VzLmxvYWRpbmd9YF06IHtcbiAgICBjb2xvcjogJ3RyYW5zcGFyZW50J1xuICB9XG59LCBvd25lclN0YXRlLmxvYWRpbmdQb3NpdGlvbiA9PT0gJ3N0YXJ0JyAmJiBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gIFtgJiAuJHtsb2FkaW5nQnV0dG9uQ2xhc3Nlcy5zdGFydEljb25Mb2FkaW5nU3RhcnR9LCAmIC4ke2xvYWRpbmdCdXR0b25DbGFzc2VzLmVuZEljb25Mb2FkaW5nRW5kfWBdOiB7XG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFsnb3BhY2l0eSddLCB7XG4gICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRcbiAgICB9KSxcbiAgICBvcGFjaXR5OiAwLFxuICAgIG1hcmdpblJpZ2h0OiAtOFxuICB9XG59LCBvd25lclN0YXRlLmxvYWRpbmdQb3NpdGlvbiA9PT0gJ2VuZCcgJiYgb3duZXJTdGF0ZS5mdWxsV2lkdGggJiYge1xuICBbYCYgLiR7bG9hZGluZ0J1dHRvbkNsYXNzZXMuc3RhcnRJY29uTG9hZGluZ1N0YXJ0fSwgJiAuJHtsb2FkaW5nQnV0dG9uQ2xhc3Nlcy5lbmRJY29uTG9hZGluZ0VuZH1gXToge1xuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ29wYWNpdHknXSwge1xuICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0XG4gICAgfSksXG4gICAgb3BhY2l0eTogMCxcbiAgICBtYXJnaW5MZWZ0OiAtOFxuICB9XG59KSk7XG5jb25zdCBMb2FkaW5nQnV0dG9uTG9hZGluZ0luZGljYXRvciA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpTG9hZGluZ0J1dHRvbicsXG4gIHNsb3Q6ICdMb2FkaW5nSW5kaWNhdG9yJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5sb2FkaW5nSW5kaWNhdG9yLCBzdHlsZXNbYGxvYWRpbmdJbmRpY2F0b3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24pfWBdXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgZGlzcGxheTogJ2ZsZXgnXG59LCBvd25lclN0YXRlLmxvYWRpbmdQb3NpdGlvbiA9PT0gJ3N0YXJ0JyAmJiAob3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnIHx8IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcpICYmIHtcbiAgbGVmdDogb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnID8gMTAgOiAxNFxufSwgb3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24gPT09ICdzdGFydCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICBsZWZ0OiA2XG59LCBvd25lclN0YXRlLmxvYWRpbmdQb3NpdGlvbiA9PT0gJ2NlbnRlcicgJiYge1xuICBsZWZ0OiAnNTAlJyxcbiAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKC01MCUpJyxcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxufSwgb3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24gPT09ICdlbmQnICYmIChvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgfHwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJykgJiYge1xuICByaWdodDogb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnID8gMTAgOiAxNFxufSwgb3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24gPT09ICdlbmQnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgcmlnaHQ6IDZcbn0sIG93bmVyU3RhdGUubG9hZGluZ1Bvc2l0aW9uID09PSAnc3RhcnQnICYmIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIGxlZnQ6IC0xMFxufSwgb3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24gPT09ICdlbmQnICYmIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIHJpZ2h0OiAtMTBcbn0pKTtcbmNvbnN0IExvYWRpbmdCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBMb2FkaW5nQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlMb2FkaW5nQnV0dG9uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgaWQ6IGlkUHJvcCxcbiAgICAgIGxvYWRpbmcgPSBmYWxzZSxcbiAgICAgIGxvYWRpbmdJbmRpY2F0b3I6IGxvYWRpbmdJbmRpY2F0b3JQcm9wLFxuICAgICAgbG9hZGluZ1Bvc2l0aW9uID0gJ2NlbnRlcicsXG4gICAgICB2YXJpYW50ID0gJ3RleHQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGlkID0gdXNlSWQoaWRQcm9wKTtcbiAgY29uc3QgbG9hZGluZ0luZGljYXRvciA9IGxvYWRpbmdJbmRpY2F0b3JQcm9wICE9IG51bGwgPyBsb2FkaW5nSW5kaWNhdG9yUHJvcCA6IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3MsIHtcbiAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBpZCxcbiAgICBjb2xvcjogXCJpbmhlcml0XCIsXG4gICAgc2l6ZTogMTZcbiAgfSk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBkaXNhYmxlZCxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdJbmRpY2F0b3IsXG4gICAgbG9hZGluZ1Bvc2l0aW9uLFxuICAgIHZhcmlhbnRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgbG9hZGluZ0J1dHRvbkxvYWRpbmdJbmRpY2F0b3IgPSBsb2FkaW5nID8gLyojX19QVVJFX18qL19qc3goTG9hZGluZ0J1dHRvbkxvYWRpbmdJbmRpY2F0b3IsIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMubG9hZGluZ0luZGljYXRvcixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBsb2FkaW5nSW5kaWNhdG9yXG4gIH0pIDogbnVsbDtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhMb2FkaW5nQnV0dG9uUm9vdCwgX2V4dGVuZHMoe1xuICAgIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBsb2FkaW5nLFxuICAgIGlkOiBpZCxcbiAgICByZWY6IHJlZlxuICB9LCBvdGhlciwge1xuICAgIHZhcmlhbnQ6IHZhcmlhbnQsXG4gICAgY2xhc3NlczogY2xhc3NlcyxcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBbb3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24gPT09ICdlbmQnID8gY2hpbGRyZW4gOiBsb2FkaW5nQnV0dG9uTG9hZGluZ0luZGljYXRvciwgb3duZXJTdGF0ZS5sb2FkaW5nUG9zaXRpb24gPT09ICdlbmQnID8gbG9hZGluZ0J1dHRvbkxvYWRpbmdJbmRpY2F0b3IgOiBjaGlsZHJlbl1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBMb2FkaW5nQnV0dG9uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsb2FkaW5nIGluZGljYXRvciBpcyBzaG93bi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGxvYWRpbmc6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBjaGlsZHJlbiBpZiB0aGUgYnV0dG9uIGlzIGluIGxvYWRpbmcgc3RhdGUuXG4gICAqIFRoZSBub2RlIHNob3VsZCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBgcm9sZT1cInByb2dyZXNzYmFyXCJgIHdpdGggYW4gYWNjZXNzaWJsZSBuYW1lLlxuICAgKiBCeSBkZWZhdWx0IHdlIHJlbmRlciBhIGBDaXJjdWxhclByb2dyZXNzYCB0aGF0IGlzIGxhYmVsbGVkIGJ5IHRoZSBidXR0b24gaXRzZWxmLlxuICAgKiBAZGVmYXVsdCA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiBzaXplPXsxNn0gLz5cbiAgICovXG4gIGxvYWRpbmdJbmRpY2F0b3I6IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIGxvYWRpbmcgaW5kaWNhdG9yIGNhbiBiZSBwb3NpdGlvbmVkIG9uIHRoZSBzdGFydCwgZW5kLCBvciB0aGUgY2VudGVyIG9mIHRoZSBidXR0b24uXG4gICAqIEBkZWZhdWx0ICdjZW50ZXInXG4gICAqL1xuICBsb2FkaW5nUG9zaXRpb246IGNoYWluUHJvcFR5cGVzKFByb3BUeXBlcy5vbmVPZihbJ3N0YXJ0JywgJ2VuZCcsICdjZW50ZXInXSksIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMubG9hZGluZ1Bvc2l0aW9uID09PSAnc3RhcnQnICYmICFwcm9wcy5zdGFydEljb24pIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoYE1VSTogVGhlIGxvYWRpbmdQb3NpdGlvbj1cInN0YXJ0XCIgc2hvdWxkIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBzdGFydEljb24uYCk7XG4gICAgfVxuICAgIGlmIChwcm9wcy5sb2FkaW5nUG9zaXRpb24gPT09ICdlbmQnICYmICFwcm9wcy5lbmRJY29uKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBNVUk6IFRoZSBsb2FkaW5nUG9zaXRpb249XCJlbmRcIiBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGVuZEljb24uYCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IHRvIHVzZS5cbiAgICogQGRlZmF1bHQgJ3RleHQnXG4gICAqL1xuICB2YXJpYW50OiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2NvbnRhaW5lZCcsICdvdXRsaW5lZCcsICd0ZXh0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBMb2FkaW5nQnV0dG9uOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRCdXR0b25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUJ1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgYnV0dG9uQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aUJ1dHRvbicsIFsncm9vdCcsICd0ZXh0JywgJ3RleHRJbmhlcml0JywgJ3RleHRQcmltYXJ5JywgJ3RleHRTZWNvbmRhcnknLCAndGV4dFN1Y2Nlc3MnLCAndGV4dEVycm9yJywgJ3RleHRJbmZvJywgJ3RleHRXYXJuaW5nJywgJ291dGxpbmVkJywgJ291dGxpbmVkSW5oZXJpdCcsICdvdXRsaW5lZFByaW1hcnknLCAnb3V0bGluZWRTZWNvbmRhcnknLCAnb3V0bGluZWRTdWNjZXNzJywgJ291dGxpbmVkRXJyb3InLCAnb3V0bGluZWRJbmZvJywgJ291dGxpbmVkV2FybmluZycsICdjb250YWluZWQnLCAnY29udGFpbmVkSW5oZXJpdCcsICdjb250YWluZWRQcmltYXJ5JywgJ2NvbnRhaW5lZFNlY29uZGFyeScsICdjb250YWluZWRTdWNjZXNzJywgJ2NvbnRhaW5lZEVycm9yJywgJ2NvbnRhaW5lZEluZm8nLCAnY29udGFpbmVkV2FybmluZycsICdkaXNhYmxlRWxldmF0aW9uJywgJ2ZvY3VzVmlzaWJsZScsICdkaXNhYmxlZCcsICdjb2xvckluaGVyaXQnLCAndGV4dFNpemVTbWFsbCcsICd0ZXh0U2l6ZU1lZGl1bScsICd0ZXh0U2l6ZUxhcmdlJywgJ291dGxpbmVkU2l6ZVNtYWxsJywgJ291dGxpbmVkU2l6ZU1lZGl1bScsICdvdXRsaW5lZFNpemVMYXJnZScsICdjb250YWluZWRTaXplU21hbGwnLCAnY29udGFpbmVkU2l6ZU1lZGl1bScsICdjb250YWluZWRTaXplTGFyZ2UnLCAnc2l6ZU1lZGl1bScsICdzaXplU21hbGwnLCAnc2l6ZUxhcmdlJywgJ2Z1bGxXaWR0aCcsICdzdGFydEljb24nLCAnZW5kSWNvbicsICdpY29uU2l6ZVNtYWxsJywgJ2ljb25TaXplTWVkaXVtJywgJ2ljb25TaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBidXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY29sb3JcIiwgXCJjb21wb25lbnRcIiwgXCJjbGFzc05hbWVcIiwgXCJkaXNhYmxlZFwiLCBcImRpc2FibGVFbGV2YXRpb25cIiwgXCJkaXNhYmxlRm9jdXNSaXBwbGVcIiwgXCJlbmRJY29uXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwiZnVsbFdpZHRoXCIsIFwic2l6ZVwiLCBcInN0YXJ0SWNvblwiLCBcInR5cGVcIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgaW50ZXJuYWxfcmVzb2x2ZVByb3BzIGFzIHJlc29sdmVQcm9wcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHsgYWxwaGEgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkLCB7IHJvb3RTaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBidXR0b25DbGFzc2VzLCB7IGdldEJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgQnV0dG9uR3JvdXBDb250ZXh0IGZyb20gJy4uL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dCc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdmFyaWFudCxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgJHt2YXJpYW50fSR7Y2FwaXRhbGl6ZShjb2xvcil9YCwgYHNpemUke2NhcGl0YWxpemUoc2l6ZSl9YCwgYCR7dmFyaWFudH1TaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGNvbG9yID09PSAnaW5oZXJpdCcgJiYgJ2NvbG9ySW5oZXJpdCcsIGRpc2FibGVFbGV2YXRpb24gJiYgJ2Rpc2FibGVFbGV2YXRpb24nLCBmdWxsV2lkdGggJiYgJ2Z1bGxXaWR0aCddLFxuICAgIGxhYmVsOiBbJ2xhYmVsJ10sXG4gICAgc3RhcnRJY29uOiBbJ3N0YXJ0SWNvbicsIGBpY29uU2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gXSxcbiAgICBlbmRJY29uOiBbJ2VuZEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF1cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgY2xhc3NlcywgY29tcG9zZWRDbGFzc2VzKTtcbn07XG5jb25zdCBjb21tb25JY29uU3R5bGVzID0gb3duZXJTdGF0ZSA9PiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAxOFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdtZWRpdW0nICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMFxuICB9XG59LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYge1xuICAnJiA+ICo6bnRoLW9mLXR5cGUoMSknOiB7XG4gICAgZm9udFNpemU6IDIyXG4gIH1cbn0pO1xuY29uc3QgQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIHNob3VsZEZvcndhcmRQcm9wOiBwcm9wID0+IHJvb3RTaG91bGRGb3J3YXJkUHJvcChwcm9wKSB8fCBwcm9wID09PSAnY2xhc3NlcycsXG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9JHtjYXBpdGFsaXplKG93bmVyU3RhdGUuY29sb3IpfWBdLCBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXSwgc3R5bGVzW2Ake293bmVyU3RhdGUudmFyaWFudH1TaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiBzdHlsZXMuY29sb3JJbmhlcml0LCBvd25lclN0YXRlLmRpc2FibGVFbGV2YXRpb24gJiYgc3R5bGVzLmRpc2FibGVFbGV2YXRpb24sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGhdO1xuICB9XG59KSgoe1xuICB0aGVtZSxcbiAgb3duZXJTdGF0ZVxufSkgPT4ge1xuICB2YXIgX3RoZW1lJHBhbGV0dGUkZ2V0Q29uLCBfdGhlbWUkcGFsZXR0ZTtcbiAgY29uc3QgaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleVszMDBdIDogdGhlbWUucGFsZXR0ZS5ncmV5WzgwMF07XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvciA9IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2xpZ2h0JyA/IHRoZW1lLnBhbGV0dGUuZ3JleS5BMTAwIDogdGhlbWUucGFsZXR0ZS5ncmV5WzcwMF07XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgdGhlbWUudHlwb2dyYXBoeS5idXR0b24sIHtcbiAgICBtaW5XaWR0aDogNjQsXG4gICAgcGFkZGluZzogJzZweCAxNnB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFwZS5ib3JkZXJSYWRpdXMsXG4gICAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKFsnYmFja2dyb3VuZC1jb2xvcicsICdib3gtc2hhZG93JywgJ2JvcmRlci1jb2xvcicsICdjb2xvciddLCB7XG4gICAgICBkdXJhdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRcbiAgICB9KSxcbiAgICAnJjpob3Zlcic6IF9leHRlbmRzKHtcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnlDaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWlufWAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyBgcmdiYSgke3RoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnZhcnMgPyB0aGVtZS52YXJzLnBhbGV0dGUuQnV0dG9uLmluaGVyaXRDb250YWluZWRIb3ZlckJnIDogaW5oZXJpdENvbnRhaW5lZEhvdmVyQmFja2dyb3VuZENvbG9yLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s0XSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl0sXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuZ3JleVszMDBdXG4gICAgICB9XG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5kYXJrLFxuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gICAgICB9XG4gICAgfSksXG4gICAgJyY6YWN0aXZlJzogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s4XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzZdXG4gICAgfSksXG4gICAgW2AmLiR7YnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXTogX2V4dGVuZHMoe1xuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgICBib3JkZXI6IGAxcHggc29saWQgJHsodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kfWBcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWQsXG4gICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzBdLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRCYWNrZ3JvdW5kXG4gICAgfSlcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYge1xuICAgIHBhZGRpbmc6ICc2cHggOHB4J1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzVweCAxNXB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgY3VycmVudENvbG9yJ1xuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBib3JkZXI6IHRoZW1lLnZhcnMgPyBgMXB4IHNvbGlkIHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gMC41KWAgOiBgMXB4IHNvbGlkICR7YWxwaGEodGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluLCAwLjUpfWBcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgY29sb3I6IHRoZW1lLnZhcnMgP1xuICAgIC8vIHRoaXMgaXMgc2FmZSBiZWNhdXNlIGdyZXkgZG9lcyBub3QgY2hhbmdlIGJldHdlZW4gZGVmYXVsdCBsaWdodC9kYXJrIG1vZGVcbiAgICB0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5IDogKF90aGVtZSRwYWxldHRlJGdldENvbiA9IChfdGhlbWUkcGFsZXR0ZSA9IHRoZW1lLnBhbGV0dGUpLmdldENvbnRyYXN0VGV4dCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSRwYWxldHRlJGdldENvbi5jYWxsKF90aGVtZSRwYWxldHRlLCB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSksXG4gICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkQmcgOiBpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yLFxuICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbMl1cbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHQsXG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5tYWluXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICBib3JkZXJDb2xvcjogJ2N1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDVweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDExcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICczcHggOXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnN3B4IDIxcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnNHB4IDEwcHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnOHB4IDIycHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTUpXG4gIH0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHtcbiAgICB3aWR0aDogJzEwMCUnXG4gIH0pO1xufSwgKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHtcbiAgYm94U2hhZG93OiAnbm9uZScsXG4gICcmOmhvdmVyJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZm9jdXNWaXNpYmxlfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfSxcbiAgJyY6YWN0aXZlJzoge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9XG59KTtcbmNvbnN0IEJ1dHRvblN0YXJ0SWNvbiA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbicsXG4gIHNsb3Q6ICdTdGFydEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnN0YXJ0SWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiA4LFxuICBtYXJnaW5MZWZ0OiAtNFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luTGVmdDogLTJcbn0sIGNvbW1vbkljb25TdHlsZXMob3duZXJTdGF0ZSkpKTtcbmNvbnN0IEJ1dHRvbkVuZEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnRW5kSWNvbicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMuZW5kSWNvbiwgc3R5bGVzW2BpY29uU2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5oZXJpdCcsXG4gIG1hcmdpblJpZ2h0OiAtNCxcbiAgbWFyZ2luTGVmdDogOFxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnc21hbGwnICYmIHtcbiAgbWFyZ2luUmlnaHQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBCdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIC8vIHByb3BzIHByaW9yaXR5OiBgaW5Qcm9wc2AgPiBgY29udGV4dFByb3BzYCA+IGB0aGVtZURlZmF1bHRQcm9wc2BcbiAgY29uc3QgY29udGV4dFByb3BzID0gUmVhY3QudXNlQ29udGV4dChCdXR0b25Hcm91cENvbnRleHQpO1xuICBjb25zdCByZXNvbHZlZFByb3BzID0gcmVzb2x2ZVByb3BzKGNvbnRleHRQcm9wcywgaW5Qcm9wcyk7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IHJlc29sdmVkUHJvcHMsXG4gICAgbmFtZTogJ011aUJ1dHRvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBjb21wb25lbnQgPSAnYnV0dG9uJyxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRWxldmF0aW9uID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGVuZEljb246IGVuZEljb25Qcm9wLFxuICAgICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgICAgZnVsbFdpZHRoID0gZmFsc2UsXG4gICAgICBzaXplID0gJ21lZGl1bScsXG4gICAgICBzdGFydEljb246IHN0YXJ0SWNvblByb3AsXG4gICAgICB0eXBlLFxuICAgICAgdmFyaWFudCA9ICd0ZXh0J1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY29sb3IsXG4gICAgY29tcG9uZW50LFxuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVFbGV2YXRpb24sXG4gICAgZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHR5cGUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBzdGFydEljb24gPSBzdGFydEljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvblN0YXJ0SWNvbiwge1xuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5zdGFydEljb24sXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjaGlsZHJlbjogc3RhcnRJY29uUHJvcFxuICB9KTtcbiAgY29uc3QgZW5kSWNvbiA9IGVuZEljb25Qcm9wICYmIC8qI19fUFVSRV9fKi9fanN4KEJ1dHRvbkVuZEljb24sIHtcbiAgICBjbGFzc05hbWU6IGNsYXNzZXMuZW5kSWNvbixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBlbmRJY29uUHJvcFxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhCdXR0b25Sb290LCBfZXh0ZW5kcyh7XG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBjbGFzc05hbWU6IGNsc3goY29udGV4dFByb3BzLmNsYXNzTmFtZSwgY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5mb2N1c1Zpc2libGUsIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSksXG4gICAgcmVmOiByZWYsXG4gICAgdHlwZTogdHlwZVxuICB9LCBvdGhlciwge1xuICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgY2hpbGRyZW46IFtzdGFydEljb24sIGNoaWxkcmVuLCBlbmRJY29uXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ2luaGVyaXQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnc3VjY2VzcycsICdlcnJvcicsICdpbmZvJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG5vIGVsZXZhdGlvbiBpcyB1c2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVsZXZhdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSAga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBFbGVtZW50IHBsYWNlZCBhZnRlciB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBlbmRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJ1dHRvbiB3aWxsIHRha2UgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIGxpbmsgdG8gd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIElmIGRlZmluZWQsIGFuIGBhYCBlbGVtZW50IHdpbGwgYmUgdXNlZCBhcyB0aGUgcm9vdCBub2RlLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIGBzbWFsbGAgaXMgZXF1aXZhbGVudCB0byB0aGUgZGVuc2UgYnV0dG9uIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIHN0YXJ0SWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICd0ZXh0J1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydjb250YWluZWQnLCAnb3V0bGluZWQnLCAndGV4dCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuY29uc3QgQnV0dG9uR3JvdXBDb250ZXh0ID0gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgQnV0dG9uR3JvdXBDb250ZXh0LmRpc3BsYXlOYW1lID0gJ0J1dHRvbkdyb3VwQ29udGV4dCc7XG59XG5leHBvcnQgZGVmYXVsdCBCdXR0b25Hcm91cENvbnRleHQ7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLCBzbG90KTtcbn1cbmNvbnN0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQ2lyY3VsYXJQcm9ncmVzcycsIFsncm9vdCcsICdkZXRlcm1pbmF0ZScsICdpbmRldGVybWluYXRlJywgJ2NvbG9yUHJpbWFyeScsICdjb2xvclNlY29uZGFyeScsICdzdmcnLCAnY2lyY2xlJywgJ2NpcmNsZURldGVybWluYXRlJywgJ2NpcmNsZUluZGV0ZXJtaW5hdGUnLCAnY2lyY2xlRGlzYWJsZVNocmluayddKTtcbmV4cG9ydCBkZWZhdWx0IGNpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZGlzYWJsZVNocmlua1wiLCBcInNpemVcIiwgXCJzdHlsZVwiLCBcInRoaWNrbmVzc1wiLCBcInZhbHVlXCIsIFwidmFyaWFudFwiXTtcbmxldCBfID0gdCA9PiB0LFxuICBfdCxcbiAgX3QyLFxuICBfdDMsXG4gIF90NDtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBrZXlmcmFtZXMsIGNzcyB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2NpcmN1bGFyUHJvZ3Jlc3NDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBTSVpFID0gNDQ7XG5jb25zdCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lID0ga2V5ZnJhbWVzKF90IHx8IChfdCA9IF9gXG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbmApKTtcbmNvbnN0IGNpcmN1bGFyRGFzaEtleWZyYW1lID0ga2V5ZnJhbWVzKF90MiB8fCAoX3QyID0gX2BcbiAgMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDFweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XG4gIH1cblxuICA1MCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTE1cHg7XG4gIH1cblxuICAxMDAlIHtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAxMDBweCwgMjAwcHg7XG4gICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMjVweDtcbiAgfVxuYCkpO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgdmFyaWFudCxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlU2hyaW5rXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCB2YXJpYW50LCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWBdLFxuICAgIHN2ZzogWydzdmcnXSxcbiAgICBjaXJjbGU6IFsnY2lyY2xlJywgYGNpcmNsZSR7Y2FwaXRhbGl6ZSh2YXJpYW50KX1gLCBkaXNhYmxlU2hyaW5rICYmICdjaXJjbGVEaXNhYmxlU2hyaW5rJ11cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBDaXJjdWxhclByb2dyZXNzUm9vdCA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW293bmVyU3RhdGUudmFyaWFudF0sIHN0eWxlc1tgY29sb3Ike2NhcGl0YWxpemUob3duZXJTdGF0ZS5jb2xvcil9YF1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJ1xufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnICYmIHtcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCd0cmFuc2Zvcm0nKVxufSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5cbn0pLCAoe1xuICBvd25lclN0YXRlXG59KSA9PiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdpbmRldGVybWluYXRlJyAmJiBjc3MoX3QzIHx8IChfdDMgPSBfYFxuICAgICAgYW5pbWF0aW9uOiAkezB9IDEuNHMgbGluZWFyIGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhclJvdGF0ZUtleWZyYW1lKSk7XG5jb25zdCBDaXJjdWxhclByb2dyZXNzU1ZHID0gc3R5bGVkKCdzdmcnLCB7XG4gIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJyxcbiAgc2xvdDogJ1N2ZycsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnN2Z1xufSkoe1xuICBkaXNwbGF5OiAnYmxvY2snIC8vIEtlZXBzIHRoZSBwcm9ncmVzcyBjZW50ZXJlZFxufSk7XG5cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUgPSBzdHlsZWQoJ2NpcmNsZScsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnQ2lyY2xlJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5jaXJjbGUsIHN0eWxlc1tgY2lyY2xlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9YF0sIG93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBzdHlsZXMuY2lyY2xlRGlzYWJsZVNocmlua107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcidcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2RldGVybWluYXRlJyAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnKVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYge1xuICAvLyBTb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBsb29rcyBmaW5lIHdhaXRpbmcgZm9yIHRoZSBhbmltYXRpb24gdG8ga2lja3MgaW4uXG4gIHN0cm9rZURhc2hhcnJheTogJzgwcHgsIDIwMHB4JyxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMCAvLyBBZGQgdGhlIHVuaXQgdG8gZml4IGEgRWRnZSAxNiBhbmQgYmVsb3cgYnVnLlxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmICFvd25lclN0YXRlLmRpc2FibGVTaHJpbmsgJiYgY3NzKF90NCB8fCAoX3Q0ID0gX2BcbiAgICAgIGFuaW1hdGlvbjogJHswfSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhckRhc2hLZXlmcmFtZSkpO1xuXG4vKipcbiAqICMjIEFSSUFcbiAqXG4gKiBJZiB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGRlc2NyaWJpbmcgdGhlIGxvYWRpbmcgcHJvZ3Jlc3Mgb2YgYSBwYXJ0aWN1bGFyIHJlZ2lvbiBvZiBhIHBhZ2UsXG4gKiB5b3Ugc2hvdWxkIHVzZSBgYXJpYS1kZXNjcmliZWRieWAgdG8gcG9pbnQgdG8gdGhlIHByb2dyZXNzIGJhciwgYW5kIHNldCB0aGUgYGFyaWEtYnVzeWBcbiAqIGF0dHJpYnV0ZSB0byBgdHJ1ZWAgb24gdGhhdCByZWdpb24gdW50aWwgaXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuXG4gKi9cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3MgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDaXJjdWxhclByb2dyZXNzKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBkaXNhYmxlU2hyaW5rID0gZmFsc2UsXG4gICAgICBzaXplID0gNDAsXG4gICAgICBzdHlsZSxcbiAgICAgIHRoaWNrbmVzcyA9IDMuNixcbiAgICAgIHZhbHVlID0gMCxcbiAgICAgIHZhcmlhbnQgPSAnaW5kZXRlcm1pbmF0ZSdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmssXG4gICAgc2l6ZSxcbiAgICB0aGlja25lc3MsXG4gICAgdmFsdWUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBjaXJjbGVTdHlsZSA9IHt9O1xuICBjb25zdCByb290U3R5bGUgPSB7fTtcbiAgY29uc3Qgcm9vdFByb3BzID0ge307XG4gIGlmICh2YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnKSB7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogKChTSVpFIC0gdGhpY2tuZXNzKSAvIDIpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2UudG9GaXhlZCgzKTtcbiAgICByb290UHJvcHNbJ2FyaWEtdmFsdWVub3cnXSA9IE1hdGgucm91bmQodmFsdWUpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBgJHsoKDEwMCAtIHZhbHVlKSAvIDEwMCAqIGNpcmN1bWZlcmVuY2UpLnRvRml4ZWQoMyl9cHhgO1xuICAgIHJvb3RTdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKC05MGRlZyknO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgaGVpZ2h0OiBzaXplXG4gICAgfSwgcm9vdFN0eWxlLCBzdHlsZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBcInByb2dyZXNzYmFyXCJcbiAgfSwgcm9vdFByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzU1ZHLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3ZnLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHZpZXdCb3g6IGAke1NJWkUgLyAyfSAke1NJWkUgLyAyfSAke1NJWkV9ICR7U0laRX1gLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmNpcmNsZSxcbiAgICAgICAgc3R5bGU6IGNpcmNsZVN0eWxlLFxuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBjeDogU0laRSxcbiAgICAgICAgY3k6IFNJWkUsXG4gICAgICAgIHI6IChTSVpFIC0gdGhpY2tuZXNzKSAvIDIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2VXaWR0aDogdGhpY2tuZXNzXG4gICAgICB9KVxuICAgIH0pXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ2lyY3VsYXJQcm9ncmVzcy5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdlcnJvcicsICdpbmZvJywgJ3N1Y2Nlc3MnLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgc2hyaW5rIGFuaW1hdGlvbiBpcyBkaXNhYmxlZC5cbiAgICogVGhpcyBvbmx5IHdvcmtzIGlmIHZhcmlhbnQgaXMgYGluZGV0ZXJtaW5hdGVgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVNocmluazogY2hhaW5Qcm9wVHlwZXMoUHJvcFR5cGVzLmJvb2wsIHByb3BzID0+IHtcbiAgICBpZiAocHJvcHMuZGlzYWJsZVNocmluayAmJiBwcm9wcy52YXJpYW50ICYmIHByb3BzLnZhcmlhbnQgIT09ICdpbmRldGVybWluYXRlJykge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcignTVVJOiBZb3UgaGF2ZSBwcm92aWRlZCB0aGUgYGRpc2FibGVTaHJpbmtgIHByb3AgJyArICd3aXRoIGEgdmFyaWFudCBvdGhlciB0aGFuIGBpbmRldGVybWluYXRlYC4gVGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJZiB1c2luZyBhIG51bWJlciwgdGhlIHBpeGVsIHVuaXQgaXMgYXNzdW1lZC5cbiAgICogSWYgdXNpbmcgYSBzdHJpbmcsIHlvdSBuZWVkIHRvIHByb3ZpZGUgdGhlIENTUyB1bml0LCBlLmcgJzNyZW0nLlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdGhpY2tuZXNzIG9mIHRoZSBjaXJjbGUuXG4gICAqIEBkZWZhdWx0IDMuNlxuICAgKi9cbiAgdGhpY2tuZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgZm9yIHRoZSBkZXRlcm1pbmF0ZSB2YXJpYW50LlxuICAgKiBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIFVzZSBpbmRldGVybWluYXRlIHdoZW4gdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgdmFsdWUuXG4gICAqIEBkZWZhdWx0ICdpbmRldGVybWluYXRlJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnZGV0ZXJtaW5hdGUnLCAnaW5kZXRlcm1pbmF0ZSddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENpcmN1bGFyUHJvZ3Jlc3M7IiwiaW1wb3J0IHsgdW5zdGFibGVfY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIGFzIGNyZWF0ZUNoYWluZWRGdW5jdGlvbiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uOyIsImltcG9ydCB7IHVuc3RhYmxlX2RlcHJlY2F0ZWRQcm9wVHlwZSBhcyBkZXByZWNhdGVkUHJvcFR5cGUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGRlcHJlY2F0ZWRQcm9wVHlwZTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZXByZWNhdGVkUHJvcFR5cGUodmFsaWRhdG9yLCByZWFzb24pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm4gKCkgPT4gbnVsbDtcbiAgfVxuICByZXR1cm4gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbXBvbmVudE5hbWVTYWZlID0gY29tcG9uZW50TmFtZSB8fCAnPDxhbm9ueW1vdXM+Pic7XG4gICAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgICBpZiAodHlwZW9mIHByb3BzW3Byb3BOYW1lXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgRXJyb3IoYFRoZSAke2xvY2F0aW9ufSBcXGAke3Byb3BGdWxsTmFtZVNhZmV9XFxgIG9mIGAgKyBgXFxgJHtjb21wb25lbnROYW1lU2FmZX1cXGAgaXMgZGVwcmVjYXRlZC4gJHtyZWFzb259YCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xufSIsImltcG9ydCB7IHVuc3RhYmxlX3JlcXVpcmVQcm9wRmFjdG9yeSBhcyByZXF1aXJlUHJvcEZhY3RvcnkgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHJlcXVpcmVQcm9wRmFjdG9yeTsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcXVpcmVQcm9wRmFjdG9yeShjb21wb25lbnROYW1lSW5FcnJvciwgQ29tcG9uZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZm9yYmlkLWZvcmVpZ24tcHJvcC10eXBlc1xuICBjb25zdCBwcmV2UHJvcFR5cGVzID0gQ29tcG9uZW50ID8gX2V4dGVuZHMoe30sIENvbXBvbmVudC5wcm9wVHlwZXMpIDogbnVsbDtcbiAgY29uc3QgcmVxdWlyZVByb3AgPSByZXF1aXJlZFByb3AgPT4gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgLi4uYXJncykgPT4ge1xuICAgIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgY29uc3QgZGVmYXVsdFR5cGVDaGVja2VyID0gcHJldlByb3BUeXBlcyA9PSBudWxsID8gdm9pZCAwIDogcHJldlByb3BUeXBlc1twcm9wRnVsbE5hbWVTYWZlXTtcbiAgICBpZiAoZGVmYXVsdFR5cGVDaGVja2VyKSB7XG4gICAgICBjb25zdCB0eXBlQ2hlY2tlclJlc3VsdCA9IGRlZmF1bHRUeXBlQ2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIC4uLmFyZ3MpO1xuICAgICAgaWYgKHR5cGVDaGVja2VyUmVzdWx0KSB7XG4gICAgICAgIHJldHVybiB0eXBlQ2hlY2tlclJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnICYmICFwcm9wc1tyZXF1aXJlZFByb3BdKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgcHJvcCBcXGAke3Byb3BGdWxsTmFtZVNhZmV9XFxgIG9mIGAgKyBgXFxgJHtjb21wb25lbnROYW1lSW5FcnJvcn1cXGAgY2FuIG9ubHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIHRoZSBcXGAke3JlcXVpcmVkUHJvcH1cXGAgcHJvcC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG4gIHJldHVybiByZXF1aXJlUHJvcDtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9zZXRSZWYgYXMgc2V0UmVmIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBzZXRSZWY7IiwiaW1wb3J0IHsgdW5zdGFibGVfdW5zdXBwb3J0ZWRQcm9wIGFzIHVuc3VwcG9ydGVkUHJvcCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdW5zdXBwb3J0ZWRQcm9wOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuc3VwcG9ydGVkUHJvcChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICBpZiAodHlwZW9mIHByb3BzW3Byb3BOYW1lXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgcHJvcCBcXGAke3Byb3BGdWxsTmFtZVNhZmV9XFxgIGlzIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSByZW1vdmUgaXQuYCk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IgYXMgQ2xhc3NOYW1lR2VuZXJhdG9yIH0gZnJvbSAnQG11aS9iYXNlL2NsYXNzTmFtZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNhcGl0YWxpemUgfSBmcm9tICcuL2NhcGl0YWxpemUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gfSBmcm9tICcuL2NyZWF0ZUNoYWluZWRGdW5jdGlvbic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZVN2Z0ljb24gfSBmcm9tICcuL2NyZWF0ZVN2Z0ljb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkZWJvdW5jZSB9IGZyb20gJy4vZGVib3VuY2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBkZXByZWNhdGVkUHJvcFR5cGUgfSBmcm9tICcuL2RlcHJlY2F0ZWRQcm9wVHlwZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGlzTXVpRWxlbWVudCB9IGZyb20gJy4vaXNNdWlFbGVtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgb3duZXJEb2N1bWVudCB9IGZyb20gJy4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG93bmVyV2luZG93IH0gZnJvbSAnLi9vd25lcldpbmRvdyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlcXVpcmVQcm9wRmFjdG9yeSB9IGZyb20gJy4vcmVxdWlyZVByb3BGYWN0b3J5JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgc2V0UmVmIH0gZnJvbSAnLi9zZXRSZWYnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bnN0YWJsZV91c2VFbmhhbmNlZEVmZmVjdCB9IGZyb20gJy4vdXNlRW5oYW5jZWRFZmZlY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bnN0YWJsZV91c2VJZCB9IGZyb20gJy4vdXNlSWQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1bnN1cHBvcnRlZFByb3AgfSBmcm9tICcuL3Vuc3VwcG9ydGVkUHJvcCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUNvbnRyb2xsZWQgfSBmcm9tICcuL3VzZUNvbnRyb2xsZWQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnLi91c2VFdmVudENhbGxiYWNrJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlRm9ya1JlZiB9IGZyb20gJy4vdXNlRm9ya1JlZic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUlzRm9jdXNWaXNpYmxlIH0gZnJvbSAnLi91c2VJc0ZvY3VzVmlzaWJsZSc7XG4vLyBUT0RPOiByZW1vdmUgdGhpcyBleHBvcnQgb25jZSBDbGFzc05hbWVHZW5lcmF0b3IgaXMgc3RhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yID0ge1xuICBjb25maWd1cmU6IGdlbmVyYXRvciA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUud2FybihbJ01VSTogYENsYXNzTmFtZUdlbmVyYXRvcmAgaW1wb3J0IGZyb20gYEBtdWkvbWF0ZXJpYWwvdXRpbHNgIGlzIG91dGRhdGVkIGFuZCBtaWdodCBjYXVzZSB1bmV4cGVjdGVkIGlzc3Vlcy4nLCAnJywgXCJZb3Ugc2hvdWxkIHVzZSBgaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIH0gZnJvbSAnQG11aS9tYXRlcmlhbC9jbGFzc05hbWUnYCBpbnN0ZWFkXCIsICcnLCAnVGhlIGRldGFpbCBvZiB0aGUgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzMwMDExI2lzc3VlY29tbWVudC0xMDI0OTkzNDAxJywgJycsICdUaGUgdXBkYXRlZCBkb2N1bWVudGF0aW9uOiBodHRwczovL211aS5jb20vZ3VpZGVzL2NsYXNzbmFtZS1nZW5lcmF0b3IvJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgICBDbGFzc05hbWVHZW5lcmF0b3IuY29uZmlndXJlKGdlbmVyYXRvcik7XG4gIH1cbn07IiwiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChlKSB7XG4gIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7XG4gICAgXCJkZWZhdWx0XCI6IGVcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfdXRpbHMiLCJjcmVhdGVTdmdJY29uIiwiZ2V0TG9hZGluZ0J1dHRvblV0aWxpdHlDbGFzcyIsInNsb3QiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzcyIsIl9leGNsdWRlZCIsIkxvYWRpbmdCdXR0b25Sb290Iiwic3R5bGVkIiwiQnV0dG9uIiwic2hvdWxkRm9yd2FyZFByb3AiLCJwcm9wIiwicm9vdFNob3VsZEZvcndhcmRQcm9wIiwibmFtZSIsIm92ZXJyaWRlc1Jlc29sdmVyIiwicHJvcHMiLCJzdHlsZXMiLCJyb290Iiwic3RhcnRJY29uTG9hZGluZ1N0YXJ0IiwiZW5kSWNvbkxvYWRpbmdFbmQiLCJvd25lclN0YXRlIiwidGhlbWUiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0Iiwib3BhY2l0eSIsImxvYWRpbmdQb3NpdGlvbiIsImxvYWRpbmciLCJjb2xvciIsImZ1bGxXaWR0aCIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIkxvYWRpbmdCdXR0b25Mb2FkaW5nSW5kaWNhdG9yIiwibG9hZGluZ0luZGljYXRvciIsImNhcGl0YWxpemUiLCJwb3NpdGlvbiIsInZpc2liaWxpdHkiLCJkaXNwbGF5IiwidmFyaWFudCIsImxlZnQiLCJzaXplIiwidHJhbnNmb3JtIiwidmFycyIsInBhbGV0dGUiLCJhY3Rpb24iLCJkaXNhYmxlZCIsInJpZ2h0IiwiaW5Qcm9wcyIsInJlZiIsInVzZVRoZW1lUHJvcHMiLCJjaGlsZHJlbiIsImlkIiwiaWRQcm9wIiwibG9hZGluZ0luZGljYXRvclByb3AiLCJvdGhlciIsInVzZUlkIiwiQ2lyY3VsYXJQcm9ncmVzcyIsImNsYXNzZXMiLCJzbG90cyIsInN0YXJ0SWNvbiIsImVuZEljb24iLCJjb21wb3NlZENsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwibG9hZGluZ0J1dHRvbkxvYWRpbmdJbmRpY2F0b3IiLCJjbGFzc05hbWUiLCJnZXRCdXR0b25VdGlsaXR5Q2xhc3MiLCJnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIiwiY29tbW9uSWNvblN0eWxlcyIsImZvbnRTaXplIiwiQnV0dG9uUm9vdCIsIkJ1dHRvbkJhc2UiLCJjb2xvckluaGVyaXQiLCJkaXNhYmxlRWxldmF0aW9uIiwiX3RoZW1lJHBhbGV0dGUkZ2V0Q29uIiwiX3RoZW1lJHBhbGV0dGUiLCJpbmhlcml0Q29udGFpbmVkQmFja2dyb3VuZENvbG9yIiwibW9kZSIsImdyZXkiLCJpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJBMTAwIiwidHlwb2dyYXBoeSIsImJ1dHRvbiIsIm1pbldpZHRoIiwicGFkZGluZyIsImJvcmRlclJhZGl1cyIsInNoYXBlIiwidGV4dERlY29yYXRpb24iLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0ZXh0IiwicHJpbWFyeUNoYW5uZWwiLCJob3Zlck9wYWNpdHkiLCJwcmltYXJ5IiwibWFpbkNoYW5uZWwiLCJtYWluIiwiYm9yZGVyIiwiaW5oZXJpdENvbnRhaW5lZEhvdmVyQmciLCJib3hTaGFkb3ciLCJzaGFkb3dzIiwiZGFyayIsImZvY3VzVmlzaWJsZSIsImRpc2FibGVkQmFja2dyb3VuZCIsImdldENvbnRyYXN0VGV4dCIsImNhbGwiLCJpbmhlcml0Q29udGFpbmVkQmciLCJjb250cmFzdFRleHQiLCJib3JkZXJDb2xvciIsInB4VG9SZW0iLCJ3aWR0aCIsIkJ1dHRvblN0YXJ0SWNvbiIsIkJ1dHRvbkVuZEljb24iLCJjb250ZXh0UHJvcHMiLCJCdXR0b25Hcm91cENvbnRleHQiLCJyZXNvbHZlZFByb3BzIiwicmVzb2x2ZVByb3BzIiwiY29tcG9uZW50IiwiZGlzYWJsZUZvY3VzUmlwcGxlIiwiZW5kSWNvblByb3AiLCJmb2N1c1Zpc2libGVDbGFzc05hbWUiLCJzdGFydEljb25Qcm9wIiwidHlwZSIsImxhYmVsIiwiZm9jdXNSaXBwbGUiLCJnZXRDaXJjdWxhclByb2dyZXNzVXRpbGl0eUNsYXNzIiwiX3QiLCJfdDIiLCJfdDMiLCJfdDQiLCJfIiwidCIsImNpcmN1bGFyUm90YXRlS2V5ZnJhbWUiLCJjaXJjdWxhckRhc2hLZXlmcmFtZSIsIkNpcmN1bGFyUHJvZ3Jlc3NSb290IiwiQ2lyY3VsYXJQcm9ncmVzc1NWRyIsInN2ZyIsIkNpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUiLCJjaXJjbGUiLCJkaXNhYmxlU2hyaW5rIiwiY2lyY2xlRGlzYWJsZVNocmluayIsInN0cm9rZSIsInN0cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHlsZSIsInRoaWNrbmVzcyIsImNpcmNsZVN0eWxlIiwicm9vdFN0eWxlIiwicm9vdFByb3BzIiwiY2lyY3VtZmVyZW5jZSIsIk1hdGgiLCJQSSIsInRvRml4ZWQiLCJyb3VuZCIsImhlaWdodCIsInJvbGUiLCJ2aWV3Qm94IiwiY3giLCJjeSIsInIiLCJmaWxsIiwic3Ryb2tlV2lkdGgiLCJ2YWxpZGF0b3IiLCJyZWFzb24iLCJjb21wb25lbnROYW1lSW5FcnJvciIsIkNvbXBvbmVudCIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwidW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIiwiY29uZmlndXJlIiwiZ2VuZXJhdG9yIiwiQ2xhc3NOYW1lR2VuZXJhdG9yIiwibW9kdWxlIiwiZSIsIl9fZXNNb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9848.0be66c9a.js b/react_frontend/static/react_frontend/js/9848.0be66c9a.js new file mode 100644 index 000000000..ba516c352 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9848.0be66c9a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9848],{9848:(e,n,r)=>{r.r(n)}}]); \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/9981.6c108cef.js b/react_frontend/static/react_frontend/js/9981.6c108cef.js new file mode 100644 index 000000000..3ee66e746 --- /dev/null +++ b/react_frontend/static/react_frontend/js/9981.6c108cef.js @@ -0,0 +1,2 @@ +(self.webpackChunkreact_frontend=self.webpackChunkreact_frontend||[]).push([[9981],{2032:(e,o,r)=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0}),Object.defineProperty(o,"default",{enumerable:!0,get:function(){return t.createSvgIcon}});var t=r(8826)},9828:(e,o,r)=>{"use strict";r.d(o,{A:()=>h});var t=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(7577),c=r(4409),p=r(8466),d=r(538),u=r(8413),g=r(1609);function A(e){return(0,g.A)("MuiAppBar",e)}(0,u.A)("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent"]);var v=r(4848);const b=["className","color","enableColorOnDark","position"],f=(e,o)=>e?`${null==e?void 0:e.replace(")","")}, ${o})`:o,m=(0,l.Ay)(d.A,{name:"MuiAppBar",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:r}=e;return[o.root,o[`position${(0,p.A)(r.position)}`],o[`color${(0,p.A)(r.color)}`]]}})((({theme:e,ownerState:o})=>{const r="light"===e.palette.mode?e.palette.grey[100]:e.palette.grey[900];return(0,a.A)({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0},"fixed"===o.position&&{position:"fixed",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}},"absolute"===o.position&&{position:"absolute",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0},"sticky"===o.position&&{position:"sticky",zIndex:(e.vars||e).zIndex.appBar,top:0,left:"auto",right:0},"static"===o.position&&{position:"static"},"relative"===o.position&&{position:"relative"},!e.vars&&(0,a.A)({},"default"===o.color&&{backgroundColor:r,color:e.palette.getContrastText(r)},o.color&&"default"!==o.color&&"inherit"!==o.color&&"transparent"!==o.color&&{backgroundColor:e.palette[o.color].main,color:e.palette[o.color].contrastText},"inherit"===o.color&&{color:"inherit"},"dark"===e.palette.mode&&!o.enableColorOnDark&&{backgroundColor:null,color:null},"transparent"===o.color&&(0,a.A)({backgroundColor:"transparent",color:"inherit"},"dark"===e.palette.mode&&{backgroundImage:"none"})),e.vars&&(0,a.A)({},"default"===o.color&&{"--AppBar-background":o.enableColorOnDark?e.vars.palette.AppBar.defaultBg:f(e.vars.palette.AppBar.darkBg,e.vars.palette.AppBar.defaultBg),"--AppBar-color":o.enableColorOnDark?e.vars.palette.text.primary:f(e.vars.palette.AppBar.darkColor,e.vars.palette.text.primary)},o.color&&!o.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":o.enableColorOnDark?e.vars.palette[o.color].main:f(e.vars.palette.AppBar.darkBg,e.vars.palette[o.color].main),"--AppBar-color":o.enableColorOnDark?e.vars.palette[o.color].contrastText:f(e.vars.palette.AppBar.darkColor,e.vars.palette[o.color].contrastText)},{backgroundColor:"var(--AppBar-background)",color:"inherit"===o.color?"inherit":"var(--AppBar-color)"},"transparent"===o.color&&{backgroundImage:"none",backgroundColor:"transparent",color:"inherit"}))})),h=n.forwardRef((function(e,o){const r=(0,c.A)({props:e,name:"MuiAppBar"}),{className:n,color:l="primary",enableColorOnDark:d=!1,position:u="fixed"}=r,g=(0,t.A)(r,b),f=(0,a.A)({},r,{color:l,position:u,enableColorOnDark:d}),h=(e=>{const{color:o,position:r,classes:t}=e,a={root:["root",`color${(0,p.A)(o)}`,`position${(0,p.A)(r)}`]};return(0,s.A)(a,A,t)})(f);return(0,v.jsx)(m,(0,a.A)({square:!0,component:"header",ownerState:f,elevation:4,className:(0,i.A)(h.root,n,"fixed"===u&&"mui-fixed"),ref:o},g))}))},1848:(e,o,r)=>{"use strict";r.d(o,{A:()=>t});const t=r(6540).createContext({})},1641:(e,o,r)=>{"use strict";r.d(o,{A:()=>k});var t=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(4279),c=r(7577),p=r(4409),d=r(6606),u=r(8466),g=r(8413),A=r(1609);function v(e){return(0,A.A)("MuiIconButton",e)}const b=(0,g.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]);var f=r(4848);const m=["edge","children","className","color","disabled","disableFocusRipple","size"],h=(0,c.Ay)(d.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:r}=e;return[o.root,"default"!==r.color&&o[`color${(0,u.A)(r.color)}`],r.edge&&o[`edge${(0,u.A)(r.edge)}`],o[`size${(0,u.A)(r.size)}`]]}})((({theme:e,ownerState:o})=>(0,a.A)({textAlign:"center",flex:"0 0 auto",fontSize:e.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(e.vars||e).palette.action.active,transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest})},!o.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${e.vars.palette.action.activeChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,l.X4)(e.palette.action.active,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===o.edge&&{marginLeft:"small"===o.size?-3:-12},"end"===o.edge&&{marginRight:"small"===o.size?-3:-12})),(({theme:e,ownerState:o})=>{var r;const t=null==(r=(e.vars||e).palette)?void 0:r[o.color];return(0,a.A)({},"inherit"===o.color&&{color:"inherit"},"inherit"!==o.color&&"default"!==o.color&&(0,a.A)({color:null==t?void 0:t.main},!o.disableRipple&&{"&:hover":(0,a.A)({},t&&{backgroundColor:e.vars?`rgba(${t.mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,l.X4)(t.main,e.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===o.size&&{padding:5,fontSize:e.typography.pxToRem(18)},"large"===o.size&&{padding:12,fontSize:e.typography.pxToRem(28)},{[`&.${b.disabled}`]:{backgroundColor:"transparent",color:(e.vars||e).palette.action.disabled}})})),k=n.forwardRef((function(e,o){const r=(0,p.A)({props:e,name:"MuiIconButton"}),{edge:n=!1,children:l,className:c,color:d="default",disabled:g=!1,disableFocusRipple:A=!1,size:b="medium"}=r,k=(0,t.A)(r,m),y=(0,a.A)({},r,{edge:n,color:d,disabled:g,disableFocusRipple:A,size:b}),x=(e=>{const{classes:o,disabled:r,color:t,edge:a,size:n}=e,i={root:["root",r&&"disabled","default"!==t&&`color${(0,u.A)(t)}`,a&&`edge${(0,u.A)(a)}`,`size${(0,u.A)(n)}`]};return(0,s.A)(i,v,o)})(y);return(0,f.jsx)(h,(0,a.A)({className:(0,i.A)(x.root,c),centerRipple:!0,focusRipple:!A,disabled:g,ref:o,ownerState:y},k,{children:l}))}))},8532:(e,o,r)=>{"use strict";r.d(o,{A:()=>b});var t=r(8587),a=r(8168),n=r(6540),i=r(53),s=r(5659),l=r(4409),c=r(7577),p=r(8413),d=r(1609);function u(e){return(0,d.A)("MuiToolbar",e)}(0,p.A)("MuiToolbar",["root","gutters","regular","dense"]);var g=r(4848);const A=["className","component","disableGutters","variant"],v=(0,c.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,o)=>{const{ownerState:r}=e;return[o.root,!r.disableGutters&&o.gutters,o[r.variant]]}})((({theme:e,ownerState:o})=>(0,a.A)({position:"relative",display:"flex",alignItems:"center"},!o.disableGutters&&{paddingLeft:e.spacing(2),paddingRight:e.spacing(2),[e.breakpoints.up("sm")]:{paddingLeft:e.spacing(3),paddingRight:e.spacing(3)}},"dense"===o.variant&&{minHeight:48})),(({theme:e,ownerState:o})=>"regular"===o.variant&&e.mixins.toolbar)),b=n.forwardRef((function(e,o){const r=(0,l.A)({props:e,name:"MuiToolbar"}),{className:n,component:c="div",disableGutters:p=!1,variant:d="regular"}=r,b=(0,t.A)(r,A),f=(0,a.A)({},r,{component:c,disableGutters:p,variant:d}),m=(e=>{const{classes:o,disableGutters:r,variant:t}=e,a={root:["root",!r&&"gutters",t]};return(0,s.A)(a,u,o)})(f);return(0,g.jsx)(v,(0,a.A)({as:c,className:(0,i.A)(m.root,n),ref:o,ownerState:f},b))}))},8826:(e,o,r)=>{"use strict";r.r(o),r.d(o,{capitalize:()=>a.A,createChainedFunction:()=>n,createSvgIcon:()=>i.A,debounce:()=>s.A,deprecatedPropType:()=>l,isMuiElement:()=>c.A,ownerDocument:()=>p.A,ownerWindow:()=>d.A,requirePropFactory:()=>u,setRef:()=>g,unstable_ClassNameGenerator:()=>y,unstable_useEnhancedEffect:()=>A.A,unstable_useId:()=>v.A,unsupportedProp:()=>b,useControlled:()=>f.A,useEventCallback:()=>m.A,useForkRef:()=>h.A,useIsFocusVisible:()=>k.A});var t=r(9071),a=r(8466);const n=r(1210).A;var i=r(5003),s=r(1935);const l=function(e,o){return()=>null};var c=r(5034),p=r(6248),d=r(3749);r(8168);const u=function(e,o){return()=>null},g=r(989).A;var A=r(2778),v=r(1668);const b=function(e,o,r,t,a){return null};var f=r(1159),m=r(3034),h=r(6852),k=r(1544);const y={configure:e=>{t.A.configure(e)}}},2694:(e,o,r)=>{"use strict";var t=r(6925);function a(){}function n(){}n.resetWarningCache=a,e.exports=function(){function e(e,o,r,a,n,i){if(i!==t){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function o(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:o,element:e,elementType:e,instanceOf:o,node:e,objectOf:o,oneOf:o,oneOfType:o,shape:o,exact:o,checkPropTypes:n,resetWarningCache:a};return r.PropTypes=r,r}},5556:(e,o,r)=>{e.exports=r(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4994:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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bC91dGlscy9jcmVhdGVTdmdJY29uLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQXBwQmFyL2FwcEJhckNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9BcHBCYXIvQXBwQmFyLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uR3JvdXAvQnV0dG9uR3JvdXBDb250ZXh0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvSWNvbkJ1dHRvbi9pY29uQnV0dG9uQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0ljb25CdXR0b24vSWNvbkJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1Rvb2xiYXIvdG9vbGJhckNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Ub29sYmFyL1Rvb2xiYXIuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9jcmVhdGVDaGFpbmVkRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9kZXByZWNhdGVkUHJvcFR5cGUuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZGVwcmVjYXRlZFByb3BUeXBlLmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvcmVxdWlyZVByb3BGYWN0b3J5LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3JlcXVpcmVQcm9wRmFjdG9yeS5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3NldFJlZi5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL3Vuc3VwcG9ydGVkUHJvcC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91bnN1cHBvcnRlZFByb3AuanMiLCJ3ZWJwYWNrOi8vcmVhY3RfZnJvbnRlbmQvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly9yZWFjdF9mcm9udGVuZC8uL25vZGVfbW9kdWxlcy9wcm9wLXR5cGVzL2luZGV4LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3JlYWN0X2Zyb250ZW5kLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW50ZXJvcFJlcXVpcmVEZWZhdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuJ3VzZSBjbGllbnQnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiZGVmYXVsdFwiLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfdXRpbHMuY3JlYXRlU3ZnSWNvbjtcbiAgfVxufSk7XG52YXIgX3V0aWxzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXRpbHNcIik7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcEJhclV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQXBwQmFyJywgc2xvdCk7XG59XG5jb25zdCBhcHBCYXJDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQXBwQmFyJywgWydyb290JywgJ3Bvc2l0aW9uRml4ZWQnLCAncG9zaXRpb25BYnNvbHV0ZScsICdwb3NpdGlvblN0aWNreScsICdwb3NpdGlvblN0YXRpYycsICdwb3NpdGlvblJlbGF0aXZlJywgJ2NvbG9yRGVmYXVsdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JJbmhlcml0JywgJ2NvbG9yVHJhbnNwYXJlbnQnXSk7XG5leHBvcnQgZGVmYXVsdCBhcHBCYXJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiZW5hYmxlQ29sb3JPbkRhcmtcIiwgXCJwb3NpdGlvblwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCBQYXBlciBmcm9tICcuLi9QYXBlcic7XG5pbXBvcnQgeyBnZXRBcHBCYXJVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2FwcEJhckNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBwb3NpdGlvbixcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBwb3NpdGlvbiR7Y2FwaXRhbGl6ZShwb3NpdGlvbil9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRBcHBCYXJVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcblxuLy8gdmFyMiBpcyB0aGUgZmFsbGJhY2suXG4vLyBFeC4gdmFyMTogJ3ZhcigtLWEpJywgdmFyMjogJ3ZhcigtLWIpJzsgcmV0dXJuOiAndmFyKC0tYSwgdmFyKC0tYikpJ1xuY29uc3Qgam9pblZhcnMgPSAodmFyMSwgdmFyMikgPT4gdmFyMSA/IGAke3ZhcjEgPT0gbnVsbCA/IHZvaWQgMCA6IHZhcjEucmVwbGFjZSgnKScsICcnKX0sICR7dmFyMn0pYCA6IHZhcjI7XG5jb25zdCBBcHBCYXJSb290ID0gc3R5bGVkKFBhcGVyLCB7XG4gIG5hbWU6ICdNdWlBcHBCYXInLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgc3R5bGVzW2Bwb3NpdGlvbiR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnBvc2l0aW9uKX1gXSwgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIGNvbnN0IGJhY2tncm91bmRDb2xvckRlZmF1bHQgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXlbMTAwXSA6IHRoZW1lLnBhbGV0dGUuZ3JleVs5MDBdO1xuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIC8vIFByZXZlbnQgcGFkZGluZyBpc3N1ZSB3aXRoIHRoZSBNb2RhbCBhbmQgZml4ZWQgcG9zaXRpb25lZCBBcHBCYXIuXG4gICAgZmxleFNocmluazogMFxuICB9LCBvd25lclN0YXRlLnBvc2l0aW9uID09PSAnZml4ZWQnICYmIHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB6SW5kZXg6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS56SW5kZXguYXBwQmFyLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAnYXV0bycsXG4gICAgcmlnaHQ6IDAsXG4gICAgJ0BtZWRpYSBwcmludCc6IHtcbiAgICAgIC8vIFByZXZlbnQgdGhlIGFwcCBiYXIgdG8gYmUgdmlzaWJsZSBvbiBlYWNoIHByaW50ZWQgcGFnZS5cbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnXG4gICAgfVxuICB9LCBvd25lclN0YXRlLnBvc2l0aW9uID09PSAnYWJzb2x1dGUnICYmIHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS56SW5kZXguYXBwQmFyLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAnYXV0bycsXG4gICAgcmlnaHQ6IDBcbiAgfSwgb3duZXJTdGF0ZS5wb3NpdGlvbiA9PT0gJ3N0aWNreScgJiYge1xuICAgIC8vIOKaoO+4jyBzdGlja3kgaXMgbm90IHN1cHBvcnRlZCBieSBJRTExLlxuICAgIHBvc2l0aW9uOiAnc3RpY2t5JyxcbiAgICB6SW5kZXg6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS56SW5kZXguYXBwQmFyLFxuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAnYXV0bycsXG4gICAgcmlnaHQ6IDBcbiAgfSwgb3duZXJTdGF0ZS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycgJiYge1xuICAgIHBvc2l0aW9uOiAnc3RhdGljJ1xuICB9LCBvd25lclN0YXRlLnBvc2l0aW9uID09PSAncmVsYXRpdmUnICYmIHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJ1xuICB9LCAhdGhlbWUudmFycyAmJiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2RlZmF1bHQnICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvckRlZmF1bHQsXG4gICAgY29sb3I6IHRoZW1lLnBhbGV0dGUuZ2V0Q29udHJhc3RUZXh0KGJhY2tncm91bmRDb2xvckRlZmF1bHQpXG4gIH0sIG93bmVyU3RhdGUuY29sb3IgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2RlZmF1bHQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAndHJhbnNwYXJlbnQnICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbixcbiAgICBjb2xvcjogdGhlbWUucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHRcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogJ2luaGVyaXQnXG4gIH0sIHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2RhcmsnICYmICFvd25lclN0YXRlLmVuYWJsZUNvbG9yT25EYXJrICYmIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IG51bGwsXG4gICAgY29sb3I6IG51bGxcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ3RyYW5zcGFyZW50JyAmJiBfZXh0ZW5kcyh7XG4gICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgIGNvbG9yOiAnaW5oZXJpdCdcbiAgfSwgdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnZGFyaycgJiYge1xuICAgIGJhY2tncm91bmRJbWFnZTogJ25vbmUnXG4gIH0pKSwgdGhlbWUudmFycyAmJiBfZXh0ZW5kcyh7fSwgb3duZXJTdGF0ZS5jb2xvciA9PT0gJ2RlZmF1bHQnICYmIHtcbiAgICAnLS1BcHBCYXItYmFja2dyb3VuZCc6IG93bmVyU3RhdGUuZW5hYmxlQ29sb3JPbkRhcmsgPyB0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRlZmF1bHRCZyA6IGpvaW5WYXJzKHRoZW1lLnZhcnMucGFsZXR0ZS5BcHBCYXIuZGFya0JnLCB0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRlZmF1bHRCZyksXG4gICAgJy0tQXBwQmFyLWNvbG9yJzogb3duZXJTdGF0ZS5lbmFibGVDb2xvck9uRGFyayA/IHRoZW1lLnZhcnMucGFsZXR0ZS50ZXh0LnByaW1hcnkgOiBqb2luVmFycyh0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRhcmtDb2xvciwgdGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeSlcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciAmJiAhb3duZXJTdGF0ZS5jb2xvci5tYXRjaCgvXihkZWZhdWx0fGluaGVyaXR8dHJhbnNwYXJlbnQpJC8pICYmIHtcbiAgICAnLS1BcHBCYXItYmFja2dyb3VuZCc6IG93bmVyU3RhdGUuZW5hYmxlQ29sb3JPbkRhcmsgPyB0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiA6IGpvaW5WYXJzKHRoZW1lLnZhcnMucGFsZXR0ZS5BcHBCYXIuZGFya0JnLCB0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiksXG4gICAgJy0tQXBwQmFyLWNvbG9yJzogb3duZXJTdGF0ZS5lbmFibGVDb2xvck9uRGFyayA/IHRoZW1lLnZhcnMucGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXS5jb250cmFzdFRleHQgOiBqb2luVmFycyh0aGVtZS52YXJzLnBhbGV0dGUuQXBwQmFyLmRhcmtDb2xvciwgdGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLmNvbnRyYXN0VGV4dClcbiAgfSwge1xuICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLUFwcEJhci1iYWNrZ3JvdW5kKScsXG4gICAgY29sb3I6IG93bmVyU3RhdGUuY29sb3IgPT09ICdpbmhlcml0JyA/ICdpbmhlcml0JyA6ICd2YXIoLS1BcHBCYXItY29sb3IpJ1xuICB9LCBvd25lclN0YXRlLmNvbG9yID09PSAndHJhbnNwYXJlbnQnICYmIHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6ICdub25lJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgY29sb3I6ICdpbmhlcml0J1xuICB9KSk7XG59KTtcbmNvbnN0IEFwcEJhciA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEFwcEJhcihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQXBwQmFyJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBlbmFibGVDb2xvck9uRGFyayA9IGZhbHNlLFxuICAgICAgcG9zaXRpb24gPSAnZml4ZWQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBwb3NpdGlvbixcbiAgICBlbmFibGVDb2xvck9uRGFya1xuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQXBwQmFyUm9vdCwgX2V4dGVuZHMoe1xuICAgIHNxdWFyZTogdHJ1ZSxcbiAgICBjb21wb25lbnQ6IFwiaGVhZGVyXCIsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBlbGV2YXRpb246IDQsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lLCBwb3NpdGlvbiA9PT0gJ2ZpeGVkJyAmJiAnbXVpLWZpeGVkJyksXG4gICAgcmVmOiByZWZcbiAgfSwgb3RoZXIpKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQXBwQmFyLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnZGVmYXVsdCcsICdpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ3RyYW5zcGFyZW50J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYGNvbG9yYCBwcm9wIGlzIGFwcGxpZWQgaW4gZGFyayBtb2RlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZW5hYmxlQ29sb3JPbkRhcms6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uaW5nIHR5cGUuIFRoZSBiZWhhdmlvciBvZiB0aGUgZGlmZmVyZW50IG9wdGlvbnMgaXMgZGVzY3JpYmVkXG4gICAqIFtpbiB0aGUgTUROIHdlYiBkb2NzXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0xlYXJuL0NTUy9DU1NfbGF5b3V0L1Bvc2l0aW9uaW5nKS5cbiAgICogTm90ZTogYHN0aWNreWAgaXMgbm90IHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhbmQgd2lsbCBmYWxsIGJhY2sgdG8gYHN0YXRpY2Agd2hlbiB1bmF2YWlsYWJsZS5cbiAgICogQGRlZmF1bHQgJ2ZpeGVkJ1xuICAgKi9cbiAgcG9zaXRpb246IFByb3BUeXBlcy5vbmVPZihbJ2Fic29sdXRlJywgJ2ZpeGVkJywgJ3JlbGF0aXZlJywgJ3N0YXRpYycsICdzdGlja3knXSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBBcHBCYXI7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5jb25zdCBCdXR0b25Hcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBCdXR0b25Hcm91cENvbnRleHQuZGlzcGxheU5hbWUgPSAnQnV0dG9uR3JvdXBDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkdyb3VwQ29udGV4dDsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpSWNvbkJ1dHRvbicsIHNsb3QpO1xufVxuY29uc3QgaWNvbkJ1dHRvbkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlJY29uQnV0dG9uJywgWydyb290JywgJ2Rpc2FibGVkJywgJ2NvbG9ySW5oZXJpdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JFcnJvcicsICdjb2xvckluZm8nLCAnY29sb3JTdWNjZXNzJywgJ2NvbG9yV2FybmluZycsICdlZGdlU3RhcnQnLCAnZWRnZUVuZCcsICdzaXplU21hbGwnLCAnc2l6ZU1lZGl1bScsICdzaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBpY29uQnV0dG9uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJlZGdlXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJjb2xvclwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwic2l6ZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGNoYWluUHJvcFR5cGVzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgeyBhbHBoYSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IGljb25CdXR0b25DbGFzc2VzLCB7IGdldEljb25CdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2ljb25CdXR0b25DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlZCxcbiAgICBjb2xvcixcbiAgICBlZGdlLFxuICAgIHNpemVcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGNvbG9yICE9PSAnZGVmYXVsdCcgJiYgYGNvbG9yJHtjYXBpdGFsaXplKGNvbG9yKX1gLCBlZGdlICYmIGBlZGdlJHtjYXBpdGFsaXplKGVkZ2UpfWAsIGBzaXplJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgSWNvbkJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBuYW1lOiAnTXVpSWNvbkJ1dHRvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnZGVmYXVsdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgb3duZXJTdGF0ZS5lZGdlICYmIHN0eWxlc1tgZWRnZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmVkZ2UpfWBdLCBzdHlsZXNbYHNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIGZsZXg6ICcwIDAgYXV0bycsXG4gIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMjQpLFxuICBwYWRkaW5nOiA4LFxuICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAvLyBFeHBsaWNpdGx5IHNldCB0aGUgZGVmYXVsdCB2YWx1ZSB0byBzb2x2ZSBhIGJ1ZyBvbiBJRTExLlxuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmFjdGl2ZSxcbiAgdHJhbnNpdGlvbjogdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdiYWNrZ3JvdW5kLWNvbG9yJywge1xuICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVzdFxuICB9KVxufSwgIW93bmVyU3RhdGUuZGlzYWJsZVJpcHBsZSAmJiB7XG4gICcmOmhvdmVyJzoge1xuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5hY3RpdmVDaGFubmVsfSAvICR7dGhlbWUudmFycy5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHl9KWAgOiBhbHBoYSh0aGVtZS5wYWxldHRlLmFjdGlvbi5hY3RpdmUsIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICB9XG4gIH1cbn0sIG93bmVyU3RhdGUuZWRnZSA9PT0gJ3N0YXJ0JyAmJiB7XG4gIG1hcmdpbkxlZnQ6IG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyA/IC0zIDogLTEyXG59LCBvd25lclN0YXRlLmVkZ2UgPT09ICdlbmQnICYmIHtcbiAgbWFyZ2luUmlnaHQ6IG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyA/IC0zIDogLTEyXG59KSwgKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF9wYWxldHRlO1xuICBjb25zdCBwYWxldHRlID0gKF9wYWxldHRlID0gKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUpID09IG51bGwgPyB2b2lkIDAgOiBfcGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXTtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAnaW5oZXJpdCdcbiAgfSwgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdkZWZhdWx0JyAmJiBfZXh0ZW5kcyh7XG4gICAgY29sb3I6IHBhbGV0dGUgPT0gbnVsbCA/IHZvaWQgMCA6IHBhbGV0dGUubWFpblxuICB9LCAhb3duZXJTdGF0ZS5kaXNhYmxlUmlwcGxlICYmIHtcbiAgICAnJjpob3Zlcic6IF9leHRlbmRzKHt9LCBwYWxldHRlICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IGByZ2JhKCR7cGFsZXR0ZS5tYWluQ2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEocGFsZXR0ZS5tYWluLCB0aGVtZS5wYWxldHRlLmFjdGlvbi5ob3Zlck9wYWNpdHkpXG4gICAgfSwge1xuICAgICAgLy8gUmVzZXQgb24gdG91Y2ggZGV2aWNlcywgaXQgZG9lc24ndCBhZGQgc3BlY2lmaWNpdHlcbiAgICAgICdAbWVkaWEgKGhvdmVyOiBub25lKSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnXG4gICAgICB9XG4gICAgfSlcbiAgfSksIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICAgcGFkZGluZzogNSxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE4KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYge1xuICAgIHBhZGRpbmc6IDEyLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMjgpXG4gIH0sIHtcbiAgICBbYCYuJHtpY29uQnV0dG9uQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmFjdGlvbi5kaXNhYmxlZFxuICAgIH1cbiAgfSk7XG59KTtcblxuLyoqXG4gKiBSZWZlciB0byB0aGUgW0ljb25zXSgvbWF0ZXJpYWwtdWkvaWNvbnMvKSBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uXG4gKiByZWdhcmRpbmcgdGhlIGF2YWlsYWJsZSBpY29uIG9wdGlvbnMuXG4gKi9cbmNvbnN0IEljb25CdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBJY29uQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlJY29uQnV0dG9uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgZWRnZSA9IGZhbHNlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb2xvciA9ICdkZWZhdWx0JyxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIHNpemUgPSAnbWVkaXVtJ1xuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgZWRnZSxcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgc2l6ZVxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goSWNvbkJ1dHRvblJvb3QsIF9leHRlbmRzKHtcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGNlbnRlclJpcHBsZTogdHJ1ZSxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgcmVmOiByZWYsXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZVxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBjaGlsZHJlblxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEljb25CdXR0b24ucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIGljb24gdG8gZGlzcGxheS5cbiAgICovXG4gIGNoaWxkcmVuOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMubm9kZSwgcHJvcHMgPT4ge1xuICAgIGNvbnN0IGZvdW5kID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShwcm9wcy5jaGlsZHJlbikuc29tZShjaGlsZCA9PiAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpICYmIGNoaWxkLnByb3BzLm9uQ2xpY2spO1xuICAgIGlmIChmb3VuZCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihbJ01VSTogWW91IGFyZSBwcm92aWRpbmcgYW4gb25DbGljayBldmVudCBsaXN0ZW5lciB0byBhIGNoaWxkIG9mIGEgYnV0dG9uIGVsZW1lbnQuJywgJ1ByZWZlciBhcHBseWluZyBpdCB0byB0aGUgSWNvbkJ1dHRvbiBkaXJlY3RseS4nLCAnVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIHdob2xlIDxidXR0b24+IHdpbGwgYmUgcmVzcG9uc2l2ZSB0byBjbGljayBldmVudHMuJ10uam9pbignXFxuJykpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSksXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNhZGRpbmctbmV3LWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdkZWZhdWx0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdkZWZhdWx0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSAga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBnaXZlbiwgdXNlcyBhIG5lZ2F0aXZlIG1hcmdpbiB0byBjb3VudGVyYWN0IHRoZSBwYWRkaW5nIG9uIG9uZVxuICAgKiBzaWRlICh0aGlzIGlzIG9mdGVuIGhlbHBmdWwgZm9yIGFsaWduaW5nIHRoZSBsZWZ0IG9yIHJpZ2h0XG4gICAqIHNpZGUgb2YgdGhlIGljb24gd2l0aCBjb250ZW50IGFib3ZlIG9yIGJlbG93LCB3aXRob3V0IHJ1aW5pbmcgdGhlIGJvcmRlclxuICAgKiBzaXplIGFuZCBzaGFwZSkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBlZGdlOiBQcm9wVHlwZXMub25lT2YoWydlbmQnLCAnc3RhcnQnLCBmYWxzZV0pLFxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIGNvbXBvbmVudC5cbiAgICogYHNtYWxsYCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkZW5zZSBidXR0b24gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgJ21lZGl1bSdcbiAgICovXG4gIHNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnc21hbGwnLCAnbWVkaXVtJywgJ2xhcmdlJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBJY29uQnV0dG9uOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sYmFyVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUb29sYmFyJywgc2xvdCk7XG59XG5jb25zdCB0b29sYmFyQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVRvb2xiYXInLCBbJ3Jvb3QnLCAnZ3V0dGVycycsICdyZWd1bGFyJywgJ2RlbnNlJ10pO1xuZXhwb3J0IGRlZmF1bHQgdG9vbGJhckNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZGlzYWJsZUd1dHRlcnNcIiwgXCJ2YXJpYW50XCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldFRvb2xiYXJVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3Rvb2xiYXJDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICBkaXNhYmxlR3V0dGVycyxcbiAgICB2YXJpYW50XG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCAhZGlzYWJsZUd1dHRlcnMgJiYgJ2d1dHRlcnMnLCB2YXJpYW50XVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFRvb2xiYXJVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IFRvb2xiYXJSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gIG5hbWU6ICdNdWlUb29sYmFyJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsICFvd25lclN0YXRlLmRpc2FibGVHdXR0ZXJzICYmIHN0eWxlcy5ndXR0ZXJzLCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInXG59LCAhb3duZXJTdGF0ZS5kaXNhYmxlR3V0dGVycyAmJiB7XG4gIHBhZGRpbmdMZWZ0OiB0aGVtZS5zcGFjaW5nKDIpLFxuICBwYWRkaW5nUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMiksXG4gIFt0aGVtZS5icmVha3BvaW50cy51cCgnc20nKV06IHtcbiAgICBwYWRkaW5nTGVmdDogdGhlbWUuc3BhY2luZygzKSxcbiAgICBwYWRkaW5nUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMylcbiAgfVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnZGVuc2UnICYmIHtcbiAgbWluSGVpZ2h0OiA0OFxufSksICh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdyZWd1bGFyJyAmJiB0aGVtZS5taXhpbnMudG9vbGJhcik7XG5jb25zdCBUb29sYmFyID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gVG9vbGJhcihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpVG9vbGJhcidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgZGlzYWJsZUd1dHRlcnMgPSBmYWxzZSxcbiAgICAgIHZhcmlhbnQgPSAncmVndWxhcidcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlR3V0dGVycyxcbiAgICB2YXJpYW50XG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChUb29sYmFyUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBjb21wb25lbnQsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlXG4gIH0sIG90aGVyKSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRvb2xiYXIucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogVGhlIFRvb2xiYXIgY2hpbGRyZW4sIHVzdWFsbHkgYSBtaXh0dXJlIG9mIGBJY29uQnV0dG9uYCwgYEJ1dHRvbmAgYW5kIGBUeXBvZ3JhcGh5YC5cbiAgICogVGhlIFRvb2xiYXIgaXMgYSBmbGV4IGNvbnRhaW5lciwgYWxsb3dpbmcgZmxleCBpdGVtIHByb3BlcnRpZXMgdG8gYmUgdXNlZCB0byBsYXkgb3V0IHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgZGlzYWJsZXMgZ3V0dGVyIHBhZGRpbmcuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlR3V0dGVyczogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICdyZWd1bGFyJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydkZW5zZScsICdyZWd1bGFyJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUb29sYmFyOyIsImltcG9ydCB7IHVuc3RhYmxlX2NyZWF0ZUNoYWluZWRGdW5jdGlvbiBhcyBjcmVhdGVDaGFpbmVkRnVuY3Rpb24gfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNoYWluZWRGdW5jdGlvbjsiLCJpbXBvcnQgeyB1bnN0YWJsZV9kZXByZWNhdGVkUHJvcFR5cGUgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBkZXByZWNhdGVkUHJvcFR5cGU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVwcmVjYXRlZFByb3BUeXBlKHZhbGlkYXRvciwgcmVhc29uKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICgpID0+IG51bGw7XG4gIH1cbiAgcmV0dXJuIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpID0+IHtcbiAgICBjb25zdCBjb21wb25lbnROYW1lU2FmZSA9IGNvbXBvbmVudE5hbWUgfHwgJzw8YW5vbnltb3VzPj4nO1xuICAgIGNvbnN0IHByb3BGdWxsTmFtZVNhZmUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG4gICAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKGBUaGUgJHtsb2NhdGlvbn0gXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZVNhZmV9XFxgIGlzIGRlcHJlY2F0ZWQuICR7cmVhc29ufWApO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9yZXF1aXJlUHJvcEZhY3RvcnkgYXMgcmVxdWlyZVByb3BGYWN0b3J5IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCByZXF1aXJlUHJvcEZhY3Rvcnk7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXF1aXJlUHJvcEZhY3RvcnkoY29tcG9uZW50TmFtZUluRXJyb3IsIENvbXBvbmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiAoKSA9PiBudWxsO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2ZvcmJpZC1mb3JlaWduLXByb3AtdHlwZXNcbiAgY29uc3QgcHJldlByb3BUeXBlcyA9IENvbXBvbmVudCA/IF9leHRlbmRzKHt9LCBDb21wb25lbnQucHJvcFR5cGVzKSA6IG51bGw7XG4gIGNvbnN0IHJlcXVpcmVQcm9wID0gcmVxdWlyZWRQcm9wID0+IChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIC4uLmFyZ3MpID0+IHtcbiAgICBjb25zdCBwcm9wRnVsbE5hbWVTYWZlID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuICAgIGNvbnN0IGRlZmF1bHRUeXBlQ2hlY2tlciA9IHByZXZQcm9wVHlwZXMgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZQcm9wVHlwZXNbcHJvcEZ1bGxOYW1lU2FmZV07XG4gICAgaWYgKGRlZmF1bHRUeXBlQ2hlY2tlcikge1xuICAgICAgY29uc3QgdHlwZUNoZWNrZXJSZXN1bHQgPSBkZWZhdWx0VHlwZUNoZWNrZXIocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCAuLi5hcmdzKTtcbiAgICAgIGlmICh0eXBlQ2hlY2tlclJlc3VsdCkge1xuICAgICAgICByZXR1cm4gdHlwZUNoZWNrZXJSZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcHJvcHNbcHJvcE5hbWVdICE9PSAndW5kZWZpbmVkJyAmJiAhcHJvcHNbcmVxdWlyZWRQcm9wXSkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBvZiBgICsgYFxcYCR7Y29tcG9uZW50TmFtZUluRXJyb3J9XFxgIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgXFxgJHtyZXF1aXJlZFByb3B9XFxgIHByb3AuYCk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9O1xuICByZXR1cm4gcmVxdWlyZVByb3A7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfc2V0UmVmIGFzIHNldFJlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgc2V0UmVmOyIsImltcG9ydCB7IHVuc3RhYmxlX3Vuc3VwcG9ydGVkUHJvcCBhcyB1bnN1cHBvcnRlZFByb3AgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVuc3VwcG9ydGVkUHJvcDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnN1cHBvcnRlZFByb3AocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgcHJvcEZ1bGxOYW1lU2FmZSA9IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcbiAgaWYgKHR5cGVvZiBwcm9wc1twcm9wTmFtZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihgVGhlIHByb3AgXFxgJHtwcm9wRnVsbE5hbWVTYWZlfVxcYCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmVtb3ZlIGl0LmApO1xuICB9XG4gIHJldHVybiBudWxsO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvYmFzZS9jbGFzc05hbWUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjYXBpdGFsaXplIH0gZnJvbSAnLi9jYXBpdGFsaXplJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIH0gZnJvbSAnLi9jcmVhdGVDaGFpbmVkRnVuY3Rpb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVTdmdJY29uIH0gZnJvbSAnLi9jcmVhdGVTdmdJY29uJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVib3VuY2UgfSBmcm9tICcuL2RlYm91bmNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZGVwcmVjYXRlZFByb3BUeXBlIH0gZnJvbSAnLi9kZXByZWNhdGVkUHJvcFR5cGUnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBpc011aUVsZW1lbnQgfSBmcm9tICcuL2lzTXVpRWxlbWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG93bmVyRG9jdW1lbnQgfSBmcm9tICcuL293bmVyRG9jdW1lbnQnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBvd25lcldpbmRvdyB9IGZyb20gJy4vb3duZXJXaW5kb3cnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByZXF1aXJlUHJvcEZhY3RvcnkgfSBmcm9tICcuL3JlcXVpcmVQcm9wRmFjdG9yeSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHNldFJlZiB9IGZyb20gJy4vc2V0UmVmJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICcuL3VzZUVuaGFuY2VkRWZmZWN0JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdGFibGVfdXNlSWQgfSBmcm9tICcuL3VzZUlkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdW5zdXBwb3J0ZWRQcm9wIH0gZnJvbSAnLi91bnN1cHBvcnRlZFByb3AnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VDb250cm9sbGVkIH0gZnJvbSAnLi91c2VDb250cm9sbGVkJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gJy4vdXNlRXZlbnRDYWxsYmFjayc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZvcmtSZWYgfSBmcm9tICcuL3VzZUZvcmtSZWYnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VJc0ZvY3VzVmlzaWJsZSB9IGZyb20gJy4vdXNlSXNGb2N1c1Zpc2libGUnO1xuLy8gVE9ETzogcmVtb3ZlIHRoaXMgZXhwb3J0IG9uY2UgQ2xhc3NOYW1lR2VuZXJhdG9yIGlzIHN0YWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciA9IHtcbiAgY29uZmlndXJlOiBnZW5lcmF0b3IgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydNVUk6IGBDbGFzc05hbWVHZW5lcmF0b3JgIGltcG9ydCBmcm9tIGBAbXVpL21hdGVyaWFsL3V0aWxzYCBpcyBvdXRkYXRlZCBhbmQgbWlnaHQgY2F1c2UgdW5leHBlY3RlZCBpc3N1ZXMuJywgJycsIFwiWW91IHNob3VsZCB1c2UgYGltcG9ydCB7IHVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwvY2xhc3NOYW1lJ2AgaW5zdGVhZFwiLCAnJywgJ1RoZSBkZXRhaWwgb2YgdGhlIGlzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL2lzc3Vlcy8zMDAxMSNpc3N1ZWNvbW1lbnQtMTAyNDk5MzQwMScsICcnLCAnVGhlIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbjogaHR0cHM6Ly9tdWkuY29tL2d1aWRlcy9jbGFzc25hbWUtZ2VuZXJhdG9yLyddLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gICAgQ2xhc3NOYW1lR2VuZXJhdG9yLmNvbmZpZ3VyZShnZW5lcmF0b3IpO1xuICB9XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChlKSB7XG4gIHJldHVybiBlICYmIGUuX19lc01vZHVsZSA/IGUgOiB7XG4gICAgXCJkZWZhdWx0XCI6IGVcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJfdXRpbHMiLCJjcmVhdGVTdmdJY29uIiwiZ2V0QXBwQmFyVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl9leGNsdWRlZCIsImpvaW5WYXJzIiwidmFyMSIsInZhcjIiLCJyZXBsYWNlIiwiQXBwQmFyUm9vdCIsInN0eWxlZCIsIlBhcGVyIiwibmFtZSIsIm92ZXJyaWRlc1Jlc29sdmVyIiwicHJvcHMiLCJzdHlsZXMiLCJvd25lclN0YXRlIiwicm9vdCIsImNhcGl0YWxpemUiLCJwb3NpdGlvbiIsImNvbG9yIiwidGhlbWUiLCJiYWNrZ3JvdW5kQ29sb3JEZWZhdWx0IiwicGFsZXR0ZSIsIm1vZGUiLCJncmV5IiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImJveFNpemluZyIsImZsZXhTaHJpbmsiLCJ6SW5kZXgiLCJ2YXJzIiwiYXBwQmFyIiwidG9wIiwibGVmdCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiZ2V0Q29udHJhc3RUZXh0IiwibWFpbiIsImNvbnRyYXN0VGV4dCIsImVuYWJsZUNvbG9yT25EYXJrIiwiYmFja2dyb3VuZEltYWdlIiwiQXBwQmFyIiwiZGVmYXVsdEJnIiwiZGFya0JnIiwidGV4dCIsInByaW1hcnkiLCJkYXJrQ29sb3IiLCJtYXRjaCIsImluUHJvcHMiLCJyZWYiLCJ1c2VUaGVtZVByb3BzIiwiY2xhc3NOYW1lIiwib3RoZXIiLCJjbGFzc2VzIiwic2xvdHMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwic3F1YXJlIiwiY29tcG9uZW50IiwiZWxldmF0aW9uIiwiZ2V0SWNvbkJ1dHRvblV0aWxpdHlDbGFzcyIsIkljb25CdXR0b25Sb290IiwiQnV0dG9uQmFzZSIsImVkZ2UiLCJzaXplIiwidGV4dEFsaWduIiwiZmxleCIsImZvbnRTaXplIiwidHlwb2dyYXBoeSIsInB4VG9SZW0iLCJwYWRkaW5nIiwiYm9yZGVyUmFkaXVzIiwib3ZlcmZsb3ciLCJhY3Rpb24iLCJhY3RpdmUiLCJ0cmFuc2l0aW9uIiwidHJhbnNpdGlvbnMiLCJjcmVhdGUiLCJkdXJhdGlvbiIsInNob3J0ZXN0IiwiZGlzYWJsZVJpcHBsZSIsImFjdGl2ZUNoYW5uZWwiLCJob3Zlck9wYWNpdHkiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJfcGFsZXR0ZSIsIm1haW5DaGFubmVsIiwiZGlzYWJsZWQiLCJjaGlsZHJlbiIsImRpc2FibGVGb2N1c1JpcHBsZSIsImNlbnRlclJpcHBsZSIsImZvY3VzUmlwcGxlIiwiZ2V0VG9vbGJhclV0aWxpdHlDbGFzcyIsIlRvb2xiYXJSb290IiwiZGlzYWJsZUd1dHRlcnMiLCJndXR0ZXJzIiwidmFyaWFudCIsImFsaWduSXRlbXMiLCJwYWRkaW5nTGVmdCIsInNwYWNpbmciLCJwYWRkaW5nUmlnaHQiLCJicmVha3BvaW50cyIsInVwIiwibWluSGVpZ2h0IiwibWl4aW5zIiwidG9vbGJhciIsImFzIiwidmFsaWRhdG9yIiwicmVhc29uIiwiY29tcG9uZW50TmFtZUluRXJyb3IiLCJDb21wb25lbnQiLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInVuc3RhYmxlX0NsYXNzTmFtZUdlbmVyYXRvciIsImNvbmZpZ3VyZSIsImdlbmVyYXRvciIsIkNsYXNzTmFtZUdlbmVyYXRvciIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsImVtcHR5RnVuY3Rpb25XaXRoUmVzZXQiLCJyZXNldFdhcm5pbmdDYWNoZSIsIm1vZHVsZSIsInNoaW0iLCJzZWNyZXQiLCJlcnIiLCJFcnJvciIsImdldFNoaW0iLCJpc1JlcXVpcmVkIiwiUmVhY3RQcm9wVHlwZXMiLCJhcnJheSIsImJpZ2ludCIsImJvb2wiLCJmdW5jIiwibnVtYmVyIiwib2JqZWN0Iiwic3RyaW5nIiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImVsZW1lbnQiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJub2RlIiwib2JqZWN0T2YiLCJvbmVPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsIlByb3BUeXBlcyIsImUiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/react_frontend/static/react_frontend/js/exercise.12d27afb.js b/react_frontend/static/react_frontend/js/exercise.12d27afb.js new file mode 100644 index 000000000..c462106e0 --- /dev/null +++ b/react_frontend/static/react_frontend/js/exercise.12d27afb.js @@ -0,0 +1,3 @@ +/*! For license information please see exercise.12d27afb.js.LICENSE.txt */ +(()=>{var e,n,t,r,a={8653:(e,n,t)=>{var r={"./AmazonWarehouseRR":[4088,4088],"./AmazonWarehouseRR.js":[4088,4088],"./AutoparkingRR":[349,349],"./AutoparkingRR.js":[349,349],"./BasicComputerVisionRR":[581,581],"./BasicComputerVisionRR.js":[581,581],"./BasicVacuumCleaner":[9612,9612],"./BasicVacuumCleaner.js":[9612,9612],"./DigitalImageProcessingRR":[9306,6925],"./DigitalImageProcessingRR.js":[9306,6925],"./DroneGymkhana":[2038,2038],"./DroneGymkhana.js":[2038,2038],"./DroneHangar":[6762,6762],"./DroneHangar.js":[6762,6762],"./FollowLineRR":[732,732],"./FollowLineRR.js":[732,732],"./FollowPersonRR":[5860,5860],"./FollowPersonRR.js":[5860,5860],"./FollowRoadRR":[7480,7480],"./FollowRoadRR.js":[7480,7480],"./GlobalNavigationSpecific":[9096,6780],"./GlobalNavigationSpecific.js":[9096,6780],"./LabyrinthEscape":[5452,5452],"./LabyrinthEscape.js":[5452,5452],"./LaserMapping":[8590,8590],"./LaserMapping.js":[8590,8590],"./Lasers":[2217,7903],"./Lasers.js":[2217,7903],"./LocVacuumCleaner":[225,225],"./LocVacuumCleaner.js":[225,225],"./MontecarloLaserLoc":[6049,6049],"./MontecarloLaserLoc.js":[6049,6049],"./MontecarloVisualLoc":[1629,1629],"./MontecarloVisualLoc.js":[1629,1629],"./ObstacleAvoidanceRR":[1750,1750],"./ObstacleAvoidanceRR.js":[1750,1750],"./PickPlace":[180,180],"./PickPlace.js":[180,180],"./PlayCar":[9596,2578,6885,6802,1167,5688],"./PlayCar.js":[9596,2578,6885,6802,1167,5688],"./PositionControl":[7826,7826],"./PositionControl.js":[7826,7826],"./PowerTowerInspection":[1837,1837],"./PowerTowerInspection.js":[1837,1837],"./Reconstruction3DRR":[3152,3152],"./Reconstruction3DRR.js":[3152,3152],"./ResetCar":[9869,2578,6885,6802,1167,3169],"./ResetCar.js":[9869,2578,6885,6802,1167,3169],"./SpecificAmazonWarehouse":[8486,233],"./SpecificAmazonWarehouse.js":[8486,233],"./SpecificBasicComputerVision":[2493,2493],"./SpecificBasicComputerVision.js":[2493,2493],"./SpecificDigitalImageProcessing":[1289,1289],"./SpecificDigitalImageProcessing.js":[1289,1289],"./SpecificDroneGymkhana":[6354,6354],"./SpecificDroneGymkhana.js":[6354,6354],"./SpecificDroneHangar":[978,978],"./SpecificDroneHangar.js":[978,978],"./SpecificFollowLine":[3288,2578,6885,4313],"./SpecificFollowLine.js":[3288,2578,6885,4313],"./SpecificFollowPerson":[6824,6824],"./SpecificFollowPerson.js":[6824,6824],"./SpecificFollowRoad":[4800,4800],"./SpecificFollowRoad.js":[4800,4800],"./SpecificLabyrinthEscape":[7336,7336],"./SpecificLabyrinthEscape.js":[7336,7336],"./SpecificLaserMapping":[1336,5008],"./SpecificLaserMapping.js":[1336,5008],"./SpecificLocVacuumCleaner":[5073,8725],"./SpecificLocVacuumCleaner.js":[5073,8725],"./SpecificMontecarloLaserLoc":[684,1792],"./SpecificMontecarloLaserLoc.js":[684,1792],"./SpecificMontecarloVisualLoc":[9262,4566],"./SpecificMontecarloVisualLoc.js":[9262,4566],"./SpecificObstacleAvoidance":[6030,7841],"./SpecificObstacleAvoidance.js":[6030,7841],"./SpecificPickPlace":[2040,2040],"./SpecificPickPlace.js":[2040,2040],"./SpecificPositionControl":[5582,5582],"./SpecificPositionControl.js":[5582,5582],"./SpecificPowerTowerInspection":[2341,2341],"./SpecificPowerTowerInspection.js":[2341,2341],"./SpecificReconstruction3D":[392,392],"./SpecificReconstruction3D.js":[392,392],"./SpecificRescuePeople":[4147,4147],"./SpecificRescuePeople.js":[4147,4147],"./SpecificVacuumCleaner":[4625,4582],"./SpecificVacuumCleaner.js":[4625,4582],"./SpecificVisualLander":[4404,2578,6885,6802,1167,4668,4404],"./SpecificVisualLander.js":[4404,2578,6885,6802,1167,4668,4404],"./SpecificVisualLoc":[5720,8256],"./SpecificVisualLoc.js":[5720,8256],"./StopCar":[718,2578,6885,6802,1167,4668,718],"./StopCar.js":[718,2578,6885,6802,1167,4668,718],"./VisualLander":[8496,8496],"./VisualLander.js":[8496,8496],"./css/AmazonWarehouseRR.css":[3238,3238],"./css/AutoparkingRR.css":[8201,8201],"./css/BasicComputerVisionRR.css":[1497,1497],"./css/BasicVacuumCleaner.css":[5009,5009],"./css/DigitalImageProcessingRR.css":[9617,9617],"./css/DroneGymkhana.css":[8724,8724],"./css/DroneHangar.css":[6160,6160],"./css/FollowLineRR.css":[2394,2394],"./css/FollowPersonRR.css":[1938,1938],"./css/GUICanvas.css":[9390,9390],"./css/GlobalNavigationRR.css":[5530,5530],"./css/LabyrinthEscape.css":[1530,1530],"./css/LaserMapping.css":[1172,1172],"./css/MontecarloLaserLoc.css":[2973,2973],"./css/MontecarloVisualLoc.css":[4241,4241],"./css/ObstacleAvoidanceRR.css":[8732,8732],"./css/PickPlace.css":[3898,3898],"./css/PositionControl.css":[9848,9848],"./css/PowerTowerInspection.css":[5665,5665],"./css/Reconstruction3DRR.css":[1838,1838],"./css/VisualLander.css":[8198,8198],"./css/followRoadRR.css":[9294,9294],"./css/rescuePeopleRR.css":[4411,4411],"./css/visualLoc.css":[3540,1159],"./globalNavigationRR":[6780,2018],"./globalNavigationRR.js":[6780,2018],"./helpers/AmazonWarehouseHelper":[3798,3798],"./helpers/AmazonWarehouseHelper.js":[3798,3798],"./helpers/GlobalNavigationHelper":[1166,1166],"./helpers/GlobalNavigationHelper.js":[1166,1166],"./helpers/VacuumCleanerHelper":[7823,7823],"./helpers/VacuumCleanerHelper.js":[7823,7823],"./helpers/helperRecontruction":[3774,3774],"./helpers/helperRecontruction.js":[3774,3774],"./helpers/showCarPositionFollowLine":[3344,3344],"./helpers/showCarPositionFollowLine.js":[3344,3344],"./helpers/showImageMontecarlo":[7115,7115],"./helpers/showImageMontecarlo.js":[7115,7115],"./helpers/showImageVisual":[4345,4345],"./helpers/showImageVisual.js":[4345,4345],"./helpers/showImagesDroneGymkhana":[917,917],"./helpers/showImagesDroneGymkhana.js":[917,917],"./helpers/showImagesDroneHangar":[6357,6357],"./helpers/showImagesDroneHangar.js":[6357,6357],"./helpers/showImagesFollowRoad":[7113,7113],"./helpers/showImagesFollowRoad.js":[7113,7113],"./helpers/showImagesLabyrinthEscape":[6744,4363],"./helpers/showImagesLabyrinthEscape.js":[6744,4363],"./helpers/showImagesPositionControl":[1381,1381],"./helpers/showImagesPositionControl.js":[1381,1381],"./helpers/showImagesPowerTowerInspection":[8832,8832],"./helpers/showImagesPowerTowerInspection.js":[8832,8832],"./helpers/showImagesRescue":[1941,1941],"./helpers/showImagesRescue.js":[1941,1941],"./helpers/showImagesVisualLander":[2725,2725],"./helpers/showImagesVisualLander.js":[2725,2725],"./helpers/showLapTimeFollowLine":[7385,7385],"./helpers/showLapTimeFollowLine.js":[7385,7385],"./map_view":[7748,7748],"./map_view.js":[7748,7748],"./rescuePeopleRR":[1740,9359],"./rescuePeopleRR.js":[1740,9359],"./visualLoc":[1195,1195],"./visualLoc.js":[1195,1195]};function a(e){if(!t.o(r,e))return Promise.resolve().then((()=>{var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}));var n=r[e],a=n[0];return Promise.all(n.slice(1).map(t.e)).then((()=>t(a)))}a.keys=()=>Object.keys(r),a.id=8653,e.exports=a},9108:(e,n,t)=>{"use strict";t.r(n);var r,a,o,l,i,u,s,c=t(6540),f=t(5338),d=(t(9163),t(961)),p=t(5483);function h(e){return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},h(e)}function m(){m=function(){return n};var e,n={},t=Object.prototype,r=t.hasOwnProperty,a=Object.defineProperty||function(e,n,t){e[n]=t.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(e,n,t){return Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}),e[n]}try{s({},"")}catch(e){s=function(e,n,t){return e[n]=t}}function c(e,n,t,r){var o=n&&n.prototype instanceof b?n:b,l=Object.create(o.prototype),i=new T(r||[]);return a(l,"_invoke",{value:L(e,t,i)}),l}function f(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(e){return{type:"throw",arg:e}}}n.wrap=c;var d="suspendedStart",p="suspendedYield",v="executing",g="completed",y={};function b(){}function w(){}function k(){}var S={};s(S,l,(function(){return this}));var E=Object.getPrototypeOf,x=E&&E(E(z([])));x&&x!==t&&r.call(x,l)&&(S=x);var C=k.prototype=b.prototype=Object.create(S);function _(e){["next","throw","return"].forEach((function(n){s(e,n,(function(e){return this._invoke(n,e)}))}))}function P(e,n){function t(a,o,l,i){var u=f(e[a],e,o);if("throw"!==u.type){var s=u.arg,c=s.value;return c&&"object"==h(c)&&r.call(c,"__await")?n.resolve(c.__await).then((function(e){t("next",e,l,i)}),(function(e){t("throw",e,l,i)})):n.resolve(c).then((function(e){s.value=e,l(s)}),(function(e){return t("throw",e,l,i)}))}i(u.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new n((function(n,a){t(e,r,n,a)}))}return o=o?o.then(a,a):a()}})}function L(n,t,r){var a=d;return function(o,l){if(a===v)throw Error("Generator is already running");if(a===g){if("throw"===o)throw l;return{value:e,done:!0}}for(r.method=o,r.arg=l;;){var i=r.delegate;if(i){var u=N(i,r);if(u){if(u===y)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=v;var s=f(n,t,r);if("normal"===s.type){if(a=r.done?g:p,s.arg===y)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=g,r.method="throw",r.arg=s.arg)}}}function N(n,t){var r=t.method,a=n.iterator[r];if(a===e)return t.delegate=null,"throw"===r&&n.iterator.return&&(t.method="return",t.arg=e,N(n,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=f(a,n.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,y;var l=o.arg;return l?l.done?(t[n.resultName]=l.value,t.next=n.nextLoc,"return"!==t.method&&(t.method="next",t.arg=e),t.delegate=null,y):l:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,y)}function R(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.finallyLoc=e[2],n.afterLoc=e[3]),this.tryEntries.push(n)}function j(e){var n=e.completion||{};n.type="normal",delete n.arg,e.completion=n}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function z(n){if(n||""===n){var t=n[l];if(t)return t.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var a=-1,o=function t(){for(;++a=0;--o){var l=this.tryEntries[o],i=l.completion;if("root"===l.tryLoc)return a("end");if(l.tryLoc<=this.prev){var u=r.call(l,"catchLoc"),s=r.call(l,"finallyLoc");if(u&&s){if(this.prev=0;--t){var a=this.tryEntries[t];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--n){var t=this.tryEntries[n];if(t.finallyLoc===e)return this.complete(t.completion,t.afterLoc),j(t),y}},catch:function(e){for(var n=this.tryEntries.length-1;n>=0;--n){var t=this.tryEntries[n];if(t.tryLoc===e){var r=t.completion;if("throw"===r.type){var a=r.arg;j(t)}return a}}throw Error("illegal catch attempt")},delegateYield:function(n,t,r){return this.delegate={iterator:z(n),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=e),y}},n}function v(e,n,t,r,a,o,l){try{var i=e[o](l),u=i.value}catch(e){return void t(e)}i.done?n(u):Promise.resolve(u).then(r,a)}function g(e){return function(){var n=this,t=arguments;return new Promise((function(r,a){var o=e.apply(n,t);function l(e){v(o,r,a,l,i,"next",e)}function i(e){v(o,r,a,l,i,"throw",e)}l(void 0)}))}}window.RoboticsExerciseComponents=(r=[],a=function(e,n,t,a){document.getElementById(n),t.key=n;var o=c.createElement(e,t,a);return r.push(o),o},o=function(){var e=g(m().mark((function e(n,r){var l,i,u,s,c,p,h,v,y,b;return m().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return l=n.component,i=n.dom_id,u=n.properties,s=n.children,c="root"===l,e.next=4,Promise.all(s.map(function(){var e=g(m().mark((function e(n){return m().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o(n,c);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()));case 4:if(p=e.sent,h=l.split("/"),v={},!c){e.next=9;break}return e.abrupt("return",v);case 9:if("exercise"!==h[0]){e.next=16;break}return y="".concat(h.slice(2).join("/"),".js"),e.next=13,t(8653)("./".concat(y)).then((function(e){return a(e.default,i,u,p)}));case 13:v=e.sent,e.next=19;break;case 16:return e.next=18,t(2103)("./".concat(l,".js")).then((function(e){return a(e.default,i,u,p)}));case 18:v=e.sent;case 19:return r&&(b=(0,f.H)(document.getElementById(i)),(0,d.flushSync)((function(){b.render(v)}))),e.abrupt("return",v);case 21:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}(),l=function(){var e=g(m().mark((function e(n){var t,r;return m().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,o(n,!1);case 2:for(t=0,r=i.length;t{"use strict";t.r(n),t.d(n,{default:()=>h});var r=t(3065);const a={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let o;const l=new Uint8Array(16);function i(){if(!o&&(o="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!o))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return o(l)}const u=[];for(let e=0;e<256;++e)u.push((e+256).toString(16).slice(1));const s=function(e,n,t){if(a.randomUUID&&!n&&!e)return a.randomUUID();const r=(e=e||{}).random||(e.rng||i)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,n){t=t||0;for(let e=0;e<16;++e)n[t+e]=r[e];return n}return function(e,n=0){return(u[e[n+0]]+u[e[n+1]]+u[e[n+2]]+u[e[n+3]]+"-"+u[e[n+4]]+u[e[n+5]]+"-"+u[e[n+6]]+u[e[n+7]]+"-"+u[e[n+8]]+u[e[n+9]]+"-"+u[e[n+10]]+u[e[n+11]]+u[e[n+12]]+u[e[n+13]]+u[e[n+14]]+u[e[n+15]]).toLowerCase()}(r)};function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function f(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function d(e){for(var n=1;n{function e(e,r,a){if(t())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,r);var l=new(e.bind.apply(e,o));return a&&n(l,a.prototype),l}function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,n){return e.__proto__=n,e},n(e,t)}function t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(t=function(){return!!e})()}String.prototype.interpolate=function(n){var t=Object.keys(n),r=Object.values(n);return e(Function,t.concat(["return `".concat(this,"`;")])).apply(void 0,r)}},3065:function(e,n,t){var r,a;!function(){"use strict";r=function(){var e=function(){},n="undefined",t=typeof window!==n&&typeof window.navigator!==n&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function a(e,n){var t=e[n];if("function"==typeof t.bind)return t.bind(e);try{return Function.prototype.bind.call(t,e)}catch(n){return function(){return Function.prototype.apply.apply(t,[e,arguments])}}}function o(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function l(n,t){for(var a=0;a=0&&t<=i.levels.SILENT))throw"log.setLevel() called with invalid level: "+t;if(o=t,!1!==a&&function(e){var t=(r[e]||"silent").toUpperCase();if(typeof window!==n&&s){try{return void(window.localStorage[s]=t)}catch(e){}try{window.document.cookie=encodeURIComponent(s)+"="+t+";"}catch(e){}}}(t),l.call(i,t,e),typeof console===n&&t{"use strict";var r=t(6540),a=t(194);function o(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t

    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